Tổng quan

Android Automotive OS (AAOS) được xây dựng dựa trên hệ thống âm thanh cốt lõi của Android để hỗ trợ các trường hợp sử dụng vận hành như hệ thống thông tin giải trí trên xe. AAOS chịu trách nhiệm về âm thanh thông tin giải trí (tức là phương tiện, điều hướng và liên lạc) nhưng không chịu trách nhiệm trực tiếp về chuông và cảnh báo có yêu cầu nghiêm ngặt về tính khả dụng 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 xem nên phát những âm thanh nào cho người lái và hành khách, đảm bảo rằng các âm thanh quan trọng về an toàn và âm thanh quy định được nghe đúng cách mà không cần gián đoạn.

Vì AAOS tận dụng ngăn xếp âm thanh của Android nên các ứng dụng của bên thứ ba phát âm thanh không cần phải thực hiện bất kỳ điều gì khác so với trên điện thoại. Định tuyến âm thanh của ứng dụng được AAOS tự động quản lý như được mô tả trong 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 phương tiện bên ngoài như bộ thu sóng radio phải được đại diện bởi các ứng dụng có thể xử lý tiêu điểm âm thanh và các sự kiện quan trọng về phương tiện cho nguồn.

Âm thanh và luồng Android

Hệ thống âm thanh ô tô xử lý các âm thanh và luồng sau:

image

Hình 1. Sơ đồ kiến ​​trúc lấy luồng làm trung tâm.

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:

  • Các luồng logic , được gọi là nguồn trong danh pháp âm thanh cốt lõi, được gắn thẻ 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 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 â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 để âm thanh được tạo bên ngoài Android giao tiếp trở lại Android:

  • Yêu cầu tập trung âm thanh
  • Giới hạn tăng hoặc âm lượng
  • Tăng và thay đổi â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 nghe thấy các âm thanh bên ngoài quan trọng về mặt an toàn cũng như trộn trong các luồng do Android cung cấp và định tuyến chúng đến các 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 API Android tiêu chuẩn (ví dụ: AudioManager để kiểm soát tiêu điểm hoặc MediaPlayer để phát trực tuyến) để phát ra một hoặc nhiều luồng dữ liệu âm thanh hợp lý. Dữ liệu này có thể là kênh đơn hoặc âm thanh vòm 7.1, nhưng được định tuyến và xử lý dưới dạng một nguồn duy nhất. Luồng ứng dụng được liên kết với AudioAttribution để đư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 vật lý có sẵn, mỗi luồng là đầu ra của bộ trộn trong AudioFlinger. Sau khi các thuộc tính âm thanh đã được trộn vào luồng vật lý, chúng sẽ không còn khả dụng nữa.

Mỗi luồng vật lý sau đó được gửi tới Audio HAL để hiển thị trên phần cứng. Trong các ứng dụng ô tô, phần cứng kết xuất 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, nhiệm vụ của việc triển khai Audio HAL là cung cấp 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 lấy nét cho những â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 như tạm dừng phương tiện hoặc ngăn người khác lấy nét.

Nếu các luồng bên ngoài là các nguồn phương tiện sẽ tương tác với môi trường âm thanh mà Android đang tạo ra (ví dụ: dừng phát lại MP3 khi bộ dò bên ngoài được bật), thì các luồng bên ngoài đó phải được thể hiện bằng ứng dụng Android. Ứng dụng như vậy sẽ yêu cầu Tập trung âm thanh thay mặt cho nguồn phương tiện thay vì HAL và sẽ phản hồi các thông báo tập trung 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 tập trung của Android.

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

Các thiết bị đầu ra

Ở cấp độ Âm thanh HAL, loại thiết bị AUDIO_DEVICE_OUT_BUS cung cấp thiết bị đầu ra chung để sử dụng trong hệ thống âm thanh trên xe. 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 vật lý) và dự kiến ​​sẽ là loại thiết bị đầu ra được hỗ trợ duy nhất trên 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 đó, Android 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 bất kỳ loại âm thanh nào. Điều này giúp việc triển khai HAL có thể trộn và loại bỏ các âm thanh khác nhau theo ý muốn.

Việc gán 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 Cấu hình chính sách âm thanh .