يفعِّل نظام التشغيل Android وضع التوافق للتطبيقات التي تحدّد قيودًا على الاتجاه أو إمكانية تغيير الحجم. يضمن وضع التوافق سلوكًا مقبولاً للتطبيقات على الأجهزة ذات الشاشات الكبيرة والهواتف القابلة للطي، ولكن مع إمكانية استخدام غير مثالية.
تتيح عمليات الإلغاء على مستوى التطبيق لمصنّعي الأجهزة ومالكي الأجهزة الافتراضية1 والمستخدمين تغيير سلوك التطبيق لتحسين تخطيطه أو منع حدوث مشاكل في التطبيقات على أجهزة محدّدة.
Android 16
يتجاهل نظام التشغيل Android 16 (المستوى 36 لواجهة برمجة التطبيقات) قيود اتجاه الشاشة ونسبة العرض إلى الارتفاع وإمكانية تغيير حجم التطبيق لتحسين تخطيط التطبيقات على الأجهزة ذات عامل الشكل الذي يكون فيه أصغر عرض أكبر من أو يساوي 600 وحدة بكسل مستقلة عن الكثافة.
لا تعمل عمليات الإلغاء التالية على مستوى التطبيق مع التطبيقات التي تستهدف المستوى 36 من واجهة برمجة التطبيقات:
- FORCE_RESIZE_APP
- FORCE_NON_RESIZE_APP
- OVERRIDE_MIN_ASPECT_RATIO
- OVERRIDE_MIN_ASPECT_RATIO_PORTRAIT_ONLY
- OVERRIDE_MIN_ASPECT_RATIO_MEDIUM
- OVERRIDE_MIN_ASPECT_RATIO_LARGE
- OVERRIDE_MIN_ASPECT_RATIO_TO_ALIGN_WITH_SPLIT_SCREEN
- OVERRIDE_MIN_ASPECT_RATIO_EXCLUDE_PORTRAIT_FULLSCREEN
- OVERRIDE_ANY_ORIENTATION
- OVERRIDE_ANY_ORIENTATION_TO_USER
- OVERRIDE_UNDEFINED_ORIENTATION_TO_PORTRAIT
- OVERRIDE_UNDEFINED_ORIENTATION_TO_NOSENSOR
- OVERRIDE_LANDSCAPE_ORIENTATION_TO_REVERSE_LANDSCAPE
- OVERRIDE_ORIENTATION_ONLY_FOR_CAMERA
- OVERRIDE_USE_DISPLAY_LANDSCAPE_NATURAL_ORIENTATION
- OVERRIDE_ENABLE_COMPAT_IGNORE_REQUESTED_ORIENTATION
- OVERRIDE_ENABLE_COMPAT_IGNORE_ORIENTATION_REQUEST_WHEN_LOOP_DETECTED
- OVERRIDE_RESPECT_REQUESTED_ORIENTATION
- OVERRIDE_EXCLUDE_CAPTION_INSETS_FROM_APP_BOUNDS
إيقاف
يمكن أن يستهدف تطبيقك المستوى 36 لواجهة برمجة التطبيقات، ولكن يمكنه إيقاف السلوك التلقائي لنظام التشغيل Android 16، وفي هذه الحالة، لا ينطبق الإذن OVERRIDE_ANY_ORIENTATION_TO_USER.
تعريف خاصية البيان
لإيقاف سلوك مستوى واجهة برمجة التطبيقات 36، يجب الإفصاح عن ملف بيان
PROPERTY_COMPAT_ALLOW_RESTRICTED_RESIZABILITY
.
لإيقاف ميزة معيّنة، اضبط الموقع في عنصر <activity>
:
<activity ...>
<property
android:name="android.window.PROPERTY_COMPAT_ALLOW_RESTRICTED_RESIZABILITY"
android:value="true" />
...
</activity>
لإيقاف الميزة في تطبيقك بالكامل، اضبط السمة في عنصر <application>
:
<application ...>
<property
android:name="android.window.PROPERTY_COMPAT_ALLOW_RESTRICTED_RESIZABILITY"
android:value="true" />
...
</application>
الأجهزة المرجعية
قد تتطلّب الأجهزة التالية عمليات إلغاء على مستوى التطبيق بسبب عمليات ضبط غير عادية أو عمليات ضبط لا تتوافق مع التطبيقات بشكل جيد:
- الأجهزة اللوحية: يكون الاتجاه الطبيعي لبعض الأجهزة اللوحية، مثل Pixel Tablet، أفقيًا. يكون الجهاز في اتجاهه الطبيعي عندما تعرض الدالة
Display#getRotation()
القيمةSurface.ROTATION_0
. إذا افترضت التطبيقات أنّROTATION_0
هو الوضع العمودي، قد لا تتطابق تخطيطات التطبيقات ومعاينة الكاميرا مع شاشة الجهاز. - الأجهزة القابلة للطي في الوضع الأفقي: تكون بعض الأجهزة القابلة للطي، مثل Pixel Fold، في الوضع العمودي عندما تكون مطوية، ولكن في الوضع الأفقي عندما تكون مفتوحة. إذا افترضت التطبيقات أنّ الاتجاه غير المطوي هو الاتجاه العمودي، من المحتمل حدوث حلقات ومضية أو مشاكل في التنسيق.
- الهواتف القابلة للطيّ: تكون الهواتف القابلة للطيّ عادةً في الوضع الرأسي عند فتحها. ولكن عند طيّها، تحتوي الهواتف عادةً على شاشة صغيرة في الوضع الأفقي. يجب أن تحدّد التطبيقات اتجاهات العرض المختلفة وتتوافق معها.
- شاشات العرض الخارجية: يمكن لبعض الأجهزة بدء جلسة نوافذ على شاشات عرض خارجية متصلة. يجب أن تستعلم التطبيقات عن الشاشات الخارجية للحصول على معلومات مثل حجم الشاشة ودقتها، وإلا قد تفترض التطبيقات معلومات غير صحيحة عن الشاشات، ما قد يؤدي إلى سلوك غير صحيح للتطبيق.
- شاشات عرض السيارة: العديد من شاشات عرض السيارة أفقية، ولكن ليس كلها. إنّ تطوير تطبيقات مخصّصة للسيارات المتوقفة لشاشات السيارات يشبه عملية التطوير للأجهزة اللوحية.
مشاكل التوافق الشائعة
تحدث مشاكل التوافق في التطبيقات غالبًا بسبب القيود المفروضة على اتجاه التطبيق، والقيود المفروضة على تغيير الحجم ونسبة العرض إلى الارتفاع، والتعامل غير الصحيح مع اتجاه معاينة الكاميرا، وإساءة استخدام واجهات برمجة التطبيقات.
ليتيربوكسينغ
يضع وضع "عرض المحتوى مع ملء الشاشة" التطبيق في منتصف الشاشة، أو على أحد الجانبين على الشاشات الكبيرة لتسهيل الوصول إليه. تعبئة مساحة العرض غير المستخدَمة على طول جوانب التطبيق أو أعلى وأسفل التطبيق باستخدام ألوان ثابتة أو خلفية مموّهة
يحدث عرض المحتوى في مربّعات غالبًا على الأجهزة ذات الشاشات الكبيرة لأنّ أبعاد شاشة الجهاز ونسبة العرض إلى الارتفاع تختلف عادةً عن أبعاد الهواتف العادية التي تم تصميم معظم التطبيقات لها.

الشكل 1. يتم عرض التطبيقات التي لا تتوافق إلا مع الاتجاه العمودي في مربّع أسود على الأجهزة اللوحية القابلة للطي وفي الوضع الأفقي.
المشكلة
لا يتوافق التطبيق مع جميع إعدادات العرض لأنّه يتضمّن اتجاهًا ثابتًا أو نسبة عرض إلى ارتفاع ثابتة أو لا يمكن تغيير حجمه.
تشمل إعدادات الضبط التي تتحكّم في اتجاه التطبيق وإمكانية تغيير حجمه ما يلي:
استبدِل
screenOrientation
بما يلي: تحدّد هذه السمة اتجاهًا ثابتًا للتطبيق. ويمكن للتطبيقات أيضًا ضبط الاتجاه في وقت التشغيل باستخدامActivity#setRequestedOrientation()
.
resizeableActivity
: تشير إلى ما إذا كان بإمكان النظام تغيير حجم التطبيقات لتناسب النوافذ ذات الأبعاد المختلفة. في الإصدار 11 من نظام التشغيل Android (المستوى 30 لواجهة برمجة التطبيقات) والإصدارات الأقدم، يحدّد ما إذا كانت التطبيقات تتوافق مع وضع النوافذ المتعددة. في نظام التشغيل Android 12 (المستوى 31 لواجهة برمجة التطبيقات) والإصدارات الأحدث، يحدِّد هذا الإعداد ما إذا كانت التطبيقات تتوافق مع وضع النوافذ المتعددة على الشاشات الصغيرة (فئة حجم النافذة المضغوطة). على نظام التشغيل Android 12 والإصدارات الأحدث، تتوافق التطبيقات مع وضع النوافذ المتعددة على الشاشات الكبيرة (فئة حجم النافذة المتوسطة أو الموسّعة) بغض النظر عن هذا الإعداد.maxAspectRatio
: تحدّد هذه السمة الحد الأقصى لنسبة العرض إلى الارتفاع التي يتيحها التطبيق. ويمكن للتطبيقات التي تم ضبطresizeableActivity
فيها علىfalse
فقط ضبطmaxAspectRatio
.minAspectRatio
: تحدّد الحد الأدنى لنسبة العرض إلى الارتفاع التي يتيحها التطبيق. يمكن فقط للتطبيقات التي تم ضبط قيمةresizeableActivity
فيها علىfalse
ضبط قيمةminAspectRatio
.

لا يمكن استخدام التطبيق الذي يقتصر على الاتجاه العمودي على جهاز في الاتجاه الأفقي.
تحسين
يجب أن يتوافق التطبيق مع جميع أحجام الشاشات واتجاهاتها في الأجهزة ووضع النوافذ المتعددة. أزِل جميع القيود المتعلقة بالاتجاه ونسبة العرض إلى الارتفاع الثابتة من تصميمات تطبيقك وملف بيان التطبيق.

يتوافق التطبيق مع جميع اتجاهات الأجهزة.
حلّ بديل لمشاكل التوافق
إذا تم تشغيل تطبيق بنسبة عرض إلى ارتفاع ثابتة أو اتجاه ثابت في نافذة لا يتيح فيها التطبيق حجم النافذة أو اتجاهها بشكل مباشر، سيضيف نظام التشغيل Android مساحة فارغة على جانبي التطبيق للحفاظ على استمرارية العرض.
بدءًا من الإصدار 12 من نظام التشغيل Android (المستوى 31 لواجهة برمجة التطبيقات) والإصدار 12L (المستوى 32 لواجهة برمجة التطبيقات)، تطبّق المنصة مجموعة متنوعة من التحسينات على التطبيقات التي تظهر في مربّع. ويتم تنفيذ هذه التحسينات من قِبل الشركات المصنّعة للأجهزة. ولست بحاجة إلى إجراء أي تطوير إضافي للاستفادة من التحسينات.
يقدّم الإصدار 12 من نظام التشغيل Android (المستوى 31 لواجهة برمجة التطبيقات) التحسينات الجمالية التالية التي يمكن لمصنّعي الأجهزة ضبطها:
- الزوايا الدائرية: تتميّز زوايا نافذة التطبيق بمظهر أكثر أناقة.
- شفافية شريط النظام: يكون شريطا الحالة والتنقّل، اللذان يظهران فوق التطبيق، شبه شفافين، ما يتيح دائمًا رؤية الرموز على الشريطين فوق خلفية وضع ملء الشاشة.
- نسبة العرض إلى الارتفاع قابلة للضبط: يمكن تعديل نسبة العرض إلى الارتفاع في التطبيق لتحسين مظهره.

الشكل 2. تطبيق معروض في وضع ملء الشاشة مع تحسينات في واجهة المستخدم
يضيف الإصدار 12L (المستوى 32 لواجهة برمجة التطبيقات) التحسينات الوظيفية التالية:
تحديد المواضع القابلة للضبط: على الشاشات الكبيرة، يمكن لمصنّعي الأجهزة تحديد موضع التطبيق على الجانب الأيمن أو الأيسر من الشاشة، ما يسهّل التفاعل معه.
إعادة تصميم زر إعادة التشغيل: يمكن لمصنّعي الأجهزة منح زر إعادة التشغيل في وضع التوافق مع الحجم مظهرًا جديدًا ليسهل على المستخدمين التعرّف عليه.
يضيف نظام التشغيل Android 13 (المستوى 33 لواجهة برمجة التطبيقات) مربّع حوار لتثقيف المستخدمين بشأن وضع التطبيق الذي يظهر في مربّع على الشاشة أو تضمين المربّع في وضع تقسيم الشاشة:

الشكل 3. تطبيق في وضع "المربّع" مع مربّع حوار تعليمي للمستخدم
وضع التوافق مع الحجم
وضع التوافق مع الحجم هو وضع عرض مع حدود سوداء يحافظ على نسبة العرض إلى الارتفاع في التطبيق ويتضمّن عنصر تحكّم لإعادة التشغيل. يتيح عنصر التحكّم للمستخدمين إعادة تشغيل التطبيق وإعادة رسم الشاشة. يستدعي نظام التشغيل Android وضع التوافق مع الحجم للتطبيقات التي لا يمكن تغيير حجمها. عندما ينتقل نشاط إلى حاوية عرض غير متوافقة مع أبعاد النشاط، قد يعيد النظام تغيير حجم التطبيق لملء شاشة الجهاز في بُعد واحد على الأقل.
تشمل تغييرات إعدادات الجهاز التي يمكن أن تؤدي إلى تفعيل وضع التوافق مع حجم الشاشة ما يلي:
- تدوير الجهاز
- جهاز قابل للطي يجري طيّه أو فتحه
- التبديل بين وضعَي العرض "ملء الشاشة" و"تقسيم الشاشة"
المشكلة
ينطبق وضع التوافق مع الحجم عادةً على الأنشطة التي تكون مقيّدة في اتجاهها أو نسبة العرض إلى الارتفاع، ويتم ضبطها (أو يحدّدها النظام) على أن تكون غير قابلة لتغيير الحجم.
يُعد تطبيقك قابلاً لتغيير الحجم ولن يتم وضعه في وضع التوافق مع أحجام الشاشات إذا استوفى أيًا من المعايير التالية:
- يمكن تغيير حجمها باستخدام
resizeableActivity="true"
- يتوافق مع وضع نافذة ضمن النافذة (PIP)
- مضمّنة
- هل تم تطبيق الإعداد التلقائي
FORCE_RESIZE_APP
على مستوى التطبيق من قِبل الشركة المصنّعة للجهاز (يتم تجاهل الخصائص التي يضبطها التطبيق)
إذا كان تطبيقك لا يستوفي أيًا من الشروط، سيتم تصنيفه على أنّه غير قابل لتغيير الحجم وقد يتم وضعه في وضع التوافق مع الحجم.

تعطُّل التطبيق الذي لا يتغيّر حجمه في وضع النوافذ المتعددة
تحسين
يجب أن يتوافق التطبيق مع جميع أحجام الشاشات. اجعل تطبيقك قابلاً لتغيير الحجم من خلال ضبط السمة
android:resizeableActivity
للعنصر <activity>
أو <application>
على true
في
ملف بيان التطبيق. تصميم تخطيطات متجاوبة/قابلة للتكيّف لتطبيقك، ولمزيد من المعلومات، يُرجى الاطّلاع على التوافق مع أحجام الشاشات المختلفة والتوافق مع وضع النوافذ المتعددة.

يعمل التطبيق في جميع أحجام النوافذ.
حلّ بديل لمشاكل التوافق
يضع نظام التشغيل Android التطبيق في وضع التوافق مع الحجم عندما يحدّد النظام أنّه يمكن تحسين عرض التطبيق الذي يظهر في مربّع عن طريق إعادة تحجيم التطبيق لملء نافذة العرض في بُعد واحد على الأقل. يعرض النظام عنصر تحكّم لإعادة التشغيل يعيد إنشاء عملية التطبيق، ويعيد إنشاء النشاط، ويعيد رسم الشاشة. اطّلِع أيضًا على نظرة عامة على العمليات وسلاسل المحادثات.

تطبيق عمودي فقط مع إطار أسود في الاتجاه الأفقي، وتمت إعادة تحجيمه من خلال عنصر التحكّم في إعادة التشغيل
وضع التوافق مع شاشة العرض
يمنع وضع التوافق مع الشاشة إعادة تشغيل التطبيق عند نقله بين شاشات مختلفة، ما قد يؤدي إلى تغيير في الإعدادات، مثل وضع الألوان أو مدى توفّر شاشة اللمس أو كثافة الشاشة.
يكون وضع التوافق مع الشاشة مفعَّلاً تلقائيًا للألعاب (استنادًا إلى العلامة
android:appCategory
) لتحسين الثبات والاستمرارية.
على عكس وضع التوافق مع الحجم، لا يجمّد وضع التوافق مع العرض إعدادات التطبيق. سيظل بإمكان التطبيق تلقّي جميع تعديلات الإعدادات من خلال واجهات برمجة التطبيقات، مثل معاودة الاتصال onConfigurationChanged()
، ولكن سيتم تجنُّب إعادة التشغيل التي قد تؤدي إلى تعطيل التطبيق. وهذا يعني أنّ الألعاب التي تتوافق بشكل صحيح مع واجهات برمجة التطبيقات، مثل
onConfigurationChanged()، يمكنها مواصلة تعديل واجهة المستخدم بشكل سريع الاستجابة حتى إذا كانت
في وضع توافق العرض.
لإيقاف وضع التوافق مع شاشات العرض والتعامل مع تغييرات الإعداد في تطبيقك، عليك الإفصاح عن إمكانية التعامل مع تغييرات الإعداد في ملف AndroidManifest.xml
الخاص بالتطبيق، والتعامل مع تغييرات الإعداد في دالة معاودة الاتصال onConfigurationChanged().
<activity
android:name=".MyGameActivity"
android:configChanges="colorMode|touchscreen|density|...">
...
</activity>
حلقات وميض
عندما لا يتوافق تطبيق مع جميع اتجاهات العرض، قد يطلب بشكل متكرّر اتجاهات جديدة عند حدوث تغيير في الإعدادات، ما يؤدي إلى إنشاء حلقة لا نهائية تجعل الشاشة تومض أو يدور التطبيق بلا توقّف.
المشكلة
في نظام التشغيل Android 12 (المستوى 31 لواجهة برمجة التطبيقات) والإصدارات الأحدث، يمكن لمصنّعي الأجهزة ضبط أجهزتهم لتتجاهل قيود الاتجاه التي تحدّدها التطبيقات وتفرض بدلاً من ذلك أوضاع التوافق. على سبيل المثال، يمكن لجهاز قابل للطي تجاهل إعداد android:screenOrientation="portrait"
الخاص بنشاط معيّن عند عرض النشاط على الشاشة الداخلية للجهاز بحجم الجهاز اللوحي في الوضع الأفقي.
في حال تجاهل قيود اتجاه الشاشة في أحد التطبيقات، يمكن للتطبيق ضبط اتجاه الشاشة آليًا من خلال استدعاء Activity#setRequestedOrientation()
. يؤدي طلب البحث إلى إعادة تشغيل التطبيق إذا كان التطبيق لا يتعامل مع تغييرات الإعدادات (راجِع التعامل مع تغييرات الإعدادات). بعد إعادة التشغيل، يتم تجاهل قيود اتجاه التطبيق مرة أخرى، ويكرّر التطبيق طلب setRequestedOrientation()
، ويؤدي الطلب إلى إعادة تشغيل التطبيق، وهكذا في حلقة متكررة ذاتيًا.
قد يحدث ذلك أيضًا عندما يكون الاتجاه الطبيعي (أي الاتجاه المعتاد الذي يحدّده نظام التشغيل Android) لشاشة الجهاز أفقيًا (أي أنّ استدعاء Display#getRotation()
يعرض Surface.ROTATION_0
بينما تكون نسبة العرض إلى الارتفاع للجهاز أفقية). في السابق، كانت التطبيقات تفترض أنّ Display.getRotation() =
Surface.ROTATION_0
يعني أنّ الجهاز في الوضع العمودي، ولكن هذا ليس هو الحال دائمًا، على سبيل المثال، على الشاشة الداخلية لبعض الأجهزة القابلة للطي وعلى بعض الأجهزة اللوحية.
قد يتحقّق تطبيق في الوضع الأفقي على شاشة داخلية قابلة للطي من تدوير الشاشة، ويتلقّى القيمة ROTATION_0
، ويفترض أنّ الاتجاه الطبيعي للجهاز هو الوضع العمودي، ويطلب setRequestedOrientation(
ActivityInfo.SCREEN_ORIENTATION_PORTRAIT
)
لإعادة ضبط تخطيط التطبيق. بعد إعادة تشغيل التطبيق (في الوضع الأفقي)، قد يتحقّق مرة أخرى من تدوير الشاشة، ويتلقّى القيمة ROTATION_0
، ويطلب setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT)
، ويواصل التكرار بلا نهاية.

تطبيق متاح في الوضع الأفقي فقط على شاشة عرض في الوضع الرأسي يطلب Activity#setRequestedOrientation()
بشكل متكرّر.
تحسين
يجب ألّا تفعل التطبيقات ما يلي:
- اضبط اتجاهًا تلقائيًا باستخدام
Activity#setRequestedOrientation()
في طريقةonCreate()
الخاصة بالنشاط، لأنّه يمكن أن يتم تشغيل طلب الاتجاه بشكل غير متوقّع بسبب تغييرات في الإعدادات لم تتم معالجتها. - افترِض أنّ الاتجاه الطبيعي للجهاز (
ROTATION_0
) هو الوضع العمودي - ضبط الاتجاه استنادًا إلى إشارات غير مرتبطة بحجم النافذة الحالي، مثل
Display#getRotation()
أو توفّرFoldingFeature
أو واجهات برمجة التطبيقات المتوقّفة نهائيًا

يعالج التطبيق تغييرات الإعدادات، وليس لديه قيود على اتجاه الشاشة، وبالتالي لا يدخل في حلقة وميض.
حلّ بديل لمشاكل التوافق
يتجاهل نظام التشغيل Android طلبات إجراء مكالمات إلى Activity#setRequestedOrientation()
في الحالات التالية:
تمت إعادة تشغيل النشاط من خلال استدعاء سابق للطريقة أو تم تفعيل معالجة التدوير الإجباري المتوافق مع الكاميرا (راجِع معاينة الكاميرا أدناه).
يمكن لمصنّعي الأجهزة تطبيق هذا السلوك على تطبيق يتضمّن
OVERRIDE_ENABLE_COMPAT_IGNORE_REQUESTED_ORIENTATION
.نفّذ النشاط أكثر من طلبَين لتغيير اتجاه الشاشة في ثانية واحدة، ما يشير إلى حدوث تكرار. من بين الطلبَين في الحلقة، يستخدم نظام التشغيل Android الطلب الذي يزيد مساحة عرض التطبيق إلى أقصى حد.
يمكن لمصنّعي الأجهزة تطبيق هذا السلوك على تطبيق يتضمّن
OVERRIDE_ENABLE_COMPAT_IGNORE_ORIENTATION_REQUEST_WHEN_LOOP_DETECTED
.تجاوز مالكو الأجهزة الافتراضية استدعاء الطريقة على أجهزة معيّنة.
معاينة الكاميرا
قد تكون معاينة الكاميرا (أو عدسة الكاميرا) في تطبيقات الكاميرا غير متوافقة أو مشوّهة على الأجهزة اللوحية وأجهزة الكمبيوتر المحمولة والشاشات القابلة للطي.
المشكلة
ينص مستند تعريف التوافق لنظام التشغيل Android على أنّه "يجب توجيه وحدة استشعار الصور في الكاميرا بحيث يتوافق البُعد الأطول للكاميرا مع البُعد الأطول للشاشة".
تفترض التطبيقات غالبًا أنّ اتجاه الجهاز واتجاه مستشعر الكاميرا هما الوضع العمودي، وهو افتراض معقول على الهواتف الجوّالة العادية. ومع ذلك، يمكن أن تكون الوضعية الطبيعية للأجهزة اللوحية وأجهزة الكمبيوتر المحمولة وأجهزة استشعار الكاميرا هي الوضع الأفقي. بالإضافة إلى ذلك، يمكن أن تتضمّن أشكال الأجهزة الجديدة، مثل الأجهزة القابلة للطي، اتجاهات طبيعية متعددة وأجهزة استشعار متعددة للكاميرا باتجاهات مختلفة.
قد يؤدي بدء نشاط باستخدام اتجاه كاميرا غير متوقّع للتطبيق أو التبديل بين كاميرات أو شاشات أجهزة مختلفة (للأجهزة القابلة للطي) إلى عرض معاينة مشوّهة أو غير متوافقة للكاميرا.

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

تتم محاذاة معاينة الكاميرا وتغيير حجمها بشكل صحيح في جميع اتجاهات الجهاز.
حلّ بديل لمشاكل التوافق
يكون الجهاز في الوضع الطبيعي عندما تعرض الدالة Display#getRotation()
القيمة Surface.ROTATION_0
. يحسب النظام
CameraCharacteristics.SENSOR_ORIENTATION
من الاتجاه الطبيعي للجهاز. يضبط نظام التشغيل Android نافذة التطبيقات التي لا يمكن استخدامها إلا بالوضع العمودي لتتلاءم مع الاتجاه الطبيعي للجهاز، وهو ما تتوقّعه معظم التطبيقات. يقتصّ نظام التشغيل Android أيضًا صورة أداة استشعار الكاميرا عندما يكون اتجاه أداة الاستشعار أفقيًا ومعاينة الكاميرا عمودية. تشمل الحلول البديلة المحدّدة ما يلي:
فرض تدوير معاينات الكاميرا للتطبيقات التي لا يمكن استخدامها إلا بالوضع العمودي: تتوقّع التطبيقات التي لا يمكن استخدامها إلا بالوضع العمودي أن يكون اتجاه الجهاز الطبيعي واتجاه مستشعر الكاميرا عموديًا. ومع ذلك، في نظام التشغيل Android 12 (المستوى 31 لواجهة برمجة التطبيقات) والإصدارات الأحدث، يمكن للتطبيقات أن تعمل في اتجاهات متعددة للجهاز إذا تجاهلت الشركات المصنّعة للأجهزة مواصفات الاتجاه.
عند ربط تطبيق لا يمكن استخدامه إلا في الوضع العمودي بالكاميرا، يفرض نظام التشغيل Android تدوير التطبيق لمحاذاة نافذة التطبيق العمودية مع الاتجاه الطبيعي للجهاز.
في بعض الأجهزة اللوحية (راجِع الأجهزة المرجعية)، يتم تدوير نافذة التطبيق في الوضع العمودي إلى وضع عمودي بملء الشاشة لتتوافق مع الاتجاه الطبيعي للجهاز. يحتل التطبيق الشاشة بالكامل بعد تدويرها بالقوة.
الجهاز اللوحي: فرض تدوير التطبيق الذي يقتصر على الوضع العمودي
على الشاشة الداخلية للأجهزة القابلة للطي في الوضع الأفقي (راجِع الأجهزة المرجعية)، يتم تدوير الأنشطة التي تعمل في الوضع العمودي فقط إلى الوضع الأفقي لتتلاءم مع الاتجاه الطبيعي غير المطوي. يتم عرض التطبيق في وضع ملء الشاشة بعد فرض تدويره.
الأجهزة القابلة للطي: فرض تدوير التطبيق الذي لا يمكن استخدامه إلا بالوضع العمودي، مع إضافة شريطين على الجانبين
اقتصاص الصورة من الكاميرا الأمامية الداخلية: يكون مستشعر الكاميرا الأمامية الداخلية في بعض الهواتف القابلة للطي في الوضع الأفقي. بالإضافة إلى فرض تدوير معاينة الكاميرا على الشاشة الداخلية القابلة للطي، يقتصّ نظام التشغيل Android مجال رؤية الكاميرا الأمامية الداخلية (في الوضع الأفقي) لكي يرصد المستشعر عرضًا معاكسًا لاتجاه الجهاز.
إعادة تحميل معاينات الكاميرا بالقوة: يتنقّل النظام بين طريقتَي العرض
onStop()
وonStart()
(تلقائيًا) أوonPause()
وonResume()
(يتم تطبيقهما من خلال OVERRIDE_CAMERA_COMPAT_ENABLE_REFRESH_VIA_PAUSE كإعداد بديل على مستوى التطبيق) بعد تدوير الشاشة بالقوة للتأكّد من عرض معاينة الكاميرا بشكل صحيح.تغيير نسبة العرض إلى الارتفاع: يغيّر النظام بشكل ديناميكي نسبة العرض إلى الارتفاع لمعاينة الكاميرا التي تم تدويرها إجباريًا إلى نسبة عرض إلى ارتفاع دنيا أعلى، ما يضمن تغيير حجم معاينة الكاميرا بشكل صحيح.
يمكن لمطوّري التطبيقات إلغاء هذه الحلول البديلة إذا كانت التطبيقات تتعامل مع معاينة الكاميرا بشكل صحيح. اطّلِع على عمليات الإلغاء على مستوى التطبيق.
واجهات برمجة التطبيقات التي يُساء استخدامها بشكل شائع
بعد أن أضاف نظام التشغيل Android إمكانية استخدام ميزات مثل وضع النوافذ المتعددة والأجهزة القابلة للطي، تم إيقاف واجهات برمجة التطبيقات القديمة نهائيًا واستبدالها بواجهات برمجة تطبيقات حديثة تعمل مع جميع أحجام الشاشات وأشكال الأجهزة. ومع ذلك، تظل واجهات برمجة التطبيقات المتوقّفة نهائيًا متاحة للتوافق مع الأنظمة القديمة.
تم تصميم بعض واجهات برمجة التطبيقات View
لأغراض خاصة لا يفهمها المطوّرون دائمًا بشكل جيد.
المشكلة
يواصل المطوّرون استخدام واجهات برمجة التطبيقات Display
المتوقّفة نهائيًا، ويفترضون بشكل غير صحيح أنّ واجهات برمجة التطبيقات تعرض حدود التطبيق بدلاً من حدود مساحة عرض الجهاز. أو قد يستخدم المطوّرون عن طريق الخطأ واجهات برمجة تطبيقات خاصة بعرض البيانات للحصول على مقاييس عامة للعرض.
ويؤدي ذلك إلى حدوث أخطاء في الحسابات عند إعادة ضبط موضع عناصر واجهة المستخدم بعد تغيير حجم نافذة التطبيق، ما يتسبب في حدوث مشاكل في التصميم.
واجهات برمجة التطبيقات الصورية التي تم إيقافها نهائيًا والتي يُساء استخدامها بشكل شائع:
لمزيد من المعلومات، يُرجى الاطّلاع على مقالة استخدام وضع النوافذ المتعددة.
واجهات برمجة التطبيقات التي تم إساءة استخدامها:

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

تحسب واجهة برمجة التطبيقات مقاييس نافذة التطبيق بشكل صحيح.
حلّ بديل لمشاكل التوافق
يعدّل عنصران من عناصر التجاوز واجهات برمجة التطبيقات Display
المتوقّفة نهائيًا وواجهات برمجة التطبيقات View
التي أسيء استخدامها لعرض حدود التطبيق:
ALWAYS_SANDBOX_DISPLAY_APIS
لواجهات برمجة التطبيقات Display
وOVERRIDE_SANDBOX_VIEW_BOUNDS_APIS
لواجهات برمجة التطبيقات View
. يتم تطبيق ALWAYS_SANDBOX_DISPLAY_APIS
تلقائيًا أيضًا على التطبيقات المؤهَّلة لاستخدام وضع التوافق مع حجم الشاشة.
الأنشطة الشفافة
الأنشطة الشفافة هي نتيجة أنماط الخلفية الشفافة، على سبيل المثال:
<style name="Transparent" parent="AppTheme">
<item name="android:windowIsTranslucent">true</item>
<item name="android:windowBackground">@android:color/transparent</item>
</style>
يمكن أن تتضمّن السمات ذات الصلة بمربّعات الحوار، مثل Theme.MaterialComponents.Dialog
، أنماطًا تجعل الأنشطة شفافة.
لا تغطي الأنشطة الشفافة كل مساحة العرض المتاحة، ما يجعل إدارتها أمرًا صعبًا لأنّ مساحة العرض المتاحة يمكن أن تتغيّر استنادًا إلى تغييرات في الإعدادات، مثل تدوير الجهاز وطيّه وفتحه ووضع النوافذ المتعددة.
المشكلة
يجب أن يتوافق النشاط الشفاف مع حدود النشاط الأول غير الشفاف الذي يقع أسفل النشاط الشفاف في مجموعة أنشطة المهمة. ومع ذلك، يمكن أن يكون النشاط غير الشفاف الذي يعرض مربّع حوار الأذونات نشاطًا مؤقتًا (نشاطًا يعرض نشاطًا آخر ثم يختفي)، وبالتالي، لا يمكن للنظام تحديد حدود النشاط المؤقت الذي عرض نشاط مربّع حوار الأذونات الشفاف.

تم وضع مربع الحوار في غير مكانه لأنّ النشاط تم تشغيله من تطبيق "القفز".
تحسين
تكتسب الأنشطة الشفافة قيودها من النشاط المعتم الأعلى في حزمة الأنشطة الخاصة بمهمة. يجب أن يكون النشاط غير الشفاف متاحًا طوال دورة حياة النشاط الشفاف، بدءًا من إنشاء النشاط وحتى إيقافه. لهذا السبب، لا تُرسِل طلبات الحصول على الأذونات من أنشطة الترامبولين.
إذا أطلق نشاط "القفز" طلب إذن، قد لا يتمكّن المستخدم من رؤية مربّع حوار الإذن لأنّه سيتم إيقاف نشاط "القفز" قبل أن تتاح للمستخدم فرصة الرد على مربّع الحوار، وقد يتم احتساب أبعاد نشاط مربّع الحوار وموضعه بشكل غير صحيح.
يجب أن تبدأ التطبيقات دائمًا طلبات الحصول على الأذونات من الأنشطة التي تظل مرئية إلى أن يتّخذ المستخدم قرارًا بشأن الإذن.
زوايا دائرية
يمكن أن يكون النشاط شفافًا بسبب نمط يحدّد شفافية الخلفية أو لأنّ محتوى النشاط لا يملأ مساحة العرض المتاحة. إذا ملأ نشاط شفاف مساحة العرض المتاحة، يطبّق النظام تلقائيًا زوايا دائرية على النشاط عندما يضبطها مصنّع الجهاز على ذلك. ومع ذلك، إذا لم يملأ نشاط شفاف (مثل مربّع حوار الأذونات) المساحة المتاحة، يعود إليك قرار تطبيق الزوايا المنحنية أو عدم تطبيقها.
لا تملأ مربّعات حوار الأذونات مساحة العرض المتاحة لأنّ تخطيط مربّع الحوار يستخدم عادةً LayoutParams.WRAP_CONTENT بدلاً من LayoutParams.MATCH_PARENT.

مربّع حوار بزوايا دائرية في الموضع الصحيح فوق نشاط التشغيل المرئي
حلّ بديل لمشاكل التوافق
إبقاء الأنشطة التي تفتح أنشطة مربّعات حوار مرئية إلى أن يردّ المستخدم على مربّع الحوار
يضمن النظام أنّ النشاط الشفاف يرث جميع القيود من النشاط الأول غير الشفاف أسفل النشاط الشفاف في حزمة الأنشطة، بما في ذلك القيود المتعلقة بما يلي:
- وضع التوافق مع الحجم
- الاتجاه
- نسبة العرض إلى الارتفاع
ألعاب Unity
يتم تشغيل ألعاب Unity على Android في وضع ملء الشاشة أو في وضع النوافذ المتعددة. ومع ذلك، تفقد العديد من ألعاب Unity التركيز وتتوقّف عن عرض المحتوى عند وضع التطبيق في وضع النوافذ المتعددة.
المشكلة
أضافت Unity خيار Resizable Window
في الإصدار 2019.4 من Unity لإتاحة وضع النوافذ المتعددة على Android. ومع ذلك، لم يتفاعل التنفيذ الأوّلي بشكل صحيح مع دورة حياة النشاط في وضع النوافذ المتعددة، ما أدّى إلى تعليق UnityPlayer لتشغيل الفيديو عندما يفقد التطبيق التركيز. عرض المشغّل شاشة سوداء أو آخر إطار ثابت من اللعبة. ولم يتم استئناف اللعب إلا عندما نقر المستخدم على الشاشة. تواجه العديد من التطبيقات التي تستخدم محرك Unity هذه المشكلة، وتظهر كنافذة سوداء في وضع النوافذ المتعددة.

تفقد اللعبة التركيز في وضع النوافذ المتعددة وتظهر كنافذة سوداء.
تحسين
يجب ترقية Unity إلى الإصدار 2019.4.40 أو إصدار أحدث وإعادة تصدير لعبتك. يجب إبقاء الخيار
Resizable Window
مفعّلاً في
إعدادات "مشغّل Android"، وإلا
ستتوقف اللعبة مؤقتًا عندما لا تكون في المقدّمة، حتى إذا كانت مرئية بالكامل في
وضع النوافذ المتعددة.

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

سيظل بإمكانك تغيير حجم التطبيقات التي تم قفل اتجاهها بحرية.
ومع ذلك، إذا تم تعريف نشاط على أنّه غير قابل لتغيير الحجم (resizeableActivity = false)، سيتم تغيير حجم واجهة مستخدم النشاط مع الحفاظ على نسبة العرض إلى الارتفاع نفسها.

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

تغيير حجم نافذة تتضمّن عدسة كاميرا
اختبار تطبيقك بحثًا عن مشاكل التوافق
لاختبار تطبيقك والتعرّف على سلوكه على مختلف أشكال الأجهزة، يمكنك الاستفادة من المراجع التالية:
- بث التطبيقات على الأجهزة: لاختبار تطبيقك على أجهزة فعلية (بما في ذلك الأجهزة المرجعية) مستضافة في مراكز بيانات Google، يمكنك الاطّلاع على بث التطبيقات على أجهزة Android، من خلال Firebase .
- المحاكيات في "استوديو Android": للحصول على معلومات حول إنشاء محاكيات للأجهزة المرجعية، يمكنك الاطّلاع على إنشاء الأجهزة الافتراضية وإدارتها.
- محاكي Android Studio القابل لتغيير الحجم: للحصول على معلومات حول الوصول إلى الأجهزة الافتراضية، اطّلِع على تشغيل التطبيقات على "محاكي Android".
Is letterboxed
تأكَّد من أنّ كل نشاط يمكنه استخدام كل مساحة العرض المتاحة للتطبيق. أولاً، أضِف الرمز التالي في مجلد الاختبار:
Kotlin
fun isLetterboxed(activity: AppCompatActivity): Boolean { if (isInMultiWindowMode) return false val wmc = WindowMetricsCalculator.getOrCreate() val currentBounds = wmc.computeCurrentWindowMetrics(this).bounds val maxBounds = wmc.computeMaximumWindowMetrics(this).bounds val isScreenPortrait = maxBounds.height() > maxBounds.width() return if (isScreenPortrait) { currentBounds.height() < maxBounds.height() } else { currentBounds.width() < maxBounds.width() } }
Java
public boolean isLetterboxed(AppCompatActivity activity) { if (activity.isInMultiWindowMode()) { return false; } WindowMetricsCalculator wmc = WindowMetricsCalculator.getOrCreate(); Rect currentBounds = wmc.computeCurrentWindowMetrics(activity).getBounds(); Rect maxBounds = wmc.computeMaximumWindowMetrics(activity).getBounds(); boolean isScreenPortrait = maxBounds.height() > maxBounds.width(); return (isScreenPortrait) ? currentBounds.height() < maxBounds.height() : currentBounds.width() < maxBounds.width(); }
بعد ذلك، نفِّذ اختبارًا للتأكّد من السلوك والتأكّد من أنّ النشاط المستهدف غير معروض في وضع ملء الشاشة:
Kotlin
@get:Rule val activityRule = ActivityScenarioRule(MainActivity::class.java) @Test fun activity_launched_notLetterBoxed() { activityRule.scenario.onActivity { assertFalse(it.isLetterboxed()) } }
Java
@Rule public ActivityScenarioRule<MainActivity> rule = new ActivityScenarioRule<>(MainActivity.class); @Test public void activity_launched_notLetterBoxed() { try (ActivityScenario<MainActivity> scenario = ActivityScenario.launch(MainActivity.class)) { scenario.onActivity( activity -> { assertFalse(activity.isLetterboxed()); }); } }
من المفترض أن يتم إجراء هذا النوع من الاختبارات إلى أن يتم اجتيازه والتأكّد من أنّ أنشطة تطبيقك تشغل مساحة العرض الكاملة المتاحة للتطبيق. اختبِر تطبيقك على جميع أنواع الأجهزة لضمان سلوك متسق.
عمليات التجاوز على مستوى التطبيق
يوفر نظام التشغيل Android عمليات إلغاء تعدّل السلوك المضبوط للتطبيقات. على سبيل المثال، يطلب الإعداد FORCE_RESIZE_APP
من النظام تجاهل وضع التوافق مع الحجم وتغيير حجم التطبيق ليتناسب مع أبعاد الشاشة حتى إذا تم تحديد resizeableActivity="false"
في بيان التطبيق.
تطبِّق الشركات المصنّعة للأجهزة عمليات إلغاء على تطبيقات محدّدة أو جميع التطبيقات على أجهزة معيّنة ذات شاشات كبيرة. في الإصدار Android 14 (المستوى 34 لواجهة برمجة التطبيقات) والإصدارات الأحدث، يمكن للمستخدمين تطبيق عمليات إلغاء على التطبيقات من خلال إعدادات الجهاز. في نظام التشغيل Android 16 (المستوى 36 لواجهة برمجة التطبيقات) والإصدارات الأحدث، يطبّق مالكو الأجهزة الافتراضية عمليات إلغاء على أجهزة محدّدة يديرها مالكو الأجهزة الافتراضية.
عمليات الإلغاء على مستوى المستخدم لكل تطبيق
على نظام التشغيل Android 14 والإصدارات الأحدث، تتيح قائمة الإعدادات للمستخدمين تغيير نسبة العرض إلى الارتفاع للتطبيقات. تتضمّن الأجهزة ذات الشاشات الكبيرة، مثل الأجهزة المرجعية، القائمة.
تحتوي القائمة على جميع التطبيقات المثبَّتة على الجهاز. يختار المستخدمون تطبيقًا ثم يضبطون نسبة العرض إلى الارتفاع للتطبيق على 3:4 أو 1:1 أو ملء الشاشة أو قيمة أخرى يحدّدها مصنّع الجهاز. يمكن للمستخدمين أيضًا إعادة ضبط نسبة العرض إلى الارتفاع على القيمة التلقائية للتطبيق، والتي يتم تحديدها في بيان التطبيق.
يمكن للتطبيقات إيقاف التوافق التلقائي من خلال ضبط علامات PackageManager.Property
التالية:
PROPERTY_COMPAT_ALLOW_USER_ASPECT_RATIO_OVERRIDE
لإيقاف إمكانية تجاهل توافق نسبة العرض إلى الارتفاع للمستخدم، أضِف السمة إلى بيان التطبيق واضبط القيمة على
false
:<application> <property android:name="android.window. PROPERTY_COMPAT_ALLOW_USER_ASPECT_RATIO_OVERRIDE" android:value="false" /> </application>
سيتم استبعاد تطبيقك من قائمة التطبيقات في إعدادات الجهاز. لن يتمكّن المستخدمون من إلغاء نسبة العرض إلى الارتفاع في التطبيق.
لن يكون لضبط السمة على
true
أي تأثير.PROPERTY_COMPAT_ALLOW_USER_ASPECT_RATIO_FULLSCREEN_OVERRIDE
لإيقاف خيار التوافق مع نسبة العرض إلى الارتفاع في وضع ملء الشاشة، أضِف السمة إلى ملف بيان التطبيق واضبط القيمة على
false
:<application> <property android:name="android.window.PROPERTY_COMPAT_ALLOW_USER_ASPECT_RATIO_FULLSCREEN_OVERRIDE" android:value="false" /> </application>
تمت إزالة خيار ملء الشاشة من قائمة خيارات نسبة العرض إلى الارتفاع في إعدادات الجهاز. لن يتمكّن المستخدمون من تطبيق الإذن بالعرض ملء الشاشة على تطبيقك.
لن يكون لضبط هذه السمة على
true
أي تأثير.
تحسين تطبيقك لجميع الشاشات: لا تضع قيودًا على نسبة العرض إلى الارتفاع في تطبيقك، واستخدِم فئات حجم النافذة لتوفير تصميمات مختلفة استنادًا إلى مساحة العرض المتاحة.
عمليات تجاوز إعدادات الجهاز لكل تطبيق
تطبِّق الشركات المصنّعة للأجهزة ومالكو الأجهزة الافتراضية (تطبيقات محدّدة موثوق بها ولها امتيازات) عمليات الإلغاء على أساس كل تطبيق على أجهزة معيّنة، بما في ذلك الأجهزة اللوحية والهواتف القابلة للطي وأجهزة ChromeOS وشاشات السيارات. قد تطبّق الأجهزة المرجعية بعض عمليات الإلغاء على مجموعة متنوعة من التطبيقات تلقائيًا.
يمكن للتطبيقات إيقاف معظم عمليات التجاوز (راجِع جدول عمليات التجاوز على مستوى التطبيق أدناه).
يمكنك اختبار تطبيقك مع تفعيل عمليات الإلغاء أو إيقافها باستخدام إطار عمل التوافق (راجِع أدوات إطار عمل التوافق). عند تفعيل هذا الخيار، تنطبق عمليات الإلغاء على التطبيق بأكمله.
يمكنك أيضًا استخدام Android Debug Bridge (adb) لتفعيل عمليات الإلغاء أو إيقافها وتحديد عمليات الإلغاء التي تنطبق على تطبيقك.
فعِّل عمليات الإلغاء أو أوقِفها باتّباع الخطوات التالية:
adb shell am compat enable/disable <override name/id> <package>
بالنسبة إلى الأجهزة المرجعية، تحقَّق من عمليات الإلغاء التي تنطبق على تطبيقك:
adb shell dumpsys platform_compat | grep <package name>
يسرد الجدول التالي عمليات الإلغاء المتاحة مع إرشادات حول كيفية تحسين تطبيقك كي لا يحتاج إلى الاعتماد على عمليات الإلغاء. يمكنك إضافة علامات خصائص إلى بيان تطبيقك لإيقاف بعض عمليات الإلغاء.
عمليات التجاوز على مستوى التطبيق | |||
---|---|---|---|
النوع | الاسم | رقم التعريف | الوصف |
إمكانية تغيير الحجم | FORCE_RESIZE_APP | 174042936 | تتجاوز هذه السمة وضع التوافق مع الحجم عند إجراء تغييرات في الإعدادات. |
FORCE_NON_RESIZE_APP | 181136395 | يفرض هذا الخيار على التطبيق استخدام وضع التوافق مع حجم الشاشة عند إجراء تغييرات في الإعدادات. | |
نسبة العرض إلى الارتفاع | OVERRIDE_MIN_ASPECT_RATIO | 174042980 | يجب تفعيل هذا الخيار لتطبيق أي عمليات إلغاء أخرى لنسبة العرض إلى الارتفاع. |
OVERRIDE_MIN_ASPECT_RATIO_PORTRAIT_ONLY | 203647190 | في حال تفعيل هذا الخيار (وهو الإعداد التلقائي)، تتجاوز الحدود النطاق لتشمل الأنشطة التي يمكن عرضها بالوضع العمودي فقط. | |
OVERRIDE_MIN_ASPECT_RATIO_SMALL | 349045028 | تغيير الحدّ الأدنى لنسبة العرض إلى الارتفاع إلى 4:3 | |
OVERRIDE_MIN_ASPECT_RATIO_MEDIUM | 180326845 | تغيير الحدّ الأدنى لنسبة العرض إلى الارتفاع إلى 3:2 | |
OVERRIDE_MIN_ASPECT_RATIO_LARGE | 180326787 | تغيير الحد الأدنى لنسبة العرض إلى الارتفاع إلى 16:9 | |
OVERRIDE_MIN_ASPECT_RATIO_TO_ALIGN_WITH_SPLIT_SCREEN | 208648326 | تغيير الحدّ الأدنى لنسبة العرض إلى الارتفاع لتناسب% 50 من حجم الشاشة (أو نسبة العرض إلى الارتفاع في وضع تقسيم الشاشة) | |
OVERRIDE_MIN_ASPECT_RATIO_EXCLUDE_PORTRAIT_FULLSCREEN | 218959984 | يؤدي ذلك إلى إيقاف تجاهل الحد الأدنى لنسبة العرض إلى الارتفاع، وبالتالي تظهر التطبيقات بملء الشاشة عندما يكون الجهاز في الوضع العمودي. | |
الاتجاه | OVERRIDE_ANY_ORIENTATION | 265464455 | تتيح هذه السمة إمكانية تجاهل أي اتجاه. |
OVERRIDE_ANY_ORIENTATION_TO_USER | 310816437 | تتجاوز هذه السمة القيود المفروضة على الاتجاه وإمكانية تغيير الحجم ونسبة العرض إلى الارتفاع. | |
OVERRIDE_UNDEFINED_ORIENTATION_TO_PORTRAIT | 265452344 | تتجاوز هذه السمة اتجاه العرض ليكون عموديًا عندما يكون اتجاه العرض غير محدّد. | |
OVERRIDE_UNDEFINED_ORIENTATION_TO_NOSENSOR | 265451093 | تتجاوز هذه السمة اتجاه الشاشة ليكون nosensor (استخدام الاتجاه الطبيعي للجهاز) عندما يكون اتجاه النشاط غير محدّد. |
|
OVERRIDE_LANDSCAPE_ORIENTATION_TO_REVERSE_LANDSCAPE | 266124927 | تدوير التطبيقات التي تعمل في الوضع الأفقي فقط بمقدار 180 درجة | |
OVERRIDE_ORIENTATION_ONLY_FOR_CAMERA | 265456536 | يقتصر نطاق تجاهل اتجاه الشاشة على الحالات التي يكون فيها التطبيق متصلاً بالكاميرا. | |
OVERRIDE_USE_DISPLAY_LANDSCAPE_NATURAL_ORIENTATION | 255940284 | يضبط العرض على الاتجاه الأفقي الثابت الطبيعي عندما تكون مهمة بملء الشاشة (بما في ذلك عند عرضها في مربّع). | |
OVERRIDE_ENABLE_COMPAT_IGNORE_REQUESTED_ORIENTATION | 254631730 | يتجاهل طلبات الاتجاه من التطبيق لتجنُّب تكرار عمليات التدوير إلى ما لا نهاية. | |
OVERRIDE_ENABLE_COMPAT_IGNORE_ORIENTATION_REQUEST_WHEN_LOOP_DETECTED | 273509367 | يتجاهل الطلبات المتكررة لتغيير اتجاه الشاشة أثناء إعادة تشغيل نشاط. إذا رصد نظام التشغيل Android أنّ أحد التطبيقات يطلب اتجاهَين جديدَين على الأقل خلال ثانية واحدة، سيعتبر النظام ذلك تكرارًا لا نهائيًا لعملية التدوير وسيتم تطبيق الإعداد التلقائي. | |
OVERRIDE_RESPECT_REQUESTED_ORIENTATION | 236283604 | يمنع ظهور مساحات فارغة على جانبي الشاشة من خلال إيقاف إعداد "تجاهل طلب تغيير اتجاه الشاشة" الذي توفّره الشركة المصنّعة للجهاز. | |
واجهات برمجة التطبيقات في وضع الحماية | NEVER_SANDBOX_DISPLAY_APIS | 184838306 | يمنع تغيير سلوك أي واجهات برمجة تطبيقات للعرض. |
ALWAYS_SANDBOX_DISPLAY_APIS | 185004937 | يفرض على واجهات برمجة التطبيقات Display في التطبيق عرض حدود التطبيق. تعرض واجهات برمجة التطبيقات Display حدود مساحة العرض المنطقية، ولكن في بعض الأحيان يفترض التطبيق أنّ واجهات برمجة التطبيقات Display تعرض حدود التطبيق، ما يؤدي إلى حدوث مشاكل في واجهة المستخدم. |
|
OVERRIDE_SANDBOX_VIEW_BOUNDS_APIS | 237531167 | يفرض على واجهات برمجة التطبيقات View المستخدَمة في التطبيق عرض حدود التطبيق. تعرض واجهات برمجة التطبيقات View حدود مساحة العرض المنطقية، ولكن في بعض الأحيان يفترض التطبيق أنّ واجهات برمجة التطبيقات View تعرض حدود التطبيق، ما يؤدي إلى حدوث مشاكل في واجهة المستخدم. |
|
توافق الكاميرا | OVERRIDE_CAMERA_COMPAT_DISABLE_FORCE_ROTATION | 263959004 | يؤدي ذلك إلى إيقاف التدوير الإجباري. بشكلٍ تلقائي، يتم تدوير جميع تطبيقات الكاميرا ذات الاتجاه الثابت بالقوة عند فتح معاينة الكاميرا. |
OVERRIDE_CAMERA_COMPAT_DISABLE_REFRESH | 264304459 | يزيل عملية إعادة التحميل الإجباري التلقائية التي يتم تطبيقها عند تدوير معاينة الكاميرا بشكل إجباري. | |
OVERRIDE_CAMERA_COMPAT_ENABLE_REFRESH_VIA_PAUSE | 264301586 | يتم التبديل من إعادة التحميل الكامل إلى إعادة التحميل الجزئي عند تدوير معاينة الكاميرا بشكل إجباري، ما يساعد في الحفاظ على الحالة أثناء التدوير الإجباري. تلقائيًا، يطبّق نظام التشغيل Android عملية إعادة تحميل إجبارية عند تدوير معاينة الكاميرا بشكل إجباري. يمكن أن يؤدي إعادة التحميل الإجباري إلى حدوث مشاكل في التطبيقات، مثل فقدان الحالة أو ظهور شاشة سوداء، وذلك حسب طريقة تخزين التطبيقات لحالتها السابقة في ذاكرة التخزين المؤقت. | |
OVERRIDE_CAMERA_LANDSCAPE_TO_PORTRAIT | 250678880 | يتم اقتصاص مخزن مؤقت للصور من الكاميرا الأمامية الداخلية. في حال إيقاف الإعداد، ستتم إزالة الاقتصاص من الكاميرا الأمامية الداخلية وسيتم توسيع مجال رؤية معاينة الكاميرا. بشكلٍ تلقائي على بعض الهواتف القابلة للطي (راجِع الأجهزة المرجعية)، يقتص النظام معاينة الكاميرا في جميع تطبيقات الكاميرا عند استخدام الكاميرا الأمامية الداخلية. | |
بنود متنوعة | OVERRIDE_ENABLE_COMPAT_FAKE_FOCUS | 263259275 | يمنع التطبيق من أن يصبح غير نشط عندما يفقد التركيز في وضع تقسيم الشاشة. ينتظر التطبيق التركيز قبل عرض محتوى التطبيق، ما قد يؤدي إلى تجميد التطبيق أو ظهوره باللون الأسود. يتيح هذا الخيار لنظام التشغيل Android إرسال حدث تركيز وهمي إلى التطبيق، ما يشير إلى التطبيق لبدء عرض المحتوى مرة أخرى. |
FORCE_RESIZE_APP
تفرض هذه السمة أن تكون الحِزم التي يتم تطبيق التجاوز عليها قابلة لتغيير الحجم ويمكنها الدخول إلى وضع النوافذ المتعدّدة. ينطبق ذلك على جميع أحجام شاشات العرض.
الطريقة التي يمكن للتطبيقات من خلالها تحقيق النتيجة نفسها التي يحقّقها الإلغاء
في بيان التطبيق، اضبط السمة android:resizeableActivity
على true
.
كيفية تحسين التطبيقات
استخدِم تخطيطات متجاوبة/تكيُّفية لتمكين التطبيقات من التكيّف مع جميع أحجام الشاشات ونِسَب العرض إلى الارتفاع. راجِع مقالة إتاحة أحجام عرض مختلفة.
كيفية إيقاف ميزة التجاوز أو إيقافها
اضبط علامة السمة PROPERTY_COMPAT_ALLOW_RESIZEABLE_ACTIVITY_OVERRIDES
على false
.
علامات الموقع لتعديل الإلغاء
<property android:name="android.window.PROPERTY_COMPAT_ALLOW_RESIZEABLE_ACTIVITY_OVERRIDES"
android:value="true|false"/>
أوامر adb لاختبار التجاوز
لتطبيق الإلغاء وجعل التطبيق قابلاً لتغيير الحجم، اتّبِع الخطوات التالية:
adb shell am compat enable FORCE_RESIZE_APP <package>
لإزالة الإذن:
adb shell am compat disable FORCE_RESIZE_APP <package>
ملاحظة: لا تنطبق الأوامر إلا بشكل مؤقت أو تزيل الإذن بالتجاهل.
FORCE_NON_RESIZE_APP
يفرض هذا الإعداد على الحِزم التي يتم تطبيق التجاوز عليها أن تكون غير قابلة لتغيير الحجم، وأن يتم تفعيل وضع التوافق مع الحجم عند إجراء تغييرات في الإعدادات. ينطبق ذلك على جميع أحجام الشاشات.
الطريقة التي يمكن للتطبيقات من خلالها تحقيق النتيجة نفسها التي يحقّقها الإلغاء
اضبط السمة android:resizeableActivity
وعلامة البيانات الوصفية android.supports_size_changes
على false
في ملف بيان التطبيق، وحدِّد قيدًا على الاتجاه أو نسبة العرض إلى الارتفاع.
كيفية تحسين التطبيقات
يجب أن تحتوي جميع التطبيقات التي تعمل بشكل جيد عند تغيير حجمها على android:resizeableActivity
أو android.supports_size_changes
مضبوطًا على true
.
يجب تحسين التطبيقات الأخرى لتعمل بشكل جيد عند تغيير حجمها. راجِع android:resizeableActivity.
كيفية إيقاف ميزة التجاوز أو إيقافها
اضبط علامة السمة PROPERTY_COMPAT_ALLOW_RESIZEABLE_ACTIVITY_OVERRIDES
على false
.
علامات الموقع لتعديل الإلغاء
<property android:name="android.window.PROPERTY_COMPAT_ALLOW_RESIZEABLE_ACTIVITY_OVERRIDES"
android:value="true|false"/>
أوامر adb لاختبار التجاوز
لتطبيق الإعداد التلقائي وجعل التطبيق غير قابل لتغيير الحجم، اتّبِع الخطوات التالية:
adb shell am compat enable FORCE_NON_RESIZE_APP <package>
لإزالة الإذن:
adb shell am compat disable FORCE_NON_RESIZE_APP <package>
ملاحظة: لا تنطبق الأوامر إلا بشكل مؤقت أو تزيل الإذن بالتجاهل.
OVERRIDE_MIN_ASPECT_RATIO
عنصر التحكّم في جميع عمليات الإلغاء التي تفرض حدًا أدنى معيّنًا لنسبة العرض إلى الارتفاع
الطريقة التي يمكن للتطبيقات من خلالها تحقيق النتيجة نفسها التي يحقّقها الإلغاء
اضبط android:minAspectRatio
على مستوى النشاط أو التطبيق.
كيفية تحسين التطبيقات
لا تضع قيودًا على نسبة العرض إلى الارتفاع في تطبيقك، وتأكَّد من أنّ تطبيقك يتوافق مع أحجام العرض المختلفة. استخدِم فئات حجم النافذة لتوفير تخطيطات مختلفة استنادًا إلى مقدار المساحة المتوفّرة لتطبيقك على الشاشة. راجِع Compose WindowSizeClass
API وView
WindowSizeClass
API.
كيفية إيقاف ميزة التجاوز أو إيقافها
حدِّد قيودًا على نسبة العرض إلى الارتفاع أو اضبط علامة السمة PROPERTY_COMPAT_ALLOW_MIN_ASPECT_RATIO_OVERRIDE
على false
.
علامات الموقع لتعديل الإلغاء
<property android:name="android.window.PROPERTY_COMPAT_ALLOW_MIN_ASPECT_RATIO_OVERRIDE"
android:value="false"/>
أوامر adb لاختبار التجاوز
لتطبيق التجاوز:
adb shell am compat enable OVERRIDE_MIN_ASPECT_RATIO <package>
لإزالة الإذن:
adb shell am compat disable OVERRIDE_MIN_ASPECT_RATIO <package>
ملاحظة: لا تنطبق الأوامر إلا بشكل مؤقت أو تزيل الإذن بالتجاهل.
OVERRIDE_MIN_ASPECT_RATIO_PORTRAIT_ONLY
تقيّد إعدادات التطبيق التي تفرض حدًا أدنى معيّنًا لنسبة العرض إلى الارتفاع للأنشطة
التي تتضمّن اتجاه عرض عموديًا فقط. يكون هذا الخيار مفعّلاً تلقائيًا ولا يسري إلا إذا تم تفعيل OVERRIDE_MIN_ASPECT_RATIO
أيضًا.
الطريقة التي يمكن للتطبيقات من خلالها تحقيق النتيجة نفسها التي يحقّقها الإلغاء
راجِع OVERRIDE_MIN_ASPECT_RATIO.
كيفية تحسين التطبيقات
راجِع OVERRIDE_MIN_ASPECT_RATIO.
كيفية إيقاف ميزة التجاوز أو إيقافها
راجِع OVERRIDE_MIN_ASPECT_RATIO.
علامات الموقع لتعديل الإلغاء
راجِع OVERRIDE_MIN_ASPECT_RATIO.
أوامر adb لاختبار التجاوز
لتطبيق التجاوز:
adb shell am compat enable OVERRIDE_MIN_ASPECT_RATIO_PORTRAIT_ONLY <package>
لإزالة الإذن:
adb shell am compat disable OVERRIDE_MIN_ASPECT_RATIO_PORTRAIT_ONLY <package>
ملاحظة: لا تنطبق الأوامر إلا بشكل مؤقت أو تزيل الإذن بالتجاهل.
OVERRIDE_MIN_ASPECT_RATIO_SMALL
تضبط هذه السمة الحد الأدنى لنسبة العرض إلى الارتفاع للنشاط على قيمة صغيرة (4:3).
الطريقة التي يمكن للتطبيقات من خلالها تحقيق النتيجة نفسها التي يحقّقها الإلغاء
راجِع OVERRIDE_MIN_ASPECT_RATIO.
كيفية تحسين التطبيقات
راجِع OVERRIDE_MIN_ASPECT_RATIO.
كيفية إيقاف ميزة التجاوز أو إيقافها
راجِع OVERRIDE_MIN_ASPECT_RATIO.
علامات الموقع لتعديل الإلغاء
راجِع OVERRIDE_MIN_ASPECT_RATIO.
أوامر adb لاختبار التجاوز
لتطبيق التجاوز:
adb shell am compat enable OVERRIDE_MIN_ASPECT_RATIO_SMALL <package>
لإزالة الإذن:
adb shell am compat disable OVERRIDE_MIN_ASPECT_RATIO_SMALL <package>
ملاحظة: لا تنطبق الأوامر إلا بشكل مؤقت أو تزيل الإذن بالتجاهل.
OVERRIDE_MIN_ASPECT_RATIO_MEDIUM
تضبط هذه السمة الحد الأدنى لنسبة العرض إلى الارتفاع للنشاط على قيمة متوسطة (3:2).
الطريقة التي يمكن للتطبيقات من خلالها تحقيق النتيجة نفسها التي يحقّقها الإلغاء
راجِع OVERRIDE_MIN_ASPECT_RATIO.
كيفية تحسين التطبيقات
راجِع OVERRIDE_MIN_ASPECT_RATIO.
كيفية إيقاف ميزة التجاوز أو إيقافها
راجِع OVERRIDE_MIN_ASPECT_RATIO.
علامات الموقع لتعديل الإلغاء
راجِع OVERRIDE_MIN_ASPECT_RATIO.
أوامر adb لاختبار التجاوز
لتطبيق التجاوز:
adb shell am compat enable OVERRIDE_MIN_ASPECT_RATIO_MEDIUM <package>
لإزالة الإذن:
adb shell am compat disable OVERRIDE_MIN_ASPECT_RATIO_MEDIUM <package>
ملاحظة: لا تنطبق الأوامر إلا بشكل مؤقت أو تزيل الإذن بالتجاهل.
OVERRIDE_MIN_ASPECT_RATIO_LARGE
يضبط الحد الأدنى لنسبة العرض إلى الارتفاع للنشاط على قيمة كبيرة (16:9).
الطريقة التي يمكن للتطبيقات من خلالها تحقيق النتيجة نفسها التي يحقّقها الإلغاء
راجِع OVERRIDE_MIN_ASPECT_RATIO.
كيفية تحسين التطبيقات
راجِع OVERRIDE_MIN_ASPECT_RATIO.
كيفية إيقاف ميزة التجاوز أو إيقافها
راجِع OVERRIDE_MIN_ASPECT_RATIO.
علامات الموقع لتعديل الإلغاء
راجِع OVERRIDE_MIN_ASPECT_RATIO.
أوامر adb لاختبار التجاوز
لتطبيق التجاوز:
adb shell am compat enable OVERRIDE_MIN_ASPECT_RATIO_LARGE <package>
لإزالة الإذن:
adb shell am compat disable OVERRIDE_MIN_ASPECT_RATIO_LARGE <package>`
ملاحظة: لا تنطبق الأوامر إلا بشكل مؤقت أو تزيل الإذن بالتجاهل.
OVERRIDE_MIN_ASPECT_RATIO_TO_ALIGN_WITH_SPLIT_SCREEN
يتيح استخدام نسبة العرض إلى الارتفاع في وضع تقسيم الشاشة. يسمح هذا الإعداد لأحد التطبيقات باستخدام كل المساحة المتاحة في وضع تقسيم الشاشة، ما يمنع ظهور مساحات فارغة على جانبي الشاشة.
الطريقة التي يمكن للتطبيقات من خلالها تحقيق النتيجة نفسها التي يحقّقها الإلغاء
راجِع OVERRIDE_MIN_ASPECT_RATIO.
كيفية تحسين التطبيقات
راجِع OVERRIDE_MIN_ASPECT_RATIO.
كيفية إيقاف ميزة التجاوز أو إيقافها
راجِع OVERRIDE_MIN_ASPECT_RATIO.
علامات الموقع لتعديل الإلغاء
راجِع OVERRIDE_MIN_ASPECT_RATIO.
أوامر adb لاختبار التجاوز
لتطبيق التجاوز:
adb shell am compat enable OVERRIDE_MIN_ASPECT_RATIO_TO_ALIGN_WITH_SPLIT_SCREEN <package>
لإزالة الإذن:
adb shell am compat disable OVERRIDE_MIN_ASPECT_RATIO_TO_ALIGN_WITH_SPLIT_SCREEN <package>
ملاحظة: لا تنطبق الأوامر إلا بشكل مؤقت أو تزيل الإذن بالتجاهل.
OVERRIDE_MIN_ASPECT_RATIO_EXCLUDE_PORTRAIT_FULLSCREEN
يؤدي هذا الخيار إلى إيقاف تجاهل الحد الأدنى لنسبة العرض إلى الارتفاع في وضع ملء الشاشة بالاتجاه العمودي لاستخدام كل مساحة الشاشة المتاحة.
الطريقة التي يمكن للتطبيقات من خلالها تحقيق النتيجة نفسها التي يحقّقها الإلغاء
راجِع OVERRIDE_MIN_ASPECT_RATIO.
كيفية تحسين التطبيقات
راجِع OVERRIDE_MIN_ASPECT_RATIO.
كيفية إيقاف ميزة التجاوز أو إيقافها
راجِع OVERRIDE_MIN_ASPECT_RATIO.
علامات الموقع لتعديل الإلغاء
راجِع OVERRIDE_MIN_ASPECT_RATIO.
أوامر adb لاختبار التجاوز
لتطبيق التجاوز:
adb shell am compat enable OVERRIDE_MIN_ASPECT_RATIO_EXCLUDE_PORTRAIT_FULLSCREEN <package>
لإزالة الإذن:
adb shell am compat disable OVERRIDE_MIN_ASPECT_RATIO_EXCLUDE_PORTRAIT_FULLSCREEN <package>
ملاحظة: لا تنطبق الأوامر إلا بشكل مؤقت أو تزيل الإذن بالتجاهل.
OVERRIDE_ANY_ORIENTATION
تتيح عمليات التجاوز التالية إمكانية تجاوز أي اتجاه:
- OVERRIDE_UNDEFINED_ORIENTATION_TO_PORTRAIT
- OVERRIDE_UNDEFINED_ORIENTATION_TO_NOSENSOR
- OVERRIDE_LANDSCAPE_ORIENTATION_TO_REVERSE_LANDSCAPE
الطريقة التي يمكن للتطبيقات من خلالها تحقيق النتيجة نفسها التي يحقّقها الإلغاء
اضبط سمة البيان activity:screenOrientation
،
أو استخدِم واجهة برمجة التطبيقات Activity#setRequestedOrientation()
.
كيفية تحسين التطبيقات
يجب أن يتوافق تطبيقك مع جميع اتجاهات الشاشة. يُعد تغيير اتجاه الشاشة تغييرًا في الإعدادات، ويمكن التعامل معه بإحدى طريقتين: إما السماح للنظام بإيقاف التطبيق وإعادة إنشائه، أو إدارة تغييرات الإعدادات بنفسك. إذا كنت تدير تغييرات الإعدادات بنفسك، يمكن الاحتفاظ بحالة التطبيق باستخدام ViewModel
. في حالات محدودة جدًا، يمكنك اختيار قفل اتجاه الشاشة على الشاشات الصغيرة فقط، ولكن قد لا يكون ذلك قابلاً للتوسيع كما لو سمحت للمستخدم بتدوير التطبيق حسب الحاجة. في الإصدار 12L من نظام التشغيل Android والإصدارات الأحدث،
يمكن إلغاء خيار اتجاه الشاشة الثابت من خلال إعدادات الجهاز. لمزيد من المعلومات حول معالجة تغييرات الإعدادات وإتاحة جميع أوضاع الشاشة، يُرجى الاطّلاع على معالجة تغييرات الإعدادات ونظرة عامة على ViewModel وتقييد وضع الشاشة على الهواتف وليس على الأجهزة ذات الشاشات الكبيرة.
كيفية إيقاف ميزة التجاوز أو إيقافها
اضبط علامة السمة
PROPERTY_COMPAT_ALLOW_ORIENTATION_OVERRIDE
على false
.
علامات الموقع لتعديل الإلغاء
<property android:name="android.window.PROPERTY_COMPAT_ALLOW_ORIENTATION_OVERRIDE"
android:value="true|false"/>
أوامر adb لاختبار التجاوز
لتطبيق التجاوز:
adb shell am compat enable OVERRIDE_ANY_ORIENTATION <package>
لإزالة الإذن:
adb shell am compat disable OVERRIDE_ANY_ORIENTATION <package>
ملاحظة: لا تنطبق الأوامر إلا بشكل مؤقت أو تزيل الإذن بالتجاهل.
OVERRIDE_ANY_ORIENTATION_TO_USER
يسمح للتطبيق بملء مساحة العرض المتاحة. تتجاوز هذه السمة أي قيود على الاتجاه وقابلية تغيير الحجم ونسبة العرض إلى الارتفاع محدّدة في بيان التطبيق. ويتجاهل أيضًا أي مكالمات واردة إلى
Activity#setRequestedOrientation()
أو
Activity#getRequestedOrientation()
.
الطريقة التي يمكن للتطبيقات من خلالها تحقيق النتيجة نفسها التي يحقّقها الإلغاء
لا تضبط سمة بيان
android:screenOrientation
، أو اضبط السمة على"user"
.اضبط سمة بيان
android:resizeableActivity
علىtrue
.على الشاشات الصغيرة، لتفعيل تغيير حجم التطبيق مع إيقاف وضع النوافذ المتعددة باستخدام
android:resizeableActivity=false
، اضبط علامة البيانات الوصفيةandroid.supports_size_changes
علىtrue
. لا تضبطminAspectRatio
وmaxAspectRatio
.
كيفية تحسين التطبيقات
فعِّل تطبيقك ليتوافق مع جميع اتجاهات الشاشة، ولا تضبط screenOrientation
مواصفات في بيان تطبيقك. يمكنك إتاحة تغيير حجم التطبيق ووضع النوافذ المتعددة وجميع نسب العرض إلى الارتفاع للشاشة من خلال ضبط السمة android:resizeableActivity
في بيان التطبيق على true
. راجِع مقالة
إتاحة أحجام عرض مختلفة.
كيفية إيقاف ميزة التجاوز أو إيقافها
يمكنك الاطّلاع على OVERRIDE_ANY_ORIENTATION
.
علامات الموقع لتعديل الإلغاء
يمكنك الاطّلاع على OVERRIDE_ANY_ORIENTATION
.
أوامر adb لاختبار التجاوز
لتطبيق التجاوز:
adb shell am compat enable OVERRIDE_ANY_ORIENTATION_TO_USER <package>
لإزالة الإذن:
adb shell am compat disable OVERRIDE_ANY_ORIENTATION_TO_USER <package>
ملاحظة: لا تنطبق الأوامر إلا بشكل مؤقت أو تزيل الإذن بالتجاهل.
OVERRIDE_UNDEFINED_ORIENTATION_TO_PORTRAIT
تتيح هذه السمة استخدام الوضع العمودي لجميع الأنشطة في الحزمة. ما لم يتم تفعيل OVERRIDE_ANY_ORIENTATION، لن يتم استخدام الإعداد التلقائي إلا عندما لا يتم تحديد أي اتجاه ثابت آخر من خلال النشاط.
الطريقة التي يمكن للتطبيقات من خلالها تحقيق النتيجة نفسها التي يحقّقها الإلغاء
يمكنك الاطّلاع على OVERRIDE_ANY_ORIENTATION
.
كيفية تحسين التطبيقات
يمكنك الاطّلاع على OVERRIDE_ANY_ORIENTATION
.
كيفية إيقاف ميزة التجاوز أو إيقافها
يمكنك الاطّلاع على OVERRIDE_ANY_ORIENTATION
.
علامات الموقع لتعديل الإلغاء
يمكنك الاطّلاع على OVERRIDE_ANY_ORIENTATION
.
أوامر adb لاختبار التجاوز
لتطبيق التجاوز:
adb shell am compat enable OVERRIDE_UNDEFINED_ORIENTATION_TO_PORTRAIT <package>
لإزالة الإذن:
adb shell am compat disable OVERRIDE_UNDEFINED_ORIENTATION_TO_PORTRAIT <package>
ملاحظة: لا تنطبق الأوامر إلا بشكل مؤقت أو تزيل الإذن بالتجاهل.
OVERRIDE_UNDEFINED_ORIENTATION_TO_NOSENSOR
تتيح هذه السمة إعداد اتجاه nosensor لجميع الأنشطة في الحزمة. ما لم يتم تفعيل OVERRIDE_ANY_ORIENTATION، لن يتم استخدام الإعداد التلقائي إلا عندما لا تحدّد النشاط أي اتجاه ثابت آخر.
الطريقة التي يمكن للتطبيقات من خلالها تحقيق النتيجة نفسها التي يحقّقها الإلغاء
يمكنك الاطّلاع على OVERRIDE_ANY_ORIENTATION
.
كيفية تحسين التطبيقات
يمكنك الاطّلاع على OVERRIDE_ANY_ORIENTATION
.
كيفية إيقاف ميزة التجاوز أو إيقافها
يمكنك الاطّلاع على OVERRIDE_ANY_ORIENTATION
.
علامات الموقع لتعديل الإلغاء
يمكنك الاطّلاع على OVERRIDE_ANY_ORIENTATION
.
أوامر adb لاختبار التجاوز
لتطبيق التجاوز:
adb shell am compat enable OVERRIDE_UNDEFINED_ORIENTATION_TO_NOSENSOR <package>
لإزالة الإذن:
adb shell am compat disable OVERRIDE_UNDEFINED_ORIENTATION_TO_NOSENSOR <package>
ملاحظة: لا تنطبق الأوامر إلا بشكل مؤقت أو تزيل الإذن بالتجاهل.
OVERRIDE_LANDSCAPE_ORIENTATION_TO_REVERSE_LANDSCAPE
تتيح هذه السمة إمكانية استخدام الوضع الأفقي المعكوس reverseLandscape لجميع الأنشطة في الحزمة. ما لم يتم تفعيل OVERRIDE_ANY_ORIENTATION، لن يتم استخدام الإعداد التلقائي إلا عندما لا تحدّد النشاط أي اتجاه ثابت آخر.
الطريقة التي يمكن للتطبيقات من خلالها تحقيق النتيجة نفسها التي يحقّقها الإلغاء
يمكنك الاطّلاع على OVERRIDE_ANY_ORIENTATION
.
كيفية تحسين التطبيقات
يمكنك الاطّلاع على OVERRIDE_ANY_ORIENTATION
.
كيفية إيقاف ميزة التجاوز أو إيقافها
يمكنك الاطّلاع على OVERRIDE_ANY_ORIENTATION
.
علامات الموقع لتعديل الإلغاء
يمكنك الاطّلاع على OVERRIDE_ANY_ORIENTATION
.
أوامر adb لاختبار التجاوز
لتطبيق التجاوز:
adb shell am compat enable OVERRIDE_LANDSCAPE_ORIENTATION_TO_REVERSE_LANDSCAPE <package>
لإزالة الإذن:
adb shell am compat disable OVERRIDE_LANDSCAPE_ORIENTATION_TO_REVERSE_LANDSCAPE <package>
ملاحظة: لا تنطبق الأوامر إلا بشكل مؤقت أو تزيل الإذن بالتجاهل.
OVERRIDE_ORIENTATION_ONLY_FOR_CAMERA
لا تسري عمليات الإلغاء OVERRIDE_UNDEFINED_ORIENTATION_TO_PORTRAIT و OVERRIDE_UNDEFINED_ORIENTATION_TO_NOSENSOR و OVERRIDE_LANDSCAPE_ORIENTATION_TO_REVERSE_LANDSCAPE إلا عندما يكون اتصال الكاميرا نشطًا.
الطريقة التي يمكن للتطبيقات من خلالها تحقيق النتيجة نفسها التي يحقّقها الإلغاء
يمكنك الاطّلاع على OVERRIDE_ANY_ORIENTATION
.
كيفية تحسين التطبيقات
يمكنك الاطّلاع على OVERRIDE_ANY_ORIENTATION
.
كيفية إيقاف ميزة التجاوز أو إيقافها
يمكنك الاطّلاع على OVERRIDE_ANY_ORIENTATION
.
علامات الموقع لتعديل الإلغاء
يمكنك الاطّلاع على OVERRIDE_ANY_ORIENTATION
.
أوامر adb لاختبار التجاوز
لتطبيق التجاوز:
adb shell am compat enable OVERRIDE_ORIENTATION_ONLY_FOR_CAMERA <package>
لإزالة الإذن:
adb shell am compat disable OVERRIDE_ORIENTATION_ONLY_FOR_CAMERA <package>
ملاحظة: لا تنطبق الأوامر إلا بشكل مؤقت أو تزيل الإذن بالتجاهل.
OVERRIDE_USE_DISPLAY_LANDSCAPE_NATURAL_ORIENTATION
يتم حصر اتجاه العرض على الاتجاه الأفقي الطبيعي عند استيفاء الشروط التالية:
- النشاط في وضع ملء الشاشة
- لم يتم تفعيل خاصية المكوّن "إيقاف المشاركة" (Opt out component property)
PROPERTY_COMPAT_ALLOW_DISPLAY_ORIENTATION_OVERRIDE
- تم تفعيل إعداد تجاهل طلب تغيير اتجاه الشاشة من الشركة المصنّعة للجهاز
- يكون الاتجاه الطبيعي للشاشة أفقيًا
الطريقة التي يمكن للتطبيقات من خلالها تحقيق النتيجة نفسها التي يحقّقها الإلغاء
غير منطبق. يجب حلّ المشكلة في منطق التطبيق.
كيفية تحسين التطبيقات
يمكنك الاطّلاع على OVERRIDE_ANY_ORIENTATION
.
كيفية إيقاف ميزة التجاوز أو إيقافها
اضبط علامة السمة
PROPERTY_COMPAT_ALLOW_DISPLAY_ORIENTATION_OVERRIDE
على false
.
علامات الموقع لتعديل الإلغاء
<property android:name="android.window.PROPERTY_COMPAT_ALLOW_DISPLAY_ORIENTATION_OVERRIDE"
android:value="true|false"/>
أوامر adb لاختبار التجاوز
لتطبيق التجاوز:
adb shell am compat enable OVERRIDE_USE_DISPLAY_LANDSCAPE_NATURAL_ORIENTATION <package>
لإزالة الإذن:
adb shell am compat disable OVERRIDE_USE_DISPLAY_LANDSCAPE_NATURAL_ORIENTATION <package>
ملاحظة: لا تنطبق الأوامر إلا بشكل مؤقت أو تزيل الإذن بالتجاهل.
OVERRIDE_ENABLE_COMPAT_IGNORE_REQUESTED_ORIENTATION
تفعِّل هذه السياسة سياسة التوافق التي تتخطى تعديل اتجاه التطبيق استجابةً لاستدعاء التطبيق Activity#setRequestedOrientation()
عند إعادة تشغيل التطبيق أو عندما يكون هناك معالجة نشطة لتوافق الكاميرا.
الطريقة التي يمكن للتطبيقات من خلالها تحقيق النتيجة نفسها التي يحقّقها الإلغاء
اضبط علامة السمة
PROPERTY_COMPAT_IGNORE_REQUESTED_ORIENTATION
على true
.
كيفية تحسين التطبيقات
يمكنك الاطّلاع على OVERRIDE_ANY_ORIENTATION
.
كيفية إيقاف ميزة التجاوز أو إيقافها
اضبط علامة السمة
PROPERTY_COMPAT_IGNORE_REQUESTED_ORIENTATION
على false
.
علامات الموقع لتعديل الإلغاء
<property android:name="android.window.PROPERTY_COMPAT_IGNORE_REQUESTED_ORIENTATION"
android:value="true|false"/>
أوامر adb لاختبار التجاوز
لتطبيق التجاوز:
adb shell am compat enable OVERRIDE_ENABLE_COMPAT_IGNORE_REQUESTED_ORIENTATION <package>
لإزالة الإذن:
adb shell am compat disable OVERRIDE_ENABLE_COMPAT_IGNORE_REQUESTED_ORIENTATION <package>
ملاحظة: لا تنطبق الأوامر إلا بشكل مؤقت أو تزيل الإذن بالتجاهل.
OVERRIDE_ENABLE_COMPAT_IGNORE_ORIENTATION_REQUEST_WHEN_LOOP_DETECTED
تفعِّل سياسة التوافق التي تتجاهل اتجاه الشاشة المطلوب للتطبيق استجابةً لطلب التطبيق Activity#setRequestedOrientation()
أكثر من مرتين في ثانية واحدة إذا لم يتم عرض النشاط في وضع ملء الشاشة مع الحفاظ على نسبة العرض إلى الارتفاع الثابتة.
الطريقة التي يمكن للتطبيقات من خلالها تحقيق النتيجة نفسها التي يحقّقها الإلغاء
غير منطبق. يجب حلّ المشكلة في منطق التطبيق.
كيفية تحسين التطبيقات
يمكنك الاطّلاع على OVERRIDE_ANY_ORIENTATION
.
كيفية إيقاف ميزة التجاوز أو إيقافها
اضبط علامة السمة
PROPERTY_COMPAT_ALLOW_IGNORING_ORIENTATION_REQUEST_WHEN_LOOP_DETECTED
على
false
.
علامات الموقع لتعديل الإلغاء
<property android:name="android.window.PROPERTY_COMPAT_ALLOW_IGNORING_ORIENTATION_REQUEST_WHEN_LOOP_DETECTED"
android:value="false"/>
أوامر adb لاختبار التجاوز
لتطبيق التجاوز:
adb shell am compat enable OVERRIDE_ENABLE_COMPAT_IGNORE_ORIENTATION_REQUEST_WHEN_LOOP_DETECTED <package>
لإزالة الإذن:
adb shell am compat disable OVERRIDE_ENABLE_COMPAT_IGNORE_ORIENTATION_REQUEST_WHEN_LOOP_DETECTED <package>
ملاحظة: لا تنطبق الأوامر إلا بشكل مؤقت أو تزيل الإذن بالتجاهل.
OVERRIDE_RESPECT_REQUESTED_ORIENTATION
يستبعد هذا الإعداد الحِزم من سلوك طلب تجاهل الاتجاه الذي يمكن أن يفعّله مصنّعو الأجهزة لمنطقة عرض أو شاشة العرض بأكملها.
الطريقة التي يمكن للتطبيقات من خلالها تحقيق النتيجة نفسها التي يحقّقها الإلغاء
غير منطبق. يجب حلّ المشكلة في منطق التطبيق.
كيفية تحسين التطبيقات
يمكنك الاطّلاع على OVERRIDE_ANY_ORIENTATION
.
كيفية إيقاف ميزة التجاوز أو إيقافها
لا يمكن إيقاف هذه الميزة. قد يكون إيقاف الإعداد التلقائي خطيرًا إذا كان التطبيق غير متوافق مع جهاز تم تفعيل الإعداد "تجاهل طلبات الاتجاه" فيه من قِبل الشركة المصنّعة للجهاز. يُرجى التواصل مع فريق علاقات المطوّرين في Android لإيقاف الإعداد التلقائي.
علامات الموقع لتعديل الإلغاء
لا تتوفّر علامات مواقع لهذا الإلغاء.
أوامر adb لاختبار التجاوز
لتطبيق التجاوز:
adb shell am compat enable OVERRIDE_RESPECT_REQUESTED_ORIENTATION <package>
لإزالة الإذن:
adb shell am compat disable OVERRIDE_RESPECT_REQUESTED_ORIENTATION <package>
ملاحظة: لا تنطبق الأوامر إلا بشكل مؤقت أو تزيل الإذن بالتجاهل.
NEVER_SANDBOX_DISPLAY_APIS
يفرض عدم تطبيق وضع الحماية Display
لواجهة برمجة التطبيقات على الحِزم مطلقًا
في نشاط يتم عرضه في وضع التوافق مع حجم الشاشة أو وضع عرض التطبيق في نافذة مستطيلة. تستمر واجهات برمجة التطبيقات Display
في توفير حدود مساحة العرض.
الطريقة التي يمكن للتطبيقات من خلالها تحقيق النتيجة نفسها التي يحقّقها الإلغاء
يمكنك الإعلان عن إمكانية تغيير حجم الأنشطة من خلال ضبط سمة البيان android:resizeableActivity
على true
أو علامة البيانات الوصفية android.supports_size_changes
على true
.
كيفية تحسين التطبيقات
يجب ألا تعتمد التطبيقات التي تُعلن عن إمكانية تغيير حجمها بالكامل على حجم الشاشة
لتحديد موضع عناصر واجهة المستخدم. نقل تطبيقك إلى واجهات برمجة تطبيقات حديثة توفّر WindowMetrics
إذا كنت تستخدم Jetpack Compose، يمكنك الاستفادة من واجهة برمجة التطبيقات
WindowSizeClass
لرسم واجهة المستخدم استنادًا إلى مساحة الشاشة التي يشغلها التطبيق على الشاشة الحالية. راجِع مقالة
استخدام فئات أحجام النوافذ.
كيفية إيقاف ميزة التجاوز أو إيقافها
لا يمكن إيقاف هذه الميزة. نقل البيانات من واجهات برمجة التطبيقات المتوقّفة نهائيًا
علامات الموقع لتعديل الإلغاء
لا تتوفّر علامات مواقع لهذا الإلغاء.
أوامر adb لاختبار التجاوز
لتطبيق التجاوز:
adb shell am compat enable NEVER_SANDBOX_DISPLAY_APIS <package>
لإزالة الإذن:
adb shell am compat disable NEVER_SANDBOX_DISPLAY_APIS <package>
ملاحظة: لا تنطبق الأوامر إلا بشكل مؤقت أو تزيل الإذن بالتجاهل.
ALWAYS_SANDBOX_DISPLAY_APIS
يفرض هذا الخيار تطبيق وضع الحماية لواجهة برمجة التطبيقات Display
على الحِزم دائمًا
بغض النظر عن وضع العرض في النوافذ. تقدّم واجهات برمجة التطبيقات Display
دائمًا حدود التطبيق.
الطريقة التي يمكن للتطبيقات من خلالها تحقيق النتيجة نفسها التي يحقّقها الإلغاء
يمكنك الإعلان عن أنّ الأنشطة غير قابلة لتغيير الحجم من خلال ضبط السمة android:resizeableActivity
على false
أو ضبط علامة البيانات الوصفية android.supports_size_changes
على false
.
كيفية تحسين التطبيقات
يجب ألا تعتمد التطبيقات التي تُعلن عن إمكانية تغيير حجمها بالكامل على حجم الشاشة لتحديد موضع عناصر واجهة المستخدم. نقل تطبيقك من واجهات برمجة التطبيقات المتوقّفة إلى واجهات برمجة تطبيقات حديثة توفّر WindowMetrics
يمكنك الاطّلاع على
WindowMetricsCalculator
.
كيفية إيقاف ميزة التجاوز أو إيقافها
لا يمكن إيقاف هذه الميزة. نقل البيانات من واجهات برمجة التطبيقات المتوقّفة نهائيًا
علامات الموقع لتعديل الإلغاء
لا تتوفّر علامات مواقع لهذا الإلغاء.
أوامر adb لاختبار التجاوز
لتطبيق التجاوز:
adb shell am compat enable ALWAYS_SANDBOX_DISPLAY_APIS <package>
لإزالة الإذن:
adb shell am compat disable ALWAYS_SANDBOX_DISPLAY_APIS <package>
ملاحظة: لا تنطبق الأوامر إلا بشكل مؤقت أو تزيل الإذن بالتجاهل.
OVERRIDE_SANDBOX_VIEW_BOUNDS_APIS
يفرض هذا الإعداد على الحِزم وضع واجهات برمجة التطبيقات View
التالية في وضع الحماية ضمن حدود النشاط:
الطريقة التي يمكن للتطبيقات من خلالها تحقيق النتيجة نفسها التي يحقّقها الإلغاء
يمكنك حلّ المشكلة في رمز التطبيق باستخدام واجهات برمجة التطبيقات التي توفّر حدود نافذة التطبيق والإزاحات بالنسبة إلى نافذة التطبيق بدلاً من حدود شاشة الجهاز والإزاحات بالنسبة إلى شاشة الجهاز.
كيفية تحسين التطبيقات
يجب أن تستخدم التطبيقات واجهات برمجة التطبيقات View
، مع مراعاة إمكانية تطبيق وضعَي "تأطير الصورة" و"النوافذ المتعدّدة" على التطبيق. يمكنك الاطّلاع على WindowMetricsCalculator
.
كيفية إيقاف ميزة التجاوز أو إيقافها
اضبط علامة السمة
PROPERTY_COMPAT_ALLOW_SANDBOXING_VIEW_BOUNDS_APIS
على false
.
علامات الموقع لتعديل الإلغاء
<property android:name="android.window.PROPERTY_COMPAT_ALLOW_SANDBOXING_VIEW_BOUNDS_APIS"
android:value="false"/>
أوامر adb لاختبار التجاوز
لتطبيق التجاوز:
adb shell am compat enable OVERRIDE_SANDBOX_VIEW_BOUNDS_APIS <package>
لإزالة الإذن:
adb shell am compat disable OVERRIDE_SANDBOX_VIEW_BOUNDS_APIS <package>
ملاحظة: لا تنطبق الأوامر إلا بشكل مؤقت أو تزيل الإذن بالتجاهل.
OVERRIDE_CAMERA_COMPAT_DISABLE_FORCE_ROTATION
يؤدي ذلك إلى إيقاف التدوير الإجباري. تحسين تجربة المستخدم في بعض التطبيقات
الطريقة التي يمكن للتطبيقات من خلالها تحقيق النتيجة نفسها التي يحقّقها الإلغاء
اضبط علامة السمة
PROPERTY_CAMERA_COMPAT_ALLOW_FORCE_ROTATION
على false
.
كيفية تحسين التطبيقات
لا تعتمد على اتجاه أداة الاستشعار في الكاميرا أو معلومات الجهاز المخزَّنة مؤقتًا. للحصول على إرشادات بشأن توافق الكاميرا، يُرجى الاطّلاع على التعرّف على "نافذة عرض الكاميرا" وإتاحة تغيير حجم الأسطح في تطبيق الكاميرا.
كيفية إيقاف ميزة التجاوز أو إيقافها
اضبط علامة السمة
PROPERTY_CAMERA_COMPAT_ALLOW_FORCE_ROTATION
على true
.
علامات الموقع لتعديل الإلغاء
<property android:name="android.window.PROPERTY_CAMERA_COMPAT_ALLOW_FORCE_ROTATION"
android:value="true|false"/>
أوامر adb لاختبار التجاوز
لتطبيق الإلغاء، ما يؤدي إلى إزالة التدوير الإجباري:
adb shell am compat enable OVERRIDE_CAMERA_COMPAT_DISABLE_FORCE_ROTATION <package>
لإزالة الإذن، ما يسمح بفرض التدوير:
adb shell am compat disable OVERRIDE_CAMERA_COMPAT_DISABLE_FORCE_ROTATION <package>
ملاحظة: لا تنطبق الأوامر إلا بشكل مؤقت أو تزيل الإذن بالتجاهل.
OVERRIDE_CAMERA_COMPAT_DISABLE_REFRESH
يؤدي ذلك إلى إيقاف إعادة تحميل النشاط بعد فرض تدوير الشاشة. تحسين تجربة المستخدم عندما يؤدي إعادة التحميل إلى فقدان الحالة في التطبيقات
الطريقة التي يمكن للتطبيقات من خلالها تحقيق النتيجة نفسها التي يحقّقها الإلغاء
اضبط علامة السمة
PROPERTY_CAMERA_COMPAT_ALLOW_REFRESH
على false
.
كيفية تحسين التطبيقات
راجِع OVERRIDE_CAMERA_COMPAT_DISABLE_FORCE_ROTATION.
كيفية إيقاف ميزة التجاوز أو إيقافها
اضبط علامة السمة
PROPERTY_CAMERA_COMPAT_ALLOW_REFRESH
على true
.
علامات الموقع لتعديل الإلغاء
<property android:name="android.window.PROPERTY_CAMERA_COMPAT_ALLOW_REFRESH"
android:value="true|false"/>
أوامر adb لاختبار التجاوز
لتطبيق الإجراء البديل الذي يزيل إعادة تحميل النشاط، اتّبِع الخطوات التالية:
adb shell am compat enable OVERRIDE_CAMERA_COMPAT_DISABLE_REFRESH <package>
لإزالة الإذن الذي يسمح بإعادة تحميل النشاط، اتّبِع الخطوات التالية:
adb shell am compat disable OVERRIDE_CAMERA_COMPAT_DISABLE_REFRESH <package>
ملاحظة: لا تنطبق الأوامر إلا بشكل مؤقت أو تزيل الإذن بالتجاهل.
OVERRIDE_CAMERA_COMPAT_ENABLE_REFRESH_VIA_PAUSE
يجعل الحِزم التي يتم تطبيقها تنفّذ عملية إعادة تحميل النشاط باستخدام الدورة onResume()
→ onPause()
→ onResume()
بدلاً من onResume()
→
onStop()
→ onResume()
بعد فرض تدوير الشاشة لتتوافق مع الكاميرا.
الطريقة التي يمكن للتطبيقات من خلالها تحقيق النتيجة نفسها التي يحقّقها الإلغاء
اضبط علامة السمة
PROPERTY_CAMERA_COMPAT_ENABLE_REFRESH_VIA_PAUSE
على true
.
كيفية تحسين التطبيقات
راجِع OVERRIDE_CAMERA_COMPAT_DISABLE_FORCE_ROTATION.
كيفية إيقاف ميزة التجاوز أو إيقافها
اضبط علامة السمة
PROPERTY_CAMERA_COMPAT_ENABLE_REFRESH_VIA_PAUSE
على false
.
علامات الموقع لتعديل الإلغاء
<property android:name="android.window.PROPERTY_CAMERA_COMPAT_ENABLE_REFRESH_VIA_PAUSE"
android:value="true|false"/>
أوامر adb لاختبار التجاوز
لتطبيق التجاوز:
adb shell am compat enable OVERRIDE_CAMERA_COMPAT_ENABLE_REFRESH_VIA_PAUSE <package>
لإزالة الإذن:
adb shell am compat disable OVERRIDE_CAMERA_COMPAT_ENABLE_REFRESH_VIA_PAUSE <package>
ملاحظة: لا تنطبق الأوامر إلا بشكل مؤقت أو تزيل الإذن بالتجاهل.
OVERRIDE_CAMERA_LANDSCAPE_TO_PORTRAIT
يتم فرض اقتصاص ناتج الكاميرا إلى الاتجاه المعاكس عندما لا يتوافق اتجاه الكاميرا العمودي مع اتجاه الجهاز الطبيعي. لا تتعامل العديد من التطبيقات مع هذه الحالة، وتعرض الصور ممدودة.
الطريقة التي يمكن للتطبيقات من خلالها تحقيق النتيجة نفسها التي يحقّقها الإلغاء
اضبط علامة السمة
PROPERTY_COMPAT_OVERRIDE_LANDSCAPE_TO_PORTRAIT
على true
.
كيفية تحسين التطبيقات
راجِع OVERRIDE_CAMERA_COMPAT_DISABLE_FORCE_ROTATION.
كيفية إيقاف ميزة التجاوز أو إيقافها
اضبط علامة السمة
PROPERTY_COMPAT_OVERRIDE_LANDSCAPE_TO_PORTRAIT
على false
.
علامات الموقع لتعديل الإلغاء
<property android:name="android.camera.PROPERTY_COMPAT_OVERRIDE_LANDSCAPE_TO_PORTRAIT"
android:value="true|false"/>
أوامر adb لاختبار التجاوز
لتطبيق الإعداد التلقائي الذي يطبّق اقتصاص الكاميرا الأمامية الداخلية، اتّبِع الخطوات التالية:
adb shell am compat enable OVERRIDE_CAMERA_LANDSCAPE_TO_PORTRAIT <package>
لإزالة الإعداد التلقائي، ما يؤدي إلى إزالة الاقتصاص من الكاميرا الأمامية الداخلية، اتّبِع الخطوات التالية:
adb shell am compat disable OVERRIDE_CAMERA_LANDSCAPE_TO_PORTRAIT <package>
ملاحظة: لا تنطبق الأوامر إلا بشكل مؤقت أو تزيل الإذن بالتجاهل.
OVERRIDE_DISABLE_MEDIA_PROJECTION_SINGLE_APP_OPTION
يمنع التطبيقات من إيقاف مشاركة شاشة التطبيق (راجِع عرض الوسائط). يتم تنفيذ هذا الإجراء عندما تسيء التطبيقات استخدام واجهة برمجة التطبيقات
createConfigForDefaultDisplay()
لفرض
التقاط الشاشة بالكامل وتعريض خصوصية المستخدم للخطر من خلال الكشف عن محتوى الإشعارات التي يتم التقاطها بملء الشاشة ولكن ليس من خلال مشاركة شاشة التطبيق، ويشمل ذلك جميع التطبيقات بغض النظر عن وضع النوافذ.
الطريقة التي يمكن للتطبيقات من خلالها تحقيق النتيجة نفسها التي يحقّقها الإلغاء
السماح بسلوك عرض الوسائط التلقائي (الذي تم تنفيذه في نظام التشغيل Android 14، المستوى 34 من واجهة برمجة التطبيقات، باستخدام createScreenCaptureIntent()
)،
ما يتيح للمستخدمين تحديد ما إذا كانوا يريدون مشاركة الشاشة الكاملة أو نافذة تطبيق واحد
بغض النظر عن وضع النوافذ أو اتّصِل بـ
createScreenCaptureIntent(MediaProjectionConfig)
باستخدام وسيط MediaProjectionConfig
تم إرجاعه من
استدعاء createConfigForUserChoice()
.
كيفية تحسين التطبيقات
السماح للمستخدمين باختيار ما إذا كانوا يريدون مشاركة شاشة الجهاز بالكامل أو نافذة تطبيق أثناء عرض الوسائط، وهو السلوك التلقائي في نظام التشغيل Android 14.
اجعل تطبيقك قابلاً لتغيير الحجم (resizeableActivity="true"
) من أجل
التوافق مع وضع النوافذ المتعددة.
كيفية إيقاف ميزة التجاوز أو إيقافها
ونظرًا لأهمية خصوصية المستخدم، لا يمكن لتطبيقك إيقاف هذا الإعداد التلقائي أو إلغاء تفعيله.
علامات الموقع لتعديل الإلغاء
بلا عُري
أوامر adb لاختبار التجاوز
لتطبيق الإعداد التلقائي الذي يلغي إيقاف التطبيق لميزة مشاركة جزء من الشاشة (أي تفعيل ميزة مشاركة جزء من الشاشة):
adb shell am compat enable OVERRIDE_DISABLE_MEDIA_PROJECTION_SINGLE_APP_OPTION <package>
لإزالة الإذن الذي يسمح للتطبيق بإيقاف مشاركة الشاشة الجزئية:
adb shell am compat disable OVERRIDE_DISABLE_MEDIA_PROJECTION_SINGLE_APP_OPTION <package>
ملاحظة: لا تنطبق الأوامر إلا بشكل مؤقت أو تزيل الإذن بالتجاهل.
OVERRIDE_ENABLE_COMPAT_FAKE_FOCUS
تفعيل إرسال تركيز زائف للتطبيقات غير المركّز عليها في وضع تقسيم الشاشة تنتظر بعض محركات الألعاب التركيز قبل رسم محتوى التطبيق، وبالتالي، يساعد التركيز الزائف التطبيقات في تجنُّب البقاء معطّلة عند استئنافها وعدم التركيز عليها بعد.
الطريقة التي يمكن للتطبيقات من خلالها تحقيق النتيجة نفسها التي يحقّقها الإلغاء
اضبط علامة السمة
PROPERTY_COMPAT_ENABLE_FAKE_FOCUS
على
true
.
كيفية تحسين التطبيقات
يمكنك تجنُّب هذه المشكلة إذا كان تطبيقك يتعامل بشكل جيد مع الاتجاهات المتعددة وتغييرات الإعدادات. يمكنك إعداد تطبيقك ليكون متوافقًا مع الشاشات الكبيرة من خلال اتّباع إرشادات جودة التطبيقات على الشاشات الكبيرة.
إذا كنت تستخدم محرك ألعاب Unity، عليك الترقية إلى الإصدار 2019.4.40 أو إصدار أحدث وإعادة تصدير لعبتك. يجب إبقاء الخيار نافذة قابلة لتغيير الحجم محدّدًا في إعدادات مشغّل Android.
كيفية إيقاف ميزة التجاوز أو إيقافها
اضبط علامة السمة
PROPERTY_COMPAT_ENABLE_FAKE_FOCUS
على
false
.
علامات الموقع لتعديل الإلغاء
<property android:name="android.window.PROPERTY_COMPAT_ENABLE_FAKE_FOCUS"
android:value="true|false"/>
أوامر adb لاختبار التجاوز
لتطبيق التجاوز:
adb shell am compat enable OVERRIDE_ENABLE_COMPAT_FAKE_FOCUS <package>
لإزالة الإذن:
adb shell am compat disable OVERRIDE_ENABLE_COMPAT_FAKE_FOCUS <package>
ملاحظة: لا تنطبق الأوامر إلا بشكل مؤقت أو تزيل الإذن بالتجاهل.
OVERRIDE_EXCLUDE_CAPTION_INSETS_FROM_APP_BOUNDS
عند تفعيل الإعداد، يتلقّى النشاط إعدادات مقترنة بإضافات شريط العنوان. عادةً، يتم فصل هوامش شريط العنوان عن الإعدادات.
الطريقة التي يمكن للتطبيقات من خلالها تحقيق النتيجة نفسها التي يحقّقها الإلغاء
فعِّل ميزة "العرض حتى حافة الشاشة" أو حدِّث حزمة تطوير البرامج (SDK) المستهدَفة للتطبيق إلى المستوى 35 أو مستوى أحدث لواجهة برمجة التطبيقات. يُرجى الاطّلاع على ما يلي:
- Compose: لمحة عن هوامش النوافذ
- طرق العرض: عرض المحتوى من الحافة إلى الحافة في طرق العرض
- الإعداد: التغييرات في السلوك: التطبيقات التي تستهدف الإصدار 15 من نظام التشغيل Android أو الإصدارات الأحدث
كيفية تحسين التطبيقات
يمكنك تجنُّب هذه المشكلة إذا كان تطبيقك يتيح العرض من الحافة إلى الحافة أو يستهدف المستوى 35 أو مستوى أحدث لواجهة برمجة التطبيقات.
كيفية إيقاف ميزة التجاوز أو إيقافها
تفعيل ميزة "العرض حتى حافة الشاشة" أو استهداف المستوى 35 لواجهة برمجة التطبيقات أو المستويات الأحدث
علامات الموقع لتعديل الإلغاء
بلا عُري
أوامر adb لاختبار التجاوز
لتطبيق التجاوز:
adb shell am compat enable OVERRIDE_EXCLUDE_CAPTION_INSETS_FROM_APP_BOUNDS <package>
لإزالة الإذن:
adb shell am compat disable OVERRIDE_EXCLUDE_CAPTION_INSETS_FROM_APP_BOUNDS <package>
ملاحظة: لا تنطبق الأوامر إلا بشكل مؤقت أو تزيل الإذن بالتجاهل.
مراجع إضافية
- إرشادات جودة التطبيقات على الشاشات الكبيرة
- إرشادات الجودة الأساسية للتطبيق
-
مالك الجهاز الافتراضي هو تطبيق موثوق به أو لديه امتيازات لإدارة جهاز افتراضي. ينشئ مالكو الأجهزة الافتراضية أجهزة افتراضية لعرض التطبيقات ثم يعرضون التطبيقات على أجهزة بعيدة، مثل أجهزة الكمبيوتر الشخصية أو أجهزة الواقع الافتراضي أو أنظمة المعلومات والترفيه في السيارات. يكون مالك الجهاز الافتراضي على جهاز محلي، مثل هاتف. ↩