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