Chụp đồng thời

Android 10 cải thiện trải nghiệm người dùng khi yêu cầu nhiều tính năng quay âm thanh đang hoạt động cùng lúc, 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 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 ghi â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 đã ghi lại thay vì ngăn ứng dụng bắt đầu ghi lại. Điều này cho phép khung xử lý linh động các thay đổi về số lượng và loại trường hợp sử dụng tính năng quay video đang hoạt động, mà không ngăn ứng dụng bắt đầu quay video 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 đã quay xong video.

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ỉ có 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 của 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 các tình huống từ HAL âm thanh

Tình huống thu thập đồng thời có thể dẫn đến nhiều tình huống 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 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 khung âm thanh sử dụng để xác định số lượng luồng đầu vào có thể 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ó 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ệ tương thích, bạn nên dùng HAL âm thanh và hệ thống con để cho phép nhiều luồng ghi lại 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 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 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 tình huống.
  • 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 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ư 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 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 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 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. Điều này có nghĩa là quá trình xử lý trước sẽ được áp dụng sau khi loại bỏ các luồng từ nguồn thu thập chính.

Nếu không thể vì lý do kỹ thuật trong một hệ thống âm thanh phụ 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 nêu trong phần Lựa chọn thiết bị.

Gọi thoại và ghi đồng thời 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. 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 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 kiể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 sẽ hiển thị trên hồ sơ đầu vào (mixPort của vai trò sink) với một 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), 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.

Ghi lại từ các thiết bị đầu vào khi một lệnh gọi đang hoạt động

Khi một lệnh gọi đang hoạt động (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ư đã chỉ định trong phần Hoạt động đồng thời của luồng đầu vào của 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ợ các chức năng phát hiện cụm từ kích hoạt hoặc ngữ cảnh âm thanh công suất thấp, hoạt động 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 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à nhập hồ sơ dành riêng cho tính năng ghi lại 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 có thể được tải đồng thời bằng trình kích hoạt âm thanh HAL.

Có thể thu thập dữ liệu 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ợi 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 tải trước đặc quyền yêu cầu giữ vai trò Trợ lý.

  • Dữ liệu thu thập được 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 nghe đồng thời sẽ cung cấp chỉ dẫn bằng hình ảnh cho người dùng sau khi phát hiện thấy 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 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ó hai Trợ lý luôn bật trên thiết bị, thì chỉ một trong số đó có thể nghe cụm từ kích hoạt. 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. Nhờ đó, người dùng có cả Trợ lý Google và Trợ lý Amazon sẽ có trải nghiệm mượt mà hơn.

Ứng dụng đang bật micrô

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ể 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 ứng dụng trên Android 10 sẽ không thay đổi.

Triển khai HAL âm thanh mẫu

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