توسيع نطاق تطبيق الوسائط ليشمل Android للسيارات

يمكنك إتاحة تطبيقك للمركبات التي تعمل بنظام Android Auto أو نظام التشغيل Android Automotive. استخدِم بنية تطبيق واحدة تعمل في كلتا الحالتَين حتى يتمكّن كل مستخدم من الاستمتاع بتطبيقك.

ما هو "Android للسيارات"؟

يمكن أن يوفر تطبيق الوسائط للسيارات طريقة للمستخدمين لربط حياتهم الرقمية بسلاسة بسياراتهم. من خلال توسيع نطاق التطبيقات نفسها للهاتف لتكون متاحة للسيارات، يمكنك إنشاء تجربة مستخدم أفضل. يمكنك تحقيق ذلك من خلال التكامل مع Android Auto أو نظام التشغيل Android Automotive.

يجب أن تتجنّب تطبيقات Android للسيارات تشتت السائق قبل كل شيء. يمكنك تقليل مصادر التشتيت باتّباع أفضل الممارسات، مثل استخدام الطلبات الصوتية والتصميم المرئي العملي للغاية. بهذه الطريقة، يمكن لتطبيق الموسيقى عرض معلومات في الوقت المناسب للسائق فقط عندما تكون ذات صلة، واستخدام أنماط يمكن توقّعها للمهام الشائعة.

Android Auto

يوفّر Android Auto تجربة تطبيق ملائمة لقائدي السيارات الذين لديهم هاتف Android مزوّد بتطبيق Android Auto وسيارة متوافقة أو نظام استيريو خارجي. ويمكنهم استخدام تطبيقك مباشرةً على شاشة سيارتهم من خلال توصيل هواتفهم. يمكنك تفعيل Android Auto للاتصال بتطبيق الهاتف من خلال إنشاء خدمات يستخدمها Android Auto لعرض واجهة محسّنة للسائق.

نظام التشغيل Android Automotive

‫نظام التشغيل Android Automotive هو نظام ترفيه ومعلومات مستند إلى Android ومدمج في المركبات. نظام السيارة هو جهاز مستقل يعمل بنظام التشغيل Android ومحسَّن للقيادة. باستخدام نظام التشغيل Android Automotive، يمكن للمستخدمين تثبيت تطبيقك مباشرةً على السيارة بدلاً من هواتفهم.

فئات التطبيقات المتوافقة

تتيح تطبيقات الوسائط للمستخدمين تصفُّح وتشغيل الموسيقى والراديو والكتب المسموعة والمحتوى الصوتي الآخر في السيارة. لمزيد من المعلومات، يُرجى الاطّلاع على مقالتَي إنشاء تطبيقات تشغيل الصوت للسيارات وإنشاء تطبيقات وسائط للسيارات.

يتم إنشاء تطبيقات الوسائط باستخدام MediaLibraryService وMediaSession. على نظام التشغيل Android Automotive، يمكنك أيضًا إنشاء شاشات تسجيل الدخول والإعدادات (للاستخدام أثناء ركن السيارة) باستخدام Views أو Compose.

تتيح تطبيقات الفيديو للمستخدمين مشاهدة فيديوهات البث المباشر أثناء توقّف السيارة. الغرض الأساسي من هذه التطبيقات هو عرض فيديوهات البث. يتم إنشاء هذه التطبيقات باستخدام Views أو Compose. لمزيد من المعلومات، يُرجى الاطّلاع على مقالتَي إنشاء تطبيقات تشغيل الفيديو لنظام التشغيل Android Automotive وإنشاء تطبيقات فيديو لنظام التشغيل Android Automotive.

إنشاء تطبيقات لتشغيل الصوت في السيارات

يفترض هذا الدليل أنّ لديك تطبيقًا أساسيًا لتشغيل الوسائط. إذا لم يكن لديك تطبيق، انتقِل إلى إنشاء تطبيق مشغّل وسائط أساسي للبدء.

يقدّم لك هذا الدليل معلومات حول الإجراءات التي عليك اتّخاذها، بما في ذلك روابط تؤدي إلى مراجع إضافية تتضمّن إرشادات محدّدة.

مكوّنات التشغيل

توفّر Media3 عدة مكوّنات رئيسية لحالات استخدام التشغيل. إذا سبق لك استخدام مكتبات الوسائط السابقة في Android، ستكون على دراية بالفئات التي تتألف منها هذه المكوّنات.

يوضّح المخطّط البياني التالي كيفية تجميع هذه المكوّنات معًا في تطبيق عادي.

تتصل المكوّنات المختلفة لتطبيق الوسائط الذي يستخدم Media3 معًا بعدة طرق بسيطة بسبب مشاركة الواجهات والفئات.
الشكل 1: مكوّنات تطبيق الموسيقى

لمزيد من المعلومات، يُرجى الاطّلاع على مكوّنات التشغيل.

تنفيذ MediaLibraryService وMediaLibrarySession

يوفّر MediaLibraryService واجهة برمجة تطبيقات موحّدة لعرض مكتبة الوسائط والسماح بالوصول إليها. هذا الإجراء مطلوب عند إضافة ميزة التوافق مع Android Auto أو نظام التشغيل Android Automotive إلى تطبيق الوسائط، لأنّ هذه الأنظمة الأساسية توفّر واجهة مستخدم آمنة للسائقين لمكتبة الوسائط. لمزيد من المعلومات حول تنفيذ MediaLibraryService واستخدامها، يُرجى الاطّلاع على عرض المحتوى باستخدام MediaLibraryService.

بالنسبة لعناصر التحكّم في التشغيل، استخدِم جلسة وسائط. توفّر واجهة برمجة التطبيقات MediaSession طريقة شاملة للتفاعل مع مشغّل الصوت أو الفيديو. تتضمّن مكتبة Jetpack Media3 واجهة MediaLibrarySession التي توسّع واجهة MediaSession لإضافة واجهات برمجة تطبيقات لتصفُّح المحتوى.

يتيح ربط جلسة وسائط بمشغّل وسائط للتطبيق الإعلان عن تشغيل الوسائط خارجيًا وتلقّي أوامر التشغيل من مصادر خارجية، مثل Android Auto أو نظام التشغيل Android Automotive أو "مساعد Google". لمزيد من المعلومات، يُرجى الاطّلاع على المقالتَين التحكّم في التشغيل والإعلان عنه باستخدام MediaSession واستخدام MediaLibrarySession.

يجب أن تعلن جلسة الوسائط على الأقل عن توافقها مع أوامر المشغّل التالية:

يصف دليل تفعيل عناصر التحكّم في التشغيل الطرق التي يمكنك من خلالها تخصيص عناصر التحكّم في التشغيل في السيارات.

عندما يتصل Android Auto أو نظام التشغيل Android Automotive بتطبيقك، يطلبان عرض مكتبة محتوى، ما يؤدي إلى تفعيل طريقة رد الاتصال onGetLibraryRoot(). يمكنك عرض ملف وسائط جذر بسرعة للسماح بالوصول إلى مكتبتك. يتم استدعاء طريقة رد الاتصال onGetChildren() عندما يحاول Android Auto أو نظام التشغيل Android Automotive تصفُّح مستويات أعمق من مكتبة المحتوى.

تفرض هذه المنصات قيودًا إضافية على كيفية تنظيم مكتبة المحتوى. لمعرفة تفاصيل حول كيفية تخصيص طريقة عرض مكتبة المحتوى، يُرجى الاطّلاع على دليل إنشاء خدمة متصفّح الوسائط.

الإشارة إلى التوافق مع 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"، انقر على ملف > جديد > وحدة جديدة.
  2. اختَر وحدة السيارات (Automotive Module)، ثم انقر على التالي (Next).
  3. أدخِل اسم التطبيق/المكتبة. هذا هو الاسم الذي يظهر للمستخدمين لتطبيقك على نظام التشغيل Android Automotive.
  4. أدخِل اسم الوحدة.
  5. عدِّل اسم الحزمة ليتطابق مع تطبيقك.
  6. اختَر واجهة برمجة التطبيقات 28: Android 9.0 (Pie) في حقل الحد الأدنى لحزمة تطوير البرامج (SDK)، ثم انقر على التالي.

    تعمل جميع السيارات التي تتوافق مع نظام التشغيل Android Automotive على الإصدار Android 9 (المستوى 28 من واجهة برمجة التطبيقات) أو الإصدارات الأحدث، لذا فإنّ اختيار هذه القيمة يستهدف جميع السيارات المتوافقة.

  7. اختَر ما مِن نشاط، ثم انقر على إنهاء.

بعد إنشاء وحدتك في "استوديو Android"، افتح ملف 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.

بعد إضافة أي إعدادات أو أنشطة تسجيل دخول، أكمِل ملف البيان من خلال ضبط السمة 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.

<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، قد تحتاج إلى اتخاذ خطوات إضافية لتحسين تطبيقك ليكون أكثر أمانًا أثناء القيادة. للاطّلاع على المزيد من الاقتراحات التي تساعد في ضمان تجربة مستخدم آمنة ومريحة، يُرجى مراجعة الأدلة الفنية حول الإجراءات الصوتية وإجراءات الحماية من تشتيت الانتباه ومعالجة الأخطاء.

إنشاء تطبيقات لتشغيل الفيديوهات على نظام التشغيل Android Automotive

بما أنّ تطبيقات الفيديو يتم تصنيفها بشكل منفصل عن تطبيقات الوسائط في السيارات، عليك الاطّلاع على بعض المتطلبات المحدّدة لتطبيقات الفيديو، كما هو موضّح في إنشاء تطبيقات مخصَّصة للاستخدام أثناء توقّف السيارة وإنشاء تطبيقات فيديو لنظام التشغيل Android Automotive. اتّبِع هذه الإرشادات:

تصنيف تطبيقك كتطبيق فيديو

للإشارة إلى أنّ تطبيقك يتيح تشغيل الفيديو، أضِف السمة android:appCategory="video" إلى العنصر <application> في بيان تطبيقك.

<manifest ...>
    ...
    <application
      ...
      android:appCategory="video">
        ...
    </application>
</manifest>

تعريف ميزة أجهزة "نظام التشغيل Android Automotive"

للإشارة إلى أنّ تطبيقك متوافق مع الأجهزة التي تعمل بنظام التشغيل Android Automotive، أضِف العنصر android.hardware.type.automotive <uses-feature> إلى ملف البيان. يُرجى الاطّلاع على الإعلان عن ميزة أجهزة AAOS للحصول على إرشادات حول ضبط السمة android:required على "false" أو "true".

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