برنامه رسانه خود را به Android for Cars گسترش دهید

برنامه خود را روی خودروهایی که اندروید اتو یا سیستم عامل اندروید اتوموتیو دارند، اجرا کنید. از یک معماری برنامه استفاده کنید که برای هر دو مورد کار کند تا هر کاربری بتواند از برنامه شما لذت ببرد.

اندروید برای خودروها چیست؟

یک اپلیکیشن رسانه‌ای برای خودروها می‌تواند راهی برای کاربران فراهم کند تا زندگی دیجیتال خود را به طور یکپارچه با خودروهایشان متصل کنند. با گسترش همان اپلیکیشن‌های تلفن همراه برای خودروها، شما یک تجربه کاربری بهتر ایجاد می‌کنید. می‌توانید این کار را با ادغام با اندروید اتو یا سیستم عامل اندروید اتوموتیو انجام دهید.

اپلیکیشن‌های اندروید مخصوص خودرو باید بیش از هر چیز از حواس‌پرتی راننده جلوگیری کنند. شما می‌توانید با پیروی از بهترین شیوه‌ها مانند استفاده از دستورات صوتی و یک طراحی بصری بسیار کاربردی، حواس‌پرتی‌ها را به حداقل برسانید. به این ترتیب، اپلیکیشن رسانه‌ای شما می‌تواند اطلاعات به موقع را فقط در صورت مرتبط بودن به راننده نشان دهد و از الگوهای قابل پیش‌بینی برای کارهای رایج استفاده کند.

اندروید اتو

اندروید اتو یک تجربه برنامه بهینه شده برای راننده را برای کاربرانی که تلفن اندرویدی با برنامه اندروید اتو و یک سیستم صوتی سازگار با خودرو یا لوازم جانبی دارند، فراهم می‌کند. آنها می‌توانند با اتصال تلفن خود، برنامه شما را مستقیماً روی صفحه نمایش خودرو خود استفاده کنند. شما با ایجاد سرویس‌هایی که اندروید اتو برای نمایش یک رابط بهینه شده برای راننده استفاده می‌کند، اندروید اتو را قادر می‌سازید تا با برنامه تلفن شما ارتباط برقرار کند.

سیستم عامل اندروید مخصوص خودرو

سیستم عامل اندروید اتوموتیو (Android Automotive OS) یک سیستم سرگرمی مبتنی بر اندروید است که در خودروها تعبیه شده است. سیستم خودرو یک دستگاه مستقل مبتنی بر اندروید است که برای رانندگی بهینه شده است. با سیستم عامل اندروید اتوموتیو، کاربران برنامه شما را مستقیماً به جای تلفن‌های خود روی خودرو نصب می‌کنند.

دسته‌های برنامه‌های پشتیبانی‌شده

برنامه‌های رسانه‌ای به کاربران اجازه می‌دهند موسیقی، رادیو، کتاب‌های صوتی و سایر محتوای صوتی را در خودرو مرور و پخش کنند. برای اطلاعات بیشتر، به بخش «ساخت برنامه‌های پخش صوتی برای خودروها» مراجعه کنید. اطلاعات بیشتر همچنین در بخش «ساخت برنامه‌های رسانه‌ای برای خودروها» موجود است.

برنامه‌های رسانه‌ای با استفاده از MediaLibraryService و MediaSession ساخته می‌شوند. در سیستم عامل اندروید اتوموبیل، می‌توانید صفحات ورود به سیستم و تنظیمات (برای استفاده در هنگام پارک) را نیز با استفاده از Views یا Compose بسازید.

برنامه‌های ویدیویی به کاربران اجازه می‌دهند ویدیوهای در حال پخش را در حالی که ماشین پارک شده است، مشاهده کنند. هدف اصلی این برنامه‌ها نمایش ویدیوهای در حال پخش است. این برنامه‌ها با استفاده از Views یا Compose ساخته می‌شوند. برای اطلاعات بیشتر، به بخش «ساخت برنامه‌های پخش ویدیو برای سیستم عامل اندروید خودرو» مراجعه کنید. اطلاعات بیشتر در «ساخت برنامه‌های ویدیویی برای سیستم عامل اندروید خودرو» موجود است.

ساخت اپلیکیشن پخش صدا برای ماشین

این راهنما فرض می‌کند که شما از قبل یک برنامه پخش رسانه‌ای ساده دارید. اگر ندارید، برای شروع، به بخش «ایجاد یک برنامه پخش رسانه‌ای ساده» بروید.

این راهنما اطلاعاتی در مورد کارهایی که باید انجام دهید، از جمله پیوندهایی به منابع بیشتر با راهنمایی‌های خاص، در اختیار شما قرار می‌دهد.

اجزای پخش

Media3 چندین کامپوننت کلیدی برای موارد استفاده پخش ارائه می‌دهد. اگر با کتابخانه‌های رسانه‌ای اندروید قبلی کار کرده باشید، کلاس‌هایی که این کامپوننت‌ها را تشکیل می‌دهند برای شما آشنا هستند.

نمودار زیر نحوه‌ی کنار هم قرار گرفتن این اجزا را در یک برنامه‌ی معمولی نشان می‌دهد.

اجزای مختلف یک برنامه رسانه‌ای که از Media3 استفاده می‌کند، به دلیل اشتراک‌گذاری رابط‌ها و کلاس‌هایشان، به چندین روش ساده به یکدیگر متصل می‌شوند.
شکل 1 : اجزای برنامه رسانه‌ای

برای اطلاعات بیشتر، به مؤلفه‌های پخش مراجعه کنید.

پیاده‌سازی MediaLibraryService و MediaLibrarySession

یک MediaLibraryService یک API استاندارد برای ارائه و اجازه دسترسی به کتابخانه رسانه شما ارائه می‌دهد. این امر هنگام افزودن پشتیبانی از Android Auto یا Android Automotive OS به برنامه رسانه‌ای شما ضروری است، زیرا این پلتفرم‌ها رابط کاربری ایمن برای راننده خود را برای کتابخانه رسانه شما ارائه می‌دهند. برای اطلاعات بیشتر در مورد پیاده‌سازی و استفاده از MediaLibraryService ، به Serve content with MediaLibraryService مراجعه کنید.

برای کنترل‌های پخش، از یک جلسه رسانه‌ای استفاده کنید. API مربوط به MediaSession یک روش جهانی برای تعامل با یک پخش‌کننده صوتی یا تصویری ارائه می‌دهد. کتابخانه Jetpack Media3 شامل MediaLibrarySession است که MediaSession برای افزودن APIهای مرور محتوا گسترش می‌دهد.

اتصال یک جلسه رسانه‌ای به یک پخش‌کننده به برنامه اجازه می‌دهد تا پخش رسانه را به صورت خارجی تبلیغ کند و دستورات پخش را از منابع خارجی مانند Android Auto، Android Automotive OS یا Google Assistant دریافت کند. برای اطلاعات بیشتر، به Control and advertise playback using a MediaSession و Use a MediaLibrarySession مراجعه کنید.

حداقل، جلسه رسانه شما باید پشتیبانی از دستورات پخش کننده زیر را اعلام کند:

راهنمای فعال کردن کنترل‌های پخش، روش‌هایی را که می‌توانید کنترل‌های پخش خود را در خودروها سفارشی کنید، شرح می‌دهد.

وقتی Android Auto یا Android Automotive OS به برنامه شما متصل می‌شوند، یک کتابخانه محتوا برای نمایش درخواست می‌کنند که این امر باعث فعال شدن متد فراخوانی onGetLibraryRoot() می‌شود. می‌توانید به سرعت یک آیتم رسانه ریشه را برگردانید تا به کتابخانه خود دسترسی داشته باشید. متد فراخوانی onGetChildren() زمانی فراخوانی می‌شود که Android Auto یا Android Automotive OS سعی در مرور سطوح عمیق‌تر کتابخانه محتوای شما دارند.

این پلتفرم‌ها محدودیت‌های بیشتری را در مورد نحوه ساختار کتابخانه محتوای شما اعمال می‌کنند. برای جزئیات بیشتر در مورد سفارشی‌سازی نحوه نمایش کتابخانه محتوای خود، به راهنمای سرویس «ایجاد مرورگر رسانه» مراجعه کنید.

اعلام پشتیبانی از اندروید اتو

برای اعلام اینکه برنامه تلفن شما از Android Auto پشتیبانی می‌کند، از ورودی مانیفست زیر استفاده کنید:

<application>
    ...
    <meta-data android:name="com.google.android.gms.car.application"
        android:resource="@xml/automotive_app_desc"/>
    ...
</application>

این ورودی مانیفست به یک فایل XML اشاره دارد که قابلیت‌های خودرو که برنامه شما از آنها پشتیبانی می‌کند را اعلام می‌کند. برای نشان دادن اینکه یک برنامه رسانه‌ای دارید، یک فایل XML با نام automotive_app_desc.xml به پوشه res/xml/ در پروژه خود اضافه کنید. این فایل باید شامل محتوای زیر باشد:

<automotiveApp>
    <uses name="media"/>
</automotiveApp>

اعلام پشتیبانی از سیستم عامل اندروید اتوموبیل

شما باید یک ماژول خودرو ایجاد کنید زیرا تمام منطق برنامه شما را نمی‌توان با یک برنامه خودرو به اشتراک گذاشت. برخی از اجزای سیستم عامل اندروید خودرو، مانند مانیفست، الزامات خاص پلتفرم دارند. ماژولی ایجاد کنید که بتواند کد این اجزا را از سایر کدهای پروژه شما، مانند کد مورد استفاده برای برنامه تلفن همراه شما، جدا نگه دارد.

برای اضافه کردن ماژول خودرو به پروژه خود، این مراحل را دنبال کنید:

  1. در اندروید استودیو، روی File > New > New Module کلیک کنید.
  2. ماژول خودرو را انتخاب کنید، سپس روی بعدی کلیک کنید.
  3. یک نام برای برنامه/کتابخانه وارد کنید. این نامی است که کاربران برای برنامه شما در سیستم عامل اندروید اتوموبیل مشاهده می‌کنند.
  4. نام ماژول را وارد کنید.
  5. نام بسته (Package name) را متناسب با برنامه خود تنظیم کنید.
  6. برای Minimum SDK ، API 28: Android 9.0 (Pie) را انتخاب کنید و سپس روی Next کلیک کنید.

    تمام خودروهایی که از سیستم عامل Android Automotive پشتیبانی می‌کنند، روی اندروید ۹ (سطح API 28) یا بالاتر اجرا می‌شوند، بنابراین انتخاب این مقدار همه خودروهای سازگار را هدف قرار می‌دهد.

  7. گزینه «بدون فعالیت» را انتخاب کنید و سپس روی «پایان» کلیک کنید.

پس از ایجاد ماژول خود در اندروید استودیو، فایل AndroidManifest.xml را در ماژول جدید خودرو خود باز کنید:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.media">

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme" />

    <uses-feature
        android:name="android.hardware.type.automotive"
        android:required="true" />

</manifest>

عنصر application دارای برخی اطلاعات استاندارد برنامه و همچنین یک عنصر uses-feature است که پشتیبانی از سیستم عامل Android Automotive را اعلام می‌کند. توجه داشته باشید که هیچ فعالیتی در manifest اعلام نشده است.

اگر تنظیمات یا فعالیت‌های ورود به سیستم را پیاده‌سازی می‌کنید، آنها را اینجا اضافه کنید. این فعالیت‌ها توسط سیستم با استفاده از intentهای صریح فعال می‌شوند و تنها فعالیت‌هایی هستند که شما در مانیفست برای برنامه Android Automotive OS خود اعلام می‌کنید.

پس از افزودن هرگونه تنظیمات یا فعالیت‌های ورود به سیستم، فایل مانیفست خود را با تنظیم ویژگی android:appCategory="audio" در عنصر application و افزودن عناصر uses-feature زیر تکمیل کنید:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.media">

    <application
        android:allowBackup="true"
        android:appCategory="audio"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme" />

    <uses-feature
        android:name="android.hardware.type.automotive"
        android:required="true" />

    <uses-feature
        android:name="android.hardware.wifi"
        android:required="false" />
    <uses-feature
        android:name="android.hardware.screen.portrait"
        android:required="false" />
    <uses-feature
        android:name="android.hardware.screen.landscape"
        android:required="false" />

</manifest>

تنظیم صریح این ویژگی‌ها روی required="false" تضمین می‌کند که برنامه شما با ویژگی‌های سخت‌افزاری موجود در دستگاه‌های سیستم عامل Automotive OS تداخل نداشته باشد.

برای اعلام اینکه برنامه شما از سیستم عامل Android Automotive پشتیبانی می‌کند، از ورودی مانیفست زیر استفاده کنید:

<application>
    ...
    <meta-data android:name="com.android.automotive"
        android:resource="@xml/automotive_app_desc"/>
    ...
</application>

این ورودی مانیفست به یک فایل XML اشاره دارد که قابلیت‌های خودرویی پشتیبانی‌شده توسط برنامه شما را اعلام می‌کند.

برای نشان دادن اینکه یک برنامه رسانه‌ای دارید، یک فایل XML با نام automotive_app_desc.xml به دایرکتوری res/xml/ در پروژه خود اضافه کنید. محتوای زیر را در این فایل قرار دهید:

<automotiveApp>
    <uses name="media"/>
</automotiveApp>

فیلترهای هدف

سیستم عامل اندروید اتوموتیو از اینتنت‌های صریح برای فعال کردن فعالیت‌ها در برنامه رسانه‌ای شما استفاده می‌کند. هیچ فعالیتی را که فیلترهای اینتنت CATEGORY_LAUNCHER یا ACTION_MAIN دارد، در فایل مانیفست قرار ندهید.

فعالیت‌هایی مانند آنچه در مثال زیر آمده است، معمولاً یک تلفن یا دستگاه تلفن همراه دیگر را هدف قرار می‌دهند. این فعالیت‌ها را در ماژولی که برنامه تلفن را می‌سازد، تعریف کنید، نه در ماژولی که برنامه سیستم عامل اندروید خودرو شما را می‌سازد.

<activity android:name=".MyActivity">
<intent-filter>
<!-- You can't use either of these intents for Android Automotive OS -->
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
<!--
In their place, you can include other intent filters for any activities
that your app needs for Android Automotive OS, such as settings or
sign-in activities.
-->
</intent-filter>
</activity>

مراحل بیشتر

اکنون که برنامه‌ای برای Android Auto و Android Automotive OS دارید، ممکن است بخواهید اقدامات بیشتری را برای بهینه‌سازی برنامه خود انجام دهید تا در حین رانندگی با خیال راحت‌تری از آن استفاده شود. برای توصیه‌های بیشتر برای اطمینان از یک تجربه کاربری ایمن و راحت، به راهنماهای فنی مربوط به اقدامات صوتی ، محافظت در برابر حواس‌پرتی و مدیریت خطا مراجعه کنید.

ساخت برنامه‌های پخش ویدئو برای سیستم عامل اندروید اتوموبیل

از آنجایی که برنامه‌های ویدیویی در خودروها جدا از برنامه‌های رسانه‌ای دسته‌بندی می‌شوند، باید از برخی الزامات خاص برای برنامه‌های ویدیویی، همانطور که در «ساخت برنامه‌های پارک شده برای خودروها» و «ساخت برنامه‌های ویدیویی برای سیستم عامل اندروید اتو» توضیح داده شده است، آگاه باشید. باید از دستورالعمل‌های زیر استفاده کنید.

برنامه خود را به عنوان یک برنامه ویدیویی علامت گذاری کنید

برای نشان دادن اینکه برنامه شما از ویدیو پشتیبانی می‌کند، یک فایل XML با نام automotive_app_desc.xml به پوشه res/xml/ در پروژه خود اضافه کنید. در این فایل، محتوای زیر را قرار دهید:

<automotiveApp>
    <uses name="video"/>
</automotiveApp>

سپس، درون عنصر application در مانیفست خود، عنصر meta-data زیر را که به فایل XML ارجاع می‌دهد، اضافه کنید:

<meta-data android:name="com.android.automotive"
    android:resource="@xml/automotive_app_desc"/>