Quyền phát âm thanh

Trước khi bắt đầu một luồng logic, ứng dụng sẽ yêu cầu quyền phát âm thanh bằng cách sử dụng các thuộc tính âm thanh giống như được dùng cho luồng logic. Ứng dụng phải tuân thủ việc mất tiêu điểm để hoạt động như mong đợi trong các trường hợp sử dụng ô tô.

Mặc dù bạn nên gửi yêu cầu lấy tiêu điểm, nhưng hệ thống không thực thi yêu cầu này. Do đó, hãy coi tiêu điểm là một phương tiện để kiểm soát gián tiếp và tránh xung đột trong khi phát thay vì là cơ chế điều khiển âm thanh chính. Xe không được phụ thuộc vào hệ thống lấy nét để vận hành hệ thống con âm thanh.

Lượt tương tác với tiêu điểm

Để hỗ trợ AAOS, các yêu cầu về quyền phát âm thanh được xử lý dựa trên các lượt tương tác được xác định trước giữa CarAudioContext của yêu cầu và lượt tương tác của chủ sở hữu quyền phát hiện hiện tại. Có ba loại tương tác:

  • Độc quyền
  • Từ chối
  • Concurrent

Hoạt động tương tác độc quyền

Đây là mô hình tương tác được sử dụng phổ biến nhất với Android.

Trong các lượt tương tác độc quyền, mỗi lần chỉ có một ứng dụng được phép giữ tiêu điểm. Do đó, yêu cầu tiêu điểm sắp tới sẽ được cấp tiêu điểm trong khi chủ thể tiêu điểm hiện tại mất tiêu điểm. Vì cả hai ứng dụng đều phát nội dung nghe nhìn, nên chỉ một ứng dụng được phép giữ tiêu điểm. Do đó, yêu cầu tiêu điểm của ứng dụng mới bắt đầu sẽ được trả về bằng AUDIOFOCUS_REQUEST_GRANTED, trong khi ứng dụng phát nhạc hiện tại sẽ nhận được sự kiện thay đổi tiêu điểm có trạng thái mất tương ứng với loại yêu cầu đã thực hiện.

Từ chối tương tác

Với các lượt tương tác từ chối, yêu cầu đến luôn bị từ chối. Ví dụ: khi cố gắng phát nhạc trong khi đang có cuộc gọi. Trong trường hợp này, nếu Trình quay số giữ quyền phát âm thanh cho một cuộc gọi và ứng dụng thứ hai yêu cầu quyền phát để phát nhạc, thì ứng dụng nhạc sẽ nhận được AUDIOFOCUS_REQUEST_FAILED để phản hồi yêu cầu. Vì yêu cầu lấy tiêu điểm bị từ chối, nên không có sự kiện mất tiêu điểm nào được gửi đến chủ thể tiêu điểm hiện tại.

Tương tác đồng thời

Điểm đặc biệt của AAOS là các lượt tương tác đồng thời. Điều này cho phép các ứng dụng yêu cầu quyền phát âm thanh trong ô tô giữ quyền phát đồng thời với các ứng dụng khác. Để một lượt tương tác đồng thời diễn ra, bạn phải đáp ứng các điều kiện sau. The:

Nếu đáp ứng các tiêu chí này, thì yêu cầu tiêu điểm sẽ trả về bằng AUDIOFOCUS_REQUEST_GRANTED trong khi chủ thể tiêu điểm hiện tại không có thay đổi nào về tiêu điểm. Tuy nhiên, nếu chủ thể tiêu điểm hiện tại chọn nhận sự kiện nhấn giữ hoặc tạm dừng khi bị nhấn giữ, thì chủ thể tiêu điểm hiện tại sẽ mất tiêu điểm, như xảy ra với một lượt tương tác độc quyền.

Xử lý các luồng đồng thời

Mặc dù hoạt động tương tác đồng thời có nhiều ứng dụng, nhưng hãy cẩn thận khi kết hợp và giảm âm ở cấp phần cứng trên các thiết bị đầu ra. Bạn nên định tuyến các thực thể của CarAudioContext được phép phát đồng thời đến các thiết bị đầu ra khác nhau.

Bằng cách có các thiết bị đầu ra riêng biệt cho các luồng đồng thời, điều này cho phép HAL giảm một trong các luồng trước khi kết hợp các luồng đó hoặc định tuyến các luồng thực tế đến các loa khác nhau trong xe. Nếu các luồng logic được kết hợp trong Android, thì các mức tăng sẽ không bị thay đổi và được phân phối trong cùng một luồng thực.

Ví dụ: khi nội dung đa phương tiện và chỉ đường được phân phối đồng thời, mức tăng đối với luồng nội dung đa phương tiện có thể tạm thời giảm (hoặc bị giảm) để có thể nghe rõ hơn hướng dẫn chỉ đường. Ngoài ra, luồng điều hướng có thể được định tuyến đến loa bên người lái trong khi nội dung nghe nhìn tiếp tục phát trong phần còn lại của cabin.

Ma trận tương tác

Bảng này cho thấy ma trận tương tác do CarAudioService xác định. Mỗi hàng đại diện cho CarAudioContext của chủ thể lấy tiêu điểm hiện tại và mỗi cột đại diện cho yêu cầu sắp tới.

Ví dụ: khi một ứng dụng đa phương tiện âm nhạc giữ tiêu điểm khi một ứng dụng điều hướng yêu cầu tiêu điểm, ma trận sẽ cho biết rằng hai lượt tương tác có thể phát đồng thời, giả sử các tiêu chí khác cho lượt tương tác đồng thời được đáp ứng.

Do các hoạt động tương tác đồng thời, có thể có nhiều trình giữ tiêu điểm. Trong trường hợp này, yêu cầu tiêu điểm sắp tới sẽ được so sánh với từng chủ sở hữu tiêu điểm hiện tại trước khi xác định loại tương tác sẽ áp dụng. Trong trường hợp này, lượt tương tác thận trọng nhất sẽ thắng. Từ chối, sau đó là độc quyền và cuối cùng là đồng thời.

Ma trận tương tác quyền phát âm thanh

Hình 1. Ma trận tương tác quyền phát âm thanh.

Trong Android 11, chúng tôi đã ra mắt một chế độ cài đặt mới cho phép người dùng thay đổi hành vi tương tác giữa tính năng chỉ đường và cuộc gọi điện thoại. Khi được đặt, android.car.KEY_AUDIO_FOCUS_NAVIGATION_REJECTED_DURING_CALL sẽ thay đổi hoạt động tương tác giữa các yêu cầu tiêu điểm NAVIGATION sắp tới và chủ sở hữu tiêu điểm CALL hiện tại từ đồng thời thành từ chối. Nếu người dùng muốn hướng dẫn chỉ đường không làm gián đoạn cuộc gọi, họ có thể bật chế độ cài đặt này. Chế độ cài đặt này sẽ được duy trì cho người dùng và có thể được thiết lập một cách linh động để các yêu cầu lấy tiêu điểm tiếp theo tuân theo chế độ cài đặt mới.

Quyền phát âm thanh có thể trì hoãn

Trong Android 11, AAOS đã thêm tính năng hỗ trợ để yêu cầu quyền phát âm thanh có thể trì hoãn. Điều này cho phép các yêu cầu tiêu điểm không tạm thời bị trì hoãn khi hoạt động tương tác của các yêu cầu đó với chủ sở hữu tiêu điểm hiện tại thường dẫn đến việc các yêu cầu đó bị từ chối. Khi một thay đổi về tiêu điểm dẫn đến trạng thái mà yêu cầu bị trì hoãn có thể lấy tiêu điểm, yêu cầu sẽ được cấp.

Quy tắc đối với yêu cầu quyền phát âm thanh bị trì hoãn

  • Chỉ yêu cầu không tạm thời. Bạn chỉ có thể gửi yêu cầu trì hoãn cho các nguồn không tạm thời để tránh phát âm thanh tạm thời sau khi âm thanh đó có liên quan.

  • Mỗi lần chỉ có thể trì hoãn một yêu cầu. Nếu một yêu cầu có thể trì hoãn được thực hiện trong khi đã có một yêu cầu bị trì hoãn, thì yêu cầu bị trì hoãn ban đầu sẽ nhận được một sự kiện thay đổi AUDIOFOCUS_LOSS và yêu cầu mới sẽ nhận được phản hồi đồng bộ của AUDIOFOCUS_REQUEST_DELAYED.

  • Yêu cầu có thể trì hoãn phải có OnAudioFocusChangeListener. Sau khi một yêu cầu bị trì hoãn, trình nghe sẽ được dùng để thông báo cho người yêu cầu khi yêu cầu đó cuối cùng được cấp (AUDIOFOCUS_GAIN) hoặc nếu yêu cầu đó bị từ chối sau này (AUDIOFOCUS_LOSS).

Yêu cầu tiêu điểm có thể trì hoãn

Cách tạo một yêu cầu có thể bị trì hoãn:

  1. Sử dụng AudioFocusRequest.Builder#setAcceptsDelayedFocusGain.

    mMediaWithDelayedFocusListener = new MediaWithDelayedFocusListener();
    
    mDelayedFocusRequest = new AudioFocusRequest
         .Builder(AudioManager.AUDIOFOCUS_GAIN)
         .setAudioAttributes(mMusicAudioAttrib)
         .setOnAudioFocusChangeListener(mMediaWithDelayedFocusListener)
         .setForceDucking(false)
         .setWillPauseWhenDucked(false)
         .setAcceptsDelayedFocusGain(true)
         .build();
    
  2. Khi đưa ra yêu cầu, hãy xử lý phản hồi AUDIOFOCUS_REQUEST_DELAYED:

    int delayedFocusRequestResults = mAudioManager.requestAudioFocus(mDelayedFocusRequest);
    if (delayedFocusRequestResults == AudioManager.AUDIOFOCUS_REQUEST_GRANTED) {
        // start audio playback
        return;
    }
    if (delayedFocusRequestResults == AudioManager.AUDIOFOCUS_REQUEST_DELAYED) {
         // audio playback delayed to audio focus listener
         return;
    }
    
  3. Khi yêu cầu bị trì hoãn, trình nghe tiêu điểm sẽ xử lý các thay đổi về tiêu điểm:

    private final class MediaWithDelayedFocusListener implements
    OnAudioFocusChangeListener {
           @Override
           public void onAudioFocusChange(int focusChange) {
               synchronized (mLock) {
                   switch (focusChange) {
                       case AudioManager.AUDIOFOCUS_GAIN:
                            // Start focus playback
                       case AudioManager.AUDIOFOCUS_LOSS_TRANSIENT:
                            // Pause media transiently
                       case AudioManager.AUDIOFOCUS_LOSS:
                            // Stop media
    

Hiệu ứng mờ do hệ thống thực thi

Android 15 ra mắt tính năng làm mờ âm thanh do hệ thống thực thi trong AAOS. Trong Android, hệ thống không thực thi tiêu điểm âm thanh. Vì vậy, mặc dù nhà phát triển ứng dụng được khuyến khích tuân thủ nguyên tắc về quyền phát âm thanh, nhưng nếu một ứng dụng tiếp tục phát âm thanh lớn ngay cả sau khi mất quyền phát âm thanh, thì hệ thống không thể ngăn chặn việc này.

Trong môi trường ô tô quan trọng về an toàn, việc tuân thủ tiêu chí lấy tiêu điểm âm thanh là rất quan trọng để giảm thiểu sự phân tâm của người lái xe. Với tính năng này, khung âm thanh hiện sẽ tự động làm mờ các ứng dụng mất tiêu điểm âm thanh để mang lại trải nghiệm âm thanh có thể kiểm soát và dự đoán được hơn.

Tính năng nâng cao này giúp đảm bảo rằng các ứng dụng tuân thủ quyết định mất quyền phát âm thanh như được xác định bởi ma trận tương tác, ngăn chặn xung đột phát âm thanh.

Thiết kế cao cấp

Hình sau đây cho thấy thiết kế cấp cao và hỗ trợ tính năng mất tiêu điểm trong ô tô:

Thiết kế cấp cao cho tính năng làm mờ do hệ thống thực thi

Hình 2. Thiết kế cấp cao cho tính năng làm mờ do hệ thống thực thi.

  • Hiệu ứng làm mờ có mục tiêu: Việc thực thi hiệu ứng làm mờ trong Android 15 được thiết kế riêng cho các trường hợp ứng dụng mất quyền phát âm thanh nhưng vẫn tiếp tục phát âm thanh.
  • Cơ chế làm mờ: Khi một ứng dụng mất quyền phát âm thanh cho một ứng dụng mới yêu cầu:
    • Khung âm thanh sẽ tự động làm mờ âm thanh của ứng dụng bị mất.
    • Sau khi âm thanh tắt dần, hệ thống sẽ tắt tiếng luồng âm thanh.
    • Sau đó, ứng dụng sẽ nhận được thông báo mất tiêu điểm âm thanh.
    • Các ứng dụng có hành vi sai trái sẽ bị tắt tiếng cho đến khi lấy lại quyền phát âm thanh.
    • Logic mặc định là làm mờ dần các ứng dụng bị mờ sau 2 giây. Tuy nhiên, nhà sản xuất thiết bị gốc (OEM) có thể định cấu hình giá trị này thành bất kỳ giá trị thời gian chờ nào.
    • Khung âm thanh sử dụng cấu hình OEM cho cả thao tác làm mờ và làm nổi.
  • Tệp cấu hình OEM: Android 15 bao gồm một tệp cấu hình mới, car_audio_fade_configuration.xml:

    • Tệp này cho phép OEM xác định tiêu chí áp dụng biện pháp thực thi tiêu điểm âm thanh của hệ thống cho một ứng dụng bị mất tiêu điểm.
    • Khung âm thanh chỉ thực thi chế độ tắt tiếng và làm mờ nếu ứng dụng thua cuộc khớp với các quy tắc do OEM xác định trong tệp XML này.
    • Điều này cung cấp một cơ chế để nhà sản xuất thiết bị gốc (OEM) tuỳ chỉnh hành vi của tính năng dựa trên các đặc điểm của ứng dụng hoặc loại hình sử dụng âm thanh.
  • Kiểm soát tính năng bằng RRO: Chúng tôi đã ra mắt một cờ tính năng lớp phủ tài nguyên thời gian chạy (RRO) mới, audioUseFadeManagerConfiguration, để bật hoặc tắt tính năng này:

    • Tính năng này bị tắt theo mặc định.
    • Để kích hoạt chế độ mất tiêu điểm âm thanh do hệ thống thực thi, nhà sản xuất thiết bị gốc (OEM) phải đặt cờ này thành true.
    • Mặc dù khung âm thanh trên ô tô dự kiến sẽ có các định nghĩa cấu hình mờ hợp lệ khi bạn bật cờ, nhưng việc không có các định nghĩa như vậy sẽ không tự động dẫn đến một ngoại lệ nghiêm trọng.
    • Tất cả ứng dụng của cấu hình mờ phải có định nghĩa mờ khớp. Đây là lỗi nghiêm trọng khi gọi cấu hình mờ (theo tên) trong cấu hình âm thanh trên ô tô mà không cung cấp định nghĩa hợp lệ.
    • Khi cờ này bị tắt, tất cả các định nghĩa cấu hình mờ và mọi tham chiếu cấu hình sẽ bị bỏ qua.

Cấu hình trình quản lý hiệu ứng mờ

Khung âm thanh Android 15 giới thiệu một FadeManagerConfiguration thống nhất để cung cấp cho OEM quyền kiểm soát chi tiết đối với hành vi làm mờ âm thanh. Khung này được minh hoạ trong Hình 3:

Cấu hình trình quản lý hiệu ứng mờ

Hình 3. Cấu hình trình quản lý hiệu ứng mờ.

Cấu hình này bao gồm:

  • Thuộc tính chuyển đổi mờ dần: Chế độ cài đặt cho cả hiệu ứng mờ dần và mờ dần.
    • Có thể được xác định bằng các thuộc tính hoặc cách sử dụng âm thanh cụ thể.
    • Cho phép cài đặt thời lượng tuỳ chỉnh.
    • Các chế độ cài đặt này được dùng để tạo VolumeShaper.Configuration.
  • Chính sách về hiệu ứng mờ: Các quy tắc quản lý thời điểm hiệu ứng mờ xuất hiện.
    • Nút bật/tắt chung để bật hoặc tắt hiệu ứng mờ.
    • Danh sách có thể định cấu hình về các trường hợp sử dụng âm thanh có thể làm mờ (đủ điều kiện để làm mờ khi mất tiêu điểm).
    • Danh sách loại trừ (không thể làm mờ) ngăn chặn việc làm mờ các nguồn âm thanh quan trọng hoặc được chỉ định. Các danh sách này có thể dựa trên:
      • Loại nội dung
      • Thuộc tính âm thanh
      • UID ứng dụng (chỉ có thể thiết lập trong thời gian chạy)

Cấu hình OEM

Trong phần này, chúng ta sẽ xem xét các tuỳ chọn tuỳ chỉnh hiện có dành cho nhà sản xuất thiết bị gốc (OEM).

Tệp XML cấu hình chế độ làm mờ âm thanh trên ô tô

Android 15 giới thiệu một tệp cấu hình mới, car_audio_fade_configuration.xml, cho phép nhà sản xuất thiết bị gốc (OEM) tuỳ chỉnh rộng rãi hành vi tắt âm thanh trong khi mất tiêu điểm.

  • Tệp XML này cho phép xác định nhiều cấu hình mờ khác nhau, mỗi cấu hình yêu cầu một tên riêng biệt để tham chiếu chéo trong car_audio_configuration.xml.
  • Bạn có thể linh hoạt áp dụng các cấu hình này trên nhiều vùng âm thanh và cấu hình vùng.
  • Đáng chú ý là mỗi cấu hình mờ chỉ chấp nhận các giá trị thời lượng tính bằng mili giây, sau đó hệ thống sẽ sử dụng các giá trị này để tạo nội bộ VolumeShaper.Configuration tương ứng.

Để biết hướng dẫn triển khai thực tế, hãy tham khảo các cấu hình mẫu được cung cấp cho trình mô phỏng tại device/generic/car/emulator/audio/car_audio_fade_configuration.xml.

Tệp XML cấu hình âm thanh trên ô tô

Android 15 giới thiệu tệp car_audio_configuration.xml đã cập nhật, hiện ở phiên bản 4, tích hợp các thẻ applyFadeConfigsfadeConfig mới. Thẻ applyFadeConfigs có thể chứa nhiều định nghĩa fadeConfig, cho phép định cấu hình hiệu ứng mờ linh hoạt. Mỗi định nghĩa:

  • Phải bao gồm một fadeConfig mặc định được chỉ định bằng isDefault = true.
  • Có thể bao gồm một số định nghĩa fadeConfig tạm thời. Các cấu hình tạm thời này được áp dụng cụ thể trong quá trình tương tác khi mất quyền phát âm thanh và chỉ khi ứng dụng nhận được quyền phát âm thanh khớp với tiêu chí được xác định trong cấu hình tạm thời.

Để biết hướng dẫn triển khai thực tế, hãy tham khảo các cấu hình mẫu được cung cấp cho trình mô phỏng tại device/generic/car/emulator/audio/car_audio_configuration.xml.

Tiện ích dịch vụ quyền phát âm thanh của OEM

Các nhà sản xuất thiết bị gốc (OEM) triển khai dịch vụ tập trung vào âm thanh ô tô tuỳ chỉnh có thể linh hoạt định cấu hình các chế độ cài đặt làm mờ âm thanh bằng cách đưa các chế độ đó vào OemCarAudioFocusResult. Bạn có thể thực hiện việc này bằng cách sử dụng phương thức trình tạo setAudioAttributesToCarAudioFadeConfigurationMap():

/** @see OemCarAudioFocusResult#getAudioAttributesToCarAudioFadeConfigurationMap() **/
@NonNull
public Builder setAudioAttributesToCarAudioFadeConfigurationMap(@NonNull
        Map<AudioAttributes, CarAudioFadeConfiguration> attrsToCarAudioFadeConfig) {
}

Đáng chú ý là OEM có thể chọn sử dụng chế độ cài đặt chế độ mờ thời gian khởi động được định cấu hình sẵn hoặc áp dụng linh động các cấu hình thông qua dịch vụ tiêu điểm âm thanh tuỳ chỉnh, cung cấp khả năng điều khiển thích ứng.

Sơ đồ trình tự

Sơ đồ trình tự này minh hoạ hành vi sau khi cấp quyền phát âm thanh cho App2 và việc mất quyền phát âm thanh sau đó của App1:

  • Khi dịch vụ âm thanh trên ô tô gửi mất tiêu điểm âm thanh đến App1, quá trình phát từ trình phát App1 sẽ bị mờ dần theo định nghĩa của các FadeManagerConfiguration đang hoạt động. Sau khi thao tác làm mờ hoàn tất, App1 sẽ nhận được lệnh gọi lại tiêu chuẩn khi mất tiêu điểm âm thanh.
  • Nếu muốn, bạn có thể làm âm thanh của App1 trở lại sau một khoảng thời gian có thể định cấu hình. Nhà sản xuất thiết bị gốc (OEM) có thể linh hoạt đặt khoảng thời gian này thông qua Builder#setFadeInDurationForUsage(int, long) theo các yêu cầu cụ thể về sản phẩm.

Sơ đồ trình tự cho tính năng làm mờ âm thanh trên ô tô

Hình 4. Sơ đồ trình tự cho tính năng làm mờ âm thanh trên ô tô.

Quản lý tiêu điểm nhiều vùng

Đối với những xe có nhiều vùng âm thanh, tiêu điểm âm thanh được quản lý độc lập cho từng vùng. Do đó, yêu cầu đối với một vùng không tính đến đối tượng giữ tiêu điểm trong các vùng khác, cũng không khiến đối tượng giữ tiêu điểm trong các vùng khác mất tiêu điểm. Nhờ đó, bạn có thể quản lý tiêu điểm của khoang chính riêng biệt với hệ thống giải trí cho ghế sau, do đó không làm gián đoạn việc phát âm thanh ở một khu vực do các thay đổi được thực hiện trong tiêu điểm sang khu vực khác.

Đối với tất cả ứng dụng, CarAudioService sẽ tự động quản lý tiêu điểm. Vùng âm thanh của yêu cầu tập trung được xác định bằng UserId hoặc UID liên kết (để biết thông tin chi tiết, hãy xem phần Điều hướng âm thanh nhiều vùng).

Yêu cầu âm thanh từ nhiều vùng cùng lúc

Nếu muốn phát âm thanh đồng thời ở nhiều vùng, ứng dụng phải yêu cầu tiêu điểm cho từng vùng bằng cách đưa AUDIOFOCUS_EXTRA_REQUEST_ZONE_ID vào gói:

//Create attribute with bundle and AUDIOFOCUS_EXTRA_REQUEST_ZONE_ID
Bundle bundle = new Bundle();
bundle.putInt(CarAudioManager.AUDIOFOCUS_EXTRA_REQUEST_ZONE_ID,
               zoneId);

AudioAttributes attributesWithZone = new AudioAttributes.Builder()
     .setUsage(AudioAttributes.USAGE_MEDIA)
     .addBundle(bundle)
     .build();

//Create focus request using built attributesWithZone

Tham số gói này cho phép bên yêu cầu ghi đè các mối liên kết vùng âm thanh tự động để sử dụng mã vùng được chỉ định. Do đó, một ứng dụng có thể đưa ra các yêu cầu riêng biệt cho các vùng âm thanh khác nhau.

Quyền phát âm thanh HAL

Kể từ Android 11, HAL được bật để thay mặt cho các luồng bên ngoài yêu cầu tiêu điểm. Mặc dù không bắt buộc, nhưng bạn nên sử dụng các API này để cho phép âm thanh bên ngoài trở thành thành phần tham gia tối ưu trong hệ sinh thái Android và mang lại trải nghiệm liền mạch cho người dùng.

HAL sẽ đưa ra quyết định cuối cùng về âm thanh nào được ưu tiên. Ở mức độ này, âm thanh khẩn cấp và âm thanh quan trọng về an toàn phải được phát bất kể HAL có được cấp quyền phát âm thanh hay không và phải tiếp tục phát khi thích hợp ngay cả khi HAL mất quyền phát âm thanh. Điều này cũng đúng đối với mọi âm thanh theo yêu cầu của quy định của chính phủ.

HAL phải chủ động tắt tiếng các luồng Android khi thích hợp khi phát âm thanh khẩn cấp hoặc âm thanh quan trọng về an toàn để đảm bảo người dùng nghe được rõ ràng.

AudioControl@2.0

Phiên bản 2.0 của AudioControl HAL giới thiệu các API mới sau:

API Mục đích
IAudioControl#registerFocusListener Đăng ký một thực thể của IFocusListener bằng HAL AudioControl. Trình nghe này cho phép HAL yêu cầu và từ bỏ quyền phát âm thanh. HAl cung cấp một thực thể ICloseHandle để Android sử dụng nhằm huỷ đăng ký trình nghe.
IAudioControl#onAudioFocusChange Thông báo cho HAL về các thay đổi về trạng thái đối với các yêu cầu lấy tiêu điểm do HAL thực hiện thông qua IFocusListener, bao gồm cả phản hồi đối với các yêu cầu lấy tiêu điểm ban đầu.
IFocusListener#requestAudioFocus Thay mặt HAL yêu cầu tiêu điểm cho một mục đích sử dụng, mã nhận dạng vùng và loại tăng tiêu điểm đã chỉ định.
IFocusListener#abandonAudioFocus Bỏ qua các yêu cầu tiêu điểm HAL hiện có cho mục đích sử dụng và mã vùng được chỉ định.

HAL có thể có nhiều yêu cầu lấy tiêu điểm cùng một lúc, nhưng bị giới hạn ở một yêu cầu cho mỗi lần sử dụng và ghép nối mã vùng. Android giả định rằng HAL sẽ bắt đầu phát âm thanh ngay lập tức cho một lần sử dụng sau khi yêu cầu được thực hiện và tiếp tục phát âm thanh cho đến khi từ bỏ tiêu điểm.

Ngoài registerFocusListener, các yêu cầu này là oneway để đảm bảo rằng Android không trì hoãn HAL trong khi xử lý yêu cầu lấy tiêu điểm. HAL không được chờ để lấy tiêu điểm trước khi phát âm thanh quan trọng về an toàn. HAL không bắt buộc phải theo dõi và phản hồi các thay đổi về tiêu điểm âm thanh thông qua IAudioControl#onAudioFocusChange.

Dịch vụ quyền phát âm thanh trên ô tô của nhà sản xuất thiết bị gốc (OEM)

Trong Android 14, AAOS đã ra mắt các dịch vụ trình bổ trợ OEM cho ô tô để cho phép cấu hình một số thành phần ô tô. Đối với Dịch vụ trình bổ trợ âm thanh trên ô tô, dịch vụ trình bổ trợ cho phép nhà sản xuất thiết bị gốc (OEM) quản lý các yêu cầu lấy tiêu điểm do dịch vụ âm thanh trên ô tô chặn. Điều này giúp nhà sản xuất thiết bị gốc linh hoạt hơn trong việc quản lý tiêu điểm theo yêu cầu của các quy tắc và quy định. Do đó, cách tương tác với tiêu điểm âm thanh có thể khác nhau giữa các nhà sản xuất và theo khu vực. Giả định cơ bản về quyền phát âm thanh vẫn giữ nguyên, tức là các ứng dụng vẫn phải yêu cầu quyền phát để quản lý âm thanh tốt hơn nhằm nâng cao trải nghiệm người dùng. Nhìn chung, một số quy tắc vẫn áp dụng cho yêu cầu quyền phát âm thanh của ứng dụng:

  • Nếu không có tiêu điểm âm thanh ưu tiên cao nào (bao gồm cả cuộc gọi điện thoại, cảnh báo khẩn cấp hoặc thông báo an toàn), các ứng dụng phải có thể lấy tiêu điểm âm thanh tạm thời hoặc vĩnh viễn.

  • Khi tiêu điểm nội dung nghe nhìn đang hoạt động:

    • Ứng dụng yêu cầu quyền sử dụng cuộc gọi phải có thể nhận cuộc gọi đồng thời hoặc độc quyền.

    • Các ứng dụng yêu cầu tiêu điểm sử dụng tính năng chỉ đường phải có thể nhận được tiêu điểm chỉ đường đồng thời hoặc độc quyền.

    • Ứng dụng yêu cầu tiêu điểm sử dụng trợ lý phải có thể nhận được tiêu điểm sử dụng đồng thời hoặc độc quyền.

  • Khi các ứng dụng có quyền phát âm thanh ưu tiên cao (bao gồm cả cuộc gọi điện thoại, cảnh báo khẩn cấp hoặc thông báo an toàn) đang hoạt động, mọi yêu cầu quyền phát âm thanh bị trì hoãn đến sẽ được cấp hoặc trì hoãn nếu cần.

Mặc dù không đầy đủ, nhưng các đề xuất này có thể giúp ứng dụng yêu cầu lấy tiêu điểm lấy được tiêu điểm nếu không có âm thanh có mức độ ưu tiên cao đang hoạt động. Ngay cả khi âm thanh có mức độ ưu tiên cao đang hoạt động, các yêu cầu lấy tiêu điểm bị trì hoãn vẫn phải được tuân thủ và có thể lấy tiêu điểm khi âm thanh có mức độ ưu tiên cao dừng lại.