توسيع نطاق تطبيق الوسائط ليشمل 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، يمكنك أيضًا إنشاء شاشات تسجيل الدخول والإعدادات (للاستخدام أثناء ركن السيارة) باستخدام "View" أو "Compose".

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

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

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

يقدم لك هذا الدليل معلومات حول ما عليك فعله، بما في ذلك روابط إلى موارد أخرى مع إرشادات محددة.

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

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

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

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

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

تنفيذ MediaLibraryService وMediaLibrarySession

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

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

يتيح ربط جلسة وسائط بالمشغّل للتطبيق الإعلان عن تشغيل الوسائط خارجيًا وتلقّي أوامر التشغيل من مصادر خارجية مثل Android Auto أو Android Automotive أو "مساعد Google". لمزيد من المعلومات، يمكنك الاطّلاع على المقالة التحكّم في عملية التشغيل والإعلان عنها باستخدام MediaSession وUse a 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. اختَر وحدة سيارات، ثم انقر على التالي.
  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 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"/>