Google cam kết thúc đẩy công bằng chủng tộc cho Cộng đồng người da đen. Xem cách thực hiện.

Chụp đồng thời

Android 10 cải thiện trải nghiệm người dùng yêu cầu nhiều hơn một bản ghi âm thanh đang hoạt động 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 thực hiện chính sách chỉ cho phép một số ứng dụng đặc quyền có thể chụp đồng thời với các ứng dụng thông thường.

Chính sách đồng thời được thực hiện bằng cách tắt âm thanh đã chụp của nó thay vì ngăn ứng dụng bắt đầu chụp. Điều này cho phép khung xử lý động các 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 ứng dụng có thể khôi phục toàn quyền truy cập vào micrô sau khi ứng dụng khác chụp xong.

Hệ quả đối với HAL âm thanh và hệ thống phụ â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 đang cung cấp âm thanh không im lặng cho một máy khách đang hoạt động.

Yêu cầu CDD

Xem CDD để biết các yêu cầu đối với hỗ trợ chụp đồng thời.

Ghi lại các tình huống từ âm thanh HAL

Một 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ý.

Đồng thời có thể xảy ra giữa những điều 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à một 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 các luồng đầu vào AP

Khung âm thanh sử 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ể được 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 mỗi cấu hình đầu vào ( mixPort của bộ sink vai trò) đượ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ố máy khách đang hoạt động được gắn vào cùng một luồng đầu vào HAL, khuôn khổ 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 ca sử dụng.

Khi một số 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ị khác nhau.

Nếu công nghệ tương thích, bạn nên HAL âm thanh và hệ thống phụ cho phép các luồng khác nhau thu được 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ị chia sẻ cùng một giao diện âm thanh kỹ thuật số hoặc thiết bị quay lại), 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 cùng một kịch bản được lặp lại.
  • Khi trạng thái đồng thời kết thúc, luồng hoạt động còn lại phải được chuyể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 làm 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 trước khi 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 phương addEffect() hoặc removeEffect() HAL.

Để 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 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ố chồng chéo trong quá trình kích hoạt và hủy kích hoạt ca sử dụng, khiến hai quy trình hoạt động đồng thời (ví dụ: hai phiên bản của bộ hủy 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 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ị vô hiệu hóa.

Khi một số luồng thu 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 HAL và hệ thống con âm thanh sẽ cho phép áp dụng các xử lý trước khác nhau cho các luồng khác nhau, ngay cả khi chúng chia sẻ cùng một thiết bị đầu vào. Đó là, xử lý trước nên được áp dụng sau khi giải dòng từ nguồn thu chính.

Nếu không thể vì lý do kỹ thuật trên một hệ thống phụ âm thanh nhất định, HAL âm thanh phải á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

Chụp từ AP có thể xảy ra khi cuộc gọi thoại đang hoạt động. 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 rất hữu ích khi đề cập đến các nguyên tắc cho tình huống này.

Hai kiểu chụp khác nhau từ AP là cần thiết trong một cuộc gọi.

Bắt cuộc gọi RX và TX

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 bộ sink vai trò) với một tuyến 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 ), có thể có ít nhất một luồng thu đang hoạt động từ thiết bị AudioDevice.IN_TELEPHONY_RX .

Chụp từ các 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 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, ưu tiên lựa chọn thiết bị và xử lý trước phải luôn được thúc đẩy 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ừ các 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 thập đồng thời từ AP và DSP âm thanh. Điều này bao gồm cả việc thu 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ờ bắt đồ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à cấu hình đầu vào cụ thể để thu từ nóng được xác định bằng cờ AudioInputFlag.HW_HOTWORD . Việc triển khai phải hỗ trợ việc 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ằng 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.

Hàm ý đố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 của 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 có các điều kiện và đảm bảo sau để áp dụng cho các ứng dụng được tải trước đặc quyền yêu cầu giữ vai trò Trợ lý.

  • Dữ liệu được thu thập qua micrô 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 lắng nghe đồng thời phải cung cấp các dấu hiệu trực quan cho người dùng sau khi từ nóng được phát hiện. Đ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ẽ 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 kích hoạt Trợ lý.
  • Khi các 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 các bản ghi âm 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 lẫ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ể lắng nghe từ nóng của nó. Do đó, cần phải 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 dẫn đến trải nghiệm mượt mà hơn nhiều cho người dùng với cả hai Trợ lý.

Ứng dụng đang giữ micrô 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 phải mặc định, không có thay đổi về hành vi đối với Android 10.

Triển khai HAL âm thanh mẫu

Có thể tìm thấy một 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 .