Chụp đồng thời

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 thanh đang hoạt động diễn ra đồng thời. Ví dụ: nếu người dùng muốn điều khiển cuộc gọi VoIP hoặc trình ghi video bằng 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 quyền nhất định thu âm đồ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 thu được thay vì ngăn ứng dụng bắt đầu thu âm. Điều này cho phép khung động giải quyết các thay đổi về số lượng và loại trường hợp sử dụng hoạt động thu âm, mà không ngăn ứng dụng bắt đầu thu âm 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 một ứng dụng khác hoàn tất việc thu âm.

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ả khi trong một số trường hợp, chỉ có một luồng cung cấp âm thanh không tắt tiế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ợ thu âm đồng thời.

Các trường hợp thu âm từ HAL âm thanh

Trường hợp thu âm đồng thời có thể dẫn đến nhiều 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ý.

Tính đồng thời có thể xảy ra giữa các trường hợp sau:

  • Nhiều 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 công suất thấp

Hoạt động đồng thời của 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.

Ở mức tối thiểu, HAL âm thanh phải hỗ trợ ít nhất một thực thể của từng 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à hoạt động.

Lựa chọn thiết bị

Khi nhiều ứ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 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ị khác nhau.

Nếu công nghệ này tương thích, bạn nên để HAL âm thanh và hệ thống con cho phép các luồng khác nhau thu âm 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 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 kiểm soát 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à 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 chuyể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 tiền xử lý trên luồng đầu vào bằng các phương thức HAL addEffect() hoặc removeEffect().

Đối với việc tiền xử lý trên một luồng đầu vào nhất định, khung âm thanh chỉ bật 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 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, quá trình triển khai HAL sẽ chọn yêu cầu nào được chấp nhận; quá trình 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ị tắt.

Khi nhiều luồng thu âm đang 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.

Quá trình triển khai HAL và hệ thống con âm thanh phải cho phép áp dụng nhiều quy trình tiền xử lý cho các luồng khác nhau, ngay cả khi chúng dùng chung cùng một thiết bị đầu vào. Tức là, quy trình tiền xử lý phải được áp dụng sau khi huỷ ghép kênh các luồng từ nguồn thu âm 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 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 phần Lựa chọn thiết bị.

Cuộc gọi thoại và thu âm đồng thời từ AP

Bạn có thể thu âm từ AP khi cuộc gọi thoại đang hoạt động. Tình huống này không mới trong Android 10 và không liên quan trực tiếp đến tính năng thu âm đồ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.

Bạn cần 2 loại thu âm khác nhau từ AP trong khi gọi điện.

Thu âm cuộc gọi RX và TX

Việc thu âm 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 cuộc gọi được kết nối (chế độ phát âm thanh là AudioMode.IN_CALL), bạn có thể có ít nhất một luồng thu âm đang hoạt động từ thiết bị AudioDevice.IN_TELEPHONY_RX.

Thu âm từ thiết bị đầu vào khi cuộc gọi đang hoạt động

Khi cuộc gọi đang hoạt động (chế độ phát â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 lựa chọn thiết bị và tiền xử lý phải luôn được điều khiển bằng 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.

Thu âm đồ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 cụm từ kích hoạt, quá trình triển khai phải hỗ trợ thu âm đồng thời từ AP và DSP âm thanh. Điều này bao gồm cả việc thu âm bằng DSP trong giai đoạn phát hiện ban đầu và thu âm bằng AP với AudioSource.HOTWORD sau khi quá trình phát hiện được kích hoạt bởi DSP.

Điều này phải được phản ánh bằng cờ thu âm đồng thời do HAL trình kích hoạt âm thanh báo cáo thông qua bộ mô tả quá trình 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 việc thu âm cụm từ 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 bằng số lượng mô hình âm thanh mà HAL trình kích hoạt âm thanh có thể tải đồng thời.

Bạn có thể thu âm từ hồ sơ đầu vào này 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 (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 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 quyền được tải sẵn yêu cầu giữ vai trò Trợ lý.

  • Dữ liệu thu thập được thông qua micrô 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 cụm từ kích hoạt được kích hoạt.
  • Các ứng dụng đang nghe đồng thời phải cung cấp tín hiệu trực quan cho người dùng sau khi cụm từ kích hoạt đượ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ẽ 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 trình kích hoạt Trợ lý.
  • Khi bản ghi âm được lưu trữ, người dùng có thể truy cập, xem lại và xoá bản ghi bất cứ lúc nào.

Các điểm cải tiến về chức năng cho Android 10

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ể nghe cụm từ kích hoạt. Do đó, bạn cần chuyển đổi giữa 2 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ó cả 2 Trợ lý có trải nghiệm mượt mà hơn nhiều.

Các ứng dụng giữ micrô luôn bật

Khi các ứng dụng như Shazam hoặc Waze giữ micrô luôn bật, Trợ lý mặc định vẫn có thể nghe cụm từ kích hoạt.

Đối với các ứng dụng Trợ lý không mặc định, không có thay đổi nào về hành vi đối với Android 10.

Triển khai HAL âm thanh mẫu

Bạn có thể xem ví dụ về quá trình triển khai HAL âm thanh tuân thủ các nguyên tắc trong tài liệu này có thể được tìm thấy trong AOSP.