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 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 các ứng dụng đó đến các 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 cách gọi âm thanh cốt lõi) được gắn thẻ bằng Thuộc tính âm thanh.

  • Luồng thực (còn gọi là thiết bị trong cách gọi âm thanh cốt lõi) không có thông tin ngữ cảnh sau khi trộn.

Để đả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. 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. 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
  • 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 â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 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) để 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 để cung cấp cho 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) luồng đầu ra vật lý có sẵn, 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 kết hợp thành một luồng thực, các thuộc tính đó sẽ không còn hoạt động 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 ô 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ù bằng cách nào, việc triển khai Audio HAL cũng là để phân phối dữ liệu mẫu thực tế và khiến 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 những â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 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ộ điều chỉnh bên ngoài), thì các luồng bên ngoài đó phải được biểu thị bằng ứng dụng Android. Ứng dụng như vậy sẽ thay mặt nguồn nội dung nghe nhìn yêu cầu quyền phát âm thanh thay vì HAL và sẽ phản hồi 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 nếu cần để phù hợp với chính sách về 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 nhấn phím đa phương tiệ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ỉ (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.

Việc triển khai hệ thống có thể sử dụng một cổng bus cho tất cả âm thanh trên Android, trong trường hợp này, Android sẽ kết hợp mọi thứ lại 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.