يمكنك توفير تطبيقك على المركبات التي تعمل بنظام التشغيل 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
استخدِم إدخال ملف البيان التالي للإعلان عن أنّ تطبيقك يتيح استخدام نظام التشغيل 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. عليك استخدام التعليمات التالية.
وضع علامة على تطبيقك باعتباره تطبيق فيديو
للإشارة إلى أنّ تطبيقك يتيح استخدام الفيديو، أضِف ملف XML باسم automotive_app_desc.xml إلى الدليل res/xml/ في مشروعك. في هذا الملف، أضِف المحتوى التالي:
<automotiveApp>
<uses name="video"/>
</automotiveApp>
uses
بعد ذلك، ضمن عنصر application في ملف البيان، أضِف عنصر meta-data التالي الذي يشير إلى ملف XML:
<meta-data android:name="com.android.automotive"
android:resource="@xml/automotive_app_desc"/>