Android 10 cải thiện trải nghiệm người dùng yêu cầu nhiều hoạt động ghi âm diễn ra đồng thời, chẳng hạn như nếu người dùng muốn điều khiển cuộc gọi VoIP hoặc máy ghi video bằng lệnh thoại do dịch vụ trợ năng cung cấp.
Khung âm thanh triển khai chính sách chỉ cho phép một số ứng dụng đặc quyền nhất định ghi đồng thời với các ứng dụng thông thường.
Chính sách đồng thời được triển khai bằng cách tắt âm thanh đã ghi thay vì ngăn ứng dụng bắt đầu ghi. Điều này cho phép khung xử lý linh hoạt các thay đổi về số lượng và loại trường hợp sử dụng tính năng thu hoạt động mà không ngăn ứng dụng bắt đầu thu trong trường hợp ứng dụng có thể khôi phục toàn bộ quyền truy cập vào micrô sau khi một ứng dụng khác thu xong.
Hậu quả đối với HAL âm thanh và hệ thống con âm thanh là chúng phải hỗ trợ đồng thời một số luồng đầu vào đang hoạt động, ngay cả khi trong một số trường hợp, chỉ một luồng cung cấp âm thanh không im lặng cho máy khách đang hoạt động.
Yêu cầu CDD
Xem CDD để biết các yêu cầu hỗ trợ chụp đồng thời.
Ghi lại các tình huống từ âm thanh HAL
Kịch bản chụp đồng thời có thể dẫn đến các tình huống khác nhau về số lượng luồng đầu vào đang hoạt động, lựa chọn thiết bị đầu vào hoặc cấu hình tiền xử lý.
Sự đồng thời có thể xảy ra giữa những điều sau đây:
- Một số luồng đầu vào từ bộ xử lý ứng dụng (AP)
- Luồng đầu vào và cuộc gọi thoại
- Luồng đầu vào và DSP âm thanh thực hiện phát hiện từ nóng công suất thấp
Hoạt động đồng thời của luồng đầu vào AP
Tệp cấu hình chính sách âm thanh audio_policy_configuration.xml
được khung âm thanh sử dụng để xác định số lượng luồng đầu vào có thể được mở và hoạt động đồng thời.
Ở mức tối thiểu, HAL âm thanh phải hỗ trợ ít nhất một phiên bản của mỗi cấu hình đầu vào ( mixPort
của vai trò sink
) được liệt kê trong tệp cấu hình mở và hoạt động .
Lựa chọn thiết bị
Khi một số máy khách đang hoạt động được gắn vào cùng một luồng đầu vào HAL, khung sẽ chọn thiết bị thích hợp cho luồng đầu vào này dựa trên mức độ ưu tiên của trường hợp sử dụng.
Khi một số luồng đầu vào hoạt động, mỗi luồng có thể có một lựa chọn thiết bị khác nhau.
Nếu công nghệ này tương thích thì HAL âm thanh và hệ thống con nên cho phép thu các luồng khác nhau từ các thiết bị khác nhau, chẳng hạn như tai nghe Bluetooth và mic tích hợp.
Nếu có sự không tương thích (ví dụ: hai thiết bị có chung giao diện âm thanh kỹ thuật số hoặc phần phụ trợ), HAL âm thanh phải chọn luồng nào kiểm soát việc lựa chọn thiết bị.
Trong trường hợp này:
- Trạng thái kết quả phải nhất quán và đưa ra lựa chọn thiết bị giống nhau khi lặp lại cùng một kịch bản.
- Khi trạng thái đồng thời kết thúc, luồng hoạt động còn lại phải được định tuyến đến thiết bị được yêu cầu ban đầu trên luồng này.
Nếu thứ tự ưu tiên được xác định bởi HAL âm thanh giữa các trường hợp sử dụng đang hoạt động, hãy tuân theo thứ tự tương tự như được tìm thấy trong source_priority()
trong frameworks/av/services/audiopolicy/common/include/policy.h
Lựa chọn tiền xử lý
Khung âm thanh có thể yêu cầu xử lý trước luồng đầu vào bằng cách sử dụng các phương thức HAL addEffect()
hoặc removeEffect()
.
Để xử lý trước một luồng đầu vào nhất định, khung âm thanh chỉ cho phép cấu hình tương ứng với trường hợp sử dụng hoạt động có mức ưu tiên cao nhất trên luồng đầu vào. Tuy nhiên, có thể có một số trùng lặp trong quá trình kích hoạt và hủy kích hoạt ca sử dụng, khiến hai quá trình hoạt động đồng thời (ví dụ: hai phiên bản của bộ khử tiếng vang) chạy trên cùng một luồng đầu vào. Trong trường hợp này, việc triển khai HAL chọn yêu cầu nào được chấp nhận; nó theo dõi các yêu cầu đang hoạt động và khôi phục trạng thái chính xác khi một trong hai quá trình bị tắt.
Khi một số luồng chụp hoạt động đồng thời, các yêu cầu tiền xử lý khác nhau có thể được chạy trên các luồng khác nhau.
Việc triển khai hệ thống con HAL và âm thanh sẽ cho phép áp dụng các quy trình xử lý trước khác nhau cho các luồng khác nhau, ngay cả khi chúng dùng chung một thiết bị đầu vào. Nghĩa là, việc xử lý trước nên được áp dụng sau khi giải mã các luồng từ nguồn thu thập chính.
Nếu không thể thực hiện được vì lý do kỹ thuật trên một hệ thống con âm thanh nhất định thì HAL âm thanh sẽ áp dụng các quy tắc ưu tiên tương tự như các quy tắc được liệt kê trong Lựa chọn thiết bị .
Cuộc gọi thoại đồng thời và chụp từ AP
Việc ghi từ AP có thể xảy ra khi cuộc gọi thoại đang diễn ra. Tình huống này không phải là mới trong Android 10 và không liên quan trực tiếp đến tính năng chụp đồng thời, nhưng sẽ rất hữu ích khi đề cập đến các nguyên tắc cho trường hợp này.
Cần có hai kiểu chụp khác nhau từ AP trong khi gọi.
Ghi âm cuộc gọi RX và TX
Việc bắt cuộc gọi RX và TX được kích hoạt bằng cách sử dụng nguồn âm thanh AudioSource.VOICE_UPLINK
hoặc AudioSource.VOICE_DOWNLINK
và/hoặc thiết bị AudioDevice.IN_TELEPHONY_RX
.
HAL âm thanh sẽ hiển thị trên cấu hình đầu vào ( mixPort
của vai trò sink
) với tuyến có sẵn từ thiết bị AudioDevice.IN_TELEPHONY_RX
.
Khi một cuộc gọi được kết nối (chế độ âm thanh là AudioMode.IN_CALL
), phải có ít nhất một luồng ghi hoạt động từ thiết bị AudioDevice.IN_TELEPHONY_RX
.
Ghi từ thiết bị đầu vào khi có cuộc gọi
Khi cuộc gọi đang hoạt động (chế độ âm thanh là AudioMode.IN_CALL
), có thể mở và kích hoạt luồng đầu vào từ AP như được chỉ định trong phần Hoạt động đồng thời của luồng đầu vào AP .
Tuy nhiên, mức độ ưu tiên cho việc lựa chọn thiết bị và xử lý trước phải luôn được điều khiển bởi cuộc gọi thoại trong trường hợp có xung đột với các yêu cầu từ luồng đầu vào AP.
Chụp đồng thời từ DSP và AP
Khi hệ thống con âm thanh chứa DSP hỗ trợ ngữ cảnh âm thanh công suất thấp hoặc các chức năng phát hiện từ nóng, việc triển khai phải hỗ trợ thu đồng thời từ AP và DSP âm thanh. Điều này bao gồm cả việc thu thập bởi DSP trong giai đoạn phát hiện ban đầu và thu bởi AP bằng AudioSource.HOTWORD
sau khi phát hiện được kích hoạt bởi DSP.
Điều này sẽ được phản ánh bằng cờ chụp đồng thời được trình kích hoạt âm thanh HAL báo cáo thông qua bộ mô tả triển khai: ISoundTriggerHw.Properties.concurrentCapture = true
.
HAL âm thanh cũng phải hiển thị và nhập cấu hình cụ thể để chụp từ nóng được xác định bằng cờ AudioInputFlag.HW_HOTWORD
. Việc triển khai phải hỗ trợ mở và kích hoạt một số luồng trên cấu hình này ít nhất bằng số lượng mô hình âm thanh có thể được tải đồng thời bởi trình kích hoạt âm thanh HAL.
Có thể chụp từ cấu hình đầu vào này trong khi các cấu hình đầu vào khác đang hoạt động.
Ý nghĩa đối với việc triển khai Trợ lý
Yêu cầu về sử dụng dữ liệu và thông báo người dùng
Vì việc sử dụng micrô đồng thời, nếu lạm dụng, có thể làm rò rỉ dữ liệu riêng tư của người dùng, nên chúng tôi cần áp dụng các điều kiện và đảm bảo sau đây cho các ứng dụng tải sẵn đặc quyền yêu cầu giữ vai trò Trợ lý.
- Dữ liệu được thu thập qua micrô sẽ không được rời khỏi thiết bị trừ khi người dùng đang tương tác với Trợ lý. Ví dụ: sau khi từ nóng được kích hoạt.
- Các ứng dụng nghe đồng thời sẽ cung cấp tín hiệu trực quan cho người dùng sau khi phát hiện từ nóng. Điều này giúp người dùng hiểu rằng các cuộc trò chuyện tiếp theo sẽ diễn ra thông qua một ứng dụng khác, chẳng hạn như Trợ lý.
- Người dùng phải có khả năng tắt micrô hoặc trình kích hoạt Trợ lý.
- Khi bản ghi âm được lưu trữ, người dùng sẽ có khả năng truy cập, xem lại và xóa bản ghi bất kỳ lúc nào.
Cải tiến chức năng cho Android 10
Các trợ lý không chặn nhau
Trên Android 9 trở xuống, khi có hai Trợ lý luôn bật trên thiết bị, chỉ một trong số họ có thể nghe từ nóng của nó. Do đó, cần phải có sự chuyển đổi giữa hai Trợ lý. Trong Android 10, Trợ lý mặc định có thể nghe đồng thời với Trợ lý khác. Điều này mang lại trải nghiệm mượt mà hơn nhiều cho người dùng có cả Trợ lý.
Ứng dụng giữ mic mở
Khi các ứng dụng như Shazam hoặc Waze giữ micrô mở, Trợ lý mặc định vẫn có thể nghe từ nóng.
Đối với các ứng dụng Trợ lý không mặc định, không có thay đổi nào về hoạt động trên Android 10.
Triển khai HAL âm thanh mẫu
Có thể tìm thấy ví dụ về việc triển khai HAL âm thanh tuân thủ các nguyên tắc trong tài liệu này trong AOSP .