Dịch vụ âm thanh ô tô áp dụng chính sách về âm thanh động cho Âm thanh chính để hỗ trợ việc sử dụng ốp lưng trong ô tô.
Tính năng phát âm thanh riêng cho từng hành khách được gọi là âm thanh nhiều vùng trong đó mỗi vùng cho phép phát âm thanh đồng thời.
Cấu hình vùng âm thanh động.
Truyền âm thanh vùng chính cho hành khách.
Gương phản chiếu của hành khách.
Trong mỗi trường hợp sử dụng, dịch vụ âm thanh ô tô sẽ sử dụng chính sách âm thanh động để tự động định tuyến âm thanh đến thiết bị đầu ra được chỉ định.
Âm thanh nhiều vùng
Tính năng Âm thanh nhiều vùng cho phép nhiều người dùng tương tác cùng lúc với AAOS. Đáp một tập hợp thiết bị đầu ra được liên kết với một vùng và mỗi vùng duy trì âm thanh lấy tiêu điểm và mức âm lượng. Hành khách có thể nghe âm thanh của mình trong khi người lái xe nghe một nguồn khác trong vùng chính (thường là cabin chính).
Cấu trúc âm thanh nhiều vùng
Hình 1. Cấu trúc dịch vụ âm thanh ô tô.
Vùng âm thanh trên ô tô là một phần trừu tượng đầu ra âm thanh, quyền phát âm thanh và các dữ liệu khác cài đặt âm thanh, tất cả đều có thể được quản lý độc lập. Để định tuyến, mỗi vùng được định nghĩa là một tập hợp thiết bị bus đầu ra âm thanh được sắp xếp trong cấu hình chính sách âm thanh. Các thiết bị còn tuỳ theo định nghĩa vùng âm thanh. Trong Hình 1, các thiết bị bus 1 đến 5 thuộc vùng 0, các thiết bị bus 6 đến 8 thuộc vùng 1 và các thiết bị bus từ 9 đến 11 thuộc vùng 2.
Cấu hình âm thanh ô tô
Thông thường, các thiết bị đầu ra được gán cho một vùng âm thanh. Mỗi vùng âm thanh là
được xác định trong car_audio_configuration.xml
. Đoạn mã sau đây cho thấy một chiếc ô tô
cấu hình âm thanh cho Hình 1:
<carAudioConfiguration version="3">
<zones>
<zone name="Zone0" audioZneId="0" occupantZoneId="0">
<zoneConfigs>
<zoneConfig name="config0" isDefault="true">
<volumeGoups>
<group>
<device address="bus_1">
<context context="music"/>
</device>
</group>
<group>
<device address="bus_2">
<context context="navigation"/>
</device>
</group>
...
</volumeGroups>
</zoneConfig>
</zoneConfigs>
</zone>
<zone name="Zone1" audioZoneId="1" occupantZoneId="1">
<zoneConfigs>
<zoneConfig name="config0" isDefault="true">
<volumeGroups>
<group>
<device address="bus_6">
<context context="music"/>
</device>
</group>
<group>
<device address="bus_7">
<context context="navigation"/>
</device>
</group>
...
</volumeGroups>
</zoneConfig>
</zoneConfigs>
</zone>
...
...
</zones>
</carAudioConfiguration>
occupantZoneId
là định nghĩa dịch vụ ô tô được quản lý bởi
CarOccupantZoneManager
. Mã này được dùng trên ô tô để xác định bản đồ cho người dùng ở
xe đến một vị trí chỗ ngồi cụ thể. CarOccupantZoneService
cũng xác định
ánh xạ từ khu vực có người ở đến màn hình, các thiết bị ngoại vi khác và người dùng sau khi
người dùng đăng nhập vào màn hình. Một vùng âm thanh có:
Mã vùng âm thanh và mã vùng của người ở.
- Lập bản đồ vùng âm thanh cho khu vực của người (ghế ngồi, màn hình và các thiết bị ngoại vi khác)
- Liên kết mã nhận dạng người dùng được chỉ định với một vùng âm thanh khi đăng nhập
Danh sách các cấu hình âm thanh. Mỗi cấu hình âm thanh có một tập hợp nhóm âm lượng. Mỗi nhóm âm lượng có một tập hợp thiết bị bus âm thanh.
Khi bạn thay đổi âm lượng, tất cả thiết bị âm thanh trong một nhóm sẽ được kiểm soát .
Mỗi thiết bị âm thanh được gán một danh sách thuộc tính âm thanh. Chiến dịch này thông tin được dùng để tạo các kết hợp chính sách âm thanh với được gán thuộc tính âm thanh.
Cấu hình này cho phép định tuyến các cách sử dụng thuộc tính âm thanh khác nhau đến các thiết bị đầu ra khác nhau ở mỗi vùng. Tuỳ thuộc vào trường hợp sử dụng, âm thanh có thể phát đồng thời. Ví dụ: bạn có thể chọn định cấu hình cabin (khu vực chính) để phát âm thanh nội dung nghe nhìn trên tất cả các loa trừ âm thanh điều hướng chỉ trên loa gần người lái nhất. Với khả năng phát lại âm thanh đồng thời, cabin chính tiếp tục nghe nội dung đa phương tiện trong khi điều hướng được gửi đến trình điều khiển.
Quy trình đăng nhập cho hành khách sử dụng dịch vụ âm thanh nhiều vùng
Sơ đồ trình tự dưới đây biểu thị quy trình bật định tuyến âm thanh khi nhật ký hành khách vào màn hình tương ứng:
Hình 2.
Trong trình tự này, thông tin đăng nhập của người dùng sẽ được truyền đến dịch vụ âm thanh ô tô thông qua dịch vụ cho khu vực có người.
Dịch vụ âm thanh trên ô tô (đối với một vùng âm thanh cụ thể) sử dụng API
AudioPolicy#removeUserIdDeviceAffinity
để xoá thiết bị của người dùng đối tượng chung sở thích. API này sử dụng một mã nhận dạng người dùng. Trong trường hợp này, dữ liệu của vùng trước đó người dùng.API
AudioPolicy#setUserIdDeviceAffinity
chỉ định người dùng mới cho một Vùng này lấy mã nhận dạng người dùng và tất cả thiết bị cho một vùng cụ thể .
Cấu hình vùng động
Trong Android 14, cấu hình vùng động là được giới thiệu để cho phép OEM định cấu hình các tập hợp thiết bị khác nhau cho hành khách. Trường hợp sử dụng cho phép hành khách ở ghế sau chuyển đổi giữa ghế sau loa tựa đầu và thiết bị ngoại vi cho tai nghe ở hàng ghế sau.
Trong trường hợp này, cần có hai cấu hình. 1 phát cho ghế sau tựa đầu và thiết bị ngoại vi tai nghe. Âm thanh cho một người dùng cụ thể được định tuyến chỉ cho một cấu hình tại một thời điểm.
Hình 3. Quy trình cấu hình vùng động.
Hình 3 minh hoạ kiến trúc của cấu hình vùng động
quy trình làm việc. Vùng âm thanh 1 chứa hai cấu hình, Config 0
và Config 1
,
được liên kết tương ứng với loa và tựa đầu của thiết bị đầu ra.
Sau khi đăng nhập, người dùng sẽ tự động được chỉ định cấu hình mặc định. Khi người dùng chọn thay đổi cấu hình, thường là thông qua giao diện người dùng hệ thống, dịch vụ âm thanh ô tô sẽ thực thi quá trình chuyển đổi giữa hai cấu hình. Trong phần này thiết bị đầu ra được chuyển đổi giữa loa Z1 và phần tựa đầu của Z1.
Đoạn mã dưới đây minh hoạ cách thiết lập cho cấu hình vùng động này.
<carAudioConfiguration version="3">
<zones>
<zone name="Zone1" audioZoneId="1" occupantZoneId="1">
<zoneConfigs>
<zoneConfig name="Zone 1 Config 0" isDefault="true">
<volumeGroups>
<group>
<device address="bus_100">
<context context="music"/>
***
</device>
</group>
</volumeGroups>
</zoneConfig>
<zoneConfig name="Zone 1 Config 1">
<volumeGroups>
<group>
<device address="bus_101">
<context context="music"/>
***
</device>
</group>
</volumeGroups>
</zoneConfig>
</zoneConfigs>
</zone>
</zones>
Để tạo điều kiện cho việc quản lý cấu hình âm thanh, trình quản lý âm thanh trên ô tô hiển thị các API để quản lý cấu hình:
- Cấu hình truy vấn có sẵn cho một vùng.
- Truy vấn hiện được đặt cấu hình cho một vùng.
- Chuyển sang một cấu hình khác.
Ứng dụng hoặc dịch vụ giao diện người dùng hệ thống có thể sử dụng các API này để quản lý cấu hình cho vùng âm thanh như được minh hoạ trong Hình 4. API Truy vấn hiển thị hai API này cho hành khách. Người dùng có thể chọn một cấu hình khác bằng cách nhấn một lệnh để cấu hình mong muốn.
Hình 4. Quy trình cấu hình vùng động.
Truyền âm thanh cho hành khách trong vùng chính
Truyền âm thanh cho hành khách trong vùng chính là một tính năng được ra mắt trong Android 14 cho đến cho phép hành khách truyền âm thanh nội dung đa phương tiện trong vùng chính. Trong phần này bằng cách truyền âm thanh đa phương tiện của hành khách đến cabin chính trong khi người lái vẫn có toàn quyền kiểm soát.
Hình dưới đây biểu thị phiên bản đơn giản của cấu trúc cho truyền âm thanh nội dung nghe nhìn hành khách trong vùng.
Hình 5. Quy trình cấu hình vùng động.
Hình ảnh cho thấy thiết bị đầu ra đa phương tiện cho trình điều khiển được chia sẻ với hành khách, điều này chỉ xảy ra khi hành khách đang di chuyển đến vùng chính . Chính sách âm thanh động cũng được dùng để quản lý việc định tuyến âm thanh cho trình điều khiển nhưng không có thay đổi nào được áp dụng cho các đối tượng tương đồng của thiết bị cho người lái xe. Cho danh sách thiết bị đầu ra cho hành khách được thay đổi như sau:
- Thiết bị đầu ra đa phương tiện cho hành khách bị xoá khỏi danh sách thiết bị
- Thêm thiết bị đầu ra nội dung nghe nhìn cho người lái xe vào danh sách thiết bị
- Các thiết bị đầu ra còn lại cho vùng âm thanh của hành khách sẽ nằm trong danh sách thiết bị
Danh sách thiết bị mới này được gán cho hành khách bằng
API AudioPolicy#setUserIdDeviceAffinity
. Các tham số được chuyển tới API là
danh sách thiết bị và mã nhận dạng người dùng của hành khách. Khi âm thanh của hệ thống âm thanh
chính sách dịch vụ truy vấn bản trộn âm thanh nào sẽ được chọn cho bản nhạc nội dung đa phương tiện
liên kết với hành khách, bản trộn âm thanh nội dung đa phương tiện được liên kết với
bạn đã chọn vùng.
Một yêu cầu chính để truyền âm thanh ở vùng chính là phương tiện truyền thông của vùng chính thiết bị đầu ra phải được tách biệt với các cách sử dụng thuộc tính âm thanh khác. Nếu không, trong khoảng thời gian cấu trúc của bản trộn âm thanh, các thuộc tính âm thanh khác sẽ được thêm vào bản trộn. Khi hệ thống âm thanh thực hiện việc lựa chọn danh sách kết hợp, tất cả âm thanh đi kèm với danh sách kết hợp được chọn để phát trong cabin chính.
Gương âm thanh khu vực hành khách
Tính năng phản chiếu âm thanh cho phép hành khách chia sẻ âm thanh. Tính năng đồng bộ hoá hai chiều sao chép dữ liệu âm thanh ở từng vùng âm thanh để tất cả hành khách đều có thể nghe âm thanh đó. Trong trường hợp này, quyền phát âm thanh sẽ được chia sẻ với hành khách liên quan đến quá trình phản chiếu âm thanh.
Định tuyến phản chiếu âm thanh
Cần có tối thiểu 2 hành khách để bật tính năng phản chiếu âm thanh. Là một kết quả là một cấu hình âm thanh chỉ có hai vùng âm thanh cho hành khách sẽ cần một thiết bị đầu ra phản chiếu. Với định nghĩa trên, hai phản chiếu đồng thời phiên hoạt động có thể bắt đầu.
Hình dưới đây là một sơ đồ đơn giản cho tính năng phản chiếu âm thanh nhiều vùng
giữa hai hành khách. Âm thanh từ cả hai hành khách được chuyển đến gương âm thanh
thiết bị, bus_1000
. HAL âm thanh sẽ sao chép tín hiệu với các vùng nguồn.
Hình 6. Quy trình cấu hình vùng động.
Định tuyến này chỉ được bật khi các hành khách đang ở chế độ phản chiếu. Nếu
không, các thiết bị tương ứng với vùng âm thanh sẽ được chỉ định cho hành khách.
Khi tính năng phản chiếu được bật lần đầu cho một hành khách,
API AudioPolicy#setUserIdDeviceAffinity
đang sửa đổi việc định tuyến:
- Thiết bị đầu ra nội dung nghe nhìn cho hành khách sẽ bị xoá khỏi danh sách thiết bị.
- Đã thêm thiết bị đầu ra phản chiếu vào danh sách thiết bị.
- Các thiết bị đầu ra còn lại cho vùng âm thanh hành khách vẫn nằm trong danh sách thiết bị.
Với danh sách thiết bị, API này được gọi cùng với danh sách thiết bị và mã nhận dạng người dùng của hành khách. Hình ảnh sau đây cung cấp sơ đồ trình tự của quy trình phản chiếu âm thanh.
Hình 7. Quy trình phản chiếu âm thanh.
Trong Hình 7, các API của trình quản lý âm thanh trên ô tô để quản lý tính năng phản chiếu âm thanh
có tên từ Dịch vụ hệ thống phương tiện. Cụ thể, API để bật âm thanh
đồng bộ hoá hai chiều cho Người dùng 1 và Người dùng 2, CarAudioManager#enableMirrorForAudioZones
.
Dịch vụ âm thanh ô tô định cấu hình định tuyến âm thanh cho hành khách của người dùng như được mô tả ở trên. Dịch vụ âm thanh ô tô cũng gửi tín hiệu đến HAL âm thanh để định cấu hình và sao chép âm thanh từ thiết bị phản chiếu sang vùng.
Trong hình trên, dịch vụ âm thanh ô tô sẽ gửi
mirroring_src=bus_1000;mirroring_dest=bus_10,bus_20
ở đâu,
bus_1000
là bus nguồn, bus_10
và bus_20
là điểm đến
xe buýt.
Không hiển thị trong sơ đồ trình tự là tín hiệu được gửi qua
API AudioManager#setParameters
, truy cập HAL thông qua âm thanh
.
Khi tắt tính năng phản chiếu âm thanh, tín hiệu sau sẽ được gửi:
mirroring_src=bus_1000;mirroring=off
. HAL có thể sử dụng tín hiệu này để
tắt tính năng trùng lặp âm thanh khi tính năng phản chiếu âm thanh chưa được bật. Để xác định âm thanh
thiết bị phản chiếu, tệp cấu hình âm thanh trên ô tô chứa một phần có tên là
mirroringDevices
, như minh hoạ trong đoạn mã dưới đây.
Trong đoạn mã này, hai thiết bị phản chiếu được xác định là bus_1000
và bus_2000
,
để 4 hành khách có thể sử dụng tính năng phản chiếu âm thanh.
<carAudioConfiguration version="3">
<mirroringDevices>
<mirroringDevice address="bus_1000"/>
<mirroringDevice address="bus_2000"/>
</mirroringDevices>
<zones>
....
</zones>
</carAudioConfiguration>