استخدام مكتبة "نافذة ضمن النافذة" في Jetpack

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

تسهّل مكتبة "نافذة ضمن النافذة" في Jetpack واجهات برمجة التطبيقات الحالية من خلال معالجة العديد من التحديات الرئيسية والتناقضات في نظام Android:

  • تجزئة نظام التشغيل: تعالج المكتبة تلقائيًا الاختلافات في طلبات واجهة برمجة التطبيقات "نافذة ضمن النافذة" على مستوى إصدارات Android المختلفة، مثل استخدام enterPictureInPictureMode قبل Android 12 و isAutoEnterEnabled بعده، لذلك لا يحتاج المطوّرون إلى إدارة اختلافات الإصدارات.
  • مَعلمات غير صحيحة في "نافذة ضمن النافذة": توفّر المكتبة حلاً موحّدًا لضبط مَعلمات "نافذة ضمن النافذة" بشكلٍ صحيح، على سبيل المثال setSourceRectHint، لإنشاء رسوم متحركة سلسة وعالية الجودة أثناء تشغيل الوسائط.
  • ردود الاتصال الموحّدة لحالة "نافذة ضمن النافذة": تدمج المكتبة onPictureInPictureModeChanged و onPictureInPictureUiStateChanged في واجهة رد اتصال موحّدة واحدة (PictureInPictureDelegate.OnPictureInPictureEventListener) لإدارة الحالة وواجهة المستخدم بشكلٍ مبسط.
  • تقليل رمز النص النموذجي: تقلّل المكتبة من مقدار رمز النص النموذجي المتكرر، من خلال توفير مجموعات محدّدة مسبقًا من RemoteActions لحالات الاستخدام الشائعة، مثل عناصر التحكّم في التشغيل وإجراءات مكالمات الفيديو.
  • التوافق مع المستقبل: يتم توفير ميزات إضافية في "نافذة ضمن النافذة" من خلال مكتبة Jetpack ، ما يتيح للمستخدمين الوصول إلى وظائف إضافية بأقل جهد أو بدون أي جهد.

اعتماد Jetpack

من أجل اعتماد مكتبة Jetpack، استبدِل عملية تنفيذ "نافذة ضمن النافذة" المخصّصة الحالية بواجهات برمجة تطبيقات مكتبة Jetpack. سيختلف مدى تعقيد عملية الاعتماد وتكلفتها استنادًا إلى عملية التنفيذ الحالية في التطبيق.

تصف الأقسام التالية بعض حالات الاستخدام النموذجية لميزة "نافذة ضمن النافذة" وخطوات التنفيذ الضرورية:

يُعلم التطبيق المكتبة بحالة التنقل النشطة أو غير النشطة ويضبط نسبة العرض إلى الارتفاع. وتتولى مكتبة Jetpack بقية المهام.

الاختلافات الرئيسية:

  1. لا حاجة إلى التمييز بين ميزة "الدخول التلقائي" وميزة "الدخول القديم" على جانب التطبيق.
  2. واجهات رد اتصال موحّدة.
  3. أداة إنشاء PictureInPictureParams جديدة للتوافق مع الإصدارات السابقة.

مكالمة فيديو

يُعلم التطبيق المكتبة بحالة المكالمة النشطة أو غير النشطة ويضبط نسبة العرض إلى الارتفاع.

الاختلافات الرئيسية:

  1. لا حاجة إلى التمييز بين ميزة "الدخول التلقائي" وميزة "الدخول القديم" على جانب التطبيق.
  2. واجهات رد اتصال موحّدة.
  3. أداة إنشاء PictureInPictureParams جديدة للتوافق مع الإصدارات السابقة.
  4. رموز إجراءات موحّدة لمكالمات الفيديو.

تشغيل الفيديو

توفّر مكتبة Jetpack عناصر تحكّم في المشغّل يمكنك دمجها لإدارة تفعيل ميزة "نافذة ضمن النافذة" أو إيقافها وضبط تلميح مستطيل المصدر بدقة. يمكنك أيضًا الموافقة على استخدام مجموعة محدّدة مسبقًا من عناصر RemoteAction، مشابهة لتلك المستخدَمة في سيناريوهات مكالمات الفيديو.

الميزات الأساسية:

  1. تتعامل المكتبة مع التوافق مع الإصدارات السابقة، ولا يلزم التحقق من إصدار نظام التشغيل.
  2. مزامنة حالة التشغيل والتحكّم في ميزة "الدخول التلقائي".
  3. تتبُّع مستمر للهندسة باستخدام SourceRectHint.