Hệ điều hành Android Automotive (AAOS) dựa trên ngăn xếp âm thanh Android cốt lõi để hỗ trợ các trường hợp sử dụng khi hoạt động như hệ thống thông tin giải trí trong xe. AAOS chịu trách nhiệm về âm thanh thông tin giải trí (tức là nội dung đa phương tiện, chỉ đường và giao tiếp) nhưng không trực tiếp chịu trách nhiệm về tiếng chuông và cảnh báo có các yêu cầu nghiêm ngặt về tính sẵn có và thời gian.
Mặc dù AAOS cung cấp các tín hiệu và cơ chế để giúp xe quản lý âm thanh, nhưng cuối cùng, xe sẽ quyết định những âm thanh nào sẽ được phát cho người lái và hành khách, đảm bảo các âm thanh quan trọng về độ an toàn và âm thanh theo quy định được nghe đúng cách mà không bị gián đoạn.
Vì AAOS tận dụng ngăn xếp âm thanh Android, nên các ứng dụng bên thứ ba phát âm thanh không cần phải làm gì khác so với trên điện thoại. AAOS tự động quản lý việc định tuyến âm thanh của ứng dụng như mô tả trong Cấu hình chính sách âm thanh.
Vì Android quản lý trải nghiệm nội dung đa phương tiện của xe, nên các nguồn nội dung đa phương tiện bên ngoài (chẳng hạn như bộ dò đài) phải được biểu thị bằng các ứng dụng. Các ứng dụng này có thể xử lý quyền phát âm thanh và các sự kiện phím nội dung đa phương tiện cho nguồn.
Âm thanh và luồng Android
Hệ thống âm thanh trên ô tô xử lý các âm thanh và luồng sau:
Hình 1. Sơ đồ kiến trúc tập trung vào luồng.
Android quản lý âm thanh phát ra từ các ứng dụng Android, kiểm soát các ứng dụng đó và định tuyến âm thanh của chúng đến các thiết bị đầu ra tại HAL dựa trên loại âm thanh:
Luồng logic (được gọi là nguồn trong danh pháp âm thanh cốt lõi) được gắn thẻ với Thuộc tính âm thanh.
Luồng vật lý (được gọi là thiết bị trong danh pháp âm thanh cốt lõi) không có thông tin theo bối cảnh sau khi trộn.
Để đảm bảo độ tin cậy, âm thanh bên ngoài (phát ra từ các nguồn độc lập, chẳng hạn như tiếng chuông cảnh báo thắt dây an toàn) được quản lý bên ngoài Android, bên dưới HAL hoặc thậm chí trong phần cứng riêng biệt. Người triển khai hệ thống phải cung cấp một bộ trộn chấp nhận một hoặc nhiều luồng đầu vào âm thanh từ Android, sau đó kết hợp các luồng đó theo cách phù hợp với các nguồn âm thanh bên ngoài mà xe yêu cầu. HAL điều khiển Android cung cấp một cơ chế khác để âm thanh được tạo bên ngoài Android giao tiếp trở lại với Android:
- Yêu cầu quyền phát âm thanh
- Giới hạn về mức tăng hoặc âm lượng
- Thay đổi về mức tăng và âm lượng
Việc triển khai HAL âm thanh và bộ trộn bên ngoài chịu trách nhiệm đảm bảo âm thanh bên ngoài quan trọng về độ an toàn được nghe thấy, đồng thời trộn các luồng do Android cung cấp và định tuyến các luồng đó đến các loa phù hợp.
Âm thanh Android
Các ứng dụng có thể có một hoặc nhiều trình phát tương tác thông qua các API Android chuẩn (ví dụ: AudioManager để kiểm soát quyền phát hoặc MediaPlayer để phát trực tuyến) nhằm phát ra một hoặc nhiều luồng dữ liệu âm thanh logic. Dữ liệu này có thể là đơn âm một kênh hoặc âm thanh vòm 7.1, nhưng được định tuyến và xử lý như một nguồn duy nhất. Luồng ứng dụng được liên kết với AudioAttributes giúp hệ thống gợi ý về cách thể hiện âm thanh.
Các luồng logic được gửi qua AudioService và được định tuyến đến một (và chỉ một) trong các luồng đầu ra vật lý hiện có, mỗi luồng là đầu ra của một bộ trộn trong AudioFlinger. Sau khi các thuộc tính âm thanh được trộn xuống một luồng vật lý, chúng sẽ không còn nữa.
Sau đó, mỗi luồng vật lý được gửi đến HAL âm thanh để hiển thị trên phần cứng. Trong các ứng dụng ô tô, phần cứng hiển thị có thể là codec cục bộ (tương tự như thiết bị di động) hoặc bộ xử lý từ xa trên mạng vật lý của xe. Dù bằng cách nào, việc triển khai HAL âm thanh có nhiệm vụ gửi dữ liệu mẫu thực tế và khiến dữ liệu đó trở nên có thể nghe được.
Luồng bên ngoài
Các luồng âm thanh không được định tuyến qua Android (vì lý do chứng nhận hoặc thời gian) có thể được gửi trực tiếp đến bộ trộn bên ngoài. Kể từ Android 11, HAL hiện có thể yêu cầu quyền phát cho các âm thanh bên ngoài này để thông báo cho Android để Android có thể thực hiện các hành động thích hợp, chẳng hạn như tạm dừng nội dung đa phương tiện hoặc ngăn người khác giành quyền phát.
Nếu các luồng bên ngoài là nguồn nội dung đa phương tiện cần tương tác với môi trường âm thanh mà Android đang tạo (ví dụ: dừng phát MP3 khi bật bộ dò bên ngoài ), thì các luồng bên ngoài đó phải được biểu thị bằng một ứng dụng Android. Ứng dụng như vậy sẽ yêu cầu quyền phát âm thanh thay cho nguồn nội dung đa phương tiện thay vì HAL và sẽ phản hồi các thông báo về quyền phát bằng cách bắt đầu và dừng nguồn bên ngoài khi cần để phù hợp với chính sách quyền phát của Android.
Ứng dụng cũng chịu trách nhiệm xử lý các sự kiện phím nội dung đa phương tiện, chẳng hạn như phát và tạm dừng. HwAudioSource là một cơ chế được đề xuất để kiểm soát các thiết bị bên ngoài như vậy. Để tìm hiểu thêm, hãy xem
bài viết Kết nối thiết bị đầu vào trong AAOS.
Thiết bị đầu ra
Ở cấp HAL âm thanh, loại thiết bị AUDIO_DEVICE_OUT_BUS cung cấp một thiết bị đầu ra chung để sử dụng trong hệ thống âm thanh trên ô tô. Thiết bị bus hỗ trợ các cổng có thể định địa chỉ (trong đó mỗi cổng là điểm cuối cho một luồng vật lý) và dự kiến là loại thiết bị đầu ra duy nhất được hỗ trợ trong xe.
Việc triển khai hệ thống có thể sử dụng một cổng bus cho tất cả âm thanh Android. Trong trường hợp này, Android sẽ trộn mọi thứ lại với nhau và gửi dưới dạng một luồng. Ngoài ra, HAL có thể cung cấp một cổng bus cho mỗi CarAudioContext để cho phép phân phối đồng thời mọi loại âm thanh. Điều này giúp việc triển khai HAL có thể trộn và giảm âm lượng các âm thanh khác nhau theo ý muốn.
Việc chỉ định bối cảnh âm thanh cho các thiết bị đầu ra được thực hiện thông qua tệp car_audio_configuration.xml. Để tìm hiểu thêm, hãy xem phần
Cấu hình chính sách âm thanh.