يمكنكم توفير تطبيقكم على المركبات التي تعمل بنظام التشغيل 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 السابقة.
يوضّح المخطّط البياني التالي كيفية تجميع هذه المكوّنات في تطبيق نموذجي.
لمزيد من المعلومات، يُرجى الاطّلاع على مكوّنات التشغيل.
تنفيذ 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، مثل البيان، متطلبات خاصة بالنظام الأساسي. أنشئوا وحدة يمكنها الاحتفاظ برمز هذه المكوّنات منفصلاً عن الرموز الأخرى في مشروعكم، مثل الرمز المستخدَم لتطبيقكم على الأجهزة الجوّالة.
اتّبِعوا الخطوات التالية لإضافة وحدة سيارات إلى مشروعكم:
- في "استوديو Android"، انقروا على ملف > جديد > وحدة جديدة.
- انقروا على وحدة السيارات ، ثم على التالي.
- أدخِلوا اسم التطبيق/المكتبة. هذا هو الاسم الذي يظهر للمستخدمين لتطبيقكم على نظام التشغيل Android Automotive.
- أدخِلوا اسم الوحدة.
- عدِّلوا اسم الحزمة ليطابق تطبيقكم.
اختاروا المستوى 28 من واجهة برمجة التطبيقات: Android 9.0 (Pie) في الحد الأدنى من حزمة تطوير البرامج (SDK) ، ثم انقروا على التالي.
تعمل جميع السيارات التي تتوافق مع نظام التشغيل Android Automotive على Android 9 (المستوى 28 من واجهة برمجة التطبيقات) أو الإصدارات الأحدث، لذا فإنّ اختيار هذه القيمة يستهدف جميع السيارات المتوافقة.
اختاروا بدون نشاط، ثم انقروا على إنهاء.
بعد إنشاء الوحدة في "استوديو 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 OS
devices.
استخدِموا إدخال البيان التالي للإعلان عن أنّ تطبيقكم متوافق مع نظام التشغيل 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>
intent filter
يستخدم نظام التشغيل 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> إلى البيان.
يُرجى الاطّلاع على
الإعلان عن ميزة الأجهزة في نظام التشغيل Android Automotive
للحصول على إرشادات حول ما إذا كان يجب ضبط السمة android:required على "false" أو
"true".
<manifest ...>
...
<uses-feature android:name="android.hardware.type.automotive" ...>
...
</manifest>