از 27 مارس 2025، توصیه می کنیم از android-latest-release
به جای aosp-main
برای ساختن و کمک به AOSP استفاده کنید. برای اطلاعات بیشتر، به تغییرات AOSP مراجعه کنید.
اجرای رادیو با رسانه
با مجموعهها، منظم بمانید
ذخیره و طبقهبندی محتوا براساس اولویتهای شما.
رابط کاربری Radio به عنوان یک برنامه مستقل پیاده سازی شده است. دستورالعملهای مربوط به نحوه ادغام رابط کاربری رادیو به سختافزار رادیویی را میتوانید در Implement radio پیدا کنید.
بخش زیر نحوه ادغام رابط کاربری رادیو با رسانه را توضیح می دهد تا تجربه یکپارچه ای را برای کاربران فراهم کند که به کاربران امکان می دهد با منابع رسانه و رادیو به گونه ای که گویی یک برنامه واحد هستند تعامل داشته باشند.
نمودار زیر نشان میدهد که چگونه پیادهسازی مرجع Radio and Media جریان کاربر تعویض برنامه را پیادهسازی میکند.

شکل 1. جریان کاربر سوئیچینگ منبع رسانه
برای ارائه یک انتقال یکپارچه بین رادیو و سایر برنامهها در رسانه، کتابخانه car-media-common
اهداف Android را تعریف میکند که میتوان از آنها برای راهاندازی یک انتخابگر منبع رسانه استفاده کرد. در AOSP، این انتخابگر در App Launcher پیادهسازی میشود و همان رابط کاربری را برای راهاندازی برنامهها ارائه میکند، اما برای نمایش تنها منابع رسانه فیلتر شده است.
OEM ها می توانند پیاده سازی App Launcher فعلی را همانطور که هست انتخاب کنند یا یک انتخابگر منبع رسانه سفارشی شده را پیاده سازی کنند.
انتخابگر می تواند در دو حالت عمل کند:
- جریان عادی پس از استفاده از انتخابگر، منبع انتخاب شده در Media نمایش داده می شود تا کاربر بتواند محتوای آن را مرور کند.
- به عنوان سوئیچ. از یک انتخابگر برای تغییر منابع استفاده می شود، اما رسانه به کاربر نمایش داده نمی شود. این در مورد نماد انتخابگر در صفحه اصلی صادق است. پس از انتخاب منبع، آخرین صفحه قبلی به کاربر نمایش داده می شود (در این مورد، صفحه اصلی).
هدف مورد استفاده برای جابهجایی بین منابع رسانهای را میتوان از روش MediaSource#getSourceSelectorIntent()
بدست آورد، که یک Boolean popup
میپذیرد که قصد راهاندازی هر یک از جریانهای شرح داده شده در بالا را برمیگرداند.
مقاصد واقعی در packages/apps/Car/libs/car-media-common/res/values/config.xml
تعریف شدهاند. برای سفارشی کردن این پیکربندی، از پوششهای زمان ساخت استفاده کنید.
برنامه رادیو را جایگزین کنید
با توجه به اینکه برنامه Radio Media Browse و Media Session را پیاده سازی می کند، رادیو در راه اندازی برنامه نمایش داده می شود. برای جلوگیری از راه اندازی رسانه زمانی که کاربر روی نماد کلیک می کند، دو عنصر مورد نیاز است. رادیو باید :
- فعالیت پرتاب کننده داشته باشید.
- به عنوان منبع سفارشی اعلام شود. برای انجام این کار، نام مؤلفه را به کلید
custom_media_packages
در car-media-common/res/values/config.xml
اضافه کنید.
محدودیت های رانندگی UX
رسانه ها باید تمام محدودیت های حواس پرتی رانندگی UX را رعایت کنند. برای انجام این کار، Media باید به CarUXRestrictionManager گوش دهد و تمام سیاستهای آن را اجرا کند.
محتوا و نمونه کدها در این صفحه مشمول پروانههای توصیفشده در پروانه محتوا هستند. جاوا و OpenJDK علامتهای تجاری یا علامتهای تجاری ثبتشده Oracle و/یا وابستههای آن هستند.
تاریخ آخرین بهروزرسانی 2025-07-29 بهوقت ساعت هماهنگ جهانی.
[[["درک آسان","easyToUnderstand","thumb-up"],["مشکلم را برطرف کرد","solvedMyProblem","thumb-up"],["غیره","otherUp","thumb-up"]],[["اطلاعاتی که نیاز دارم وجود ندارد","missingTheInformationINeed","thumb-down"],["بیشازحد پیچیده/ مراحل بسیار زیاد","tooComplicatedTooManySteps","thumb-down"],["قدیمی","outOfDate","thumb-down"],["مشکل ترجمه","translationIssue","thumb-down"],["مشکل کد / نمونهها","samplesCodeIssue","thumb-down"],["غیره","otherDown","thumb-down"]],["تاریخ آخرین بهروزرسانی 2025-07-29 بهوقت ساعت هماهنگ جهانی."],[],[],null,["# Implement radio with Media\n\nThe Radio UI is implemented as an independent app. Instructions on how to integrate a\nRadio UI to the radio hardware can be found at\n[Implement radio](/docs/automotive/broadcast-radio).\n\nThe following section describes how to integrate Radio UI with Media to provide users with a\nseamless experience that enables users to interact with media sources and radio as if they were a\nsingle app.\n\nMedia source switching user flow\n--------------------------------\n\nThe following diagram illustrates how the reference implementation of Radio and Media implements\nthe app switching user flow.\n\n**Figure 1.** Media source switching user flow\n\nTo provide a seamless transition between Radio and other apps in Media, the\n`car-media-common` library defines Android intents that can be used to launch a media\nsource selector. In AOSP, this selector is implemented in the App Launcher, presenting the same UI\nfor launching apps but filtered to display only media sources.\n\nOEMs can opt to take the current App Launcher implementation as is, or implement a customized\nmedia source selector.\n\nThe selector can act in two modes:\n\n- **Normal flow.** After using the selector, the selected source is displayed in Media so the user can browse its content.\n- **As a switch.** A selector is used to switch sources, but the media is not displayed to the user. This is true of the Selector icon on the Home Page. After selecting a source, the most recent previous screen is displayed to the user (in this case, the Home page).\n\nThe intent used to switch between media sources can be obtained from the\n`MediaSource#getSourceSelectorIntent()` method, which accepts a `popup`\nBoolean that returns an intent to launch each of the flows described above.\n\nThe actual intents are defined at\n`packages/apps/Car/libs/car-media-common/res/values/config.xml`. To\ncustomize this configuration, use build-time overlays.\n\n### Replace the Radio app\n\nGiven that the Radio app implements Media Browse and Media Session, Radio is displayed\nin the App launcher. To prevent launching Media when a user clicks the icon, two elements\nare required. Radio *must*:\n\n- Have a *launcher* activity.\n- Be declared as a *custom source* . To do so, add the component name to the `custom_media_packages` key in `car-media-common/res/values/config.xml`.\n\nUX driving restrictions\n-----------------------\n\nMedia must observe all UX driving distraction restrictions. To do so, Media must listen to the\n[CarUXRestrictionManager](https://developer.android.com/reference/android/car/drivingstate/CarUxRestrictionsManager)\nand implement all its policies.\n\n- Media must connect to the [Car](https://developer.android.com/reference/android/car/Car) library and get an instance of [CarUXRestrictionManager](https://developer.android.com/reference/android/car/drivingstate/CarUxRestrictionsManager).\n- Media must subscribe to updates in the list of [CarUxRestrictions](https://developer.android.com/reference/android/car/drivingstate/CarUxRestrictions) and implement them as documented.\n- Particularly important for Media are:\n - [UX_RESTRICTIONS_NO_SETUP](https://developer.android.com/reference/android/car/drivingstate/CarUxRestrictions.html#UX_RESTRICTIONS_NO_SETUP). In this case, the sign-in flow must be disabled.\n - [UX_RESTRICTIONS_LIMIT_STRING_LENGTH](https://developer.android.com/reference/android/car/drivingstate/CarUxRestrictions.html#UX_RESTRICTIONS_LIMIT_STRING_LENGTH). Error messages and other text provided by the media apps must be limited to the given length."]]