سیستم عامل اندروید اتوموتیو (AAOS) بر پایه هسته صوتی اندروید ساخته شده است تا از موارد استفاده برای عملکرد به عنوان سیستم اطلاعات سرگرمی در خودرو پشتیبانی کند. AAOS مسئول صداهای اطلاعات سرگرمی (یعنی رسانه، ناوبری و ارتباطات) است، اما مستقیماً مسئول زنگها و هشدارهایی که الزامات دقیقی برای در دسترس بودن و زمانبندی دارند، نیست.
اگرچه AAOS سیگنالها و مکانیسمهایی را برای کمک به مدیریت صدا در خودرو فراهم میکند، در نهایت این خودرو است که تصمیم میگیرد چه صداهایی برای راننده و سرنشینان پخش شود و اطمینان حاصل شود که صداهای حیاتی ایمنی و صداهای نظارتی به درستی و بدون وقفه شنیده میشوند.
از آنجایی که AAOS از پشته صوتی اندروید بهره میبرد، برنامههای شخص ثالث که صدا پخش میکنند نیازی به انجام کاری متفاوت از آنچه در تلفنها انجام میدهند، ندارند. مسیریابی صوتی برنامه به طور خودکار توسط AAOS مدیریت میشود، همانطور که در پیکربندی خطمشی صوتی توضیح داده شده است.
از آنجایی که اندروید مدیریت تجربه رسانهای خودرو را بر عهده دارد، منابع رسانهای خارجی مانند تیونر رادیو باید توسط برنامههایی نمایش داده شوند که بتوانند فوکوس صوتی و رویدادهای کلیدی رسانهای را برای منبع مدیریت کنند.
صداها و استریمهای اندروید
سیستمهای صوتی خودرو صداها و جریانهای زیر را مدیریت میکنند:

شکل ۱. نمودار معماری جریان-محور.
اندروید صداهای دریافتی از برنامههای اندروید را مدیریت میکند، آن برنامهها را کنترل میکند و صداهای آنها را بر اساس نوع صدا به دستگاههای خروجی در HAL هدایت میکند:
جریانهای منطقی ، که در نامگذاری اصلی صدا به عنوان منابع شناخته میشوند، با ویژگیهای صوتی برچسبگذاری شدهاند.
جریانهای فیزیکی ، که در نامگذاری اصلی صدا به عنوان دستگاه شناخته میشوند، پس از میکس هیچ اطلاعات زمینهای ندارند.
برای اطمینان بیشتر، صداهای خارجی (که از منابع مستقل، مانند زنگ هشدار کمربند ایمنی میآیند) در خارج از اندروید، زیر HAL یا حتی در سختافزار جداگانه مدیریت میشوند. مجریان سیستم باید میکسری ارائه دهند که یک یا چند جریان ورودی صدا از اندروید را بپذیرد و سپس آن جریانها را به روشی مناسب با منابع صدای خارجی مورد نیاز وسیله نقلیه ترکیب کند. HAL کنترل اندروید مکانیسم متفاوتی را برای صداهای تولید شده در خارج از اندروید فراهم میکند تا به اندروید بازگردد:
- درخواست فوکوس صوتی
- محدودیتهای گِین یا ولوم
- تغییرات گین و حجم
پیادهسازی HAL صوتی و میکسر خارجی مسئول اطمینان از شنیده شدن صداهای خارجیِ دارای اهمیت ایمنی و همچنین میکس کردن جریانهای ارائه شده توسط اندروید و هدایت آنها به بلندگوهای مناسب هستند.
صداهای اندروید
برنامهها ممکن است یک یا چند پخشکننده داشته باشند که از طریق APIهای استاندارد اندروید (به عنوان مثال، AudioManager برای کنترل فوکوس یا MediaPlayer برای پخش) با یکدیگر تعامل دارند تا یک یا چند جریان منطقی از دادههای صوتی را منتشر کنند. این دادهها میتوانند تک کاناله مونو یا 7.1 surround باشند، اما به عنوان یک منبع واحد مسیریابی و پردازش میشوند. جریان برنامه با AudioAttributes مرتبط است که به سیستم در مورد نحوه بیان صدا راهنمایی میدهد.
جریانهای منطقی از طریق AudioService ارسال میشوند و به یکی (و فقط یکی) از جریانهای خروجی فیزیکی موجود هدایت میشوند که هر کدام خروجی یک میکسر در AudioFlinger هستند. پس از اینکه ویژگیهای صوتی به یک جریان فیزیکی میکس شدند، دیگر در دسترس نیستند.
سپس هر جریان فیزیکی برای رندر شدن روی سختافزار به Audio HAL تحویل داده میشود. در برنامههای خودرو، سختافزار رندر میتواند کدکهای محلی (مشابه دستگاههای تلفن همراه) یا یک پردازنده از راه دور در سراسر شبکه فیزیکی خودرو باشد. در هر صورت، وظیفه پیادهسازی Audio HAL این است که دادههای نمونه واقعی را تحویل داده و باعث شود که قابل شنیدن شوند.
جریانهای خارجی
جریانهای صوتی که نباید از طریق اندروید (به دلایل صدور گواهینامه یا زمانبندی) هدایت شوند، ممکن است مستقیماً به میکسر خارجی ارسال شوند. از اندروید ۱۱، HAL اکنون میتواند برای این صداهای خارجی درخواست فوکوس کند تا به اندروید اطلاع دهد که میتواند اقدامات مناسبی مانند مکث رسانه یا جلوگیری از فوکوس دیگران را انجام دهد.
اگر جریانهای خارجی منابع رسانهای باشند که باید با محیط صوتی تولید شده توسط اندروید تعامل داشته باشند (برای مثال، پخش MP3 را هنگام روشن شدن یک تیونر خارجی متوقف کنند)، آن جریانهای خارجی باید توسط یک برنامه اندروید نمایش داده شوند. چنین برنامهای به جای HAL، از طرف منبع رسانه درخواست فوکوس صوتی میکند و با شروع و توقف منبع خارجی در صورت لزوم برای تطبیق با سیاست فوکوس اندروید، به اعلانهای فوکوس پاسخ میدهد.
این برنامه همچنین مسئول مدیریت رویدادهای کلیدی رسانه مانند پخش و مکث است. یکی از مکانیسمهای پیشنهادی برای کنترل چنین دستگاههای خارجی، HwAudioSource است. برای کسب اطلاعات بیشتر، به بخش «اتصال یک دستگاه ورودی در AAOS» مراجعه کنید.
دستگاههای خروجی
در سطح Audio HAL، نوع دستگاه AUDIO_DEVICE_OUT_BUS یک دستگاه خروجی عمومی برای استفاده در سیستمهای صوتی خودرو فراهم میکند. دستگاه گذرگاه از پورتهای آدرسپذیر پشتیبانی میکند (که در آن هر پورت نقطه پایانی برای یک جریان فیزیکی است) و انتظار میرود تنها نوع دستگاه خروجی پشتیبانی شده در یک خودرو باشد.
یک پیادهسازی سیستمی میتواند از یک پورت باس برای همه صداهای اندروید استفاده کند، که در این صورت اندروید همه چیز را با هم مخلوط کرده و به صورت یک جریان ارائه میدهد. از طرف دیگر، HAL میتواند یک پورت باس برای هر CarAudioContext فراهم کند تا امکان تحویل همزمان هر نوع صدا فراهم شود. این امر به پیادهسازی HAL این امکان را میدهد که صداهای مختلف را به دلخواه مخلوط و از هم جدا کند.
اختصاص زمینههای صوتی به دستگاههای خروجی از طریق فایل car_audio_configuration.xml انجام میشود. برای کسب اطلاعات بیشتر، به پیکربندی سیاست صوتی مراجعه کنید.