يجب أن تعرض تطبيقات التلفزيون بطاقة جارٍ التشغيل الآن عند تشغيل الوسائط خلف مشغّل التطبيقات أو في الخلفية. تتيح هذه البطاقة للمستخدمين الرجوع إلى التطبيق الذي يشغِّل الوسائط حاليًا.
يعرض إطار عمل Android بطاقة التعرّف التلقائي على الموسيقى على الشاشة الرئيسية عندما تكون علامة MediaSession
نشطة.
تتضمّن البطاقة بيانات وصفية للوسائط، مثل صورة الألبوم وعنوانه ورمز التطبيق.
عندما يختار المستخدم البطاقة، يفتح النظام التطبيق.
يمكنك استخدام فئة MediaSession
لتطبيق
بطاقة التعرّف التلقائي على الموسيقى.
بطاقة "التعرّف التلقائي على الموسيقى"
بعد تنفيذ جلسة وسائط وضبط الجلسة على نشطة وطلب تركيز الصوت، تظهر بطاقة التعرّف التلقائي على الموسيقى.
ملاحظة: لا تظهر بطاقة جارٍ التشغيل الآن إلا لجلسة وسائط
تم تعيين علامة FLAG_HANDLES_TRANSPORT_CONTROLS
عليها. تم إيقاف هذه العلامة نهائيًا في المستوى 26 من واجهة برمجة التطبيقات. ومع ذلك، قد تظل هذه العلامة مطلوبة على الأجهزة القديمة من أجل التوافق مع الأنظمة القديمة.
تتم إزالة البطاقة من شاشة مشغّل التطبيقات عندما يتم إيقاف جلسة الوسائط عن طريق طلب setActive(false)
أو عندما يبدأ تطبيق آخر تشغيل الوسائط. إذا توقف التشغيل تمامًا
ولم تكن هناك وسائط نشطة، يمكنك إيقاف جلسة تشغيل الوسائط
فورًا. إذا تم إيقاف التشغيل مؤقتًا، أوقِف جلسة الوسائط بعد مهلة
تتراوح عادةً بين 5 دقائق و30 دقيقة.
تعديل البطاقة
كلما يعدّل تطبيقك حالة التشغيل في MediaSession
، يتم تعديل بطاقة
جارٍ التشغيل الآن لعرض حالة الوسائط الحالية. للاطّلاع على كيفية إجراء ذلك، يمكنك مراجعة
تعديل حالة التشغيل.
بالمثل، يمكن لتطبيقك تحديث
MediaMetadata
لتوفير
معلومات إلى بطاقة التعرّف التلقائي على الموسيقى عن الوسائط الحالية، مثل العنوان والعنوان الفرعي
والرموز المختلفة. للاطّلاع على كيفية إجراء ذلك، يمكنك مراجعة
تعديل البيانات الوصفية للوسائط.
الاستجابة لإجراء المستخدم
عندما يختار المستخدم بطاقة جارٍ التشغيل الآن، سيفتح النظام التطبيق الذي يملك الجلسة. إذا كان تطبيقك يضمِّن PendingIntent
في setSessionActivity()
، يبدأ النظام في تشغيل النشاط الذي تحدّده، كما هو موضّح في مقتطف الرمز التالي. وإذا لم يكن الأمر كذلك، سيتم فتح الغرض التلقائي للنظام. يجب أن يوفّر النشاط الذي تحدّده عناصر تحكّم في التشغيل
تتيح للمستخدمين إيقاف التشغيل مؤقتًا أو نهائيًا.
Kotlin
val pi: PendingIntent = Intent(context, MyActivity::class.java).let { intent -> PendingIntent.getActivity( context, 99 /*request code*/, intent, PendingIntent.FLAG_UPDATE_CURRENT ) } session.setSessionActivity(pi)
Java
Intent intent = new Intent(context, MyActivity.class); PendingIntent pi = PendingIntent.getActivity(context, 99 /*request code*/, intent, PendingIntent.FLAG_UPDATE_CURRENT); session.setSessionActivity(pi);