يوضح الرسم التخطيطي التالي المكونات التي تتفاعل مع الوسائط:
الشكل 1. مكونات النظام
يتم توضيح العناصر في هذا الشكل في الجدول:
المكوّن | الوصف |
---|---|
الشاشة الرئيسية | لتمثيل مساحات العرض الأخرى في واجهة مستخدم السيارة التي تعرض الفيديو الذي يتم تشغيله حاليًا وتتحكّم فيه الوسائط. في AOSP، هذه هي الشاشة الرئيسية التي يتم عرضها عند بدء تشغيل النظام. من هذه الشاشة، يمكن للمستخدمين عرض تفاصيل عنصر الوسائط الذي يتم تشغيله وتنفيذ مجموعة محدودة من المعايير والإجراءات المخصّصة (مثل "التشغيل" و"الإيقاف المؤقت"). |
واجهة مستخدم النظام | توفر وظائف تتضمن خيارات التنقل العام في واجهة المستخدم مثل الانتقال إلى الوسائط. |
المساعدون | يوفّر Android آليات من أجل تفاعل تطبيقات المساعد الصوتي المختلفة مع النظام. يمكن لهذه التطبيقات التفاعل مع مصادر الوسائط في الخلفية (على سبيل المثال، تشغيل أغنية كنتيجة لطلب صوتي)، أو انتقل إلى الوسائط في المقدمة (على سبيل المثال، عندما يُطلَب من أحد تطبيقات المساعد الصوتي عرض واجهة المستخدم لمصدر وسائط محدّد). |
مشغّل التطبيقات | تبدأ جميع تطبيقات Android من "مشغّل التطبيقات"، بما في ذلك "مصادر الوسائط". يمكن للوسائط تقديم محدد مصدر الوسائط الخاص به، مع تكملة مشغّل التطبيقات أو استبداله باعتباره نقطة انطلاق لوسائل الإعلام. |
متجر Google Play | عند استخدام خدمات Google Analytics، فإن هذا هو المكان الذي يمكن فيه للمستخدمين تحديد موقع التطبيقات الجديدة وتثبيتها في جهاز Android بالنسبة إلى الوسائط، بعد تثبيت التطبيقات، يتم توجيه المستخدمين إلى الوسائط إكمال عملية تسجيل الدخول أو البدء في التفاعل مع التطبيق |
مدير جلسة الوسائط | خدمة نظام Android تتتبّع جلسات الوسائط من جميع مصادر الوسائط وتتحكّم فيها أُنشأها جون هنتر، الذي كان متخصصًا توفير آليات لرصد الحالات التي يصبح فيها مصدر الوسائط هو الوسائط التي تعمل في المقدّمة المصدر. الوسائط وجميع التطبيقات الأخرى التي تعرض مصدر الوسائط قيد التشغيل حاليًا (ل مثلاً، الشاشة الرئيسية)، يمكنك استخدام "مدير جلسات الوسائط" لرصد هذه الأحداث وتحديث واجهة المستخدم. وفقًا لذلك. تتفاعل مصادر الوسائط مع مدير جلسات الوسائط عن طريق الوسائط واجهة برمجة تطبيقات الجلسة |
الراديو | تطبيق متخصص للتفاعل مع أجهزة الراديو. عمليات بحث الراديو عن الراديو المحطات، وتحديد المحطات المحددة مؤخرًا والتبديل بين النطاقات اللاسلكية. تتيح مكونات واجهة المستخدم التي يتشاركها كل من الراديو والوسائط للمستخدم إمكانية التبديل بينهما. وخبراتهم. |
محرك تشتيت انتباه السائق | هي خدمة نظام Android تُستخدَم لفرض قيود على تجربة المستخدم استنادًا إلى حالة قيادة السَّيَّارَة تسجيل الدخول إلى مصادر الوسائط وإعدادات تجربة المستخدم (حيث يتم التحكم في الشاشة مباشرةً من خلال مصادر الوسائط)، وتضمن هذه الخدمة عدم عرض أي محتوى غير آمن عند تشغيل في حالة القيادة. يمكن للمصنّعين الأصليين للأجهزة تخصيص تعريف هذه الولايات وكيف يمكن للنظام يتفاعل في هذه المواقف (على سبيل المثال، من خلال عرض طبقة حظر على الشاشة). |
تدفقات المستخدم
إطلاق تطبيق الوسائط
تظهر عملية تشغيل الوسائط أدناه.
الشكل 2. إطلاق تطبيق الوسائط
يجب تشغيل الوسائط باستخدام النظام الضمني التالي
CAR_INTENT_ACTION_MEDIA_TEMPLATE
يمكن أن يتضمّن هذا الغرض المعلومات التالية على أنّها إضافية:
-
android.car.intent.extra.MEDIA_COMPONENT
(اختياري). إضافة سلسلة لتمثيل اسم المكون المسطَّحMediaBrowserService
في تطبيق الوسائط الذي تتصل به الوسائط. سيتم عرض الوسائط في حال عدم توفيرها تطبيق الموسيقى المحدد حاليًا. يتم استخدام هذا الغرض من العناصر التالية نقاط الدخول:-
واجهة مستخدم النظام: يُستخدَم هذا الإذن للرجوع إلى تجربة الوسائط أو البدء. للمرة الأولى. في هذه الحالة، سيتم استخدام Intent أعلاه بدون لكي تتمكن الوسائط من عرض تطبيق الوسائط المحدد حاليًا.
-
الشاشة الرئيسية و"مساعد Google" و"مركز الإشعارات": يمكن للمستخدمين انتقِل إلى "الوسائط" لعرض تطبيق الوسائط المحدَّد حاليًا. في جميع الحالات، يتم تشغيل الهدف الضمني بدون إضافات.
-
مشغّل التطبيقات: عندما يختار المستخدمون تطبيق وسائط من مشغّل التطبيقات، يشمل الغرض أعلاه
CAR_EXTRA_MEDIA_COMPONENT
إضافي يتضمّن تطبيق الوسائط المحدَّد. يصنف الوسائط هذا الحدث على أنه التطبيق المحدد ويتصل به. لمعرفة التفاصيل، يُرجى الاطّلاع على القسم أدناه "التطبيق" دمج مشغّل التطبيقات مع دمج الوسائط
-
دمج مشغّل التطبيقات مع الوسائط
لا يُسمح لتطبيقات الوسائط بتوفير أي نشاط يحتوي على تعليقات توضيحية مع
الفئة android.intent.category.LAUNCHER
. وبالتالي، فإن مشغّل التطبيقات (أو
مماثلة) أن تنفذ منطقًا خاصًا لمعالجة دمج مصدر الوسائط:
-
يجب أن يفحص مشغّل التطبيقات النظام بحثًا عن الحِزم التي يتم تنفيذها.
MediaBrowserService.SERVICE_INTERFACE
بالنسبة إلى هذه الحِزم، يجلب "مشغّل التطبيقات" رمز الخدمة المشابه لذلك المستخدَم لجلب والأنشطة السابقة. -
يجمع مشغّل التطبيقات بعد ذلك هذه الحِزم مع الحِزم التي تنفّذها.
android.intent.category.LAUNCHER
نشاطًا إذا قدم أحد التطبيقات تنفيذMediaBrowserService
ونشاط مشغّل التطبيقات، تأخذ الخدمة الأسبقية.اعتبارًا من هذه الكتابة، لا يمكن لأي تطبيق مصدر وسائط توفير نشاط مشغّل التطبيقات.
- يمكن العثور على مثال على هذا المنطق في رمز AOSP على
AppLauncherUtils#getAllLauncherApps()
خيارات الضبط وخطوات تسجيل الدخول
يمكن أن تتضمّن تطبيقات الوسائط نشاطًا في الإعدادات المحسَّن للمركبة. يمكن أن يكون مثل هذا النشاط المستخدمة لتنفيذ مسارات المستخدمين التي لم يتم التعامل معها من خلال واجهات برمجة تطبيقات Android Media، على سبيل المثال:
- تسجيل الدخول
- تسجيل الخروج
- تبديل الحسابات
- عرض المستخدم الذي سجّل دخوله حاليًا (إن وُجد)
- إعدادات الخدمة
الشكل 3. مسار تسجيل الدخول
تم الإعلان عن نشاط "الإعدادات" هذا من خلال تطبيق الوسائط باستخدام فلتر الأهداف التالي:
<activity android:name=".AppSettingsActivity" android:exported="true android:theme="@style/SettingsActivity" android:label="@string/app_settings_activity_title"> <intent-filter> <action android:name="android.intent.action.APPLICATION_PREFERENCES"/> </intent-filter> </activity>
يجب أن تنفذ الوسائط المنطق التالي:
-
تحقَّق من أنّ تطبيق الوسائط المحدَّد حاليًا يتضمّن نشاطًا فلتر الأهداف
-
إذا كان الأمر كذلك، فاسمح للمستخدم بالانتقال إلى النشاط.
-
إذا كانت قيود تجربة المستخدم في السيارة سارية (على سبيل المثال، عندما تتحرك السيارة)، فيجب أن تكون هذه الوظيفة أن يتم إيقافها لأنّ نشاط الإعدادات ليس واجهة مستخدم محسَّنة لبرنامج التشغيل.
حدث خطأ أثناء المعالجة ويجب تسجيل الدخول
تتفاعل الوسائط مع تطبيقات الوسائط من خلال واجهة برمجة التطبيقات Android Media Session API. وكجزء من هذه العملية
واجهة برمجة التطبيقات، تتلقى الوسائط
PlaybackState
والذي يعبر عن الوضع الحالي لتطبيق الوسائط.
تبدأ عملية تسجيل الدخول عند إجراء تغيير على تطبيق الوسائط.
PlaybackState
إلى
STATE_ERROR
,
بما في ذلك رمز خطأ معيّن (راجِع التفاصيل أدناه). عندما يكون هذا
ستعرض الوسائط وصف الخطأ وسمة للانتقال إلى نشاط تسجيل الدخول
عن طريق تطبيق الوسائط
ويمكن للتطبيقات استخدام هذا التدفق نفسه للإشارة إلى حالات خطأ أخرى (على سبيل المثال، حدث خطأ في اتصال الخادم).
الشكل 4. خطأ أثناء المعالجة
كجزء من معالجة أخطاء PlaybackState
العادية، يجب أن تبحث الوسائط عن مصدر الإدخال التالي.
-
رمز خطأ واحد (
PlaybackState
) يساويPlaybackStateCompat#ERROR_CODE_AUTHENTICATION_EXPIRED
يشير هذا إلى أن تطبيق الوسائط يتطلب تسجيل الدخول لمتابعة تشغيله. يمكن أن تكون رموز الخطأ الأخرى الأمر الذي قد يشير إلى أنواع أخرى من حالات الخطأ. -
رسالة الخطأ
PlaybackState
(تضبطها تطبيقات الوسائط باستخدامPlaybackStateCompat.Builder#setErrorMessage
) تحتوي على شرح يمكن لشخص عادي قراءته (مثل "لم يتم تسجيل دخولك."). يجب عرض هذه الرسالة لـ المستخدم ويجب أن يؤدي إلى تحسين تشتيت الانتباه (DO). -
يمكن أن يتضمن
PlaybackState
بشكل اختياري الميزات الإضافية التالية (تم ضبطها حسب الوسائط التطبيقات التي تستخدمPlaybackStateCompat.Builder#setExtras
) بالمفاتيح التالية.-
android.media.extras.ERROR_RESOLUTION_ACTION_LABEL
قم بتعيينها على سلسلة يحتوي على رسالة يمكن لشخص عادي قراءتها ليتم عرضها على الزر الذي يضغط عليه المستخدم لبدء تدفق تسجيل الدخول. -
android.media.extras.ERROR_RESOLUTION_ACTION_INTENT
الضبط باستخدامPendingIntent
يتم تشغيلها عندما ينقر المستخدم على الزر المذكور أعلاه. هذا النمطPendingIntent
يشير إلى نشاط تسجيل دخول مخصَّص ينفِّذه تطبيق الوسائط نفسه.
-
-
ولاية
PlaybackState
تساويSTATE_ERROR
تشير هذه الرسالة إلى أنّه لا يمكن إجراء أي عملية أخرى إلى أن تكتمل عملية تسجيل الدخول.