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

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

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

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

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

Android Auto

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

سیستم عامل Android Automotive

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

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

برنامه های رسانه ای به کاربران اجازه می دهند موسیقی، رادیو، کتاب های صوتی و سایر محتوای صوتی را در ماشین مرور و پخش کنند. برای اطلاعات بیشتر، به ساخت برنامه‌های پخش صدا برای اتومبیل‌ها مراجعه کنید. اطلاعات بیشتر نیز در Build media apps for cars موجود است.

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

برنامه‌های ویدیویی به کاربران اجازه می‌دهند تا وقتی ماشین پارک شده است، ویدیوهای پخش جریانی را مشاهده کنند. هدف اصلی این برنامه ها نمایش ویدئوهای پخش جریانی است. این برنامه ها با استفاده از Views یا Compose ساخته می شوند. برای اطلاعات بیشتر، به ساخت برنامه های پخش ویدیو برای سیستم عامل Android Automotive مراجعه کنید. اطلاعات بیشتر در Build apps video for Android Automotive OS موجود است.

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

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

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

اجزای پخش

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

نمودار زیر نشان می دهد که چگونه این اجزا در یک برنامه معمولی با هم ترکیب می شوند.

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

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

MediaLibraryService و MediaLibrarySession را پیاده سازی کنید

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

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

اتصال یک جلسه رسانه به پخش کننده به برنامه امکان می دهد پخش رسانه را به صورت خارجی تبلیغ کند و دستورات پخش را از منابع خارجی مانند Android Auto، سیستم عامل Android Automotive یا Google Assistant دریافت کند. برای اطلاعات بیشتر، به کنترل و تبلیغ پخش با استفاده از MediaSession و استفاده از MediaLibrarySession مراجعه کنید.

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

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

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

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

پشتیبانی از Android Auto را اعلام کنید

از ورودی مانیفست زیر برای اعلام اینکه برنامه تلفن شما از 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>

پشتیبانی از سیستم عامل Android Automotive را اعلام کنید

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

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

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

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

  7. No Activity را انتخاب کنید و سپس روی Finish کلیک کنید.

پس از ایجاد ماژول در Android Studio، 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 را اعلام می کند. توجه داشته باشید که هیچ فعالیتی در مانیفست اعلام نشده است.

اگر تنظیمات یا فعالیت‌های ورود به سیستم را اجرا می‌کنید، آنها را اینجا اضافه کنید. این فعالیت‌ها توسط سیستم با استفاده از مقاصد صریح راه‌اندازی می‌شوند و تنها فعالیت‌هایی هستند که در مانیفست برای برنامه 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 در تضاد نیست.

از ورودی مانیفست زیر برای اعلام اینکه برنامه شما از سیستم عامل 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>

فیلترهای هدف

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

فعالیت‌هایی مانند نمونه زیر معمولاً تلفن یا دستگاه تلفن همراه دیگری را هدف قرار می‌دهند. این فعالیت‌ها را در ماژولی که برنامه تلفن را می‌سازد، اعلام کنید، نه در ماژولی که برنامه Android Automotive OS شما را می‌سازد.

<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 دارید، ممکن است بخواهید اقدامات بیشتری را برای بهینه سازی برنامه خود انجام دهید تا با خیال راحت تر از آن در هنگام رانندگی استفاده کنید. برای توصیه‌های بیشتر برای کمک به اطمینان از تجربه کاربری ایمن و راحت، به راهنمای فنی اقدامات صوتی ، حفاظت‌های حواس‌پرتی ، و مدیریت خطا مراجعه کنید.

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

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

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

برای نشان دادن اینکه برنامه شما از ویدیو پشتیبانی می کند، یک فایل 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"/>