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

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

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

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

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

Android Auto

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

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

‫Android Automotive OS هو نظام ترفيه ومعلومات يستند إلى 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 OS، لأنّ هاتين المنصّتين توفّران واجهة مستخدم خاصة بهما وآمنة للسائقين لمكتبة الوسائط. لمزيد من المعلومات حول تنفيذ واستخدام MediaLibraryService، راجِع عرض المحتوى باستخدام MediaLibraryService.

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

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

فلاتر الأهداف

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

إنشاء تطبيقات لتشغيل الفيديو على نظام التشغيل 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"/>