Android 10 cải thiện trải nghiệm người dùng khi cần có nhiều hoạt động thu âm đang 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 quay video bằng các lệnh thoại do một dịch vụ hỗ trợ tiếp cận 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 hình đồng thời với các ứng dụng thông thường.
Chính sách về tính đồng thời được triển khai bằng cách tắt tiếng âm thanh đã ghi chứ không phải bằng cách ngăn ứng dụng bắt đầu ghi. Điều này cho phép khung hình động giải quyết các thay đổi về số lượng và loại trường hợp sử dụng tính năng ghi hình đang hoạt động, mà không ngăn ứng dụng bắt đầu ghi hình trong trường hợp ứng dụng có thể khôi phục quyền truy cập đầy đủ vào micrô sau khi một ứng dụng khác hoàn tất quá trình ghi hình.
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ỉ có một luồng cung cấp âm thanh không im lặng cho một ứng dụng đang hoạt động.
Yêu cầu về quy trình thẩm định khách hàng (CDD)
Hãy xem CDD để biết các yêu cầu về tính năng hỗ trợ chụp đồng thời.
Ghi lại các tình huống từ HAL âm thanh
Tình huống ghi hình đồng thời có thể dẫn đến nhiều trường hợp 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ý.
Tính đồng thời có thể xảy ra giữa các trường hợp sau:
- 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 triển khai tính năng phát hiện cụm từ kích hoạt ở chế độ tiết kiệm pin
Hoạt động đồng thời của các luồng đầu vào AP
Khung âm thanh dùng tệp cấu hình chính sách âm thanh audio_policy_configuration.xml
để xác định số lượng luồng đầu vào có thể mở và hoạt động đồng thời.
Tối thiểu, HAL âm thanh phải hỗ trợ ít nhất một phiên bản của từng hồ sơ đầu vào (mixPort
của vai trò sink
) có trong tệp cấu hình đang mở và đang hoạt động.
Lựa chọn thiết bị
Khi một số ứng dụng đang hoạt động được đính kèm vào cùng một luồng đầu vào HAL, khung sẽ chọn thiết bị phù 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 có nhiều luồng đầu vào đang hoạt động, mỗi luồng có thể có một lựa chọn thiết bị riêng.
Nếu công nghệ này tương thích, bạn nên cho phép HAL âm thanh và hệ thống con ghi lại các luồng khác nhau từ nhiều thiết bị, chẳng hạn như tai nghe Bluetooth và micrô tích hợp.
Nếu có sự không tương thích (ví dụ: hai thiết bị dùng chung cùng một giao diện âm thanh kỹ thuật số hoặc phần phụ trợ), thì HAL âm thanh phải chọn luồng nào điều khiển việc 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à cung cấp cùng một lựa chọn thiết bị khi lặp lại cùng một trường hợp.
- Khi trạng thái đồng thời kết thúc, luồng đang 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 HAL âm thanh xác định thứ tự ưu tiên giữa các trường hợp sử dụng đang hoạt động, hãy làm theo thứ tự tương tự như 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 trên một 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 trên 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 đang hoạt động có mức độ ưu tiên cao nhất trên luồng đầu vào. Tuy nhiên, có thể xảy ra trường hợp trùng lặp trong quá trình kích hoạt và huỷ kích hoạt trường hợp sử dụng, khiến 2 quy trình đang hoạt động đồng thời (ví dụ: 2 phiên bản của bộ khử tiếng vọng) 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 sẽ chọn yêu cầu nào được chấp nhận; việc này 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 quy trình bị vô hiệu hoá.
Khi một số luồng ghi hình hoạt động đồng thời, các yêu cầu tiền xử lý khác nhau có thể chạy trên các luồng khác nhau.
Việc triển khai HAL và hệ thống con âm thanh phải 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 các luồng đó dùng chung thiết bị đầu vào. Tức là quá trình xử lý trước phải được áp dụng sau khi tách các luồng từ nguồn ghi hình chính.
Nếu không thể thực hiện 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 phần Lựa chọn thiết bị.
Cuộc gọi thoại và chụp ảnh đồng thời từ AP
AP có thể ghi lại dữ liệu trong 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 bạn nên đề cập đến các nguyên tắc cho trường hợp này.
Cần có 2 loại dữ liệu chụp khác nhau từ AP trong cuộc gọi.
Ghi lại RX và TX của cuộc gọi
Việc ghi lại RX và TX của cuộc gọi đượ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 phải hiển thị trên hồ sơ đầu vào (mixPort
của vai trò sink
) với một tuyến đường có sẵn từ thiết bị AudioDevice.IN_TELEPHONY_RX
.
Khi cuộc gọi được kết nối (chế độ âm thanh là AudioMode.IN_CALL
), bạn có thể có ít nhất một luồng ghi hình đang hoạt động từ thiết bị AudioDevice.IN_TELEPHONY_RX
.
Ghi hình từ thiết bị đầu vào khi cuộc gọi đang diễn ra
Khi cuộc gọi đang diễn ra (chế độ âm thanh là AudioMode.IN_CALL
), bạn 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 chọn thiết bị và xử lý trước luôn phải dựa trên 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.
Ghi hình đồng thời từ DSP và AP
Khi hệ thống con âm thanh chứa một 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 cụm từ kích hoạt, quá trình triển khai phải hỗ trợ tính năng ghi đồng thời từ AP và DSP âm thanh.
Điều này bao gồm cả việc DSP ghi lại trong giai đoạn phát hiện ban đầu và việc AP ghi lại bằng AudioSource.HOTWORD
sau khi DSP kích hoạt quá trình phát hiện.
Điều này phải được phản ánh bằng cờ ghi hình đồng thời do HAL kích hoạt âm thanh báo cáo thông qua trình mô tả triển khai: ISoundTriggerHw.Properties.concurrentCapture = true
.
HAL âm thanh cũng phải hiển thị và nhập hồ sơ dành riêng cho tính năng ghi từ khoá kích hoạt được xác định bằng cờ AudioInputFlag.HW_HOTWORD
. Quá trình triển khai phải hỗ trợ việc mở và kích hoạt một số luồng trên hồ sơ này, ít nhất là bằng số lượng mô hình âm thanh mà HAL của trình kích hoạt âm thanh có thể tải đồng thời.
Bạn có thể chụp từ hồ sơ đầu vào này trong khi các hồ sơ đầu vào khác đang hoạt động.
Hàm ý đối với việc triển khai Trợ lý
Yêu cầu về việc sử dụng dữ liệu và thông báo cho người dùng
Vì việc sử dụng micrô đồng thời có thể làm rò rỉ dữ liệu riêng tư của người dùng nếu bị lạm 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 được tải sẵn có đặc quyền yêu cầu giữ vai trò Trợ lý.
- Dữ liệu thu thập được qua micrô sẽ không được rời khỏi thiết bị, trừ phi người dùng đang tương tác với Trợ lý. Ví dụ: sau khi từ khoá được kích hoạt.
- Các ứng dụng cùng lúc lắng nghe phải cung cấp tín hiệu trực quan cho người dùng sau khi phát hiện từ khoá kích hoạt. Đ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 có thể tắt micrô hoặc các lệnh kích hoạt Trợ lý.
- Khi các bản ghi âm được lưu trữ, người dùng có thể truy cập, xem xét và xoá các bản ghi âm bất cứ lúc nào.
Các điểm cải tiến về chức năng cho Android 10
Các trợ lý không chặn lẫn nhau
Trên Android 9 trở xuống, khi có 2 Trợ lý luôn bật trên thiết bị, chỉ một trong số đó có thể lắng nghe từ khoá kích hoạt. Do đó, người dùng cần 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 giúp người dùng có trải nghiệm mượt mà hơn nhiều khi sử dụng cả hai Trợ lý.
Các ứng dụng giữ micrô luôn bật
Khi các ứng dụng như Shazam hoặc Waze giữ micrô ở trạng thái mở, Trợ lý mặc định vẫn có thể lắng nghe cụm từ kích hoạt.
Đối với các ứng dụng Trợ lý không phải mặc định, hành vi của Android 10 sẽ không thay đổi.
Triển khai HAL âm thanh mẫu
Bạn có thể xem ví dụ về một phương thức triển khai HAL âm thanh tuân thủ các nguyên tắc trong tài liệu này trên AOSP.