Trước khi bắt đầu một luồng logic, ứng dụng sẽ yêu cầu quyền ưu tiên âm thanh bằng cách sử dụng các thuộc tính âm thanh tương tự như thuộc tính được dùng cho luồng logic. Ứng dụng phải tôn trọng các trường hợp mất tiêu điểm để hoạt động như mong đợi trong các trường hợp sử dụng trên ô tô.
Mặc dù nên gửi yêu cầu lấy tiêu điểm, nhưng hệ thống không bắt buộc bạn phải làm vậ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 quá trình phát thay vì là cơ chế kiểm soát â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 lấy tiêu điểm
Để hỗ trợ AAOS, các yêu cầu về quyền phát âm thanh sẽ được xử lý dựa trên các hoạt động tương tác được xác định trước giữa CarAudioContext
của yêu cầu và CarAudioContext
của những bên đang giữ quyền phát hiện tại. Có 3 loại lượt tương tác:
- Độc quyền
- Từ chối
- Concurrent
Tương tác độc quyền
Đây là mô hình tương tác thường dùng nhất với Android.
Trong các hoạt động tương tác độc quyền, mỗi lần chỉ được phép một ứng dụng giữ tiêu điểm.
Do đó, yêu cầu lấy tiêu điểm đến sẽ được cấp tiêu điểm trong khi trình giữ 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 lấy tiêu điểm của ứng dụng mới khởi động sẽ được trả về bằng AUDIOFOCUS_REQUEST_GRANTED
trong khi ứng dụng phát nhạc hiện tại nhận được một sự kiện thay đổi tiêu điểm có trạng thái mất tiêu điểm tương ứng với loại yêu cầu đã được thực hiện.
Từ chối tương tác
Với các hoạt động tương tác reject, yêu cầu đến luôn bị từ chối. Ví dụ: khi bạn tìm cách phát nhạc trong lúc đang gọi điện. Trong trường hợp này, nếu ứng dụng Quay số giữ quyền phát âm thanh cho một cuộc gọi và một ứng dụng thứ hai yêu cầu quyền phát để phát nhạc, thì ứng dụng phát 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 đối tượng giữ tiêu điểm hiện tại.
Tương tác đồng thời
Tương tác đồng thời là điểm đặc trưng của AAOS. Điều này giúp những ứng dụng yêu cầu quyền phát âm thanh trên ô tô có thể giữ quyền phát âm thanh đồ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:
Yêu cầu lấy tiêu điểm đến phải yêu cầu AudioManager.AUDIOFOCUS_GAIN_TRANSIENT_MAY_DUCK
Trình giữ tiêu điểm hiện tại không setPauseWhenDucked(true)
Người nắm giữ tiêu điểm hiện tại chọn không nhận các sự kiện giảm âm lượng
Nếu đáp ứng các tiêu chí này, thì yêu cầu lấy tiêu điểm sẽ trả về AUDIOFOCUS_REQUEST_GRANTED
trong khi tiêu điểm của trình giữ tiêu điểm hiện tại không thay đổi. Tuy nhiên, nếu người giữ tiêu điểm hiện tại chọn nhận các sự kiện giảm âm lượng hoặc chọn tạm dừng khi giảm âm lượng, thì người giữ 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ù tương tác đồng thời có nhiều mục đích sử dụng, nhưng hãy cẩn thận khi trộn và giảm âm lượng ở cấp phần cứng trên các thiết bị đầu ra. Bạn nên định tuyến các phiên bản 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, HAL có thể giảm âm lượng của một trong các luồng trước khi trộn chúng hoặc định tuyến các luồng thực đến các loa khác nhau trong xe. Nếu các luồng logic được trộn lẫn trong Android, thì mức tăng sẽ không thay đổi và được phân phối trong cùng một luồng vật lý.
Ví dụ: khi thông tin chỉ đường và nội dung nghe nhìn được truyền tải cùng lúc, mức tăng của luồng nội dung nghe nhìn có thể tạm thời giảm (hoặc giảm âm lượng) để bạn có thể nghe rõ hơn hướng dẫn chỉ đường. Ngoài ra, luồng điều hướng có thể được chuyể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 đối tượng giữ tiêu điểm hiện tại và mỗi cột đại diện cho đối tượng giữ tiêu điểm của yêu cầu đến.
Ví dụ: khi một ứng dụng nội dung nghe nhì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 cho biết rằng hai lượt tương tác có thể diễn ra đồng thời, giả sử các tiêu chí khác cho tương tác đồng thời được đáp ứng.
Do các hoạt động tương tác đồng thời, nên có thể có nhiều hơn một phần tử giữ tiêu điểm. Trong trường hợp này, yêu cầu lấy tiêu điểm đến sẽ được so sánh với từng đối tượng giữ tiêu điểm hiện tại trước khi xác định mức độ tương tác cần á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.
Hình 1. Ma trận tương tác quyền phát âm thanh.
Chỉ đường trong khi gọi điện thoại
Trong Android 11, một chế độ cài đặt mới cho người dùng đã được giới thiệu để cho phép người dùng thay đổi hành vi tương tác giữa chế độ 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 tương tác giữa các yêu cầu lấy tiêu điểm NAVIGATION
đến và các đối tượng giữ tiêu điểm CALL
hiện tại từ đồng thời thành từ chối. Nếu muốn chỉ đường không làm gián đoạn cuộc gọi, người dùng có thể bật chế độ cài đặt này. Chế độ này được duy trì cho người dùng và có thể được đặt linh hoạt để 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 tiêu điểm âm thanh có thể trì hoãn. Điều này cho phép trì hoãn các yêu cầu lấy tiêu điểm không tạm thời khi tương tác của các yêu cầu đó với những đối tượng giữ 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 các 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ể đưa ra yêu cầu trì hoãn đối với các nguồn không tạm thời để tránh trường hợp âm thanh tạm thời phát quá lâu sau khi có liên quan.
Mỗi lần, bạ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 một phản hồi đồng bộAUDIOFOCUS_REQUEST_DELAYED
.Các 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 bên yêu cầu khi yêu cầu đó đượ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:
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();
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; }
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 giới thiệu 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 chế độ lấy nét âm thanh. Vì vậy, mặc dù nhà phát triển ứng dụng nên tuân thủ các 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ô có yêu cầu cao về độ an toàn, việc tuân thủ tiêu điểm âm thanh là rất quan trọng để giảm thiểu tình trạng mất tập trung của người lái xe. Với tính năng này, giờ đây, khung âm thanh sẽ tự động làm mờ các ứng dụng mất tiêu điểm âm thanh, mang đến trải nghiệm âm thanh có kiểm soát và dễ dự đoán hơn.
Việc cải tiến này giúp đảm bảo rằng các ứng dụng tuân thủ quyết định mất tiêu điểm âm thanh theo định nghĩa của 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 minh hoạ thiết kế cấp cao và khả năng hỗ trợ tính năng mất tiêu điểm trong ô tô:
Hình 2. Thiết kế cấp cao cho tính năng làm mờ do hệ thống thực thi.
- Làm mờ có mục tiêu: Việc hệ thống thực thi tính năng làm mờ trong Android 15 được thiết kế đặc biệt cho những 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 ưu tiên âm thanh vào tay một ứng dụng mới yêu cầu quyền này:
- Khung âm thanh sẽ tự động giảm âm lượng âm thanh của ứng dụng thua cuộc.
- Sau khi mờ dần, luồng âm thanh sẽ bị hệ thống tắt tiếng.
- Sau đó, ứng dụng sẽ nhận được thông báo mất quyền phát âm thanh.
- Các ứng dụng hoạt động không đúng cách sẽ bị tắt tiếng cho đến khi lấy lại được quyền ưu tiên âm thanh.
- Theo logic mặc định, các ứng dụng bị làm mờ sẽ xuất hiện rõ dần sau 2 giây. Tuy nhiên, 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ác 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 có 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í về thời điểm áp dụng quy trình thực thi chế độ lấy nét âm thanh của hệ thống cho một ứng dụng bị mất.
- Khung âm thanh chỉ thực thi quy tắc làm mờ và tắt tiếng nếu ứng dụng thua cuộc trùng 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ế để các OEM tuỳ chỉnh hành vi của tính năng dựa trên đặc điểm của ứng dụng hoặc các loại hình sử dụng âm thanh.
Kiểm soát tính năng bằng RRO: Một cờ tính năng lớp phủ tài nguyên thời gian chạy (RRO) mới,
audioUseFadeManagerConfiguration
, đã được ra mắt để 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 tính năng mất tiêu điểm âm thanh do hệ thống thực thi, các OEM phải đặt cờ này thành
true
. - Mặc dù khung âm thanh trên ô tô yêu cầu các định nghĩa cấu hình làm mờ hợp lệ khi cờ được bật, nhưng việc thiếu các định nghĩa như vậy 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 hiệu ứng mờ dần phải có định nghĩa hiệu ứng mờ dần tương ứng. Đây là một lỗi nghiêm trọng khi gọi một cấu hình làm mờ (theo tên) trong cấu hình âm thanh trên ô tô mà không cung cấp một đị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 hiệu ứng làm mờ và mọi cấu hình tham chiếu đều bị bỏ qua.
Cấu hình trình quản lý hiệu ứng mờ dần
Khung âm thanh Android 15 giới thiệu một FadeManagerConfiguration
hợp nhất để cung cấp cho các OEM khả năng kiểm soát chi tiết đối với hành vi mờ dần âm thanh. Khung này được minh hoạ trong Hình 3:
Hình 3. Cấu hình trình quản lý hiệu ứng làm 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à xuất hiện.
- Có thể được xác định bằng các thuộc tính hoặc mục đích sử dụng âm thanh cụ thể.
- Cho phép đặt chế độ 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 làm mờ: Các quy tắc chi phối thời điểm làm mờ.
- Nút bật/tắt toàn cầu để bật hoặc tắt hiệu ứng làm mờ.
- Một danh sách có thể định cấu hình về các cách 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 các nguồn âm thanh quan trọng hoặc được chỉ định bị làm mờ. 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ể đặt 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 chế độ tuỳ chỉnh có sẵn của OEM.
Tệp XML cấu hình hiệu ứng 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 OEM tuỳ chỉnh rộng rãi hành vi mờ dần âm thanh khi mất tiêu điểm.
- Tệp XML này cho phép xác định nhiều cấu hình hiệu ứng làm mờ riêng biệt, 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 hiệu ứng làm 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ẽ 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
mới (hiện ở phiên bản 4), trong đó có các thẻ applyFadeConfigs
và fadeConfig
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ờ một cách linh hoạt. Mỗi định nghĩa:
- Phải có một
fadeConfig
mặc định được chỉ định bằngisDefault = 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 các hoạt động tương tác mất quyền phát âm thanh và chỉ khi ứng dụng được cấp quyền phát âm thanh đáp ứng các 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 OEM triển khai dịch vụ lấy tiêu điểm âm thanh tuỳ chỉnh trên ô tô có thể linh hoạt định cấu hình chế độ cài đặt hiệu ứng mờ âm thanh bằng cách đưa chế độ này vào OemCarAudioFocusResult
.
Bạn có thể thực hiện việc này bằng phương thức trình tạo setAudioAttributesToCarAudioFadeConfigurationMap()
:
/** @see OemCarAudioFocusResult#getAudioAttributesToCarAudioFadeConfigurationMap() **/
@NonNull
public Builder setAudioAttributesToCarAudioFadeConfigurationMap(@NonNull
Map<AudioAttributes, CarAudioFadeConfiguration> attrsToCarAudioFadeConfig) {
}
Đặc biệt, các OEM có thể chọn sử dụng chế độ cài đặt mờ dần khi khởi động được định cấu hình sẵn hoặc áp dụng các cấu hình một cách linh động thông qua dịch vụ lấy nét âm thanh tuỳ chỉnh của họ, mang đến khả năng kiểm soát thích ứng.
Sơ đồ trình tự
Sơ đồ trình tự này minh hoạ hành vi sau khi cấp quyền lấy tiêu điểm âm thanh cho App2
và sau đó App1
mất quyền lấy tiêu điểm âm thanh:
- Khi dịch vụ âm thanh trên ô tô gửi thông báo mất quyền phát âm thanh đến
App1
, quá trình phát của trình phátApp1
sẽ mờ dần như được xác định bởiFadeManagerConfiguration
đ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ể tăng dần âm thanh cho
App1
sau một khoảng thời gian có thể định cấu hình. Các OEM có thể linh hoạt đặt khoảng thời gian này thông quaBuilder#setFadeInDurationForUsage(int, long)
theo các yêu cầu cụ thể về sản phẩm của họ.
Hình 4. Sơ đồ trình tự cho tính năng làm mờ âm thanh trong ô 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 sẽ được quản lý độc lập cho từng vùng. Do đó, một yêu cầu đến một vùng không tính đến những gì giữ tiêu điểm ở các vùng khác, cũng như không khiến các đối tượng giữ tiêu điểm ở 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 một cách riêng biệt với hệ thống giải trí ở ghế sau, nhờ vậy, việc thay đổi tiêu điểm ở một vùng sẽ không làm gián đoạn quá trình phát âm thanh ở vùng khác.
Đối với tất cả cá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 lấy tiêu điểm được xác định bằng UserId
hoặc UID
được liên kết (để biết thông tin chi tiết, hãy xem phần Định tuyến â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 lấy 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 để thay vào đó sử dụng mã nhận dạng 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 để yêu cầu lấy tiêu điểm thay cho các luồng bên ngoài. 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 những thành phần tối ưu trong hệ sinh thái Android và mang đến 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ề những âm thanh cần được ưu tiên. Trong phạm vi này, âm thanh khẩn cấp và âm thanh quan trọng về an toàn sẽ được phát bất kể HAL có được cấp quyền lấy tiêu điểm âm thanh hay không và sẽ tiếp tục được phát khi thích hợp ngay cả khi HAL mất quyền lấy tiêu điểm âm thanh. Điều này cũng áp dụng cho mọi âm thanh theo yêu cầu của các 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 rõ.
AudioControl@2.0
HAL AudioControl phiên bản 2.0 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 với 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 mà Android sẽ dùng để huỷ đăng ký trình nghe. |
IAudioControl#onAudioFocusChange |
Thông báo cho HAL về những thay đổi về trạng thái đối với các yêu cầu lấy nét do HAL thực hiện thông qua IFocusListener , bao gồm cả các phản hồi đối với các yêu cầu lấy nét ban đầu. |
IFocusListener#requestAudioFocus |
Yêu cầu lấy tiêu điểm thay cho HAL cho một mục đích sử dụng, mã nhận dạng vùng và loại tiêu điểm đạt được cụ thể. |
IFocusListener#abandonAudioFocus |
Huỷ các yêu cầu lấy tiêu điểm HAL hiện có cho mục đích sử dụng và mã nhận dạng 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 cặp mã nhận dạng vùng và mục đích sử dụng. Android giả định rằng HAL sẽ bắt đầu phát âm thanh ngay lập tức cho một mục đích sử dụng sau khi có yêu cầu và tiếp tục làm như vậy cho đến khi từ bỏ quyền phát.
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 yêu cầu lấy tiêu điểm đang được xử lý. HAL không được chờ lấy tiêu điểm trước khi phát âm thanh quan trọng về sự 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ề chế độ lấy nét âm thanh thông qua IAudioControl#onAudioFocusChange
.
Dịch vụ quyền phát âm thanh trên ô tô của OEM
Trong Android 14, AAOS đã giới thiệu các dịch vụ bổ trợ của OEM ô tô để cho phép định cấu hình một số thành phần của ô tô. Đối với Car Audio Plugin Service, dịch vụ trình bổ trợ cho phép cá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 các OEM 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 đó, tương tác lấy tiêu điểm âm thanh có thể khác nhau giữa các nhà sản xuất và giữa các khu vực. Nguyên tắc cơ bản về quyền phát âm thanh vẫn được giữ nguyên, đó 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 (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 sẽ có thể nhận được 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:
Các ứng dụng yêu cầu tiêu điểm sử dụng cuộc gọi phải có thể nhận cuộc gọi đồng thời hoặc riêng biệt.
Các ứng dụng yêu cầu tiêu điểm sử dụng chỉ đường phải có thể nhận tiêu điểm chỉ đường đồng thời hoặc riêng biệt.
Các ứ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 riêng biệt.
Trong khi các ứng dụng có chế độ lấy nét âm thanh ưu tiên cao (bao gồm 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 lấy nét âm thanh đến bị trì hoãn đều phải được cấp hoặc trì hoãn khi cần.
Mặc dù đây không phải là danh sách đầy đủ, nhưng những đề xuất này có thể giúp các ứng dụng yêu cầu lấy tiêu điểm đạt được tiêu điểm nếu không có âm thanh ưu tiên cao nào đ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 phát.