في الإصدار 7.0 من نظام التشغيل Android والإصدارات الأحدث، يمكن للأجهزة عرض تطبيقات متعددة في الوقت نفسه باستخدام ميزة النوافذ المتعددة. يتيح نظام التشغيل Android ثلاثة إعدادات للنوافذ المتعددة:
- وضع "النافذة الحرة": يتيح للمستخدمين تغيير حجم لوحات الأنشطة بشكل ديناميكي وعرض أكثر من تطبيقَين على الشاشة. بالنسبة إلى العرض في نافذة على الكمبيوتر، يمكن للمستخدمين إنشاء نوافذ حرة الشكل على كمبيوتر يتيح تفاعلات شبيهة بتلك التي تتم على الكمبيوتر.
- تقسيم الشاشة: هي عملية التنفيذ التلقائية للنوافذ المتعددة، والتي توفّر لوحتَي نشاط يمكن للمستخدمين وضع التطبيقات فيهما.
- نافذة ضمن النافذة (PiP): تتيح للأجهزة التي تعمل بنظام التشغيل Android تشغيل محتوى الفيديو في نافذة صغيرة أثناء تفاعل المستخدم مع تطبيقات أخرى.
متطلبات الأجهزة التي يمكن استخدامها في وضع النوافذ المتعددة
تكون ميزة "النوافذ المتعددة" مفعّلة تلقائيًا في الإصدار 7.0 من نظام التشغيل Android والإصدارات الأحدث.
لإيقافها، اضبط العلامة config_supportsMultiWindow على
false في ملف
config.xml على جهازك.
يتم إيقاف ميزة النوافذ المتعددة تلقائيًا على جميع الأجهزة ذات ذاكرة الوصول العشوائي المنخفضة (الأجهزة التي تحدّد ActivityManager.isLowRam). تتجاهل الأجهزة ذات ذاكرة الوصول العشوائي المنخفضة قيمة العلامة config_supportsMultiWindow.
Freeform
تتيح ميزة النوافذ الحرة للمستخدم إنشاء نوافذ يمكن تغيير حجمها بحرية. يُعد عرض النوافذ الحرة شرطًا أساسيًا للعرض في نافذة. في ما يلي متطلبات الجهاز لتفعيل عرض النوافذ الحرة:
-
فعِّل العلامة
config_supportsMultiWindow. -
فعِّل إدارة النوافذ الحرة بإحدى الطرق التالية:
-
فعِّل علامة
config_freeformWindowManagementفيconfig.xml:<feature name="android.software.freeform_window_management" /> -
أدرِج ما يلي في ملف makefile الخاص بالجهاز:
PRODUCT_COPY_FILES += \ frameworks/native/data/etc/android.software.freeform_window_management.xml:$(TARGET_COPY_OUT_SYSTEM)/etc/permissions/android.software.freeform_window_management.xml
-
فعِّل علامة
في نظام التشغيل Android 16، يمكن لمصنّعي المعدات الأصلية إتاحة العرض في نافذة على أجهزتهم في وضع سطح المكتب، وذلك من خلال إعداد نوافذ متعدّدة حرة الشكل باستخدام خيار تفعيل العرض في نافذة.
العرض في نافذة
توفّر ميزة "العرض في نافذة" مساحة عمل لتنفيذ مهام متعددة على الشاشات الكبيرة، وهي تستند إلى النوافذ الحرة. تتوفّر مساحة العمل إلى جانب وضع ملء الشاشة، مع توفير عناصر واجهة مستخدم وسلوكيات إضافية تمنح المستخدم تجربة أكثر مرونة لتنفيذ عدة مهام في الوقت نفسه:
- التفاعل باستخدام لوحة المفاتيح أو الماوس: يتيح التفاعل باللمس أولاً أو باستخدام لوحة المفاتيح أو الماوس أولاً.
- النوافذ الحرة: تشغّل التطبيقات في نوافذ قابلة لتغيير الحجم والنقل مع أشرطة وعناصر تحكّم في عناوين النوافذ.
- شريط تطبيقات محسّن: يوفّر إمكانية الوصول بسهولة إلى التطبيقات التي يتم تشغيلها والمثبّتة.
- تحسين الشاشات الخارجية: تحويل الشاشات المتصلة إلى بيئات كمبيوتر مكتبي للأجهزة المتوافقة
- أسطح المكتب الافتراضية: تتيح للمستخدمين تنظيم التطبيقات على مساحات عمل متعددة.
يجب استيفاء الشروط المسبقة التالية لإعداد جهاز لاستخدام ميزة النوافذ على سطح المكتب:
-
فعِّل العلامات التالية:
- جميع المتطلبات الأساسية لاستخدام ميزة النافذة الحرة
- علامة العرض في نافذة العامة
config_isDesktopModeSupported
- تتطلّب واجهة مستخدم النظام شاشة بعرض 600 بكسل مستقل الكثافة على الأقل. قد لا تعمل ميزة العرض في نافذة على النحو المتوقّع على الشاشات الأصغر حجمًا.
-
يجب ألا يكون الجهاز مزوّدًا بذاكرة وصول عشوائي (RAM) منخفضة.
ActivityManager.isLowRamيجب عرضfalse، لأنّ الأجهزة ذات ذاكرة الوصول العشوائي المنخفضة غير مؤهّلة للاستفادة من أي ميزات للنوافذ المتعدّدة.
يسرد الجدول التالي الإعدادات التي يمكن ضبط الجهاز عليها لاستخدام ميزة "نوافذ سطح المكتب"، وذلك حسب حجم الشاشة وطريقة الاستخدام المقصودة للجهاز:
| الوضع | جهاز محمول بملء الشاشة فقط | جهاز عرض محمول بملء الشاشة يعرض المحتوى على شاشة عرض متصلة | شاشة كبيرة في وضع ملء الشاشة أولاً مع إمكانية التوسيع إلى شاشة متصلة | العرض في نافذة على شاشة كبيرة أولاً |
|---|---|---|---|---|
| مثال على شكل الجهاز | هاتف محمول | هاتف محمول متوافق مع HDMI لشاشة عرض خارجية | جهاز لوحي متوافق مع HDMI لشاشة عرض خارجية | جهاز لوحي مزوّد بلوحة مفاتيح ومتوافق مع كابل HDMI لتوصيله بشاشة خارجية |
| تجربة العرض الداخلي | التطبيقات المتوافقة مع وضع ملء الشاشة ووضع تقسيم الشاشة ووضع "نافذة ضمن النافذة" ووضع "النافذة الحرة" على الأجهزة غير المكتبية | إمكانية استخدام وضع ملء الشاشة ووضع تقسيم الشاشة ووضع "نافذة ضمن النافذة" | توفير ميزة "العرض في نافذة" على سطح المكتب في وضع ملء الشاشة ووضع تقسيم الشاشة ووضع "نافذة ضمن النافذة" من خلال أسطح مكتب منفصلة | "العرض في نافذة" هو وضع العرض التلقائي في النافذة (مع إمكانية استخدام مساحات عمل منفصلة)، ويمكن للمستخدمين تفعيل وضع ملء الشاشة أو وضع "العرض في نافذة" على سطح المكتب من خلال مساحات عمل منفصلة |
| تجربة العرض على شاشة متصلة | عرض الشاشة الداخلية فقط | استخدام ميزة "العرض في نافذة" على الشاشات المتصلة فقط | توسيع العرض في نوافذ على شاشات سطح المكتب، ويتوفّر على الشاشات الداخلية | توسيع العرض في نوافذ على شاشات سطح المكتب، ويتوفّر على الشاشات الداخلية |
| إعدادات Config | ||||
config_supportsMultiWindow |
true |
true |
true |
true |
config_freeformWindowManagement |
true |
true |
true |
true |
config_isDesktopModeSupported |
false |
true |
true |
true |
config_canInternalDisplayHostDesktops |
عنصر تم تجاهله | false |
true |
true |
config_enterDesktopByDefaultOnFreeformDisplay |
عنصر تم تجاهله | false |
false |
true |
config_isDesktopModeSupported
إنّ علامة تراكب الإعدادات config_isDesktopModeSupported هي العلامة ذات المستوى الأعلى لتفعيل العرض في نافذة على سطح المكتب. وفي حال عدم تفعيلها، يتم تجاهل جميع إعدادات الضبط الأخرى.
اضبطها على true في config.xml:
<!-- Globally enable Desktop windowing logic -->
<bool name="config_isDesktopModeSupported">true</bool>
عندما يكون config_isDesktopModeSupported هو true، يتعامل النظام تلقائيًا مع شاشات العرض الخارجية المؤهَّلة (مثل تلك المتصلة عبر DisplayPort أو HDMI) كخيارات محتملة للعرض في نافذة.
يجب أن يعتبر "مدير النوافذ" الشاشة مؤهَّلة (يجب أن تكون على الأقل عامة وموثوقة،
راجِع العرض في نافذة).
يحاول النظام تشغيل المهام في وضع النوافذ الحرة على شاشات العرض هذه تلقائيًا.
config_canInternalDisplayHostDesktops
يتيح خيار التراكب الخاص بالإعدادات config_canInternalDisplayHostDesktops العرض في نوافذ على شاشة الجهاز الداخلية. اضبطها على true في
config.xml:
<!-- Allow the primary internal display to host desktop sessions -->
<bool name="config_canInternalDisplayHostDesktops">true</bool>تعمل ميزة العرض في نافذة بشكل أفضل على الأجهزة ذات الشاشات الكبيرة، مثل الأجهزة اللوحية، مقارنةً بالهواتف المحمولة الأصغر حجمًا. في حال عدم تفعيلها، لا تتوفّر ميزة "العرض في نافذة" إلا على شاشة عرض خارجية (بافتراض أنّ الجهاز يتيح استخدام HDMI).
config_enterDesktopByDefaultOnFreeformDisplay
يضبط خيار التراكب في ملف الإعداد config_enterDesktopByDefaultOnFreeformDisplay العرض في نوافذ على سطح المكتب كوضع العرض التلقائي على الشاشة الداخلية للجهاز. إذا لم يتم تفعيل هذا الخيار، سيكون وضع ملء الشاشة هو وضع العرض في نافذة التلقائي، مع إمكانية استخدام مساحات العمل في الوقت نفسه. اضبطها على true في config.xml:
<!-- Enable Desktop windowing as the default windowing mode on the internal display -->
<bool name="config_enterDesktopByDefaultOnFreeformDisplay">true</bool>تفعيل حدود المهام
لضبط الحد الأقصى لعدد المهام المتاحة في العرض في نافذة، اضبط علامة التراكب config_maxDesktopWindowingActiveTasks في config.xml على الحد الأقصى لعدد المهام المتاحة. لإتاحة عدد غير محدود من المهام، اضبط قيمة العلامة على 0:
<!-- Maximum number of tasks supported in desktop windowing -->
<integer name="config_maxDesktopWindowingActiveTasks">4</integer>تفعيل حدود سطح المكتب
لضبط الحد الأقصى لعدد أسطح المكتب الافتراضية المدعومة في العرض في نافذة، اضبط علامة تراكب الإعدادات config_maxDesktopWindowingDesks في config.xml على الحد الأقصى لعدد أسطح المكتب المدعومة. لإتاحة عدد غير محدود من المكاتب، اضبط قيمة العلامة على 0:
<!-- Maximum number of virtual desks supported in desktop windowing -->
<integer name="config_maxDesktopWindowingDesks">4</integer>تقسيم الشاشة
تجربة الاستخدام التلقائية لميزة "النوافذ المتعددة" هي وضع تقسيم الشاشة، حيث يتم تقسيم واجهة مستخدم النظام إلى نصفين في منتصف الجهاز في الوضع العمودي أو الأفقي. يمكن للمستخدمين تغيير حجم النافذة من خلال سحب خط التقسيم من جانب إلى آخر أو من أعلى إلى أسفل، وذلك حسب اتجاه الجهاز.
بعد تفعيل ميزة "تقسيم الشاشة"، يمكن لمصنّعي الأجهزة اختيار تفعيل وضع "النافذة العائمة" أو وضع "نافذة ضمن النافذة".
يحسّن الإصدار 8.0 من نظام التشغيل Android والإصدارات الأحدث ميزة "تقسيم الشاشة" من خلال ضغط مشغّل التطبيقات عندما ينقر المستخدم على الشاشة الرئيسية. للحصول على تفاصيل التنفيذ، راجِع التفاعلات في وضع تقسيم الشاشة.
نافذة ضمن النافذة
بعد تفعيل وضع النوافذ المتعددة باستخدام العلامة config_supportsMultiWindow، يمكن لمصنّعي الأجهزة توفير ميزة نافذة ضمن النافذة التي تتيح للمستخدمين مشاهدة الفيديو أثناء تصفّح أنشطة أخرى. مع أنّ هذه الميزة تستهدف أجهزة Android TV، قد تتوافق مع أنواع أخرى من الأجهزة.
لاستخدام ميزة "نافذة ضمن النافذة"، فعِّل ميزة النظام PackageManager#FEATURE_PICTURE_IN_PICTURE في /android/frameworks/base/core/java/android/content/pm/PackageManager.java.
لمزيد من التفاصيل حول تنفيذ ميزة "نافذة ضمن النافذة" على الأجهزة التي تعمل بالإصدار 8.0 من نظام التشغيل Android والإصدارات الأحدث، يُرجى الاطّلاع على مقالة نافذة ضمن النافذة.
واجهة مستخدِم النظام
يجب أن تتوافق مع جميع واجهات المستخدم القياسية للنظام وفقًا لعملية التحقّق من وضع النوافذ المتعددة.
التطبيقات
لإتاحة وضع النوافذ المتعددة للتطبيقات المحمَّلة مسبقًا، يُرجى الاطّلاع على إتاحة وضع النوافذ المتعددة.
التحقق من صحة البيانات
للتأكّد من صحة عملية تنفيذ ميزة النوافذ المتعددة، شغِّل اختبارات CTS ذات الصلة واتّبِع الخطوات الواردة في التحقّق من وضع النوافذ المتعددة.
| إصدار Android | اختبار مجموعة أدوات اختبار التوافق (CTS) |
|---|---|
| 7 | /platform/cts/hostsidetests/services/activitymanager/src/android/server/cts |
| من نظام التشغيل Android | /platform/cts/hostsidetests/services/activityandwindowmanager/activitymanager/src/android/server/cts |
| 9.0 | /platform/cts/tests/framework/base/activitymanager/src/android/server/am |
| نظام التشغيل Android 10 والإصدارات الأحدث | /platform/cts/tests/framework/base/windowmanager/src/android/server/wm |