Tổng quan

Android Automotive OS (AAOS) được xây dựng 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 ô tô. AAOS chịu trách nhiệm về âm thanh thông tin giải trí (tức là âm thanh đa phương tiện, chỉ đường và thông tin liên lạc) nhưng không trực tiếp chịu trách nhiệm về chuông báo và cảnh báo có các yêu cầu nghiêm ngặt về thời gian và phạm vi cung cấp.

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 âm thanh nào sẽ phát cho người lái xe và hành khách, đảm bảo â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 của bên thứ ba phát âm thanh không cần làm gì khác so với trên điện thoại. AAOS sẽ tự động quản lý việc định tuyến âm thanh của ứng dụng như mô tả trong phần Định cấu hình chính sách âm thanh.

Vì Android quản lý trải nghiệm đ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ộ thu sóng) phải được các ứng dụng đại diện. Các ứng dụng này có thể xử lý tiêu điểm âm thanh và sự kiện phím đ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 ảnh

Hình 1. Sơ đồ cấu trúc tập trung vào luồng.

Android quản lý âm thanh đến từ các ứng dụng Android, kiểm soát các ứng dụng đó và định tuyến âm thanh đến thiết bị đầu ra tại HAL dựa trên loại âm thanh:

  • Luồng logic (còn gọi là nguồn trong danh pháp âm thanh cốt lõi) được gắn thẻ bằng các thuộc tính âm thanh.

  • Luồng thực tế (còn gọi là thiết bị trong thuật ngữ âm thanh chính) không có thông tin ngữ cảnh sau khi kết hợp.

Để đảm bảo độ tin cậy, âm thanh bên ngoài (đến từ các nguồn độc lập, chẳng hạn như 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. Các trình 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 âm thanh đầu vào 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. Android Control HAL cung cấp một cơ chế khác cho âm thanh được tạo bên ngoài Android để giao tiếp lại với Android:

  • Yêu cầu quyền phát âm thanh
  • Nhận hoặc giới hạn số lượng
  • Mức tăng và âm lượng thay đổi

Việc triển khai HAL âm thanh và bộ trộn âm thanh bên ngoài chịu trách nhiệm đảm bảo rằng người dùng có thể nghe được âm thanh bên ngoài quan trọng về an toàn, cũng như để trộn các luồng do Android cung cấp và định tuyến các luồng đó đến loa phù hợp.

Âm thanh trên Android

Ứ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 tiêu chuẩn (ví dụ: AudioManager để kiểm soát tiêu điểm hoặc MediaPlayer để truyền trực tuyến) nhằm phát một hoặc nhiều luồng dữ liệu âm thanh logic. Dữ liệu này có thể là âm thanh đơn âm một kênh hoặc âm thanh vòm 7.1, nhưng được định tuyến và coi là một nguồn duy nhất. Luồng ứng dụng được liên kết với AudioAttributes để đưa ra gợi ý cho hệ thống 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) luồng đầu ra thực tế có sẵn, mỗi luồng là đầu ra của một bộ trộn trong AudioFlinger. Sau khi được trộn lẫn các thuộc tính âm thanh vào một luồng thực, các thuộc tính này sẽ không dùng được nữa.

Sau đó, mỗi luồng thực sẽ được phân phối đến Audio HAL để kết xuất trên phần cứng. Trong các ứng dụng dành cho ô tô, phần cứng kết xuất có thể là bộ mã hoá và giải mã cục bộ (tương tự như thiết bị di động) hoặc bộ xử lý từ xa trên mạng thực của xe. Dù thế nào đi nữa, việc triển khai Audio HAL cũng là để phân phối dữ liệu mẫu thực tế và giúp dữ liệu đó trở nên 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 tiêu điểm cho các âm thanh bên ngoài này để thông báo cho Android để có thể thực hiện các hành động thích hợp như tạm dừng nội dung nghe nhìn hoặc ngăn các âm thanh khác lấy tiêu điểm.

Nếu luồng bên ngoài là nguồn nội dung nghe nhìn sẽ 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 đó sẽ được biểu thị bằng một ứng dụng Android. Ứng dụng như vậy sẽ yêu cầu Chế độ tập trung âm thanh thay cho nguồn nội dung nghe nhìn thay vì HAL và sẽ phản hồi các thông báo lấy tiêu điểm bằng cách khởi động và dừng nguồn bên ngoài khi cần thiết để phù hợp với chính sách về tiêu điểm của Android.

Ứng dụng này cũng chịu trách nhiệm xử lý các sự kiện chính đối với nội dung nghe nhìn, chẳng hạn như phát và tạm dừng. Một cơ chế được đề xuất để điều khiển các thiết bị bên ngoài như vậy là HwAudioSource. Để tìm hiểu thêm, hãy xem phần Kết nối thiết bị đầu vào trong AAOS.

Thiết bị đầu ra

Ở cấp độ Audio HAL, 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 của luồng thực tế) và dự kiến sẽ là loại thiết bị đầu ra duy nhất được hỗ trợ trong xe.

Quá trình triển khai hệ thống có thể sử dụng một cổng bus cho tất cả âm thanh của Android. Trong trường hợp đó, Android sẽ kết hợp mọi thứ với nhau và phân phố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 cho phép việc triển khai HAL có thể kết hợp và giảm âm lượng các âm thanh khác nhau theo ý muốn.

Việc chỉ định ngữ cảnh âm thanh cho 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 Định cấu hình chính sách về âm thanh.