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

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

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

بعد إنشاء الوحدة في 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.

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

بعد ذلك، أضِف العنصر التالي meta-data الذي يشير إلى ملف XML ضمن عنصر application في البيان:

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