Trong Android 10, car_audio_configuration.xml
đã thay thế
car_volumes_groups.xml
và IAudioControl.getBusForContext
. Chính sách về âm thanh
Các tệp (thường có trong phân vùng nhà cung cấp) đại diện cho phần cứng âm thanh
cấu hình của bảng. Tất cả thiết bị được tham chiếu trong
Phải xác định car_audio_configuration.xml
trong
audio_policy_configuration.xml
.
Hình 1 bên dưới minh hoạ thông tin tổng quan cấp cao về dịch vụ âm thanh ô tô cấu trúc trong đó dịch vụ âm thanh ô tô đọc cấu hình âm thanh ô tô để thiết lập âm thanh cho thiết bị.
Hình 1. Tổng quan về cấu trúc âm thanh ô tô.
Đặt tệp cấu hình âm thanh trên ô tô vào vendor\etc\
hoặc
system\etc\
trên thiết bị bằng vendor\etc\
là nơi đầu tiên được dịch vụ âm thanh ô tô tìm kiếm tệp. Ô tô
dịch vụ âm thanh sẽ đọc car_audio_configuration.xml
để xác định âm thanh
.
Vùng âm thanh của ô tô:
- Mỗi vùng âm thanh chứa một mã vùng âm thanh duy nhất.
- Mỗi vùng âm thanh có thể được liên kết với một vùng có người ở.
Các hành động âm thanh trong mỗi vùng độc lập với nhau:
- Quyền phát âm thanh
- Định tuyến âm thanh
- Giảm âm thanh
Nhóm âm lượng ô tô:
Tất cả các thiết bị âm thanh có chứa một nhóm âm lượng được điều khiển cùng nhau với cùng mức tăng. Cấu hình mức tăng âm thanh cho tất cả thiết bị trong một nhóm phải giống nhau.
Ngữ cảnh âm thanh đến thiết bị âm thanh ánh xạ. Sử dụng tính năng này để tạo âm thanh để ánh xạ mức sử dụng âm thanh tới thiết bị đầu ra.
Tất cả ngữ cảnh âm thanh phải được thể hiện trong một vùng. Điều này cho phép để định tuyến âm thanh được thiết lập chính xác cho mọi trường hợp sử dụng thuộc tính âm thanh.
Ngữ cảnh âm thanh
Để đơn giản hoá cấu hình của âm thanh AAOS, chúng tôi đã nhóm các trường hợp sử dụng tương tự nhau
vào CarAudioContexts
. Những ngữ cảnh âm thanh này được sử dụng xuyên suốt
CarAudioService
để xác định chế độ định tuyến, nhóm âm lượng, quyền phát âm thanh và giảm âm lượng
Google Cloud. Dưới đây là danh sách các ngữ cảnh âm thanh tĩnh trong AAOS.
Bảng này mô tả việc ánh xạ giữa ngữ cảnh và cách sử dụng âm thanh. Đánh dấu các hàng được cung cấp để sử dụng cho hệ thống mới.
Bối cảnh âm thanh ô tô | Cách sử dụng thuộc tính được liên kết |
---|---|
ÂM NHẠC | UNKNOWN GAME |
ĐIỀU HƯỚNG | ASSISTANCE_NAVIGATION_GUIDANCE |
TIN_LỆNH_NÓI_TIẾNG | ASSISTANT |
GỌI_KHOẢNH | NOTIFICATION_RINGTONE |
GỌI | VOICE_COMMUNICATION VOICE_COMMUNICATION_SIGNALING |
BÁO THỨC | ALARM |
THÔNG BÁO | NOTIFICATION NOTIFICATION_* |
HỆ THỐNG | ASSISTANCE_SONIFICATION |
KHẨN CẤP | EMERGENCY |
AN TOÀN | SAFETY |
TRẠNG THÁI XE | VEHICLE_STATUS |
THÔNG BÁO | ANNOUNCEMENT |
Bật tính năng định tuyến AAOS
Để sử dụng tính năng định tuyến dựa trên AAOS, bạn phải đặt cờ audioUseDynamicRouting
thành
true
:
<resources>
<bool name="audioUseDynamicRouting">true</bool>
</resources>
Khi false
, tính năng định tuyến và phần lớn CarAudioService
, bị tắt và AAOS giảm
quay lại hành vi mặc định của AudioService
.
Vùng chính
Theo mặc định, tất cả âm thanh đều được chuyển đến vùng chính. Chỉ một vùng chính
tồn tại, được biểu thị trong cấu hình bằng thuộc tính
isPrimary="true"
. Vùng chính được tự động chỉ định
Audiomanager.PRIMARY_AUDIO_ZONE
.
Cấu hình mẫu (phiên bản 2)
Ví dụ: một chiếc xe có thể có hai khu vực: khu vực chính và một ghế sau
hệ thống giải trí. Trong tình huống này, bạn có thể thiết kế một
car_audio_configuration.xml
phiên bản 2 như sau:
<audioZoneConfiguration version="2.0">
<zone name="primary zone" isPrimary="true">
<volumeGroups>
<group>
<device address="bus0_media_out">
<context context="music"/>
<context context="announcement"/>
</device>
<device address="bus3_call_ring_out">
<context context="call_ring"/>
</device>
<device address="bus6_notification_out">
<context context="notification"/>
</device>
</group>
<group>
<device address="bus1_navigation_out">
<context context="navigation"/>
</device>
<device address="bus2_voice_command_out">
<context context="voice_command"/>
</device>
</group>
<group>
<device address="bus4_call_out">
<context context="call"/>
</device>
</group>
<group>
<device address="bus5_alarm_out">
<context context="alarm"/>
</device>
</group>
<group>
<device address="bus7_system_sound_out">
<context context="system_sound"/>
<context context="emergency"/>
<context context="safety"/>
<context context="vehicle_status"/>
</device>
</group>
</volumeGroups>
</zone>
<zone name="rear seat zone" audioZoneId="1">
<volumeGroups>
<group>
<device address="bus100_rear_seat">
<context context="music"/>
<context context="navigation"/>
<context context="voice_command"/>
<context context="call_ring"/>
<context context="call"/>
<context context="alarm"/>
<context context="notification"/>
<context context="system_sound"/>
<context context="emergency"/>
<context context="safety"/>
<context context="vehicle_status"/>
<context context="announcement"/>
</device>
</group>
</volumeGroups>
</zones>
</audioZoneConfiguration>
Trong ví dụ này, vùng chính sẽ tách một số ngữ cảnh âm thanh để
thiết bị khác nhau. Điều này cho phép HAL có thể áp dụng các quy trình hậu xử lý khác nhau
hiệu ứng và kết hợp đầu ra trên từng thiết bị bằng cách sử dụng phần cứng của xe.
Các thiết bị đã được sắp xếp thành nhiều nhóm âm lượng: nội dung nghe nhìn, điều hướng,
cuộc gọi, báo thức và âm thanh hệ thống. Nếu hệ thống được định cấu hình để
useFixedVolume
, thì mức âm lượng của từng nhóm sẽ được truyền đến HAL
để áp dụng cho đầu ra của các thiết bị này.
Đối với vùng chính, bạn nên tách biệt âm thanh hệ thống với âm thanh khác âm thanh. Nhờ đó, âm thanh của xe được xử lý ở mức độ ưu tiên cao hơn. Dịch vụ âm thanh ô tô đã tạo ra những điểm khác biệt này về âm thanh xe ở các thuật ngữ trọng tâm và quản lý giảm bớt. Ví dụ: tập trung vào âm thanh khẩn cấp yêu cầu có mức độ ưu tiên cao hơn so với một yêu cầu tiêu điểm khác.
Để cho đơn giản, trong ví dụ về vùng phụ, tất cả bối cảnh âm thanh được gửi đến một thiết bị và một nhóm âm lượng.
Cấu hình âm thanh của người trong khu vực
Trong Android 11, car_audio_configuration.xml
ra mắt
hai trường mới, audioZoneId
và occupantZoneId
. Bạn có thể dùng audioZoneId
để kiểm soát việc quản lý vùng âm thanh. Bạn có thể dùng occupantZoneId
để định cấu hình
định tuyến dựa trên mã nhận dạng người dùng.
Xem lại cấu hình âm thanh ở trên nhưng sử dụng trường mới cho ánh xạ mã vùng âm thanh và mã vùng âm thanh, cấu hình mới không có Bạn có thể thiết lập định nghĩa nhóm khoảng không quảng cáo như sau.
<audioZoneConfiguration version="2.0">
<zone name="primary zone" isPrimary="true" occupantZoneId="0">
...
</zone>
<zone name="rear seat zone" audioZoneId="1" occupantZoneId="1">
...
</zone>
</zones>
</audioZoneConfiguration>
Cấu hình ở trên xác định việc ánh xạ từ vùng chính đến khu vực có người lưu trú 0
và audioZoneId
1 đến occupantZoneId
1. Nói chung, bất kỳ ánh xạ nào giữa
Có thể định cấu hình vùng âm thanh và vùng có người. Tuy nhiên, việc liên kết phải
một với một. Các quy tắc xác định hai trường mới được liệt kê bên dưới.
audioZoneId
cho vùng chính luôn là mãPRIMARY_AUDIO_ZONE
. NếuisPrimary="true"
đã được định nghĩa thìaudioZoneId
là không cần thiết.Số
audioZoneId
vàoccupantZoneId
không thể lặp lại.audioZoneId
vàoccupantZoneId
chỉ có thể có mối liên kết một với một.
Cấu hình âm thanh trên ô tô Android 14
Trong Android 14, AAOS đã ra mắt dịch vụ trình bổ trợ OEM, giúp bạn chủ động quản lý hành vi âm thanh mà ô tô giám sát dịch vụ âm thanh. Cùng với các dịch vụ trình bổ trợ mới, những thay đổi sau đã thêm vào tệp cấu hình âm thanh của ô tô:
- Bối cảnh âm thanh của ô tô do OEM (Nhà sản xuất thiết bị gốc) xác định
- Cấu hình động của vùng phụ
Ngữ cảnh âm thanh ô tô do OEM xác định
Để bật cấu hình âm thanh linh hoạt, trong Android
14, dịch vụ âm thanh trên ô tô cho phép sử dụng âm thanh
được nhóm khác với ngữ cảnh âm thanh tĩnh được xác định ở trên.
Ngữ cảnh do OEM (Nhà sản xuất thiết bị gốc) xác định này có thể được xác định trong car_audio_configuration.xml
phiên bản 3.
Thay vào đó, hệ thống sẽ sử dụng ngữ cảnh âm thanh tĩnh đã được xác định. Chiến lược chung định dạng bối cảnh âm thanh ô tô do OEM (Nhà sản xuất thiết bị gốc) xác định được trình bày dưới đây.
Ngữ cảnh OEM đều yêu cầu name
kèm theo danh sách thuộc tính âm thanh
hoạt động sử dụng được chỉ định cho ngữ cảnh. Trong ví dụ trên, hai ngữ cảnh là
xác định:
<carAudioConfiguration version="3">
<oemContexts>
<oemContext name="media">
<audioAttributes>
<usage value="AUDIO_USAGE_MEDIA" />
<usage value="AUDIO_USAGE_UNKNOWN"/>
</audioAttributes>
</oemContext>
<oemContext name="game">
<audioAttributes>
<usage value="AUDIO_USAGE_GAME" />
</audioAttributes>
</oemContext>
...
- Ngữ cảnh
media
chứaAUDIO_USAGE_MEDIA
vàAUDIO_USAGE_UNKNOWN
- Ngữ cảnh
game
chỉAUDIO_USAGE_GAME
Ngữ cảnh phải được xác định ở đầu car_audio_configuration.xml
. Khi xác định bối cảnh của OEM, phần còn lại của cấu hình âm thanh trên ô tô
có thể tiếp tục như trước đây. Các quy tắc sau áp dụng cho bối cảnh âm thanh trên ô tô:
Bạn không bắt buộc phải dùng định nghĩa về bối cảnh của OEM. Ngữ cảnh âm thanh tĩnh là được sử dụng thay thế.
Đừng lặp lại tên của ngữ cảnh.
Đừng chỉ định việc sử dụng thuộc tính âm thanh cho nhiều ngữ cảnh.
Mọi trường hợp sử dụng âm thanh được xác định trong
AudioAttributes
phải được dùng để tạo ngữ cảnh.
Nói một cách chính xác, android.audio.policy.configuration.V7_0.AudioUsage
chuỗi biểu thị việc sử dụng âm thanh phải được sử dụng cho ngữ cảnh âm thanh OEM
định nghĩa. Trong tương lai, việc sử dụng thuộc tính âm thanh mới hơn sẽ được chỉ định cho
ngữ cảnh thích hợp nhất để giảm lỗi khi di chuyển từ một thiết bị Android
sang một phiên bản khác.
Mặc dù ngữ cảnh do OEM xác định được giới thiệu để mở rộng hơn nữa trình bổ trợ OEM bạn vẫn có thể sử dụng dịch vụ âm thanh này mà không cần dịch vụ trình bổ trợ OEM. Âm thanh giống với hành vi của dịch vụ âm thanh tĩnh:
Tương tác quyền phát âm thanh. Thuộc tính âm thanh được dùng để xác định chất lượng tốt nhất hành vi so khớp như được thiết lập bởi ma trận tương tác tập trung âm thanh. Cho chi tiết, hãy xem phần Tiêu điểm âm thanh.
Thuộc tính âm thanh của chế độ điều khiển âm lượng âm thanh dùng để xác định nội dung nào phù hợp nhất:
- Nhóm âm lượng dựa trên ngữ cảnh do OEM xác định.
- Mức độ ưu tiên trong danh sách âm lượng tĩnh đã định cấu hình.
Chế độ giảm âm thanh:
Việc sử dụng thuộc tính âm thanh cho quyền phát âm thanh hiện tại được dùng để ánh xạ đến đầu ra thông tin thiết bị âm thanh như được xác định trong cấu hình âm thanh ô tô .
Thuộc tính âm thanh dùng để ánh xạ ngữ cảnh tĩnh tương ứng với vị trí, dựa trên ma trận giảm âm thanh tĩnh.
Cấu hình vùng âm thanh động
Trong Android 14, để thích ứng với vùng âm thanh linh động thì giản đồ cấu hình âm thanh trên ô tô để xác định các vùng âm thanh cũng được cập nhật lên phiên bản 3. Giản đồ mới yêu cầu thiết lập cấu hình cho từng vùng.
<carAudioConfiguration version="3">
<!-- optional OEM context -->
<oemContexts>
<oemContext name="media">
<audioAttributes>
<usage value="AUDIO_USAGE_MEDIA" />
<usage value="AUDIO_USAGE_UNKNOWN"/>
</audioAttributes>
</oemContext>
<oemContext name="game">
<audioAttributes>
<usage value="AUDIO_USAGE_GAME" />
</audioAttributes>
</oemContext>
...
</oemContexts>
<zones>
<zone name="primary zone" isPrimary="true" occupantZoneId="0">
<zoneConfigs>
<zoneConfig name="primary zone config 0" isDefault="true">
<volumeGroups>
<group>
<device address="bus0_media_out">
<context context="media"/>
<context context="game"/>
<context context="announcement"/>
</device>
<device address="bus6_notification_out">
<context context="notification"/>
</device>
</group>
...
</zoneConfigs>
</zone
</zones>
Để tìm hiểu thêm, hãy xem tệp phiên bản 3 được định nghĩa trong
device/generic/car/emulator/audio/car_audio_configuration.xml
. Bắt đầu sau
Trên Android 14, vùng chính chỉ được có một (1)
. Các vùng phụ có thể có nhiều cấu hình. Nội dung sau đây
các quy tắc áp dụng cho cấu hình âm thanh của ô tô:
Vùng âm thanh chính chỉ được có một cấu hình.
Các vùng âm thanh phụ có thể có nhiều cấu hình.
Tên phải là duy nhất cho từng vùng âm thanh và cấu hình vùng âm thanh.
Trong một vùng âm thanh, các cấu hình âm thanh có thể khác nhau:
- Cách thiết lập nhóm âm lượng không cần phải giống nhau.
- Việc gán ngữ cảnh âm thanh không cần phải giống nhau.
Tên thiết bị đầu ra âm thanh phải khác nhau giữa các vùng hoặc cấu hình. Đáp tên thiết bị chỉ nên xuất hiện một lần trong cấu hình hoặc vùng âm thanh.
Các thiết bị âm thanh thuộc cùng một nhóm âm lượng phải có cùng âm thanh lấy cấu hình.
Bạn phải gán tất cả bối cảnh âm thanh (OEM hoặc tĩnh) cho từng âm thanh .
Khả năng tương thích chuyển tiếp
Mặc dù các phiên bản mới của car_audio_configuration.xml
giới thiệu các tính năng mới
tính năng trong mỗi bản cập nhật, bạn vẫn có thể sử dụng các tệp cũ hơn trong các phiên bản mới hơn của
AAOS. OEM cập nhật lên phiên bản Android mới có thể sử dụng lại
Tệp car_audio_configuration.xml
.
Để sử dụng một tính năng mới yêu cầu phải có thông tin mới trong
car_audio_configuration.xml
, bạn phải cập nhật phiên bản. Đang cố sử dụng
phiên bản cũ của một tệp có thông tin không được hỗ trợ trong phiên bản tệp đó
gửi một IllegalStateException
khi dịch vụ ô tô bắt đầu. Trường hợp ngoại lệ
chứa thông tin liên quan đến thông tin nào được sử dụng và
cần phiên bản tối thiểu nào.