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