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

توفّر مكتبة "نافذة ضمن النافذة" في 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