1. المقدّمة
يستعرض هذا المستند المتطلبات التي يجب استيفاؤها لتصبح الأجهزة متوافقة مع الإصدار 8.1 من Android.
إنّ استخدام "يجب" و"يجب ألا" و"مطلوب" و"SHALL" و"SHALL NOT" و"ينبغي" و"يجب ألا" و"يُنصَح به" و"أيار" و"اختياري" ينطبق على معيار IETF المحدَّد في RFC2119.
وفقًا لما ورد في هذا المستند، "أداة تنفيذ الجهاز" أو "أداة التنفيذ" هي شخص أو مؤسسة تطوّر حلاً للأجهزة أو البرامج يعمل بالإصدار 8.1 من نظام التشغيل Android. "تنفيذ الجهاز" أو "التنفيذ هو حل الأجهزة/البرامج التي تم تطويرها للغاية.
لكي يتم اعتبار عمليات تنفيذ الأجهزة متوافقة مع الإصدار Android 8.1، يجب أن تستوفي المتطلبات الواردة في "تعريف التوافق" هذا، بما في ذلك أي مستندات مضمّنة في المرجع.
في الحالات التي يكون فيها هذا التعريف أو اختبارات البرامج الموضّحة في القسم 10 صامتة أو غامضة أو غير مكتملة، تقع على عاتق الجهة التنفيذية مسؤولية ضمان التوافق مع عمليات التنفيذ الحالية.
لهذا السبب، يُعدّ المشروع المفتوح المصدر لنظام Android مرجعًا ومفضّلاً لنظام Android. يُنصَح بشدة بأن تستند عمليات تنفيذ الأجهزة إلى رمز المصدر "الأول" المتاح من "المشروع المفتوح المصدر لنظام Android" في عمليات التنفيذ إلى أقصى حد ممكن. وفي حين أنه من الممكن استبدال بعض المكونات بعمليات تنفيذ بديلة، يُوصى بشدة بعدم اتباع هذه الممارسة، حيث إن اجتياز اختبارات البرامج سيصبح أكثر صعوبة بكثير. تقع على عاتق القائم بالتنفيذ مسؤولية ضمان التوافق السلوكي الكامل مع التنفيذ القياسي في Android، بما في ذلك "مجموعة أدوات اختبار التوافق" وخارجها. وأخيرًا، لاحظ أن بعض عمليات استبدال المكونات والتعديلات عليها محظورة صراحةً في هذا المستند.
تم الحصول على العديد من الموارد المرتبطة بهذا المستند بشكل مباشر أو غير مباشر من حزمة تطوير البرامج (SDK) لنظام التشغيل Android وستكون مطابقة من الناحية الوظيفية للمعلومات الواردة في مستندات حزمة SDK هذه. وفي أي حالات يختلف فيها تعريف التوافق أو "مجموعة أدوات اختبار التوافق" مع مستندات حزمة SDK، يتم اعتبارها موثوقة. ويتم النظر في أي تفاصيل فنية مقدّمة في الموارد المرتبطة في هذا المستند ضمن إطار "تعريف التوافق" هذا.
1.1 بنية المستند
1.1.1. المتطلبات حسب نوع الجهاز
يحتوي القسم رقم 2 على جميع المتطلبات الضرورية والتوصيات بشدة التي تنطبق على نوع جهاز معين. يتم تخصيص كل قسم فرعي من القسم 2 لنوع معيّن من الأجهزة.
يتم إدراج جميع المتطلبات الأخرى التي تسري بشكل عام على جميع عمليات تنفيذ أجهزة Android في الأقسام بعد القسم 2. تتم الإشارة إلى هذه المتطلبات باسم "المتطلبات الأساسية" في هذا المستند.
1.1.2. معرّف المتطلب
يتم تعيين معرّف الطلب لمتطلبات "يجب".
- يتم تعيين المعرّف لمتطلبات "يجب" فقط.
- يتم وضع علامة [SR] على المتطلبات المقترحة بشدة ولكن لم يتم تخصيص المعرّف.
- يتكون رقم التعريف من : رقم تعريف نوع الجهاز، رقم تعريف الحالة - معرّف الطلب (مثل C-0-1).
يتمّ تحديد كل رقم تعريف على النحو التالي:
- رقم تعريف نوع الجهاز (يمكنك الاطّلاع على مزيد من المعلومات على 2. أنواع الأجهزة
- ج: الأساسية (المتطلبات التي يتم تطبيقها على أي عمليات تنفيذ لجهاز Android)
- H: جهاز Android محمول
- T: جهاز تلفزيون Android
- A: تنفيذ نظام التشغيل Android Automotive
- رقم تعريف الشرط
- وعندما يكون هذا الشرط غير مشروط، يتم ضبط هذا المعرّف على القيمة 0.
- عندما يكون الشرط شرطيًا، يتم تخصيص الرقم 1 للشرط الأول ويزيد العدد بمقدار 1 ضمن القسم نفسه ونوع الجهاز نفسه.
- رقم تعريف الطلب
- يبدأ هذا المعرّف من 1 ويزداد بمقدار 1 داخل القسم نفسه والشرط نفسه.
2. أنواع الأجهزة
بينما يوفر "المشروع المفتوح المصدر لنظام Android" حِزمًا برمجية يمكن استخدامها مع مجموعة متنوعة من أنواع الأجهزة وأشكال الأجهزة، فهناك عدد قليل من أنواع الأجهزة التي تحتوي على منظومة متكاملة لتوزيع التطبيقات أفضل نسبيًا.
يوضّح هذا القسم أنواع الأجهزة هذه، بالإضافة إلى المتطلبات والاقتراحات الإضافية السارية على كل نوع جهاز.
يجب أن تستوفي جميع عمليات تنفيذ أجهزة Android التي لا تندرج ضمن أي من أنواع الأجهزة الموضحة جميع المتطلبات الواردة في الأقسام الأخرى من "تعريف التوافق" هذا.
2.1 إعدادات الأجهزة
لمعرفة الاختلافات الرئيسية في ضبط الأجهزة حسب نوع الجهاز، راجِع المتطلبات الخاصة بالجهاز المُوضَّحة في هذا القسم.
2.2. متطلبات حمل الجهاز باليد
يشير جهاز Android المحمل باليد إلى جهاز Android الذي يتم استخدامه عادةً من خلال حمله باليد، مثل مشغّل ملفات mp3 أو الهاتف أو الجهاز اللوحي.
يتم تصنيف عمليات تنفيذ أجهزة Android على أنّها أجهزة محمولة في حال استيفاء المعايير التالية:
- يجب أن يتوفّر لديك مصدر طاقة يتيح التنقّل، مثل البطارية.
- أن يتراوح حجم الشاشة بين 2.5 و8 بوصة
تتعلق المتطلبات الإضافية الواردة في بقية هذا القسم بعمليات تنفيذ الأجهزة المحمولة التي تعمل بنظام Android.
2.2.1. الأجهزة
حجم الشاشة (القسم 7.1.1.1)
عمليات تنفيذ الأجهزة المحمولة:
- [H-0-1] يجب أن تحتوي على شاشة بحجم قُطري لا يقل عن 2.5 بوصة.*
كثافة الشاشة (القسم 7.1.1.3)
عمليات تنفيذ الأجهزة المحمولة:
- [H-SR] يُوصى بها بشدة لتمكين المستخدمين من تغيير حجم العرض.
وضع توافق التطبيقات القديم (القسم 7.1.5)
عمليات تنفيذ الأجهزة المحمولة:
- [H-0-1] يجب أن يتضمن توافقًا مع وضع التوافق مع التطبيقات القديمة كما هو مطبّق من خلال الرمز المفتوح المصدر لنظام التشغيل Android الرئيسي. ويعني هذا أنّ عمليات تنفيذ الأجهزة يجب ألا تؤدي إلى تغيير المشغلات أو الحدود التي يتم عندها تفعيل وضع التوافق، ويجب ألا تغيّر سلوك وضع التوافق نفسه.
لوحة المفاتيح (القسم 7.2.1)
عمليات تنفيذ الأجهزة المحمولة:
- [H-0-1] يجب أن يتوافق مع تطبيقات محرر أسلوب الإدخال (IME) التابعة لجهات خارجية.
مفاتيح التنقل (القسم 7.2.3)
عمليات تنفيذ الأجهزة المحمولة:
-
يجب توفير [H-0-1] وظائف "المنزل" و"الأخيرة" و"الرجوع".
-
[H-0-2] يجب أن يتم إرسال كلٍ من حدث الضغط العادي والضغط مع الاستمرار لدالة "الرجوع" (
KEYCODE_BACK
) إلى التطبيق الذي تعمل في المقدّمة.
إدخال الشاشة التي تعمل باللمس (القسم 7.2.4)
عمليات تنفيذ الأجهزة المحمولة:
- [H-0-1] يجب أن يتوافق مع إدخال الشاشة التي تعمل باللمس.
مقياس التسارع (القسم 7.3.1)
عمليات تنفيذ الأجهزة المحمولة:
- [H-SR] يُنصَح بشدة بتضمين مقياس تسارع ثلاثي المحاور.
إذا كانت عمليات تنفيذ الأجهزة المحمولة باليد تتضمن مقياس تسارع ثلاثي المحاور:
- يجب أن يتمكّن [H-1-1] من الإبلاغ عن الأحداث التي تصل ترددها إلى 100 هرتز على الأقل.
الجيروسكوب (القسم 7.3.4)
إذا كانت عمليات تنفيذ الأجهزة المحمولة باليد تتضمن الجيروسكوب،:
- يجب أن يتمكّن [H-1-1] من الإبلاغ عن الأحداث التي تصل ترددها إلى 100 هرتز على الأقل.
أداة استشعار التقارب (القسم 7.3.8 )
عمليات تنفيذ الأجهزة المحمولة التي يمكن أن تُجري مكالمة صوتية وتحدّد أي قيمة أخرى غير PHONE_TYPE_NONE
في getPhoneType
:
- يجب أن تتضمن أداة استشعار التقارب.
أداة استشعار وضعية الجسم (القسم 7.3.12)
عمليات تنفيذ الأجهزة المحمولة:
- يُنصح باستخدامها لتثبيت أداة استشعار الوضعية بزاوية 6 درجات بحريّة.
البلوتوث (القسم 7.4.3)
عمليات تنفيذ الأجهزة المحمولة:
- يجب أن يكون الجهاز متوافقًا مع البلوتوث وتقنية Bluetooth LE.
توفير البيانات (القسم 7.4.7)
إذا كانت عمليات تنفيذ الأجهزة المحمولة باليد تتضمن اتصالاً تفرض تكلفة استخدام، سيحدث ما يلي:
- [H-1-1] يجب توفير وضع توفير البيانات.
الحد الأدنى من الذاكرة وسعة التخزين (القسم 7.6.1)
في حال كانت عمليات تنفيذ الأجهزة المحمولة تشير إلى توافق واجهة التطبيق الثنائية (ABI) مع 32 بت فقط:
-
[H-1-1] يجب أن يكون حجم الذاكرة المتاحة للنواة ومساحة المستخدم 416 ميغابايت على الأقل إذا كانت الشاشة التلقائية تستخدم درجات دقة المخزن المؤقت للإطارات تصل إلى qHD (مثل FWVGA).
-
[H-2-1] يجب أن يكون حجم الذاكرة المتاحة للنواة ومساحة المستخدم 592 ميغابايت على الأقل إذا كانت الشاشة التلقائية تستخدم درجات دقة المخزن المؤقت للإطارات تصل إلى HD+ (مثل HD أو WSVGA).
-
[H-3-1] يجب أن يكون حجم الذاكرة المتاحة للنواة ومساحة المستخدم 896 ميغابايت على الأقل إذا كانت الشاشة التلقائية تستخدم درجات دقة المخزن المؤقت للإطارات تصل إلى FHD (مثل WSXGA+ ).
-
[H-4-1] يجب أن يكون حجم الذاكرة المتاحة للنواة ومساحة المستخدم 1344 ميغابايت على الأقل إذا كانت الشاشة التلقائية تستخدم درجات دقة المخزن المؤقت للإطارات تصل إلى QUD (على سبيل المثال، QWXGA).
في حال كانت عمليات تنفيذ الأجهزة المحمولة تشير إلى توافقها مع واجهات التطبيق الثنائية (ABI) 32 بت و64 بت:
-
[H-5-1] يجب أن يكون حجم الذاكرة المتاحة للنواة ومساحة المستخدم 816 ميغابايت على الأقل إذا كانت الشاشة التلقائية تستخدم درجات دقة المخزن المؤقت للإطارات تصل إلى qHD (مثل FWVGA).
-
[H-6-1] يجب أن يكون حجم الذاكرة المتاحة للنواة ومساحة المستخدم 944 ميغابايت على الأقل إذا كانت الشاشة التلقائية تستخدم درجات دقة المخزن المؤقت للإطارات تصل إلى HD+ (مثل HD أو WSVGA).
-
[H-7-1] يجب أن يكون حجم الذاكرة المتاحة للنواة ومساحة المستخدم 1280 ميغابايت على الأقل إذا كانت الشاشة التلقائية تستخدم درجات دقة المخزن المؤقت للإطارات تصل إلى FHD (مثل WSXGA+ ).
-
[H-8-1] يجب أن يكون حجم الذاكرة المتاحة للنواة ومساحة المستخدم 1824 ميغابايت على الأقل إذا كانت الشاشة التلقائية تستخدم درجات دقة المخزن المؤقت للإطارات تصل إلى QUD (على سبيل المثال، QWXGA).
لاحظ أن "الذاكرة المتاحة للنواة ومساحة المستخدم" أعلاه تشير إلى مساحة الذاكرة المتوفرة بالإضافة إلى أي ذاكرة مخصصة من قبل لمكونات الأجهزة مثل الراديو والفيديو وما إلى ذلك، والتي لا تخضع لتحكم النواة في عمليات تنفيذ الأجهزة.
إذا كانت عمليات تنفيذ الأجهزة المحمولة باليد تتضمن ذاكرة أقل من أو تساوي 1 غيغابايت متوفرة للنواة ومساحة المستخدم، سيحدث ما يلي:
- [H-9-1] يجب أن يفصح عن علامة الميزة
android.hardware.ram.low
. - يجب أن يتوفّر في [H-9-2] مساحة تخزين غير متغيّرة تبلغ 1.1 غيغابايت على الأقل لبيانات التطبيق الخاصة (أي قسم "/data").
إذا كانت عمليات تنفيذ الأجهزة المحمولة باليد تتضمن ذاكرة أكبر من 1 غيغابايت متاحة للنواة ومساحة المستخدم، فسيحدث ما يلي:
- [H-10-1] يجب أن تتوفّر مساحة تخزين غير متطايرة تبلغ 4 غيغابايت على الأقل لبيانات التطبيق الخاصة (أي قسم "/data").
- يجب أن تشير إلى علامة الميزة
android.hardware.ram.normal
.
مساحة التخزين المشتركة للتطبيق (القسم 7.6.2)
عمليات تنفيذ الأجهزة المحمولة:
- [H-0-1] يجب ألا يتم توفير مساحة تخزين مشتركة للتطبيق أصغر من 1 غيبي بايت.
وضع جهاز USB الملحق (القسم 7.7.1)
عمليات تنفيذ الأجهزة المحمولة:
- يجب أن تتضمّن منفذ USB متوافقًا مع وضع الأجهزة الملحقة.
إذا كانت عمليات تنفيذ الأجهزة المحمولة باليد تتضمن منفذًا USB يتوافق مع وضع الأجهزة الملحقة، سيتم إجراء ما يلي:
- [H-1-1] يجب تنفيذ واجهة برمجة تطبيقات Android Open Accessory (AOA).*
الميكروفون (القسم 7.8.1)
عمليات تنفيذ الأجهزة المحمولة:
- [H-0-1] يجب أن يشتمل على ميكروفون.
إخراج الصوت (القسم 7.8.2)
عمليات تنفيذ الأجهزة المحمولة:
- يجب أن يحتوي [H-0-1] على إخراج صوتي ويشير إلى
android.hardware.audio.output
.
وضع الواقع الافتراضي (القسم 7.9.1)
إذا كانت عمليات تنفيذ الأجهزة المحمولة باليد تتضمن دعمًا لوضع الواقع الافتراضي (VR)، سيحدث ما يلي:
- [H-1-1] يجب أن يفصح عن الميزة
android.software.vr.mode
.*
إذا كانت عمليات تنفيذ الأجهزة تشير إلى ميزة android.software.vr.mode
، سيتم ما يلي:
- [H-2-1] يجب أن يحتوي على تطبيق ينفذ
android.service.vr.VrListenerService
يمكن أن تفعِّله تطبيقات الواقع الافتراضي عبرandroid.app.Activity#setVrModeEnabled
.*
الأداء العالي للواقع الافتراضي (القسم 7.9.2)
إذا كانت عمليات تنفيذ الأجهزة المحمولة متوافقة مع جميع المتطلبات للإعلان عن ميزة android.hardware.vr.high_performance
، سيتم إجراء ما يلي:
- [H-1-1] يجب أن يفصح عن علامة الميزة
android.hardware.vr.high_performance
.*
2.2.2. وسائط متعددة
ترميز الصوت (القسم 5.1.1)
يجب أن تتوافق عمليات تنفيذ الأجهزة المحمولة باليد مع ترميز الصوت التالي:
- [H-0-1] AMR-NB
- [H-0-2] AMR-WB
- [H-0-3] ملف تعريف MPEG-4 AAC (AAC LC)
- [H-0-4] ملف تعريف MPEG-4 HE AAC (AAC+ )
- [H-0-5] AAC ELD (معيار AAC منخفض ومحسّن)
فك ترميز الصوت (القسم 5.1.2)
يجب أن تتيح عمليات تنفيذ الأجهزة المحمولة باليد فك ترميز الصوت على النحو التالي:
- [H-0-1] AMR-NB
- [H-0-2] AMR-WB
ترميز الفيديو (القسم 5.2)
يجب أن تتوافق عمليات تنفيذ الأجهزة المحمولة باليد مع ترميز الفيديو التالي وإتاحتها للتطبيقات التابعة لجهات خارجية:
- [H-0-1] H.264 AVC
- [H-0-2] VP8
فك ترميز الفيديوهات (القسم 5.3)
يجب أن تتيح عمليات تنفيذ الأجهزة المحمولة يدويًا فك ترميز الفيديو التالي:
- [H-0-1] H.264 AVC
- [H-0-2] H.265 HEVC
- [H-0-3] MPEG-4 SP.
- [H-0-4] VP8.
- [H-0-5] VP9.
2.2.3. البرامج
توافق WebView (القسم 3.4.1)
عمليات تنفيذ الأجهزة المحمولة:
- يجب أن توفّر [H-0-1] تنفيذًا كاملاً لواجهة برمجة تطبيقات
android.webkit.Webview
.
توافق المتصفِّح (القسم 3.4.2)
عمليات تنفيذ الأجهزة المحمولة:
- [H-0-1] يجب أن يشتمل على تطبيق متصفح مستقل لتصفح الويب للمستخدم العام.
مشغّل التطبيقات (القسم 3.8.1)
عمليات تنفيذ الأجهزة المحمولة:
-
[H-SR] يُنصَح باستخدام مشغِّل تطبيقات تلقائي يتيح تثبيت الاختصارات والتطبيقات المصغّرة داخل التطبيق.
-
[H-SR] يُنصح بشدة بتنفيذ مشغّل تطبيقات تلقائي يوفّر إمكانية الوصول السريع إلى الاختصارات الإضافية التي تقدّمها التطبيقات التابعة لجهات خارجية من خلال واجهة برمجة تطبيقات ShortcutManager.
-
[H-SR] يُنصَح بشدة بتضمين تطبيق مشغّل تلقائي يعرض شارات لرموز التطبيقات.
التطبيقات المصغّرة (القسم 3.8.2)
عمليات تنفيذ الأجهزة المحمولة:
- [H-SR] يُنصَح باستخدامها بشدة لإتاحة التطبيقات المصغّرة التابعة لجهات خارجية.
الإشعارات (القسم 3.8.3)
عمليات تنفيذ الأجهزة المحمولة:
- [H-0-1] يجب أن تسمح للتطبيقات التابعة لجهات خارجية بإشعار المستخدمين بالأحداث المهمة من خلال صفوف واجهة برمجة التطبيقات
Notification
وNotificationManager
. - [H-0-2] يجب أن يكون متوافقًا مع الإشعارات المنسّقة.
- [H-0-3] يجب أن تتوفّر إشعارات التنبيه.
- [H-0-4] يجب أن يشتمل على مركز إشعارات، ما يوفر للمستخدم القدرة على التحكم مباشرةً في الإشعارات (على سبيل المثال، الرد أو التأجيل أو إغلاقها أو حظرها) من خلال عناصر ومزايا المستخدم مثل أزرار الإجراءات أو لوحة التحكم كما هو مُطبق في AOSP.
البحث (القسم 3.8.4)
عمليات تنفيذ الأجهزة المحمولة:
- [H-SR] يُنصح بشدة بتفعيل مساعد على الجهاز للتعامل مع إجراء المساعدة.
التحكّم في وسائط شاشة القفل (القسم 3.8.10)
إذا كانت عمليات تنفيذ أجهزة Android المحمولة تتوافق مع شاشة القفل، سيتم إجراء ما يلي:
- [H-1-1] يجب عرض إشعارات شاشة القفل، بما في ذلك نموذج إشعار الوسائط.
إدارة الجهاز (القسم 3.9)
إذا كانت عمليات تنفيذ الأجهزة المحمولة باليد تتيح شاشة قفل آمنة:
- [H-1-1] يجب أن ينفذ المجموعة الكاملة من سياسات إدارة الأجهزة المحددة في مستندات حزمة تطوير البرامج (SDK) لنظام التشغيل Android.
أدوات تسهيل الاستخدام (القسم 3.10)
عمليات تنفيذ الأجهزة المحمولة:
-
[H-SR] يجب أن يتوافق مع خدمات تسهيل الاستخدام التابعة لجهات خارجية.
-
[H-SR] يُنصح بشدة بأن يتم التحميل المُسبق لخدمات تسهيل الاستخدام على الجهاز التي يمكن مقارنتها بخدمات تسهيل الاستخدام "الوصول عبر مفتاح تحكّم" وTalkBack (للغات التي يوفّرها محرك تحويل النص إلى كلام) المُحمَّل مسبقًا) أو تجاوزها، كما هو موضّح في مشروع TalkBack المفتوح المصدر.
تحويل النص إلى كلام (القسم 3.11)
عمليات تنفيذ الأجهزة المحمولة:
-
[H-0-1] يجب أن يتيح تثبيت محركات تحويل النص إلى كلام التابعة لجهات خارجية.
-
[H-SR] يُنصَح بشدة بتضمين محرك تقنية تحويل النص إلى كلام (TTS) الذي يتوافق مع اللغات المتاحة على الجهاز.
الإعدادات السريعة (القسم 3.13)
عمليات تنفيذ الأجهزة المحمولة:
- [H-SR] يُنصح بشدة بتضمين مكوِّن واجهة المستخدم للإعدادات السريعة.
إقران الأجهزة المصاحبة (القسم 3.15)
إذا أشارت عمليّات تنفيذ أجهزة Android المحمولة إلى توافقها مع FEATURE_BLUETOOTH
أو FEATURE_WIFI
، سيكونان:
- [H-1-1] يجب أن تتوافق مع ميزة إقران الجهاز المصاحب.
2.2.4. الأداء والقوة
الاتساق في تجربة المستخدم (القسم 8.1)
لعمليات تنفيذ الأجهزة المحمولة:
- [H-0-1] وقت استجابة ثابت للإطار: يجب ألا يحدث وقت استجابة غير متسق أو تأخير في عرض اللقطات أكثر من 5 لقطات في الثانية، ويجب أن يقل عن 1 لقطة في الثانية.
- [H-0-2] وقت استجابة واجهة المستخدم: يجب أن تضمن عمليات تنفيذ الأجهزة حصول المستخدم على وقت استجابة سريع من خلال تمرير قائمة تضم 10 آلاف إدخال في القائمة على النحو المحدّد في "مجموعة اختبار التوافق مع Android" (CTS) في أقل من 36 ثانية.
- [H-0-3] تبديل المهام: عند تشغيل عدة تطبيقات، يجب أن تستغرق إعادة تشغيل تطبيق قيد التشغيل بعد تشغيله أقل من ثانية واحدة.
أداء الوصول إلى إدخال/إخراج الملف (القسم 8.2)
عمليات تنفيذ الأجهزة المحمولة:
- [H-0-1] يجب أن يضمن أداء كتابة تسلسلي لا يقل عن 5 ميغابايت/ثانية.
- [H-0-2] يجب أن يضمن أداء كتابة عشوائي لا يقل عن 0.5 ميغابايت/ثانية.
- [H-0-3] يجب أن يضمن أداء قراءة تسلسلي لا يقل عن 15 ميغابايت/ثانية.
- [H-0-4] يجب أن يضمن أداء قراءة عشوائي لا يقل عن 3.5 ميغابايت/ثانية.
أوضاع توفير الطاقة (القسم 8.3)
لعمليات تنفيذ الأجهزة المحمولة:
- [H-0-1] يجب أن تكون جميع التطبيقات المستثناة من وضعَي توفير الطاقة في وضع الاستعداد للتطبيقات و"القيلولة" مرئية للمستخدم النهائي.
- [H-0-2] يجب ألا تنحرف خوارزميات التشغيل والصيانة والاستيقاظ واستخدام إعدادات النظام العامة لوضعي وضع الاستعداد للتطبيقات والقيلولة عن المشروع المفتوح المصدر لنظام Android.
محاسبة استهلاك الطاقة (الأقسام 8.4)
عمليات تنفيذ الأجهزة المحمولة:
- يجب أن يوفّر [H-0-1] ملفًّا شخصيًا للطاقة لكل مكوّن يحدّد قيمة الاستهلاك الحالية لكل مكوّن من مكونات الجهاز واستنزاف البطارية التقريبي الناتج عن المكوّنات بمرور الوقت كما هو موضّح في موقع "المشروع المفتوح المصدر لنظام Android".
- [H-0-2] يجب أن يبلغ عن جميع قيم استهلاك الطاقة بالمللي أمبير في الساعة (mAh).
- [H-0-3] يجب الإبلاغ عن استهلاك طاقة وحدة المعالجة المركزية (CPU) حسب المعرّف الفريد الخاص بكل عملية. يلبي "المشروع المفتوح المصدر لنظام Android" المتطلّبات من خلال تنفيذ وحدة نواة
uid_cputime
. - [H-0-4] يجب إتاحة استخدام الطاقة هذا من خلال أمر Shell
adb shell dumpsys batterystats
لمطوِّر التطبيق. - يجب أن يُنسب إلى مكون الجهاز نفسه إذا لم يتمكن من عزو استخدام طاقة مكون الجهاز إلى أحد التطبيقات.
إذا كانت عمليات تنفيذ الأجهزة المحمولة باليد تتضمن شاشة أو إخراج فيديو، سيتم إجراء ما يلي:
- يجب أن يفي [H-1-1] بهدف
android.intent.action.POWER_USAGE_SUMMARY
وأن يعرض قائمة إعدادات توضح استخدام الطاقة هذا.
2.2.5. نموذج الأمان
الأذونات (الأقسام 9.1)
عمليات تنفيذ الأجهزة المحمولة:
- [H-0-1] يجب أن يسمح للتطبيقات التابعة لجهات خارجية بالوصول إلى إحصاءات الاستخدام من خلال إذن
android.permission.PACKAGE_USAGE_STATS
وتوفير آلية يمكن للمستخدمين الوصول إليها لمنح أو إبطال أذونات الوصول إلى هذه التطبيقات استجابةً لهدفandroid.settings.ACTION_USAGE_ACCESS_SETTINGS
.
2.3. متطلبات التلفزيون
يشير جهاز تلفزيون Android إلى استخدام جهاز Android عبارة عن واجهة ترفيهية لاستخدام الوسائط الرقمية والأفلام والألعاب والتطبيقات و/أو البث التلفزيوني المباشر للمستخدمين الذين يجلسون على بُعد عشرة أقدام تقريبًا (واجهة مستخدم بطول 10 أقدام أو "مبطّنة").
يتم تصنيف عمليات تنفيذ أجهزة Android كأجهزة تلفزيون إذا كانت تستوفي جميع المعايير التالية:
- توفير آلية للتحكم عن بُعد في واجهة المستخدم المعروضة على الشاشة والتي قد تكون على بعد عشرة أقدام من المستخدم.
- أن تحتوي على شاشة عرض مضمَّنة يزيد طولها القطري عن 24 بوصة أو تتضمّن منفذًا لإخراج الفيديو، مثل VGA أو HDMI أو DisplayPort أو منفذ لاسلكي للعرض.
تختصّ المتطلبات الإضافية الواردة في بقية هذا القسم بعمليات تنفيذ أجهزة Android TV.
2.3.1. الأجهزة
التنقّل بدون لمس (القسم 7.2.2)
عمليات تنفيذ أجهزة التلفزيون:
- [T-0-1] يجب أن يتوافق مع D-pad.
مفاتيح التنقل (القسم 7.2.3)
عمليات تنفيذ أجهزة التلفزيون:
- [T-0-1] يجب توفير وظيفتَي "الصفحة الرئيسية" و"رجوع"
- [T-0-2] يجب أن يتم إرسال كلٍ من حدث الضغط العادي والضغط المطوّل للدالة "رجوع" (
KEYCODE_BACK
) إلى التطبيق الذي تعمل في المقدّمة.
عمليات ربط الأزرار (القسم 7.2.6.1)
عمليات تنفيذ أجهزة التلفزيون:
- [T-0-1] يجب أن يشمل التوافق مع وحدات التحكّم في الألعاب وأن يتم الإعلان عن علامة ميزة
android.hardware.gamepad
.
وحدة التحكّم عن بُعد (القسم 7.2.7)
عمليات تنفيذ أجهزة التلفزيون:
- يجب توفير وحدة تحكُّم عن بُعد يمكن للمستخدمين من خلالها الوصول إلى إدخالات التنقُّل بدون لمس ومفاتيح التنقّل الأساسية.
الجيروسكوب (القسم 7.3.4)
إذا كانت عمليات تنفيذ أجهزة التلفزيون تتضمّن جيروسكوب، يجب:
- يجب أن يكون بإمكان [T-1-1] الإبلاغ عن الأحداث التي تصل ترددها إلى 100 هرتز على الأقل.
البلوتوث (القسم 7.4.3)
عمليات تنفيذ أجهزة التلفزيون:
- [T-0-1] يجب أن يتوافق مع Bluetooth وBluetooth LE.
الحد الأدنى من الذاكرة وسعة التخزين (القسم 7.6.1)
عمليات تنفيذ أجهزة التلفزيون:
- يجب أن تتوفّر مساحة تخزين غير متغيّرة في [T-0-1] بحجم 4 غيغابايت على الأقل لبيانات التطبيق الخاصة (أي قسم "/data").
- [T-0-2] يجب أن تعرض القيمة "صحيح" مع
ActivityManager.isLowRamDevice()
عندما تتوفّر مساحة أقل من 1 غيغابايت للذاكرة للنواة (kernel) ومساحة المستخدم.
الميكروفون (القسم 7.8.1)
عمليات تنفيذ أجهزة التلفزيون:
- يجب أن تتضمن ميكروفونًا.
إخراج الصوت (القسم 7.8.2)
عمليات تنفيذ أجهزة التلفزيون:
- يجب أن يحتوي [T-0-1] على إخراج صوتي ويشير إلى
android.hardware.audio.output
.
2.3.2 وسائط متعددة
ترميز الصوت (القسم 5.1)
يجب أن تتوافق تطبيقات أجهزة التلفزيون مع ترميز الصوت التالي:
- [T-0-1] ملف تعريف MPEG-4 AAC (AAC LC)
- [T-0-2] ملف تعريف MPEG-4 HE AAC (AAC+ )
- [T-0-3] AAC ELD (معيار AAC منخفض ومحسّن)
ترميز الفيديو (القسم 5.2)
يجب أن تتوافق تطبيقات أجهزة التلفزيون مع ترميز الفيديو التالي:
- [T-0-1] H.264 AVC
- [T-0-2] VP8
H-264 (القسم 5.2.2)
عمليات تنفيذ أجهزة التلفزيون هي:
- [T-SR] يُنصح بشدة باعتماد ترميز H.264 للفيديوهات بدقة 720p و1080p.
- [T-SR] يُنصح بشدة باعتماد ترميز H.264 للفيديوهات بدقة 1080p بمعدّل 30 لقطة في الثانية.
فك ترميز الفيديوهات (القسم 5.3)
يجب أن تتيح عمليات تنفيذ أجهزة التلفزيون فك ترميز الفيديو التالي:
- [T-0-1] H.264 AVC
- [T-0-2] H.265 HEVC
- [T-0-3] MPEG-4 SP
- [T-0-4] VP8
- [T-0-5] VP9
ننصح بشدة بأن تكون عمليات تنفيذ أجهزة التلفزيون لإتاحة فك ترميز الفيديوهات التالية:
- [T-SR] MPEG-2
H.264 (القسم 5.3.4)
إذا كانت عمليات تنفيذ أجهزة التلفزيون تتيح برامج فك ترميز H.264، سيتم إجراء ما يلي:
- [T-1-1] يجب أن يتوافق مع المستوى 4.2 من الملف الشخصي العالي الدقة والملف الشخصي لفك ترميز المحتوى بدقة عالية 1080p (بسرعة 60 لقطة في الثانية).
- يجب أن تتوفر في [T-1-2] إمكانية فك ترميز الفيديوهات باستخدام ملفات شخصية بدقة عالية كما هو موضح في الجدول التالي، وتم ترميزها باستخدام الملف الشخصي الأساسي أو الملف الشخصي الرئيسي أو مستوى الملف الشخصي العالي المستوى 4.2.
H.265 (HEVC) (الفقرة 5.3.5)
إذا كانت عمليات تنفيذ أجهزة التلفزيون تتيح برنامج ترميز H.265 وملف فك ترميز المحتوى بدقة عالية 1080p، سيتم إجراء ما يلي:
- [T-1-1] يجب أن تتوافق مع الفئة الرئيسية للملف الشخصي الرئيسي 4.1.
- [T-SR] يُنصح بشدة باعتماد عدد لقطات في الثانية للفيديو بمعدل 60 لقطة في الثانية للمحتوى بدقة عالية 1080p.
إذا كانت عمليات تنفيذ أجهزة التلفزيون تتيح برنامج ترميز H.265 والملف الشخصي لفك ترميز المحتوى بدقة فائقة، يجب مراعاة ما يلي:
- [T-2-1] يجب أن يتيح برنامج الترميز استخدام الملف الشخصي للفئة الرئيسية من المستوى 5 من المستوى الرئيسي.
VP8 (القسم 5.3.6)
إذا كانت عمليات تنفيذ أجهزة التلفزيون تتوافق مع برنامج ترميز VP8، سيتم إجراء ما يلي:
- [T-1-1] يجب أن يتوافق مع الملف الشخصي لفك ترميز المحتوى بدقة عالية 1080p60.
إذا كانت عمليات تنفيذ أجهزة التلفزيون تتوافق مع برنامج ترميز VP8 وتتوافق مع دقة 720p، يجب:
- [T-2-1] يجب أن يتوافق مع الملف الشخصي لفك ترميز المحتوى بدقة عالية 720p60.
VP9 (القسم 5.3.7)
إذا كانت عمليات تنفيذ أجهزة التلفزيون تتوافق مع برنامج ترميز VP9 وفك ترميز الفيديو بدقة فائقة، سيتم إجراء ما يلي:
- [T-1-1] يجب أن تتوافق مع عمق ألوان 8 بت ويجب أن تتوافق مع VP9 Profile 2 (10 بت).
إذا كانت عمليات تنفيذ أجهزة التلفزيون تتوافق مع برنامج ترميز VP9 وفك ترميز الملف الشخصي بدقة 1080p وأجهزة VP9، سيتم إجراء ما يلي:
- [T-2-1] يجب أن يكون متوافقًا مع 60 لقطة في الثانية لدقة 1080p.
الوسائط الآمنة (القسم 5.8)
إذا كانت الأجهزة المستخدَمة في التطبيق هي أجهزة تلفزيون Android وتتوافق مع الدقة 4K، سيتم إجراء ما يلي:
- [T-1-1] يجب أن يتوافق مع بروتوكول HDCP 2.2 مع جميع الشاشات الخارجية السلكية.
إذا كانت الفيديوهات التي تستخدم أجهزة التلفزيون لا تتيح الدقة 4K، يُرجى اتّباع الخطوات التالية:
- [T-2-1] يجب أن يتوافق مع HDCP 1.4 لجميع الشاشات الخارجية السلكية.
عمليات تنفيذ أجهزة التلفزيون:
- [T-SR] يُنصح بشدة بإتاحة فك ترميز أحداث البث الآمنة في الوقت نفسه. على الأقل، يُنصح بشدة بفك ترميز رسالتَي بث متزامنتَين.
مستوى صوت إخراج الصوت (القسم 5.5.3)
عمليات تنفيذ أجهزة التلفزيون:
- يجب أن يشمل [T-0-1] إتاحة مستوى الصوت الرئيسي للنظام وتخفيف مستوى صوت إخراج الصوت الرقمي في مخرجات الصوت المتوافقة، باستثناء إخراج العبور الصوتي المضغوط (الذي لا يتم فيه فك ترميز الصوت على الجهاز).
2.3.3. البرامج
عمليات تنفيذ أجهزة التلفزيون:
- يجب أن يفصح [T-0-1] عن السمتَين
android.software.leanback
وandroid.hardware.type.television
.
التوافق مع WebView (القسم 3.4.1)
عمليات تنفيذ أجهزة التلفزيون:
- يجب أن يقدّم [T-0-1] تنفيذًا كاملاً لواجهة برمجة تطبيقات
android.webkit.Webview
.
التحكّم في وسائط شاشة القفل (القسم 3.8.10)
إذا كانت عمليات تنفيذ أجهزة Android TV تتوافق مع شاشة القفل، سيتم إجراء ما يلي:
- [T-1-1] يجب عرض إشعارات شاشة القفل، بما في ذلك نموذج إشعار الوسائط.
النوافذ المتعددة (القسم 3.8.14)
عمليات تنفيذ أجهزة التلفزيون:
- [T-SR] يُنصح بشدة بإتاحة النوافذ المتعددة في وضع "نافذة ضمن النافذة" (PIP).
أدوات تسهيل الاستخدام (القسم 3.10)
عمليات تنفيذ أجهزة التلفزيون:
-
[T-SR] يجب أن تتوافق مع خدمات تسهيل الاستخدام التابعة لجهات خارجية.
-
[T-SR] ننصح بشدة بإجراء عمليات تنفيذ على أجهزة تلفزيون Android لتحميل خدمات تسهيل الاستخدام مسبقًا على الجهاز مقارنةً بوظائف "الوصول عبر مفتاح تحكّم" وTalkBack (للغات التي يوفّرها محرك تحويل النص إلى كلام) المحمَّل مسبقًا) أو تجاوزها.
تحويل النص إلى كلام (القسم 3.11)
إذا كانت عمليات تنفيذ الأجهزة تُبلغ عن الميزة android.hardware.audio.output، سيتم إجراء ما يلي:
-
[T-SR] يُنصَح بشدة بتضمين محرك تقنية "تحويل النص إلى كلام" متوافق مع اللغات المتاحة على الجهاز.
-
[T-0-1] يجب أن يتيح تثبيت محركات تحويل النص إلى كلام التابعة لجهات خارجية.
إطار عمل إدخال التلفزيون (الفقرة 3.12)
عمليات تنفيذ أجهزة التلفزيون:
- [T-0-1] يجب أن يتوافق مع إطار عمل إدخال التلفزيون.
2.2.4. الأداء والقوة
الاتساق في تجربة المستخدم (القسم 8.1)
لعمليات تنفيذ أجهزة التلفزيون:
- [T-0-1] وقت استجابة ثابت للإطار: يجب ألا يحدث وقت استجابة غير متسق أو تأخير في عرض اللقطات أكثر من 5 لقطات في الثانية، ويجب أن يقل عن 1 لقطة في الثانية.
أداء الوصول إلى إدخال/إخراج الملف (القسم 8.2)
عمليات تنفيذ أجهزة التلفزيون:
- [T-0-1] يجب أن يضمن أداء كتابة تسلسلي لا يقل عن 5 ميغابايت/ثانية.
- [T-0-2] يجب أن يضمن أداء كتابة عشوائي لا يقل عن 0.5 ميغابايت/ثانية.
- [T-0-3] يجب أن يضمن أداء قراءة تسلسلي لا يقل عن 15 ميغابايت/ثانية.
- [T-0-4] يجب أن يضمن أداء قراءة عشوائي لا يقل عن 3.5 ميغابايت/ثانية.
أوضاع توفير الطاقة (القسم 8.3)
لعمليات تنفيذ أجهزة التلفزيون:
- [T-0-1] يجب أن تكون جميع التطبيقات المستثناة من وضعَي توفير الطاقة في وضع الاستعداد للتطبيقات و"القيلولة" مرئية للمستخدم النهائي.
- [T-0-2] يجب ألا تنحرف خوارزميات التشغيل والصيانة والاستيقاظ واستخدام إعدادات النظام العامة لوضعي وضع الاستعداد للتطبيقات والقيلولة عن المشروع المفتوح المصدر لنظام Android.
محاسبة استهلاك الطاقة (الأقسام 8.4)
عمليات تنفيذ أجهزة التلفزيون:
- يجب أن يوفّر [T-0-1] ملفًا شخصيًا للطاقة لكل مكوّن يحدّد قيمة الاستهلاك الحالية لكل مكوّن من مكونات الجهاز واستنزاف البطارية التقريبي الناتج عن تلك المكوّنات بمرور الوقت كما هو موضّح في موقع "المشروع المفتوح المصدر لنظام Android".
- [T-0-2] يجب أن يبلغ عن جميع قيم استهلاك الطاقة بالمللي أمبير في الساعة (mAh).
- [T-0-3] يجب الإبلاغ عن استهلاك طاقة وحدة المعالجة المركزية (CPU) حسب المعرّف الفريد الخاص بكل عملية. يلبي "المشروع المفتوح المصدر لنظام Android" المتطلّبات من خلال تنفيذ وحدة نواة
uid_cputime
. - يجب أن يُنسب إلى مكون الجهاز نفسه إذا لم يتمكن من عزو استخدام طاقة مكون الجهاز إلى أحد التطبيقات.
- [T-0-4] يجب إتاحة استخدام الطاقة هذا من خلال أمر Shell
adb shell dumpsys batterystats
لمطوِّر التطبيق.
2.4. متطلبات المشاهدة
يشير جهاز Android Watch إلى تصميم جهاز Android الذي يتم ارتداؤه على الجسم، ربما على المعصم.
يتم تصنيف عمليات تنفيذ أجهزة Android كساعة إذا استوفت جميع المعايير التالية:
- امتلاك شاشة بطول قطري فعلي يتراوح بين 1.1 و2.5 بوصة
- توفُّر آلية لارتداء الجهاز على الجسم
إنّ المتطلبات الإضافية الواردة في بقية هذا القسم خاصة بعمليات تنفيذ أجهزة Android Watch.
2.4.1. الأجهزة
حجم الشاشة (القسم 7.1.1.1)
طريقة تنفيذ أجهزة الساعة:
- [W-0-1] يجب أن يحتوي على شاشة ذات حجم قُطري يتراوح بين 1.1 و2.5 بوصة.
مفاتيح التنقل (القسم 7.2.3)
طريقة تنفيذ أجهزة الساعة:
- يجب أن تتوفّر في [W-0-1] وظيفة "الصفحة الرئيسية" للمستخدم، ووظيفة "الرجوع" باستثناء الحالات التي تكون فيها في "
UI_MODE_TYPE_WATCH
".
إدخال الشاشة التي تعمل باللمس (القسم 7.2.4)
طريقة تنفيذ أجهزة الساعة:
- [W-0-2] يجب أن يسمح بإدخال الشاشة التي تعمل باللمس.
مقياس التسارع (القسم 7.3.1)
طريقة تنفيذ أجهزة الساعة:
- [W-SR] يُنصَح بشدة بتضمين مقياس تسارع ثلاثي المحاور.
البلوتوث (القسم 7.4.3)
طريقة تنفيذ أجهزة الساعة:
- [W-0-1] يجب أن يكون متوافقًا مع البلوتوث.
الحد الأدنى من الذاكرة وسعة التخزين (القسم 7.6.1)
طريقة تنفيذ أجهزة الساعة:
- يجب أن يحتوي [W-0-1] على ما لا يقل عن 1 غيغابايت من مساحة التخزين غير المتطايرة للبيانات الخاصة بالتطبيقات (أي قسم "/data")
- [W-0-2] يجب أن تتوفر ذاكرة بحجم 416 ميغابايت على الأقل للنواة ومساحة المستخدم.
الميكروفون (القسم 7.8.1)
طريقة تنفيذ أجهزة الساعة:
- [W-0-1] يجب أن يشتمل على ميكروفون.
إخراج الصوت (القسم 7.8.1)
طريقة تنفيذ أجهزة الساعة:
- قد يلزم ذلك لكن من المفترض ألا يحتوي على إخراج صوتي.
2.4.2 وسائط متعددة
ما مِن متطلّبات إضافية.
2.4.3. البرامج
طريقة تنفيذ أجهزة الساعة:
- [W-0-1] يجب أن يفصح عن الميزة android.hardware.type.watch.
- [W-0-2] يجب أن يكون متوافقًا مع uiMode = UI_mode_TYPE_watch.
البحث (القسم 3.8.4)
طريقة تنفيذ أجهزة الساعة:
- [W-SR] يُنصح بشدة بتفعيل مساعد على الجهاز للتعامل مع إجراء المساعدة.
أدوات تسهيل الاستخدام (القسم 3.10)
ساعات تنفيذ الأجهزة التي تشير إلى علامة ميزة android.hardware.audio.output
:
-
[W-1-1] يجب أن يتوافق مع خدمات تسهيل الاستخدام التابعة لجهات خارجية.
-
[W-SR] يُنصح بشدة بأن يتم التحميل المُسبق لخدمات تسهيل الاستخدام على الجهاز التي يمكن مقارنتها بخدمات تسهيل الاستخدام "الوصول عبر مفتاح تحكّم" وTalkBack (للغات التي يوفّرها محرك تحويل النص إلى كلام) المُحمَّل مسبقًا) أو تجاوزها، كما هو موضّح في مشروع TalkBack المفتوح المصدر.
تحويل النص إلى كلام (القسم 3.11)
إذا كانت عمليات تنفيذ جهاز الساعة تعرض الميزة android.hardware.audio.output، سيتم إجراء ما يلي:
-
[W-SR] يُنصَح بشدة بتضمين محرك تقنية تحويل النص إلى كلام (TTS) الذي يتوافق مع اللغات المتاحة على الجهاز.
-
[W-0-1] يجب أن يتيح تثبيت محركات تحويل النص إلى كلام التابعة لجهات خارجية.
2.5. متطلبات السيارات
يشير مصطلح استخدام Android Automotive إلى الوحدة الرئيسية للمركبة التي تعمل بنظام التشغيل Android كنظام تشغيل لجزء من النظام و/أو وظائف الترفيه والمعلومات.
تُصنَّف عمليات تنفيذ أجهزة Android على أنّها نظام Automotive إذا أعلنت عن الميزة android.hardware.type.automotive
أو استوفت جميع المعايير التالية.
- أن تكون مضمَّنة كجزء من مركبة سيارة أو قابلة للتوصيل بها
- استخدام شاشة في صف مقعد السائق باعتبارها شاشة العرض الأساسية
إنّ المتطلبات الإضافية الواردة في بقية هذا القسم خاصة بعمليات تنفيذ أجهزة Android Automotive.
2.5.1. الأجهزة
حجم الشاشة (القسم 7.1.1.1)
عمليات تنفيذ أجهزة السيارات:
- [A-0-1] يجب أن تحتوي على شاشة لا يقل حجمها عن 6 بوصات من الحجم القطري الفعلي.
- [A-0-2] يجب أن يتضمن تنسيق حجم الشاشة 750 بكسل مستقل الكثافة × 480 بكسل مستقل الكثافة على الأقل
مفاتيح التنقل (القسم 7.2.3)
عمليات تنفيذ أجهزة السيارات:
- [A-0-1] يجب أن توفر وظيفة الصفحة الرئيسية وقد توفر وظيفتي الرجوع والوظيفة مؤخرًا.
- [A-0-2] يجب أن يتم إرسال كلٍ من حدث الضغط العادي والضغط المطوّل للدالة "رجوع" (
KEYCODE_BACK
) إلى التطبيق الذي تعمل في المقدّمة.
مقياس التسارع (القسم 7.3.1)
عمليات تنفيذ أجهزة السيارات:
- [A-SR] يُنصح بشدة بتضمين مقياس تسارع ثلاثي المحاور.
إذا كانت عمليات تنفيذ أجهزة السيارات تتضمّن مقياس تسارع ثلاثي المحاور:
- يجب أن يتمكّن [A-1-1] من الإبلاغ عن الأحداث بمعدل تكرار لا يقل عن 100 هرتز.
- [A-1-2] يجب أن يتوافق مع نظام إحداثيات أداة استشعار السيارة في Android.
نظام تحديد المواقع العالمي (GPS) (القسم 7.3.3)
إذا كانت عمليات تنفيذ أجهزة السيارات تتضمّن مستقبِل نظام تحديد المواقع العالمي (GPS)/نظام GNSS (نظام تحديد المواقع العالمي (GPS)) وتُبلغ التطبيقات عن هذه الإمكانية من خلال علامة الميزة android.hardware.location.gps
:
- [A-1-1] يجب أن يكون إنشاء تقنية GNSS هو العام "2017" أو العام الأحدث.
الجيروسكوب (القسم 7.3.4)
إذا كانت عمليات تنفيذ أجهزة Automotive تتضمن جيروسكوب، سيتم إجراء ما يلي:
- يجب أن يتمكّن [A-1-1] من الإبلاغ عن الأحداث بمعدل تكرار لا يقل عن 100 هرتز.
أجهزة استشعار Android Automotive فقط (الفقرة 7.3.11) الترس الحالي (القسم 7.3.11.1)
عمليات تنفيذ أجهزة السيارات:
- يجب توفير المعدات الحالية مثل
SENSOR_TYPE_GEAR
.
"الوضع الليلي" النهاري (القسم 7.3.11.2)
عمليات تنفيذ أجهزة السيارات:
- [A-0-1] يجب أن يتوافق مع وضع اليوم/الليل المحدد على أنّه
SENSOR_TYPE_NIGHT
. - [A-0-2] يجب أن تكون قيمة العلامة
SENSOR_TYPE_NIGHT
متسقة مع وضع النهار والليل في لوحة البيانات، ويجب أن تستند إلى إدخال أداة استشعار الضوء المحيط. - قد تكون أداة استشعار الإضاءة المحيطة المحيطة متطابقة مع مقياس الصور.
حالة القيادة (القسم 7.3.11.3)
عمليات تنفيذ أجهزة السيارات:
- [A-0-1] يجب أن تكون حالة القيادة متاحة على أنّها
SENSOR_TYPE_DRIVING_STATUS
، مع قيمة تلقائية تبلغDRIVE_STATUS_UNRESTRICTED
عندما تكون المركبة متوقفة بالكامل وتوقفت عن طريقها. تتحمّل الشركات المصنّعة للأجهزة مسؤولية ضبط "SENSOR_TYPE_DRIVING_STATUS
" بما يتوافق مع جميع القوانين واللوائح التي تنطبق على الأسواق التي يتم شحن المنتج فيها.
سرعة العجلة (القسم 7.3.11.4)
عمليات تنفيذ أجهزة السيارات:
- [A-0-1] يجب أن تحدّد سرعة المركبة
SENSOR_TYPE_CAR_SPEED
.
البلوتوث (القسم 7.4.3)
عمليات تنفيذ أجهزة السيارات:
-
[A-0-1] يجب أن يتوافق مع Bluetooth ويجب أن يتوافق مع Bluetooth LE.
-
[A-0-2] يجب أن تتيح عمليات تنفيذ Android Automotive استخدام ملفات البلوتوث التالية:
- إجراء المكالمات الهاتفية من خلال ملف تعريف بدون لمس الجهاز (HFP)
- تشغيل الوسائط باستخدام ملف تعريف توزيع الصوت (A2DP)
- التحكّم في تشغيل الوسائط من خلال ملف تعريف التحكّم عن بُعد (AVRCP).
- مشاركة جهات الاتصال باستخدام الملف الشخصي للدخول إلى دفتر الهاتف (PBAP)
- يجب إتاحة ملف الوصول إلى الرسائل (MAP).
الحد الأدنى لإمكانات الشبكة (القسم 7.4.5)
عمليات تنفيذ أجهزة السيارات:
- يجب أن تتضمّن هذه السياسة إمكانية استخدام اتصال البيانات المستنِد إلى شبكة الجوّال.
الحد الأدنى من الذاكرة وسعة التخزين (القسم 7.6.1)
عمليات تنفيذ أجهزة السيارات:
- يجب أن تتوفّر مساحة تخزين غير متغيّرة في [A-0-1] بحجم 4 غيغابايت على الأقل لبيانات التطبيق الخاصة (أي قسم "/data").
وضع جهاز USB الملحق (القسم 7.7.1)
عمليات تنفيذ أجهزة السيارات:
- يجب أن تتضمّن منفذ USB متوافقًا مع وضع الأجهزة الملحقة.
الميكروفون (القسم 7.8.1)
عمليات تنفيذ أجهزة السيارات:
- [A-0-1] يجب أن يتضمن ميكروفون.
إخراج الصوت (القسم 7.8.2)
عمليات تنفيذ أجهزة السيارات:
- يجب أن يحتوي [A-0-1] على إخراج صوتي ويشير إلى
android.hardware.audio.output
.
2.5.2 وسائط متعددة
ترميز الصوت (القسم 5.1)
يجب أن تدعم عمليات تنفيذ الأجهزة في السيارات الترميز الصوتي التالي:
- [A-1-1] ملف تعريف MPEG-4 AAC (AAC LC)
- [A-1-2] ملف تعريف MPEG-4 HE AAC (AAC+ )
- [A-1-3] AAC ELD (معيار AAC منخفض ومحسّن)
ترميز الفيديو (القسم 5.2)
يجب أن تدعم عمليات تنفيذ الأجهزة في السيارات ترميز الفيديو التالي:
- [A-0-1] H.264 AVC
- [A-0-2] VP8
فك ترميز الفيديوهات (القسم 5.3)
يجب أن تتيح عمليات تنفيذ أجهزة السيارات استخدام فك ترميز الفيديو التالي:
- [A-0-1] H.264 AVC
- [A-0-2] MPEG-4 SP
- [A-0-3] VP8
- [A-0-4] VP9
ننصح بشدة بأن تكون عمليات تنفيذ أجهزة السيارات متوافقة مع فك ترميز الفيديوهات التالية:
- [A-SR] H.265 HEVC
2.5.3. البرامج
عمليات تنفيذ أجهزة السيارات:
- [A-0-1] يجب أن يفصح عن الميزة android.hardware.type.automotive.
- [A-0-2] يجب أن يكون متوافقًا مع uiMode = UI_mode_TYPE_CAR.
- [A-0-3] يجب أن تتوافق عمليات تنفيذ Android Automotive مع جميع واجهات برمجة التطبيقات العامة ضِمن مساحة الاسم
android.car.*
.
توافق WebView (القسم 3.4.1)
عمليات تنفيذ أجهزة السيارات:
- يجب أن يقدّم [A-0-1] تنفيذًا كاملاً لـ
android.webkit.Webview API
.
الإشعارات (القسم 3.8.3)
عمليات تنفيذ أجهزة Android Automotive:
- [A-0-1] يجب أن يعرض الإشعارات التي تستخدم
Notification.CarExtender
API عندما تطلب تطبيقات تابعة لجهات خارجية.
البحث (القسم 3.8.4)
عمليات تنفيذ أجهزة السيارات:
- [A-0-1] يجب تنفيذ مساعد على الجهاز للتعامل مع إجراء المساعدة.
واجهة مستخدم الوسائط (القسم 3.14)
عمليات تنفيذ أجهزة السيارات:
- [A-0-1] يجب أن يشتمل على إطار عمل لواجهة المستخدم من أجل دعم التطبيقات التابعة لجهات خارجية باستخدام واجهات برمجة تطبيقات الوسائط كما هو موضّح في الفقرة 3.14.
2.2.4. الأداء والقوة
أوضاع توفير الطاقة (القسم 8.3)
لعمليات تنفيذ أجهزة Automotive:
- [A-0-1] يجب أن تكون جميع التطبيقات المستثناة من وضعَي توفير الطاقة في وضع الاستعداد للتطبيقات و"القيلولة" مرئية للمستخدم النهائي.
- [A-0-2] يجب ألا تنحرف خوارزميات التشغيل والصيانة والاستيقاظ واستخدام إعدادات النظام العامة لوضعي وضع الاستعداد للتطبيقات والقيلولة عن المشروع المفتوح المصدر لنظام Android.
محاسبة استهلاك الطاقة (الأقسام 8.4)
عمليات تنفيذ أجهزة السيارات:
- يجب أن توفّر [A-0-1] ملفًا شخصيًا للطاقة لكل مكون يحدد قيمة الاستهلاك الحالية لكل مكوّن من مكونات الجهاز واستنزاف البطارية التقريبي الناتج عن المكونات بمرور الوقت كما هو موثق في موقع "المشروع المفتوح المصدر لنظام Android".
- [A-0-2] يجب أن يبلغ عن جميع قيم استهلاك الطاقة بالمللي أمبير في الساعة (mAh).
- [A-0-3] يجب الإبلاغ عن استهلاك طاقة وحدة المعالجة المركزية (CPU) حسب المعرّف الفريد (UID) لكل عملية. يلبي "المشروع المفتوح المصدر لنظام Android" المتطلّبات من خلال تنفيذ وحدة نواة
uid_cputime
. - يجب أن يُنسب إلى مكون الجهاز نفسه إذا لم يتمكن من عزو استخدام طاقة مكون الجهاز إلى أحد التطبيقات.
- [A-0-4] يجب إتاحة استخدام الطاقة هذا من خلال أمر Shell
adb shell dumpsys batterystats
لمطوِّر التطبيق.
2.2.5. نموذج الأمان
الدعم المتعدد المستخدمين (القسم 9.5)
إذا كانت عمليات تنفيذ أجهزة Automotive على نظام التشغيل Automotive تشمل مستخدمين متعددين، سيتم إجراء ما يلي:
- [A-1-1] يجب أن يشتمل على حساب ضيف يسمح بجميع الوظائف التي يوفّرها نظام المركبة بدون طلب تسجيل الدخول من المستخدم.
عزل نظام المركبات الآلية (الفقرة 9.14)
عمليات تنفيذ أجهزة السيارات:
- [A-0-1] يجب أن يتم وضع رسائل الأمن لديك من الأنظمة الفرعية للمركبات في إطار عمل Android، مثل إضافة أنواع الرسائل ومصادر الرسائل المسموح بها إلى القائمة المسموح بها.
- [A-0-2] يجب أن يتم رصد هجمات الحرمان من الخدمات من إطار عمل Android أو التطبيقات التابعة لجهات خارجية. وتوفر هذه الحماية الحماية من البرامج الضارة التي تغمر شبكة المركبات بحركة المرور، والتي قد تؤدي إلى تعطّل الأنظمة الفرعية للمركبات.
2.6. متطلبات الجهاز اللوحي
يشير جهاز Android لوحي إلى جهاز Android يتم استخدامه عادةً من خلال الإمساك بيديه وليس على شكل صدفة المحار.
يتم تصنيف عمليات تنفيذ أجهزة Android على أنّها أجهزة لوحية إذا استوفت جميع المعايير التالية:
- يجب أن يتوفّر لديك مصدر طاقة يتيح التنقّل، مثل البطارية.
- أن يكون حجم الشاشة قطريًا يتراوح بين 7 و18 بوصة
تتطلب عمليات تنفيذ الأجهزة اللوحية متطلبات مماثلة لعمليات تنفيذ الأجهزة المحمولة. تتم الإشارة إلى الاستثناءات بعلامة و علامة * في هذا القسم، ويتم ذِكرها كمرجع في هذا القسم.
2.4.1. الأجهزة
حجم الشاشة (القسم 7.1.1.1)
طرق تنفيذ الأجهزة اللوحية:
- [Ta-0-1] يجب أن يحتوي على شاشة في نطاق يتراوح بين 7 و18 بوصة.
الحد الأدنى من الذاكرة وسعة التخزين (القسم 7.6.1)
لا تنطبق كثافة الشاشة المذكورة للشاشات الصغيرة/العادية في متطلبات حمل الجهاز باليد على الأجهزة اللوحية.
وضع جهاز USB الملحق (القسم 7.7.1)
إذا كانت عمليات تنفيذ الأجهزة المحمولة باليد تتضمن منفذًا USB يتوافق مع وضع الأجهزة الملحقة، سيتم إجراء ما يلي:
- قد يتم تنفيذ واجهة برمجة تطبيقات Android Open Accessory (AOA).
وضع الواقع الافتراضي (القسم 7.9.1)
الأداء العالي للواقع الافتراضي (القسم 7.9.2)
متطلبات الواقع الافتراضي لا تنطبق على الأجهزة اللوحية.
3. البرامج
3.1. التوافق مع واجهة برمجة التطبيقات المُدارة
بيئة تنفيذ رمز بايت Dalvik المُدار هي الأداة الأساسية لتطبيقات Android. واجهة برمجة تطبيقات Android (API) هي مجموعة واجهات نظام Android الأساسية المعروضة للتطبيقات التي تعمل في بيئة وقت التشغيل المُدارة.
-
[C-0-1] يجب أن توفر عمليات تنفيذ الأجهزة عمليات تنفيذ كاملة، بما في ذلك جميع السلوكيات الموثَّقة، لأي واجهة برمجة تطبيقات موثقة تعرضها حزمة تطوير البرامج (SDK) لنظام التشغيل Android أو أي واجهة برمجة تطبيقات مزيّنة بعلامة " @SystemApi" في رمز المصدر الرئيسي لنظام التشغيل Android.
-
[C-0-2] يجب أن تدعم عمليات تنفيذ الأجهزة/تحافظ على جميع الفئات والطرق والعناصر المرتبطة التي تم وضع علامة عليها بالتعليق التوضيحي TestApi (@TestApi).
-
[C-0-3] يجب ألا تحذف عمليات تنفيذ الأجهزة أي واجهات برمجة تطبيقات مُدارة أو تغيِّر واجهات أو توقيعات واجهات برمجة التطبيقات أو تنحرف عن السلوك المُوثَّق أو تتضمّن عمليات عدم التنفيذ، باستثناء الحالات التي يسمح فيها "تعريف التوافق" هذا على وجه التحديد.
-
[C-0-4] يجب أن تحافظ عمليات تنفيذ الأجهزة على توفير واجهات برمجة التطبيقات والعمل بطريقة معقولة، حتى في حال حذف بعض ميزات الأجهزة التي يتضمّن Android واجهات برمجة التطبيقات لها. راجِع القسم 7 لمعرفة المتطلبات المحدّدة لهذا السيناريو.
3.1.1. إضافات Android
يتيح نظام التشغيل Android توسيع نطاق واجهات برمجة التطبيقات المُدارة مع الاحتفاظ بالإصدار نفسه من مستوى واجهة برمجة التطبيقات.
- [C-0-1] يجب إجراء تحميل مسبق لتنفيذ بروتوكول AOSP في كل من المكتبة المشتركة
ExtShared
والخدماتExtServices
بإصدارات أعلى من أو تساوي الحد الأدنى من الإصدارات المسموح بها لكل مستوى من مستويات واجهة برمجة التطبيقات (AOSP). على سبيل المثال، في عمليات تنفيذ الأجهزة التي تعمل بالإصدار 7.0 من نظام التشغيل Android، والتي تعمل بالمستوى 24 من واجهة برمجة التطبيقات، يجب أن تتضمّن الإصدار 1 على الأقل.
3.2. التوافق مع Soft API
بالإضافة إلى واجهات برمجة التطبيقات المُدارة في القسم 3.1، يتضمّن Android أيضًا واجهة برمجة تطبيقات "soft" مهمة تعمل فقط أثناء وقت التشغيل، وتكون على شكل عناصر وأذونات وجوانب مماثلة لتطبيقات Android لا يمكن فرضها في وقت تجميع التطبيق.
3.2.1. الأذونات
- [C-0-1] يجب أن توفِّر أدوات تنفيذ الأجهزة جميع قيم الثبات الخاصة بالأذونات وتفرضها على النحو الموضَّح في الصفحة المرجعية للأذونات. تجدر الإشارة إلى أنّ القسم 9 يسرد المتطلبات الإضافية المتعلّقة بنموذج الأمان في Android.
3.2.2. مَعلمات الإصدار
تتضمن واجهات برمجة تطبيقات Android عددًا من الثوابت في فئة android.os.Build التي تهدف إلى وصف الجهاز الحالي.
- [C-0-1] لتوفير قيم متسقة ومفيدة في جميع عمليات تنفيذ الأجهزة، يتضمّن الجدول أدناه قيودًا إضافية على تنسيقات هذه القيم التي يجب أن تتوافق معها عمليات تنفيذ الأجهزة.
المَعلمة | التفاصيل |
---|---|
الإصدار.إصدار | تمثّل هذه السمة إصدار نظام Android قيد التنفيذ حاليًا، بتنسيق يمكن للمستخدمين قراءته. يجب أن يحتوي هذا الحقل على إحدى قيم السلسلة المحدّدة في 8.1. |
VERSION.SDK | إصدار نظام Android قيد التنفيذ حاليًا، بتنسيق يمكن الوصول إليه من خلال رمز تطبيق تابع لجهة خارجية. بالنسبة إلى Android 8.1، يجب أن يحتوي هذا الحقل على القيمة العددية 8.1_INT. |
VERSION.SDK_INT | إصدار نظام Android قيد التنفيذ حاليًا، بتنسيق يمكن الوصول إليه من خلال رمز تطبيق تابع لجهة خارجية. بالنسبة إلى Android 8.1، يجب أن يحتوي هذا الحقل على القيمة العددية 8.1_INT. |
نسخة مكمّلة | يشير ذلك المصطلح إلى قيمة يختارها مقدِّم الجهاز يحدِّد الإصدار المحدَّد لنظام Android الذي يتم تنفيذه حاليًا بتنسيق يمكن للمستخدمين قراءته. ويجب عدم إعادة استخدام هذه القيمة للإصدارات المختلفة المتاحة للمستخدمين. ومن الاستخدامات المعتادة لهذا الحقل الإشارة إلى رقم الإصدار أو معرّف تغيير التحكّم في المصدر الذي تم استخدامه لإنشاء الإصدار. ما مِن متطلبات بشأن التنسيق المحدّد لهذا الحقل، باستثناء أنّه يجب ألا تكون فارغة أو السلسلة الفارغة (""). |
ألعاب ألواح | يشير ذلك المصطلح إلى قيمة يختارها القائم على تنفيذ الجهاز وتحدِّد الجهاز الداخلي المحدَّد الذي يستخدمه الجهاز، بتنسيق يمكن لشخص عادي قراءته. ومن الاستخدامات المحتملة لهذا الحقل الإشارة إلى المراجعة المحددة للّوحة التي تشغِّل الجهاز. يجب أن تكون قيمة هذا الحقل قابلة لترميز ASCII المكوّن من 7 بت وأن تتطابق مع التعبير العادي "^[a-zA-Z0-9_-]+$". |
العلامة التجارية | قيمة تعكس اسم العلامة التجارية المرتبطة بالجهاز كما هو معروف للمستخدمين النهائيين. يجب أن يكون بتنسيق يمكن لشخص عادي قراءته، وأن يمثّل الشركة المصنّعة للجهاز أو العلامة التجارية للشركة التي يتم تسويق الجهاز بموجبها. يجب أن تكون قيمة هذا الحقل قابلة لترميز ASCII المكوّن من 7 بت وأن تتطابق مع التعبير العادي "^[a-zA-Z0-9_-]+$". |
مواد العرض المتوافقة | اسم مجموعة التعليمات (نوع وحدة المعالجة المركزية (CPU) + اصطلاح ABI) للرمز الأصلي. راجع القسم 3.3. التوافق مع واجهة برمجة التطبيقات الأصلية |
مدعومة_32_BIT_ABIS | اسم مجموعة التعليمات (نوع وحدة المعالجة المركزية (CPU) + اصطلاح ABI) للرمز الأصلي. راجع القسم 3.3. التوافق مع واجهة برمجة التطبيقات الأصلية |
SUPPORTED_64_BIT_ABIS | اسم مجموعة التعليمات الثانية (نوع وحدة المعالجة المركزية (CPU) + اصطلاح ABI) للرموز البرمجية الأصلية. راجع القسم 3.3. التوافق مع واجهة برمجة التطبيقات الأصلية |
وحدة المعالجة المركزية (CPU_ABI) | اسم مجموعة التعليمات (نوع وحدة المعالجة المركزية (CPU) + اصطلاح ABI) للرمز الأصلي. راجع القسم 3.3. التوافق مع واجهة برمجة التطبيقات الأصلية |
وحدة معالجة مركزية (CPU_ABI2) | اسم مجموعة التعليمات الثانية (نوع وحدة المعالجة المركزية (CPU) + اصطلاح ABI) للرموز البرمجية الأصلية. راجع القسم 3.3. التوافق مع واجهة برمجة التطبيقات الأصلية |
جهاز | يشير ذلك المصطلح إلى قيمة يختارها مقدِّم الجهاز تتضمّن اسم التطوير أو الاسم الرمزي الذي يحدِّد إعدادات ميزات الأجهزة والتصميم الصناعي للجهاز. يجب أن تكون قيمة هذا الحقل قابلة لترميز ASCII المكوّن من 7 بت وأن تتطابق مع التعبير العادي "^[a-zA-Z0-9_-]+$". يجب ألا يتغيّر اسم الجهاز هذا خلال فترة استخدام المنتج. |
طباعة الأصابع |
سلسلة تعرّف هذا الإصدار بشكل فريد. وينبغي أن تكون اللغة مقروءة بشكل معقول. يجب أن يتّبع هذا النموذج:
$(BRAND)/$(PRODUCT)/ على سبيل المثال:
acme/myproduct/ يجب ألا يتضمن الملف المرجعي مسافات بيضاء. إذا كانت الحقول الأخرى المضمَّنة في النموذج أعلاه تحتوي على مسافات بيضاء، يجب استبدالها في الملف المرجعي للإصدار بحرف آخر، مثل حرف الشرطة السفلية ("_"). يجب أن تكون قيمة هذا الحقل قابلة لترميز ASCII 7 بت. |
الأجهزة | اسم الجهاز (من سطر أوامر kernel أو /proc). وينبغي أن تكون اللغة مقروءة بشكل معقول. يجب أن تكون قيمة هذا الحقل قابلة لترميز ASCII المكوّن من 7 بت وأن تتطابق مع التعبير العادي "^[a-zA-Z0-9_-]+$". |
المضيف | يشير ذلك المصطلح إلى سلسلة تحدِّد بشكل فريد المضيف الذي تم إنشاء الإصدار عليه، بتنسيق يمكن لشخص عادي قراءته. ما مِن متطلبات بشأن التنسيق المحدّد لهذا الحقل، باستثناء أنّه يجب ألا تكون فارغة أو السلسلة الفارغة (""). |
رقم التعريف | يشير ذلك المصطلح إلى معرّف يختاره القائم على تنفيذ الجهاز للإشارة إلى إصدار معيّن، بتنسيق يمكن للمستخدمين قراءته. يمكن أن يكون هذا الحقل مماثلاً للحقل android.os.Build.VERSION.INCREMENTAL، ولكن يجب أن يكون قيمة ذات معنى كافية للمستخدمين النهائيين للتمييز بين إصدارات البرامج. يجب أن تكون قيمة هذا الحقل قابلة لترميز ASCII المكوّن من 7 بت وأن تتطابق مع التعبير العادي "^[a-zA-Z0-9._-]+$". |
شركة مصنّعة | الاسم التجاري للمصنّع الأصلي للجهاز (OEM) للمنتج. ما مِن متطلبات بشأن التنسيق المحدّد لهذا الحقل، باستثناء أنّه يجب ألا تكون قيمة الحقل فارغة أو السلسلة الفارغة (""). ويجب ألا يتغيّر هذا الحقل خلال فترة استخدام المنتج. |
النموذج | يشير ذلك المصطلح إلى قيمة يختارها أداة تنفيذ الجهاز وتحتوي على اسم الجهاز كما هو معروف للمستخدم النهائي. ويجب أن يكون هذا الاسم هو نفسه الذي يتم بموجبه تسويق الجهاز وبيعه للمستخدمين النهائيين. ما مِن متطلبات بشأن التنسيق المحدّد لهذا الحقل، باستثناء أنّه يجب ألا تكون قيمة الحقل فارغة أو السلسلة الفارغة (""). ويجب ألا يتغيّر هذا الحقل خلال فترة استخدام المنتج. |
المنتج | يشير ذلك المصطلح إلى قيمة يختارها أداة تنفيذ الجهاز وتحتوي على اسم التطوير أو اسم الرمز الخاص بمنتج معيّن (SKU) والذي يجب أن يكون فريدًا ضمن العلامة التجارية نفسها. يجب أن يكون سهل القراءة للمستخدم، ولكن ليس بالضرورة أن يراه المستخدمون. يجب أن تكون قيمة هذا الحقل قابلة لترميز ASCII المكوّن من 7 بت وأن تتطابق مع التعبير العادي "^[a-zA-Z0-9_-]+$". يجب ألا يتغيّر اسم المنتج هذا خلال فترة استخدام المنتج. |
الرقم التسلسلي | رقم تسلسلي للجهاز يجب أن يكون متاحًا وفريدًا على جميع الأجهزة من نفس MODEL وMANUFACTURER. يجب أن تكون قيمة هذا الحقل قابلة لترميز ASCII المكوّن من 7 بت وأن تتطابق مع التعبير العادي "^([a-zA-Z0-9]{6,20})$". |
العلامات | قائمة بعلامات مفصولة بفواصل من اختيار أداة تنفيذ الجهاز التي تميّز الإصدار بشكل أكبر. يجب أن يحتوي هذا الحقل على إحدى القيم المقابلة للإعدادات الثلاثة النموذجية لتوقيع نظام Android الأساسي: مفاتيح الإصدار ومفاتيح المطوّرين ومفاتيح الاختبار. |
الوقت | قيمة تمثّل الطابع الزمني لوقت حدوث الإصدار. |
مطبوع | يشير ذلك المصطلح إلى قيمة يختارها أداة تنفيذ الجهاز لتحديد إعدادات بيئة تشغيل الإصدار. يجب أن يحتوي هذا الحقل على إحدى القيم المقابلة للإعدادات الثلاثة النموذجية لوقت تشغيل Android، وهي: user أو userdebug أو eng. |
مستخدم | اسم أو رقم تعريف المستخدِم الخاص بالمستخدم (أو للمستخدِم المبرمَج) الذي أنشأ الإصدار ما مِن متطلبات بشأن التنسيق المحدّد لهذا الحقل، باستثناء أنّه يجب ألا تكون فارغة أو السلسلة الفارغة (""). |
تصحيح_الأمان | قيمة تشير إلى مستوى رمز تصحيح الأمان لإصدار معيّن. ويجب أن يشير ذلك إلى أنّ الإصدار ليس معرّضًا بأي شكل من الأشكال لأي من المشاكل الموضّحة من خلال نشرة الأمن العام من Android المخصَّصة. ويجب أن يكون بالتنسيق [YYYY-MM-DD]، وأن يتطابق مع سلسلة محدّدة موثَّقة في نشرة الأمان العام على Android أو في تنبيه أمان Android، على سبيل المثال "2015-11-01". |
نظام التشغيل BASE_OS | قيمة تمثّل المَعلمة FINGERPrint في الإصدار تتطابق مع هذا الإصدار باستثناء رموز التصحيح المقدَّمة في "نشرة الأمان العام" من Android. يجب أن يتم الإبلاغ عن القيمة الصحيحة، وفي حال عدم توفُّر مثل هذا الإصدار، يجب الإبلاغ عن سلسلة فارغة (""). |
BOOTLOADER | يشير ذلك المصطلح إلى قيمة يختارها أداة تنفيذ الجهاز وتحدِّد إصدار برنامج الإقلاع الداخلي المحدّد والمستخدَم في الجهاز، بتنسيق يمكن للمستخدمين قراءته. يجب أن تكون قيمة هذا الحقل قابلة لترميز ASCII المكوّن من 7 بت وأن تتطابق مع التعبير العادي "^[a-zA-Z0-9._-]+$". |
getRadioVersion() | يجب أن تكون (تكون أو تعرض) قيمة يختارها القائم على تنفيذ الجهاز لتحديد إصدار الراديو/المودم الداخلي المحدّد والمستخدَم في الجهاز، بتنسيق يمكن لشخص عادي قراءته. إذا لم يتضمن الجهاز أي راديو/مودم داخلي، يجب أن يعرض "خالٍ". يجب أن تكون قيمة هذا الحقل قابلة لترميز ASCII المكوّن من 7 بت وأن تتطابق مع التعبير العادي "^[a-zA-Z0-9._-,]+$". |
3.2.3. التوافق مع الأهداف
3.2.3.1. الأهداف الأساسية للتطبيق
تتيح أغراض Android لمكونات التطبيق طلب وظائف من مكونات Android الأخرى. يتضمّن مشروع Android الرئيسي قائمة بالتطبيقات التي تُعتبر تطبيقات Android أساسية، وتعمل على تنفيذ العديد من أنماط الأهداف لتنفيذ الإجراءات الشائعة.
-
[C-0-1] يجب أن يتم إجراء تحميل مسبق لتطبيق واحد أو أكثر من مكوّنات الخدمات أو التطبيقات باستخدام معالِج الأهداف، وذلك لجميع أنماط فلاتر الأهداف العامة المحدّدة في تطبيقات Android الأساسية التالية في بروتوكول AOSP:
- ساعة مكتب
- المتصفح
- تقويم Google
- جهات اتصال Google
- معرض الصور
- البحث العالمي
- قاذفة القنابل
- موسيقى
- الإعدادات
3.2.3.2. دقة الأهداف
- [C-0-1] بما أنّ Android نظام أساسي قابل للتوسُّع، يجب أن تتجاهل التطبيقات التابعة لجهات خارجية كل نمط أهداف مُشار إليه في القسم 3.2.3.1. تسمح عملية التنفيذ المفتوحة المصدر لتطبيقات Android الرئيسية بهذا بشكل تلقائي.
-
[C-0-2] يجب ألا يرفق منفِّذو الأقراص امتيازات خاصة باستخدام تطبيقات النظام لأنماط الأهداف هذه، أو منع تطبيقات الجهات الخارجية من الربط بهذه الأنماط وتولّي التحكّم فيها. ويشمل هذا الحظر على وجه التحديد، على سبيل المثال لا الحصر، إيقاف واجهة المستخدم "أداة الاختيار" التي تسمح للمستخدم بالاختيار من بين تطبيقات متعددة تتعامل جميعها مع نمط الهدف نفسه.
-
[C-0-3] يجب أن توفر عمليات تنفيذ الأجهزة واجهة مستخدم للمستخدمين لتعديل النشاط التلقائي للأغراض.
-
في المقابل، قد توفّر عمليات تنفيذ الأجهزة أنشطة تلقائية لأنماط معرفات موارد منتظمة (URI) مثلاً (مثل http://play.google.com) عندما يوفّر النشاط التلقائي سمة أكثر تحديدًا لمعرّف الموارد المنتظم (URI) للبيانات. على سبيل المثال، يكون نمط فلتر الأهداف الذي يحدد عنوان URI للبيانات "http://www.android.com" أكثر تحديدًا من نمط الهدف الأساسي للمتصفّح "http:// ".
يشمل Android أيضًا آلية للتطبيقات التابعة لجهات خارجية لتوضيح سلوك ربط التطبيقات التلقائي والموثوق لأنواع معيّنة من أهداف معرّف الموارد المنتظم (URI) للويب. عند تحديد هذه البيانات الموثوقة في أنماط فلاتر الأهداف الخاصة بالتطبيق، تكون عمليات تنفيذ الأجهزة:
- يجب أن يحاول [C-0-4] التحقّق من صحة أي فلاتر أهداف من خلال تنفيذ خطوات التحقّق المحدّدة في مواصفات روابط مواد العرض الرقمية كما تم تنفيذها من خلال "مدير الحزم" في "مشروع مفتوح المصدر لنظام Android" الرئيسي.
- [C-0-5] يجب أن تحاول التحقق من فلاتر الأهداف أثناء تثبيت التطبيق، وضبط جميع فلاتر الأهداف من واجهة المستخدم التي تم التحقق من صحتها بنجاح، كمعالجات تلقائية للتطبيقات المستخدَمة في واجهات المستخدم.
- يمكنك تعيين فلاتر أهداف معرف موارد منتظم (URI) محددة كمعالجات تلقائية لمعرّفات الموارد المنتظمة (URI) الخاصة بها، وذلك إذا تم التحقق منها بنجاح ولكن تعذّر التحقق من فلاتر الموارد المنتظمة (URI) الأخرى المرشحة. إذا تم تطبيق ذلك على الجهاز، يجب أن يتم تجاوز نمط معرف الموارد المنتظم (URI) المناسب للمستخدم في قائمة الإعدادات.
- يجب أن توفِّر للمستخدم عناصر تحكُّم في "روابط التطبيقات" لكل تطبيق في "الإعدادات" على النحو التالي:
- [C-0-6] يجب أن يتمكّن المستخدم من إلغاء السلوك التلقائي لروابط التطبيقات بشكل شامل بحيث يكون: "مفتوحًا دائمًا" أو "يسأل دائمًا" أو "يفتح دائمًا" أو "لا يفتح أبدًا"، وهذا يجب أن ينطبق على جميع فلاتر الأهداف لمعرّفات الموارد المنتظمة (URI) المرشّحة بالتساوي.
- [C-0-7] يجب أن يتمكّن المستخدم من الاطّلاع على قائمة بفلاتر intent لمعرّفات الموارد المنتظمة (URI) المرشحة.
- من الممكن أن توفّر عملية تنفيذ الجهاز للمستخدم إمكانية تجاوز فلاتر الأهداف المحدَّدة لمعرّفات الموارد المنتظمة (URI) المرشّحة التي تم التحقّق منها بنجاح، وذلك على أساس الفلاتر حسب النية بالشراء.
- [C-0-8] يجب أن يوفر تنفيذ الجهاز للمستخدمين إمكانية عرض وإلغاء فلاتر الأهداف لمعرّفات الموارد المنتظمة (URI) المرشحة المحدّدة إذا كان تنفيذ الجهاز يتيح لبعض فلاتر الأهداف لمعرّفات الموارد المنتظمة (URI) المرشّحة النجاح في عملية التحقّق، بينما قد يتعذّر على البعض الآخر.
3.2.3.3. مساحات أسماء الأهداف
- [C-0-1] يجب ألا تتضمّن عمليات تنفيذ الأجهزة أي مكوّن من مكوِّنات Android يلبّي أي أنماط جديدة نيّة الشراء أو النية في البث باستخدام سلسلة مفاتيح ACTION أو CATEGORY أو سلسلة رئيسية أخرى في مساحة الاسم android. أو com.android..
- [C-0-2] يجب ألا تتضمّن أدوات تنفيذ الأجهزة أي مكوّنات من Android تفي بأي نيّة جديدة أو أنماط نيّة بث أو نيّة بث باستخدام ACTION أو CATEGORY أو سلسلة رئيسية أخرى في مساحة حزمة تابعة لمؤسسة أخرى.
- [C-0-3] يجب ألا يغيّر أو يوسع نطاق تنفيذ الأجهزة أيًا من أنماط الأهداف التي تستخدمها التطبيقات الأساسية المذكورة في القسم 3.2.3.1.
- قد تتضمن عمليات تنفيذ الأجهزة أنماطًا مقصودة تستخدم مساحات الاسم مرتبطة بشكل واضح وواضح بمؤسستها الخاصة. يماثل هذا الحظر ذلك المحدد لفئات لغات Java في القسم 3.6.
3.2.3.4. نوايا البث
تعتمد تطبيقات الجهات الخارجية على النظام الأساسي لبث أغراض معينة لإبلاغها بالتغييرات في بيئة الأجهزة أو البرامج.
عمليات تنفيذ الأجهزة:
- [C-0-1] يجب أن يبثّ أهداف البث العلني استجابةً لأحداث النظام المناسبة على النحو الموضّح في مستندات حزمة SDK. يُرجى العِلم أنّ هذا الشرط لا يتعارض مع الفقرة 3.5، إذ يتم أيضًا توضيح القيود المفروضة على تطبيقات الخلفية في مستندات حزمة تطوير البرامج (SDK).
3.2.3.5. الإعدادات التلقائية للتطبيق
يشمل Android إعدادات توفّر للمستخدمين طريقة سهلة لاختيار التطبيقات التلقائية، مثل الشاشة الرئيسية أو الرسائل القصيرة.
يجب أن توفِّر عمليات تنفيذ الأجهزة قائمة إعدادات مشابهة وأن تكون متوافقة مع نمط فلتر الأهداف وطرق واجهة برمجة التطبيقات الموضّحة في مستندات حزمة تطوير البرامج (SDK) على النحو التالي، حيثما كان ذلك منطقيًا.
في حال أبلغت عمليات تنفيذ الأجهزة عن android.software.home_screen
، سينطبق التالي على:
- يجب أن يلتزم [C-1-1] بالغرض
android.settings.HOME_SETTINGS
من عرض قائمة إعدادات التطبيق التلقائية للشاشة الرئيسية.
في حال أبلغت عمليات تنفيذ الأجهزة عن android.hardware.telephony
، سينطبق التالي على:
-
[C-2-1] يجب توفير قائمة إعدادات ستطلب من
android.provider.Telephony.ACTION_CHANGE_DEFAULT
عرض مربّع حوار لتغيير التطبيق التلقائي للرسائل القصيرة. -
يجب أن يلتزم [C-2-2] بالغرض
android.telecom.action.CHANGE_DEFAULT_DIALER
من عرض مربّع حوار للسماح للمستخدم بتغيير تطبيق "الهاتف" التلقائي. -
يجب أن يحترم [C-2-3] هدف android.telecom.action.CHANGE_PHONE_ACCOUNTS لإتاحة إمكانية إعداد
ConnectionServices
للمستخدم المرتبط بـPhoneAccounts
، بالإضافة إلى حساب PhoneAccount تلقائي يستخدمه مقدِّم خدمة الاتصالات لإجراء مكالمات صادرة. وتفي عملية تنفيذ "مقدِّم خدمات الدعم على الإنترنت" (AOSP) بهذا الشرط من خلال تضمين قائمة "خيار حسابات الاتصال" ضمن قائمة إعدادات "المكالمات".
في حال أبلغت عمليات تنفيذ الأجهزة عن android.hardware.nfc.hce
، سينطبق التالي على:
- يجب أن يلتزم [C-3-1] android.settings.NFC_PAYMENT_SETTINGS بعرض قائمة إعدادات تطبيق تلقائية لميزة "انقر وادفع".
إذا كانت عمليات تنفيذ الأجهزة تتوافق مع VoiceInteractionService
وتم تثبيت أكثر من تطبيق واحد باستخدام واجهة برمجة التطبيقات هذه في آن واحد، سيتم إجراء ما يلي:
- يجب أن يلتزم [C-4-1] بالغرض
android.settings.ACTION_VOICE_INPUT_SETTINGS
من عرض قائمة إعدادات التطبيق التلقائية للإدخال الصوتي والمساعدة.
3.2.4. الأنشطة على الشاشات الثانوية
إذا كانت عمليات تنفيذ الأجهزة تسمح بإطلاق أنشطة Android العادية على الشاشات الثانوية، سيتم إجراء ما يلي:
- [C-1-1] يجب ضبط علامة الميزة
android.software.activities_on_secondary_displays
. - [C-1-2] يجب أن يضمن التوافق مع واجهة برمجة التطبيقات مشابهًا لنشاط يتم تشغيله على الشاشة الأساسية.
- [C-1-3] يجب أن يتم عرض النشاط الجديد على الشاشة نفسها التي تم فيها تشغيل النشاط الذي أطلقه، وذلك عند إطلاق النشاط الجديد بدون تحديد عرض مستهدَف عبر
ActivityOptions.setLaunchDisplayId()
API. - [C-1-4] يجب إتلاف كل الأنشطة عند إزالة شاشة تحمل علامة
Display.FLAG_PRIVATE
. - [C-1-5] يجب تغيير حجم كل الأنشطة وفقًا لذلك على
VirtualDisplay
إذا تم تغيير حجم الشاشة نفسها. - قد يعرض محرر أسلوب الإدخال (IME)، وهو عنصر تحكم للمستخدم يتيح للمستخدمين إمكانية إدخال نص) على الشاشة الأساسية، عندما يصبح حقل إدخال النص مركّزًا على شاشة ثانوية.
- يجب تنفيذ تركيز الإدخال على الشاشة الثانوية بشكل مستقل عن الشاشة الأساسية، عندما يتم دعم إدخالات اللمس أو المفاتيح.
- يجب أن يتوافق مع
android.content.res.Configuration
الذي يتوافق مع شاشة العرض هذه لكي يتم عرضها وتعمل بشكل صحيح وتحافظ على التوافق في حال تشغيل نشاط على شاشة ثانوية.
إذا كانت عمليات تنفيذ الأجهزة تسمح بإطلاق أنشطة Android العادية على الشاشات الثانوية، وكانت الشاشات الأساسية والثانوية تحتوي على android.util.DisplayMetrics مختلفة:
- [C-2-1] يجب عدم السماح بالأنشطة غير القابلة لتغيير الحجم (التي تتضمّن
resizeableActivity=false
فيAndroidManifest.xml
) والتطبيقات التي تستهدف المستوى 23 من واجهة برمجة التطبيقات أو المستوى الأدنى على شاشات العرض الثانوية.
إذا كانت عمليات تنفيذ الأجهزة تسمح بإطلاق أنشطة Android العادية على الشاشات الثانوية، وكانت الشاشة الثانوية تحمل العلامة android.view.Display.FLAG_PRIVATE:
- [C-3-1] يجب أن يتمكن مالك الشاشة والنظام والأنشطة المتوفّرة حاليًا على هذه الشاشة فقط من تشغيل التطبيق على هذه الشاشة. يمكن للجميع تشغيل الشاشة على شاشة بها العلامة android.view.Display.FLAG_public.
3.3. التوافق مع واجهة برمجة التطبيقات الأصلية
تتضمن أدوات تنفيذ الأجهزة ما يلي:
يُعد التوافق مع الرموز الأصلية أمرًا صعبًا. ولهذا السبب، فإن منفّذي الأجهزة هم:
- [SR] يُنصَح بشدة باستخدام عمليات تنفيذ المكتبات الواردة أدناه من مشروع مفتوح المصدر لنظام Android الرئيسي.
3.3.1. واجهات التطبيق الثنائية
يمكن استدعاء رمز بايت Dalvik المُدار إلى الرمز الأصلي المتوفّر في ملف .apk
للتطبيق كملف ELF .so
الذي تم تجميعه من أجل بنية الأجهزة المناسبة. ونظرًا لاعتماد الرمز الأصلي بدرجة كبيرة على تكنولوجيا المعالج الأساسي، يُحدِّد Android عددًا من واجهات التطبيق الثنائية (ABI) في Android NDK.
عمليات تنفيذ الأجهزة:
- يجب أن يكون [C-0-1] متوافقًا مع واجهة ABI محدّدة أو أكثر وأن يتم تنفيذ التوافق مع Android NDK.
- يجب أن يشتمل [C-0-2] على دعم للرمز البرمجي الذي يتم تشغيله في البيئة المُدارة من أجل استدعاء الرمز الأصلي، وذلك باستخدام دلالات واجهة Java الأصلية (JNI) العادية.
- يجب أن يكون [C-0-3] متوافقًا مع المصدر (أي متوافق مع العنوان) ومتوافقًا مع النظام الثنائي (مع واجهة التطبيق الثنائية (ABI)) مع كل مكتبة مطلوبة في القائمة أدناه.
- يجب أن يتوافق [C-0-4] مع واجهة التطبيق الثنائية (ABI) المكافئة 32 بت في حال توفُّر أي واجهة تطبيق ثنائية (ABI) 64 بت.
- يجب أن يُبلِغ [C-0-5] بدقة عن واجهة التطبيق الثنائية (ABI) الأصلية التي يتوافق معها الجهاز، من خلال المَعلمات
android.os.Build.SUPPORTED_ABIS
وandroid.os.Build.SUPPORTED_32_BIT_ABIS
وandroid.os.Build.SUPPORTED_64_BIT_ABIS
، مع إدراج كل قائمة من واجهات التطبيق الثنائية (ABI) مفصولة بفاصلة وترتيبها من الأكثر إلى الأقل تفضيلاً. - يجب استخدام [C-0-6] من خلال المَعلمات المذكورة أعلاه للإبلاغ عن واجهات التطبيق الثنائية (ABI) الواردة فقط والموثَّقة والموضّحة في أحدث إصدار من مستندات إدارة واجهة التطبيق الثنائية (NDK) لنظام التشغيل Android، كما يجب أن تتضمّن إمكانية استخدام إضافة شريحة SIM المتقدّمة (المعروفة أيضًا باسم NEON).
-
[C-0-7] يجب أن يجعل جميع المكتبات التالية التي توفّر واجهات برمجة تطبيقات أصلية متاحة للتطبيقات التي تتضمّن رموزًا برمجية أصلية:
- libaaudio.so (التوافق مع الصوت الأصلي)
- libandroid.so (دعم النشاط على Android)
- libc (مكتبة C)
- libcamera2ndk.so
- libdl (رابط ديناميكي)
- libEGL.so (إدارة مساحة عرض OpenGL الأصلية)
- libGLESv1_CM.so (OpenGL ES 1.x)
- libGLESv2.so (OpenGL ES 2.0)
- libGLESv3.so (OpenGL ES 3.x)
- libicui18n.so
- libicuuc.so
- libjnigraphics.so
- liblog (تسجيل الدخول إلى Android)
- libmediandk.so (دعم واجهات برمجة التطبيقات للوسائط الأصلية)
- libm (مكتبة الرياضيات)
- libOpenMAXAL.so (دعم OpenMAX AL 1.0.1)
- libOpenSLES.so (دعم الصوت OpenSL ES 1.0.1)
- libRS.so
- libstdc++ (الحد الأدنى من التوافق مع C++)
- libvulkan.so (Vulkan)
- libz (ضغط Zlib)
- واجهة JNI
-
[C-0-8] يجب ألا يضيف أو يزيل الوظائف العامة للمكتبات الأصلية المدرجة أعلاه.
- [C-0-9] يجب أن يُدرج المكتبات الإضافية التي لا تتبع AOSP والمعروضة مباشرةً لتطبيقات تابعة لجهات خارجية في
/vendor/etc/public.libraries.txt
. - [C-0-10] يجب ألّا تعرض التطبيقات التابعة لجهات خارجية التي تستهدف المستوى 24 من واجهة برمجة التطبيقات أو مستوى أعلى أي مكتبات أصلية أخرى، تم تنفيذها وتقديمها في AOSP كمكتبات نظام، لأنّها محجوزة.
- [C-0-11] يجب تصدير جميع رموز الدوال OpenGL ES 3.1 وAndroid Extension Pack، كما هو محدّد في NDK، من خلال مكتبة
libGLESv3.so
. تجدر الإشارة إلى أنّه على الرغم من ضرورة وجود جميع الرموز، يصف القسم 7.1.4.1 بمزيد من التفصيل المتطلبات المتعلّقة بالموعد المتوقّع للتنفيذ الكامل لكل دالة من الدوال المقابلة. - [C-0-12] يجب تصدير رموز الدوال لرموز وظائف Vulkan 1.0 الأساسية، بالإضافة إلى الإضافات
VK_KHR_surface
وVK_KHR_android_surface
وVK_KHR_swapchain
وVK_KHR_maintenance1
وVK_KHR_get_physical_device_properties2
من خلال مكتبةlibvulkan.so
. تجدر الإشارة إلى أنّه على الرغم من ضرورة وجود جميع الرموز، يصف القسم 7.1.4.2 بمزيد من التفصيل المتطلبات المتعلّقة بالموعد المتوقّع للتنفيذ الكامل لكل دالة من الدوال المقابلة. - يجب أن يتم إنشاؤه باستخدام رمز المصدر وملفات العناوين المتاحة في "مشروع مفتوح المصدر لنظام Android"
وتجدر الإشارة إلى أنّ الإصدارات المستقبلية من حزمة تطوير البرامج (NDK) على Android قد تتيح استخدام واجهات تطبيقات ثنائية (ABI) إضافية.
3.3.2 التوافق مع الرموز البرمجية المستندة إلى معالجات ARM 32 بت
إذا كانت عمليات تنفيذ الأجهزة على أجهزة ARM بالإصدار 64 بت، يجب مراعاة ما يلي:
-
[C-1-1] على الرغم من إيقاف بنية ARMv8 للعديد من عمليات وحدة المعالجة المركزية (CPU)، بما في ذلك بعض العمليات المستخدمة في الرموز البرمجية الأصلية الحالية، يجب أن تظل العمليات التالية المتوقّفة متاحة لرمز ARM الأصلي 32 بت، إما من خلال دعم وحدة المعالجة المركزية الأصلية أو من خلال محاكاة البرامج:
- تعليمات محو بيانات المستخدم وميزة SWPB
- SETEND التعليمات
- عمليات حاجز CP15ISB وCP15DSB وCP15DMB
في حال اشتمال عمليات تنفيذ الأجهزة على واجهة ABI بسرعة 32 بت، سيتم إجراء ما يلي:
-
يجب أن يحتوي [C-2-1] على الأسطر التالية في
/proc/cpuinfo
عند قراءته باستخدام تطبيقات ARM 32 بت لضمان التوافق مع التطبيقات التي تم إنشاؤها باستخدام الإصدارات القديمة من Android NDK.-
Features:
، يليها قائمة بأي ميزات اختيارية لوحدة المعالجة المركزية (CPU) ARMv7 ومتوافقة مع الجهاز. -
CPU architecture:
، يليه عدد صحيح يصف أعلى بنية ARM المتوافقة للجهاز (مثل "8" للأجهزة التي تعمل بمعالجات ARMv8).
-
-
"يجب ألا يغيّر
/proc/cpuinfo
" عند قراءته باستخدام تطبيقات ARM أو تطبيقات غير ARM 64 بت.
3.4. التوافق مع الويب
3.4.1. التوافق مع WebView
إذا كانت عمليات تنفيذ الأجهزة توفّر تنفيذًا كاملاً لواجهة برمجة التطبيقات android.webkit.Webview
، سيحدث ما يلي:
- [C-1-1] يجب الإبلاغ عن
android.software.webview
. - يجب استخدام إصدار مشروع Chromium في [C-1-2] من مشروع Android مفتوح المصدر في فرع Android 8.1 لتنفيذ واجهة برمجة التطبيقات
android.webkit.WebView
. -
[C-1-3] يجب أن تكون سلسلة وكيل المستخدم التي تم الإبلاغ عنها من خلال WebView بالتنسيق التالي:
Mozilla/5.0 (Linux; Android $(VERSION); $(MODEL) Build/$(BUILD); wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 $(CHROMIUM_VER) Mobile Safari/537.36
- يجب أن تكون قيمة السلسلة $(VERSION) مماثلة لقيمة android.os.Build.VERSION.Release.
- يجب أن تكون قيمة السلسلة $(MODEL) مماثلة لقيمة android.os.Build.MODEL.
- يجب أن تكون قيمة السلسلة $(BUILD) مماثلة لقيمة android.os.Build.ID.
- يجب أن تكون قيمة السلسلة $(CHROMIUM_VER) هي إصدار Chromium في مشروع Android مفتوح المصدر الرئيسي.
- قد تحذف عمليات تنفيذ الأجهزة الأجهزة الجوّالة في سلسلة وكيل المستخدم.
-
يجب أن يتيح مكوّن WebView دعم أكبر عدد ممكن من ميزات HTML5، وإذا كان يتوافق مع الميزة، يجب أن يتوافق مع مواصفات HTML5.
3.4.2 توافُق المتصفّح
إذا كانت عمليات تنفيذ الجهاز تتضمن تطبيق متصفح مستقلاً لتصفح الويب بشكل عام، فسيتم بالتالي:
- [C-1-1] يجب أن يتوافق مع كل واجهة من واجهات برمجة التطبيقات هذه المرتبطة بتنسيق HTML5:
- يجب أن يتوافق [C-1-2] مع واجهة برمجة تطبيقات webstorage في HTML5/W3C وأن يتوافق مع IndexedDB API بتنسيق HTML5/W3C. تجدر الإشارة إلى أنّه بسبب انتقال هيئات معايير تطوير الويب إلى استخدام IndexedDB على مساحة تخزين على الويب، من المتوقع أن تصبح IndexedDB مكوِّنًا مطلوبًا في أي إصدار مستقبلي من Android.
- قد تشحن سلسلة مخصصة لوكيل المستخدم في تطبيق المتصفح المستقل.
- يجب تنفيذ التوافق مع أكبر قدر ممكن من HTML5 على تطبيق المتصفح المستقل (سواء استنادًا إلى تطبيق متصفح WebKit الرئيسي أو بديل جهة خارجية).
ومع ذلك، إذا لم تكن عمليات تنفيذ الجهاز تتضمّن تطبيق متصفِّح مستقل، سيؤدي ذلك إلى:
- [C-2-1] يجب أن تواصل استخدام أنماط النية العامة على النحو الموضّح في الفقرة 3.2.3.1.
3.5. التوافق السلوكي لواجهة برمجة التطبيقات
يجب أن تكون سلوكيات كل نوع من أنواع واجهات برمجة التطبيقات (سواءً واجهة برمجة تطبيقات مُدارة أو مبسّطة أو مدمجة مع المحتوى أو واجهة ويب) متوافقة مع طريقة التنفيذ المفضّلة في مشروع مفتوح المصدر لنظام Android. في ما يلي بعض مجالات التوافق المحددة:
- [C-0-1] يجب ألا تغيّر الأجهزة سلوك الغرض العادي أو دلالاته.
- [C-0-2] يجب ألا تغيّر الأجهزة دلالات دورة الحياة أو دورة الحياة الخاصة بنوع معيّن من مكوّنات النظام (مثل Service وactivity وContentProvider، وما إلى ذلك).
- [C-0-3] يجب ألا تغيّر الأجهزة دلالات الإذن العادي.
- يجب ألا تغيّر الأجهزة القيود المفروضة على تطبيقات الخلفية. وبشكل أكثر تحديدًا، بالنسبة إلى تطبيقات الخلفية:
- [C-0-4] يجب أن يتوقف تنفيذ عمليات معاودة الاتصال التي تم تسجيلها من خلال التطبيق لتلقّي النتائج من
GnssMeasurement
وGnssNavigationMessage
. - [C-0-5] يجب أن تحدّد معدّل تكرار التحديثات التي يتم تقديمها للتطبيق من خلال فئة واجهة برمجة التطبيقات
LocationManager
أو الطريقةWifiManager.startScan()
. - [C-0-6] إذا كان التطبيق يستهدف المستوى 25 من واجهة برمجة التطبيقات أو مستوى أعلى، يجب ألا يسمح هذا التطبيق بتسجيل أجهزة استقبال البث لعمليات البث الضمنية الخاصة بأهداف Android العادية في بيان التطبيق، إلا إذا كان الهدف من البث يتطلَّب إذن
protectionLevel
"signature"
أو"signatureOrSystem"
أو تم إدراجه في قائمة الاستثناء. - [C-0-7] إذا كان التطبيق يستهدف المستوى 25 من واجهة برمجة التطبيقات أو مستوى أعلى، يجب إيقاف خدمات التطبيق في الخلفية كما لو كان التطبيق قد طلب طريقة
stopSelf()
الخدمات، ما لم يتم إدراج التطبيق في القائمة المسموح بها المؤقتة للتعامل مع مهمة تظهر للمستخدم. - [C-0-8] إذا كان التطبيق يستهدف المستوى 25 من واجهة برمجة التطبيقات أو مستوى أعلى، يجب أن يوقف عمليات قفل التنشيط التي يثبّتها التطبيق.
- [C-0-4] يجب أن يتوقف تنفيذ عمليات معاودة الاتصال التي تم تسجيلها من خلال التطبيق لتلقّي النتائج من
القائمة أعلاه ليست شاملة. تختبر مجموعة اختبار التوافق (CTS) أجزاءً كبيرة من النظام الأساسي للتحقق من التوافق السلوكي، ولكن ليس كلها. وتقع على عاتق القائم بالتنفيذ مسؤولية ضمان التوافق السلوكي مع "المشروع المفتوح المصدر لنظام Android". لهذا السبب، على مطوّري الأجهزة استخدام رمز المصدر المتاح عبر "المشروع المفتوح المصدر لنظام Android" متى أمكن ذلك، بدلاً من إعادة تنفيذ أجزاء مهمة من النظام.
3.6. مساحات أسماء واجهات برمجة التطبيقات
يتبع Android اصطلاحات مساحة الاسم للحزمة والفئة المحددة في لغة برمجة Java. لضمان التوافق مع التطبيقات التابعة لجهات خارجية، يجب ألا تُجري أدوات تنفيذ الأجهزة أي تعديلات محظورة (انظر أدناه) على مساحات أسماء الحزمة التالية:
-
java.*
-
javax.*
-
sun.*
-
android.*
-
com.android.*
أي أنها:
- [C-0-1] يجب ألا يعدّل واجهات برمجة التطبيقات المعروضة بشكل علني على نظام Android الأساسي من خلال تغيير أي طريقة أو توقيعات الفئة، أو من خلال إزالة الفئات أو حقول الفئات.
- [C-0-2] يجب ألا تضيف إلى واجهات برمجة التطبيقات في مساحات الاسم المذكورة أعلاه أي عناصر معروضة بشكل علني (مثل الفئات أو الواجهات أو الحقول أو الطرق إلى فئات أو واجهات حالية) أو واجهات برمجة تطبيقات الاختبار أو النظام. إنّ "العنصر المكشوف للجميع" هو أي بنية غير مزيّنة بعلامة "@إخفاء" كما هي مُستخدَمة في رمز المصدر الرئيسي لنظام التشغيل Android.
قد يجري القائمون على تنفيذ الأجهزة تعديلاً لعملية التنفيذ الأساسية لواجهات برمجة التطبيقات، ولكن مثل هذه التعديلات:
- [C-0-3] يجب ألا يؤثر في السلوك المذكور وتوقيع لغة Java لأي واجهات برمجة تطبيقات مكشوفة بشكل علني.
- [C-0-4] يجب ألّا يتم الإعلان عنه أو عرضه للمطوّرين.
ومع ذلك، يمكن لأدوات تنفيذ الأجهزة إضافة واجهات برمجة تطبيقات مخصَّصة خارج مساحة اسم Android العادية، ولكن واجهات برمجة التطبيقات المخصَّصة:
- [C-0-5] يجب ألا يكون في مساحة اسم تملكها مؤسسة أخرى أو تشير إليها. على سبيل المثال، على المستخدمين الذين نفّذوا الأجهزة عدم إضافة واجهات برمجة التطبيقات إلى مساحة الاسم
com.google.*
أو مساحة اسم مشابهة، بل يحق لشركة Google فقط إجراء ذلك، وعلى Google يجب ألا تضيف واجهات برمجة تطبيقات إلى مساحات الاسم في شركات أخرى. - يجب تجميع [C-0-6] في مكتبة مشتركة على Android حتى لا تتأثر التطبيقات التي تستخدمها بشكل صريح (عبر آلية <uses-library>) بالاستخدام المتزايد للذاكرة لواجهات برمجة التطبيقات هذه.
إذا اقترح أحد القائمين على تنفيذ الجهاز تحسين إحدى مساحات اسم الحزمة أعلاه (مثلاً من خلال إضافة وظائف جديدة مفيدة إلى واجهة برمجة تطبيقات حالية، أو إضافة واجهة برمجة تطبيقات جديدة)، على القائم بالتنفيذ زيارة source.android.com وبدء عملية المساهمة بالتغييرات والرموز، وفقًا للمعلومات على ذلك الموقع الإلكتروني.
لاحظ أن القيود المذكورة أعلاه تتوافق مع الاصطلاحات القياسية لتسمية واجهات برمجة التطبيقات بلغة برمجة Java، ويهدف هذا القسم ببساطة إلى تعزيز هذه الاصطلاحات وربطها من خلال التضمين في "تعريف التوافق" هذا.
3.7. التوافق مع بيئة التشغيل
عمليات تنفيذ الأجهزة:
-
يجب أن يتوافق [C-0-1] مع تنسيق Dalvik التنفيذي بالكامل (DEX) ومواصفات رمز البايت Dalvik والدلالات الدلالية.
-
يجب أن يضبط [C-0-2] بيئات تشغيل Dalvik لتخصيص الذاكرة وفقًا للنظام الأساسي Android الأساسي، ووفقًا لما هو محدَّد في الجدول التالي. (راجِع القسم 7.1.1 للاطّلاع على تعريفات حجم الشاشة وكثافة الشاشة).
-
يجب استخدام "وقت تشغيل Android" (ART)، والتنفيذ الرئيسي لتنسيق Dalvik التنفيذي، ونظام إدارة الحزمة الخاص بتنفيذ المرجع.
-
"ينبغي" إجراء اختبارات الإخفاق في ظل أوضاع التنفيذ والبنيات المستهدفة المختلفة لضمان استقرار بيئة التشغيل. يُرجى الرجوع إلى JFuzz وDexFuzz في موقع "مشروع مفتوح المصدر لنظام Android" الإلكتروني.
لاحظ أن قيم الذاكرة المحدّدة أدناه تعتبر قيمًا دنيا، وقد تُخصص عمليات تنفيذ الأجهزة مزيدًا من الذاكرة لكل تطبيق.
تنسيق الشاشة | كثافة الشاشة | الحد الأدنى لذاكرة التطبيق |
---|---|---|
ساعة Android | 120 نقطة لكل بوصة (ldpi) | 32 ميغابايت |
160 نقطة لكل بوصة (mdpi) | ||
213 نقطة لكل بوصة (tvdpi) | ||
240 نقطة لكل بوصة (hdpi) | 36 ميغابايت | |
280 نقطة لكل بوصة (280 نقطة لكل بوصة) | ||
320 نقطة لكل بوصة (xhdpi) | 48 ميغابايت | |
360 نقطة لكل بوصة (360 نقطة لكل بوصة) | ||
400 نقطة لكل بوصة (400 نقطة لكل بوصة) | 56 ميغابايت | |
420 نقطة لكل بوصة (420 نقطة لكل بوصة) | 64 ميغابايت | |
480 نقطة لكل بوصة (xxhdpi) | 88 ميغابايت | |
560 نقطة لكل بوصة (560 نقطة لكل بوصة) | 112 ميغابايت | |
640 نقطة لكل بوصة (xxxhdpi) | 154 ميغابايت | |
صغيرة/عادية | 120 نقطة لكل بوصة (ldpi) | 32 ميغابايت |
160 نقطة لكل بوصة (mdpi) | ||
213 نقطة لكل بوصة (tvdpi) | 48 ميغابايت | |
240 نقطة لكل بوصة (hdpi) | ||
280 نقطة لكل بوصة (280 نقطة لكل بوصة) | ||
320 نقطة لكل بوصة (xhdpi) | 80 ميغابايت | |
360 نقطة لكل بوصة (360 نقطة لكل بوصة) | ||
400 نقطة لكل بوصة (400 نقطة لكل بوصة) | 96 ميغابايت | |
420 نقطة لكل بوصة (420 نقطة لكل بوصة) | 112 ميغابايت | |
480 نقطة لكل بوصة (xxhdpi) | 128 ميغابايت | |
560 نقطة لكل بوصة (560 نقطة لكل بوصة) | 192 ميغابايت | |
640 نقطة لكل بوصة (xxxhdpi) | 256 ميغابايت | |
كبير | 120 نقطة لكل بوصة (ldpi) | 32 ميغابايت |
160 نقطة لكل بوصة (mdpi) | 48 ميغابايت | |
213 نقطة لكل بوصة (tvdpi) | 80 ميغابايت | |
240 نقطة لكل بوصة (hdpi) | ||
280 نقطة لكل بوصة (280 نقطة لكل بوصة) | 96 ميغابايت | |
320 نقطة لكل بوصة (xhdpi) | 128 ميغابايت | |
360 نقطة لكل بوصة (360 نقطة لكل بوصة) | 160 ميغابايت | |
400 نقطة لكل بوصة (400 نقطة لكل بوصة) | 192 ميغابايت | |
420 نقطة لكل بوصة (420 نقطة لكل بوصة) | 228 ميغابايت | |
480 نقطة لكل بوصة (xxhdpi) | 256 ميغابايت | |
560 نقطة لكل بوصة (560 نقطة لكل بوصة) | 384 ميغابايت | |
640 نقطة لكل بوصة (xxxhdpi) | 512 ميغابايت | |
كبير جدًا | 120 نقطة لكل بوصة (ldpi) | 48 ميغابايت |
160 نقطة لكل بوصة (mdpi) | 80 ميغابايت | |
213 نقطة لكل بوصة (tvdpi) | 96 ميغابايت | |
240 نقطة لكل بوصة (hdpi) | ||
280 نقطة لكل بوصة (280 نقطة لكل بوصة) | 144 ميغابايت | |
320 نقطة لكل بوصة (xhdpi) | 192 ميغابايت | |
360 نقطة لكل بوصة (360 نقطة لكل بوصة) | 240 ميغابايت | |
400 نقطة لكل بوصة (400 نقطة لكل بوصة) | 288 ميغابايت | |
420 نقطة لكل بوصة (420 نقطة لكل بوصة) | 336 ميغابايت | |
480 نقطة لكل بوصة (xxhdpi) | 384 ميغابايت | |
560 نقطة لكل بوصة (560 نقطة لكل بوصة) | 576 ميغابايت | |
640 نقطة لكل بوصة (xxxhdpi) | 768 ميغابايت |
3.8. التوافق مع واجهة المستخدم
3.8.1. مشغّل التطبيقات (الشاشة الرئيسية)
يشتمل Android على تطبيق مشغّل (الشاشة الرئيسية) ودعم لتطبيقات الجهات الخارجية لاستبدال مشغّل الجهاز (الشاشة الرئيسية).
إذا كانت عمليات تنفيذ الجهاز تسمح لتطبيقات تابعة لجهات خارجية باستبدال الشاشة الرئيسية للجهاز، سيتم إجراء ما يلي:
- [C-1-1] يجب أن يعلن عن ميزة المنصة
android.software.home_screen
. - [C-1-2] يجب عرض الكائن
AdaptiveIconDrawable
عندما يستخدم تطبيق تابع لجهة خارجية علامة<adaptive-icon>
لتقديم رمزه، ويتم استدعاء طرقPackageManager
لاسترداد الرموز.
إذا كانت عمليات تنفيذ الأجهزة تتضمّن مشغّل تطبيقات تلقائيًا يتيح تثبيت الاختصارات داخل التطبيق، سيتم إجراء ما يلي:
- [C-2-1] يجب الإبلاغ عن
true
للموقعShortcutManager.isRequestPinShortcutSupported()
. - [C-2-2] يجب أن تتوفر للمستخدمين إمكانية سؤال المستخدم عن الاختصار قبل إضافة الاختصار الذي تطلبه التطبيقات باستخدام طريقة واجهة برمجة التطبيقات
ShortcutManager.requestPinShortcut()
. - [C-2-3] يجب أن يتوافق مع الاختصارات المثبّتة والاختصارات الديناميكية والثابتة كما هو موثَّق في صفحة "اختصارات التطبيقات".
بالمقابل، إذا كانت عمليات تنفيذ الأجهزة لا تتيح تثبيت الاختصارات داخل التطبيق، سيتم إجراء ما يلي:
- [C-3-1] يجب الإبلاغ عن
false
للموقعShortcutManager.isRequestPinShortcutSupported()
.
إذا كانت عمليات تنفيذ الأجهزة تستخدم مشغّل تطبيقات تلقائيًا يوفر إمكانية الوصول السريع إلى الاختصارات الإضافية التي تقدمها التطبيقات التابعة لجهات خارجية من خلال واجهة برمجة تطبيقات ShortcutManager، سيتم إجراء ما يلي:
- [C-4-1] يجب أن تتوافق مع جميع ميزات الاختصارات الموثّقة (مثل الاختصارات الثابتة والديناميكية واختصارات التثبيت) وأن تنفّذ بشكل كامل واجهات برمجة التطبيقات لفئة واجهة برمجة التطبيقات
ShortcutManager
.
إذا كانت عمليات تنفيذ الأجهزة تتضمّن تطبيق مشغّل تطبيقات تلقائيًا يعرض شارات لرموز التطبيقات، سيتم إجراء ما يلي:
- [C-5-1] يجب أن يلتزم بطريقة واجهة برمجة التطبيقات
NotificationChannel.setShowBadge()
. بمعنى آخر، يجب عرض عناصر وظيفية مرتبطة برمز التطبيق في حال ضبط القيمة علىtrue
، وعدم عرض أي مخطط لشارات رموز التطبيق عندما تضبط جميع قنوات الإشعارات في التطبيق القيمة علىfalse
. - قد يتم إلغاء شارات رموز التطبيق باستخدام نظام الشارات الخاص بها عندما تشير التطبيقات التابعة لجهات خارجية إلى توافقها مع نظام الشارات من خلال استخدام واجهات برمجة تطبيقات خاصة، ولكن يجب استخدام الموارد والقيم المقدَّمة من خلال واجهات برمجة التطبيقات لشارات الإشعارات الموضّحة في حزمة تطوير البرامج (SDK)، مثل
Notification.Builder.setNumber()
وNotification.Builder.setBadgeIconType()
API.
3.8.2 التطبيقات المصغَّرة
يتوافق Android مع التطبيقات المصغّرة التابعة لجهات خارجية من خلال تحديد نوع المكوِّن وواجهة برمجة التطبيقات ودورة النشاط المقابلة التي تسمح للتطبيقات بعرض "AppWidget" للمستخدم النهائي.
إذا كانت عمليات تنفيذ الأجهزة تتوافق مع أدوات التطبيقات التابعة لجهات خارجية، سيتم إجراء ما يلي:
- [C-1-1] يجب أن تعلن عن توافقها مع ميزة النظام الأساسي
android.software.app_widgets
. - يجب أن يشتمل [C-1-2] على التوافق مع AppWidgets وأن يعرض ميزات واجهة المستخدم لإضافة تطبيقات AppWidgets وضبطها وعرضها وإزالتها مباشرةً في "مشغّل التطبيقات".
- [C-1-3] يجب أن يكون قادرًا على عرض التطبيقات المصغّرة بحجم 4 × 4 بحجم الشبكة العادي. يُرجى الاطّلاع على إرشادات تصميم أداة التطبيق في مستندات حزمة تطوير البرامج (SDK) لنظام التشغيل Android للحصول على التفاصيل.
- قد يتوافق مع أدوات التطبيقات على شاشة القفل.
إذا كانت عمليات تنفيذ الأجهزة تتيح استخدام تطبيقات مصغّرة تابعة لجهات خارجية وميزة تثبيت الاختصارات داخل التطبيق، سيتم إجراء ما يلي:
- [C-2-1] يجب الإبلاغ عن
true
للموقعAppWidgetManager.html.isRequestPinAppWidgetSupported()
. - [C-2-2] يجب أن تتوفر للمستخدمين إمكانية سؤال المستخدم عن الاختصار قبل إضافة الاختصار الذي تطلبه التطبيقات باستخدام طريقة واجهة برمجة التطبيقات
AppWidgetManager.requestPinAppWidget()
.
3.8.3. الإشعارات
يشتمل Android على واجهتَي برمجة تطبيقات Notification
وNotificationManager
تسمحان لمطوّري التطبيقات التابعة لجهات خارجية بإشعار المستخدمين بالأحداث المهمة وجذب انتباههم باستخدام مكوّنات الأجهزة (مثل الصوت والاهتزاز والضوء) وميزات البرامج (مثل مركز الإشعارات وشريط النظام) في الجهاز.
3.8.3.1. عرض الإشعارات
إذا كانت عمليات تنفيذ الأجهزة تسمح للتطبيقات التابعة لجهات خارجية بإبلاغ المستخدمين بالأحداث المهمة، سيتم إجراء ما يلي:
- [C-1-1] يجب أن يتم دعم الإشعارات التي تستخدم ميزات الأجهزة، وفقًا لما هو موضّح في مستندات حزمة تطوير البرامج (SDK)، وبقدر الإمكان مع أجهزة تنفيذ الجهاز. على سبيل المثال، إذا كان تنفيذ الجهاز يتضمن هزّازًا، يجب تنفيذ واجهات برمجة التطبيقات للاهتزاز بشكلٍ صحيح. إذا كان تنفيذ الجهاز يفتقر إلى الأجهزة، يجب تنفيذ واجهات برمجة التطبيقات المقابلة في حالة عدم التنفيذ. وقد تم توضيح هذا السلوك بالتفصيل في القسم 7.
- يجب أن يعرض [C-1-2] جميع الموارد (الرموز وملفات الصور المتحركة وغيرها) المتوفرة في واجهات برمجة التطبيقات أو في دليل نمط الرمز الخاص بشريط الحالة/النظام بشكل صحيح، على الرغم من أنّها قد توفّر تجربة مستخدم بديلة للإشعارات أكثر من التجربة التي يوفّرها مرجع التنفيذ المفتوح المصدر لنظام Android.
- يجب أن يلتزم [C-1-3] بالسلوكيات الموضّحة لواجهات برمجة التطبيقات وأن ينفِّذها بشكل صحيح من أجل تعديل الإشعارات وإزالتها وتجميعها.
- [C-1-4] يجب أن يقدّم السلوك الكامل لواجهة برمجة التطبيقات NotificationChannel الموثَّقة في حزمة تطوير البرامج (SDK).
- [C-1-5] يجب أن يتمكّن المستخدم من حظر وتعديل إشعار معيّن لتطبيق تابع لجهة خارجية وفقًا لكل قناة أو مستوى لحزمة التطبيق.
- [C-1-6] يجب أن يتيح للمستخدم أيضًا إمكانية عرض قنوات الإشعارات المحذوفة.
- يجب أن يكون متوافقًا مع الإشعارات الغنية.
- يجب تقديم بعض الإشعارات ذات الأولوية الأعلى كإشعارات تنبيهية.
- يجب أن يملك المستخدم القدرة على تأجيل الإشعارات.
- قد تدير التطبيقات التابعة لجهات خارجية مستوى الوصول وتوقيت الإشعارات فقط عند إرسال إشعارات إلى المستخدمين بالأحداث المهمة، وذلك للحدّ من مشاكل السلامة، مثل مصادر تشتيت السائق.
إذا كانت عمليات تنفيذ الأجهزة تتوافق مع الإشعارات المنسّقة، سيتم إجراء ما يلي:
- يجب أن يستخدم [C-2-1] الموارد الدقيقة كما تم توفيرها من خلال فئة واجهة برمجة التطبيقات
Notification.Style
وفئاتها الفرعية لعناصر الموارد المعروضة. - يجب أن تعرض كل عنصر من عناصر الموارد (مثل الرمز والعنوان ونص الملخّص) المحدّد في فئة واجهة برمجة التطبيقات
Notification.Style
وفئاتها الفرعية.
إذا كانت عمليات تنفيذ الأجهزة تتيح إشعارات التنبيه:
- [C-3-1] يجب استخدام الموارد وعرض الإشعارات التنبيهية كما هو موضّح في فئة واجهة برمجة التطبيقات
Notification.Builder
عند عرض إشعارات تنبيهية.
3.8.3.2. خدمة تلقّي الإشعارات
يشتمل Android على واجهات برمجة تطبيقات NotificationListenerService
التي تسمح للتطبيقات (بمجرد أن يفعّلها المستخدم صراحةً) بتلقّي نسخة من جميع الإشعارات عند نشرها أو تعديلها.
إذا كانت عمليات تنفيذ الأجهزة تُبلغ عن علامة الميزة android.hardware.ram.normal
، سيتم ما يلي:
- [C-1-1] يجب تعديل الإشعارات بالكامل وبشكل صحيح وفوري لجميع خدمات المستمعين التي تم تثبيتها وفعّلها المستخدم، بما في ذلك جميع البيانات الوصفية المرتبطة بعنصر الإشعار.
- [C-1-2] يجب أن يلتزم بطلب البيانات من واجهة برمجة التطبيقات
snoozeNotification()
وأن يغلق الإشعار ويجري معاودة الاتصال بعد مدة التأجيل التي تم ضبطها في طلب البيانات من واجهة برمجة التطبيقات.
إذا كانت عمليات تنفيذ الأجهزة تسمح للمستخدم بتأجيل الإشعارات،:
- [C-2-1] يجب أن يعكس حالة الإشعار المؤجل بشكل صحيح من خلال واجهات برمجة التطبيقات العادية، مثل
NotificationListenerService.getSnoozedNotifications()
. - [C-2-2] يجب أن تتيح هذه الميزة للمستخدم لتأجيل الإشعارات الواردة من كل تطبيق مثبَّت تابع لجهة خارجية، ما لم تكن من خدمات دائمة أو تعمل في المقدّمة.
3.8.3.3. وضع "عدم الإزعاج" (DND)
إذا كانت عمليات تنفيذ الأجهزة تتوافق مع ميزة "عدم الإزعاج"، سيتم:
- [C-1-1] يجب تنفيذ نشاط يتجاوب مع الغرض ACTION_NOTIFICATION_POLICY_ACCESS_SETTINGS، ويجب أن يكون نشاطًا يمكن للمستخدم من خلاله منح أو رفض وصول التطبيق إلى إعدادات سياسة DND، وذلك بالنسبة إلى عمليات التنفيذ باستخدام UI_mode_TYPE_NORMAL.
- [C-1-2] يجب أن يعرض قواعد DND التلقائية التي أنشأتها التطبيقات إلى جانب القواعد التي أنشأها المستخدم والقواعد المحدّدة مسبقًا عندما يوفّر تنفيذ الجهاز وسيلة للمستخدم لمنح التطبيقات التابعة لجهات خارجية أو منعها من الوصول إلى إعدادات سياسة DND.
- يجب أن يلتزم [C-1-3] بقيم
suppressedVisualEffects
التي يتم تمريرها فيNotificationManager.Policy
، وإذا ضبط التطبيق أيًا من علامات SUPPRESSED_مؤثرات_SCREEN_OFF أو SUPPRESSED_Effect_SCREEN_ON، يجب أن يوضح للمستخدم أنه تم منع التأثيرات المرئية في قائمة إعدادات DND.
3.8.4 بحث
يشتمل Android على واجهات برمجة تطبيقات تتيح للمطورين دمج البحث في تطبيقاتهم وكشف بيانات تطبيقاتهم في بحث النظام العام. بشكل عام، تتكون هذه الوظيفة من واجهة مستخدم واحدة على مستوى النظام تسمح للمستخدمين بإدخال طلبات البحث وتعرض الاقتراحات أثناء كتابة المستخدمين وتعرض النتائج. وتتيح واجهات برمجة التطبيقات لنظام التشغيل Android للمطوّرين إعادة استخدام هذه الواجهة لتوفير البحث داخل تطبيقاتهم والسماح لهم بتقديم نتائج إلى واجهة مستخدم البحث العام المشتركة.
- ينبغي أن تشمل عمليات تنفيذ أجهزة Android البحث الشامل وواجهة مستخدم بحث واحدة مشتركة على مستوى النظام يمكنها تقديم اقتراحات في الوقت الفعلي استجابةً لإدخال المستخدم.
إذا كانت عمليات تنفيذ الجهاز تنفّذ واجهة البحث العامة، سيحدث ما يلي:
- [C-1-1] يجب تنفيذ واجهات برمجة التطبيقات التي تسمح لتطبيقات الجهات الخارجية بإضافة اقتراحات إلى مربع البحث عند تشغيله في وضع البحث العام.
إذا لم يتم تثبيت أي تطبيقات جهات خارجية تستخدم البحث العام:
- يجب أن يكون السلوك التلقائي هو عرض نتائج واقتراحات محرك بحث الويب.
يشمل Android أيضًا واجهات برمجة تطبيقات المساعدة للسماح للتطبيقات باختيار مقدار معلومات السياق الحالي التي تتم مشاركتها مع المساعد على الجهاز.
إذا كانت عمليات تنفيذ الأجهزة تتوافق مع إجراء المساعدة، سيتم:
- [C-2-1] يجب أن يشير بوضوح للمستخدم النهائي عند مشاركة السياق من خلال أي مما يلي:
- في كل مرة يصل فيها التطبيق المساعد إلى السياق، ويعرض ضوءًا أبيض حول حواف الشاشة يتناسب أو يتجاوز المدة والسطوع لتنفيذ "مشروع مفتوح المصدر لنظام Android".
- بالنسبة إلى تطبيق المساعد المثبَّت مسبقًا، لا يمكن للمستخدم الوصول إلى قائمة الإعدادات التلقائية لتطبيق المساعد والإدخال الصوتي، إلا إذا استدعى التطبيق المساعِد بشكل صريح من خلال الكلمة المفتاح أو إدخال مفتاح التنقّل المساعد.
- [C-2-2] التفاعل المعيّن لإطلاق التطبيق المساعد كما هو موضّح في القسم 7.2.3 يجب أن يؤدي إلى تشغيل تطبيق المساعد الذي يختاره المستخدم، أو بعبارة أخرى التطبيق الذي ينفّذ
VoiceInteractionService
، أو أي نشاط ينفّذ intent فيACTION_ASSIST
. - [SR] يُنصَح بشدة باستخدام الضغط مع الاستمرار على مفتاح
HOME
لإتمام عملية التفاعل هذه.
3.8.5 التنبيهات والإشعارات
يمكن للتطبيقات استخدام واجهة برمجة التطبيقات Toast
لعرض سلاسل قصيرة غير نمطية للمستخدم النهائي والتي تختفي بعد فترة زمنية قصيرة، واستخدام واجهة برمجة التطبيقات لنوع النافذة TYPE_APPLICATION_OVERLAY
لعرض نوافذ التنبيه كتراكب على التطبيقات الأخرى.
إذا كانت عمليات تنفيذ الجهاز تتضمّن شاشة أو إخراج فيديو، سيتم اتخاذ الإجراءات التالية:
-
[C-1-1] يجب أن تتوفر للمستخدم إمكانية حظر تطبيق من عرض نوافذ التنبيهات التي تستخدم
TYPE_APPLICATION_OVERLAY
. ويلبي تنفيذ AOSP هذا الشرط من خلال توفُّر عناصر تحكّم في مركز الإشعارات. -
[C-1-2] يجب أن يلتزم بـ Toast API وأن يعرض Toasts من التطبيقات إلى المستخدمين النهائيين بطريقة واضحة للغاية.
3.8.6. المظاهر
يوفر Android "المظاهر" كآلية للتطبيقات من أجل تطبيق الأنماط على مستوى نشاط أو تطبيق بالكامل.
يتضمّن Android مجموعة مظاهر "Holo" و"Material" كمجموعة من الأنماط المحدّدة التي يمكن لمطوِّري التطبيقات استخدامها إذا أرادوا مطابقة المظهر والمظهر العام كما هو محدّد في حزمة تطوير البرامج (SDK) لنظام التشغيل Android.
إذا كانت عمليات تنفيذ الجهاز تتضمّن شاشة أو إخراج فيديو، سيتم اتخاذ الإجراءات التالية:
- [C-1-1] يجب ألا يغيّر أيًا من سمات مظهر Holo المعروضة للتطبيقات.
- [C-1-2] يجب أن يتوافق مع مجموعة المظهر "المواد" ويجب ألا يغيّر أيًا من سمات مظهر Material أو مواد العرض الخاصة بها التي تظهر للتطبيقات.
يتضمّن Android أيضًا مجموعة المظاهر "التلقائية للجهاز" كمجموعة من الأنماط المحدّدة التي يمكن لمطوّري التطبيقات استخدامها إذا أرادوا مطابقة مظهر الجهاز ومظهره على النحو المحدّد في أداة تنفيذ الجهاز.
- قد تؤدي عمليات تنفيذ الأجهزة إلى تعديل سمات المظهر التلقائي للجهاز التي تظهر للتطبيقات.
يتيح Android مظهرًا متفاوتًا مع أشرطة نظام شفافة، ما يسمح لمطوّري التطبيقات بملء المنطقة خلف شريط الحالة وشريط التنقل بمحتوى تطبيقاتهم. ولتوفير تجربة متسقة للمطوّرين في هذه الإعدادات، من المهم الحفاظ على نمط رمز شريط الحالة في عمليات تنفيذ الأجهزة المختلفة.
إذا كانت عمليات تنفيذ الجهاز تتضمّن شريط حالة للنظام، سيؤدّي ذلك إلى ما يلي:
- [C-2-1] يجب استخدام اللون الأبيض مع رموز حالة النظام (مثل قوة الإشارة ومستوى البطارية) والإشعارات الصادرة عن النظام، إلا إذا كان الرمز يشير إلى حالة هناك مشكلة أو إذا طلب أحد التطبيقات شريط حالة خفيف باستخدام العلامة SYSTEM_UI_FLAG_LIGHT_STATUS_BAR.
- [C-2-2] يجب أن تؤدي عمليات تنفيذ أجهزة Android إلى تغيير لون رموز حالة النظام إلى اللون الأسود (للاطّلاع على التفاصيل، يُرجى الرجوع إلى R.style) عندما يطلب أحد التطبيقات شريط حالة للإضاءة.
3.8.7. خلفيات متحركة
يحدّد Android نوع المكوّنات وواجهة برمجة التطبيقات ومراحل النشاط المقابلة التي تسمح للتطبيقات بعرض "الخلفيات المتحركة" واحدة أو أكثر للمستخدم النهائي. الخلفيات المتحركة هي رسوم متحركة أو نقوش أو صور مشابهة ذات إمكانات إدخال محدودة، ويتم عرضها كخلفية خلف التطبيقات الأخرى.
تُعتبر الأجهزة قادرة على تشغيل الخلفيات المتحركة بشكل موثوق إذا كان يمكنها تشغيل جميع الخلفيات المتحركة، بدون قيود على وظائفها، وبعدد معقول من اللقطات في الثانية وبدون تأثيرات سلبية في التطبيقات الأخرى. إذا تسبّبت القيود في الأجهزة في تعطُّل الخلفيات و/أو التطبيقات أو تعطُّل وظائفها أو استهلاكها بشكلٍ مفرط في وحدة المعالجة المركزية (CPU) أو طاقة البطارية أو تشغيلها بمعدّلات إطارات منخفضة بشكلٍ غير مقبول، سيُعتبر الجهاز غير قادر على تشغيل الخلفية المتحركة. كمثال على ذلك، قد تستخدم بعض الخلفيات المتحركة سياق OpenGL 2.0 أو 3.x لعرض المحتوى الخاص بها. لن يتم تشغيل الخلفية المتحركة بشكل موثوق على أجهزة لا تدعم سياقات OpenGL المتعددة لأن استخدام الخلفية المتحركة لسياق OpenGL قد يتعارض مع التطبيقات الأخرى التي تستخدم أيضًا سياق OpenGL.
- يجب استخدام خلفيات متحركة في عمليات تنفيذ الأجهزة التي يمكنها تشغيل خلفيات متحركة بشكل موثوق به كما هو موضّح أعلاه.
في حال استخدام خلفيات مباشرة على الجهاز، سيتم إجراء ما يلي:
- [C-1-1] يجب الإبلاغ عن علامة ميزة النظام الأساسي android.software.live_wallpaper.
3.8.8 التبديل بين الأنشطة
يشتمل رمز المصدر الرئيسي لنظام التشغيل Android على شاشة النظرة العامة، وهي واجهة مستخدم على مستوى النظام لتبديل المهام وعرض الأنشطة والمهام التي تم الوصول إليها مؤخرًا باستخدام صورة مصغّرة للحالة الرسومية للتطبيق في آخر لحظة غادر فيها المستخدم التطبيق.
قد تؤدي عمليات تنفيذ الأجهزة، بما في ذلك أحدث مفتاح تنقل الوظائف على النحو الموضَّح في القسم 7.2.3 إلى تغيير الواجهة.
إذا كانت عمليات تنفيذ الأجهزة، بما في ذلك مفتاح التنقل للوظائف الأخيرة، كما هو مُوضَّح في القسم 7.2.3 تؤدي إلى تغيير الواجهة، سيحدث ما يلي:
- [C-1-1] يجب أن يتيح ما يصل إلى 7 أنشطة معروضة على الأقل.
- يجب أن تعرض على الأقل عنوان 4 أنشطة في المرة الواحدة.
- [C-1-2] يجب أن ينفذ سلوك تثبيت الشاشة وأن يقدم للمستخدم قائمة إعدادات لتبديل هذه الميزة.
- "ينبغي" عرض لون التمييز أو الرمز أو عنوان الشاشة في العناصر الأخيرة.
- يجب عرض خاصية الإغلاق ("x") ولكن قد يؤخر ذلك حتى يتفاعل المستخدم مع الشاشات.
- يجب تنفيذ اختصار للتبديل بسهولة إلى النشاط السابق.
- يجب تشغيل إجراء التبديل السريع بين آخر تطبيقين تم استخدامهما مؤخرًا، وذلك عند النقر على مفتاح الوظيفة "أحدث" مرتين.
- "يجب تفعيل" وضع النوافذ المتعددة في وضع تقسيم الشاشة، إذا كان ذلك متاحًا، عند الضغط مع الاستمرار على مفتاح الوظائف الأخيرة.
-
وقد يعرض آخر العناصر التابعة كمجموعة تتحرك معًا.
-
[SR] يُنصَح بشدة باستخدام واجهة مستخدم Android الرئيسية (أو واجهة مشابهة مستندة إلى الصورة المصغّرة) في شاشة النظرة العامة.
3.8.9 إدارة الإدخال
يتيح Android استخدام إدارة الإدخال ومحرّري أساليب الإدخال التابعة لجهات خارجية.
إذا كانت عمليات تنفيذ الأجهزة تسمح للمستخدمين باستخدام طرق إدخال تابعة لجهات خارجية على الجهاز، سيتم إجراء ما يلي:
- يجب أن يفصح [C-1-1] عن ميزة النظام الأساسي android.software.input_methods وأن تتوافق مع واجهات برمجة تطبيقات أداة IME كما هو موضّح في مستندات حزمة تطوير البرامج (SDK) لنظام التشغيل Android
- يجب أن يوفّر [C-1-2] آلية يمكن للمستخدم الوصول إليها لإضافة طرق إدخال تابعة لجهات خارجية وضبطها استجابةً للغرض android.settings.INPUT_Method_SETTINGS.
إذا كانت عمليات تنفيذ الأجهزة تشير إلى علامة ميزة android.software.autofill
، سيتم ما يلي:
- يجب أن ينفِّذ [C-2-1] واجهات برمجة التطبيقات
AutofillService
وAutofillManager
بالكامل وأن يلتزم بـandroid.settings.REQUEST_SET_AUTOFILL_SERVICE
النية في عرض قائمة إعدادات التطبيق التلقائية لتفعيل ميزة الملء التلقائي وإيقافها وتغيير خدمة الملء التلقائي التلقائية للمستخدم.
3.8.10. التحكّم في الوسائط على شاشة القفل
تم إيقاف واجهة برمجة التطبيقات Remote Control Client API من خلال الإصدار 5.0 من نظام التشغيل Android، وتم استخدامها بدلاً من نموذج إشعارات الوسائط الذي يتيح لتطبيقات الوسائط التكامل مع عناصر التحكّم في التشغيل التي تظهر على شاشة القفل.
3.8.11. شاشات الاستراحة (المعروفة سابقًا باسم Dreams)
يتيح نظام التشغيل Android استخدام شاشات الاستراحة التفاعلية التي كانت يُشار إليها سابقًا باسم "الأحلام". تسمح شاشات الاستراحة للمستخدمين بالتفاعل مع التطبيقات عندما يكون أحد الأجهزة المتصلة بمصدر طاقة غير نشِط لفترة قصيرة أو مثبَّتًا على قاعدة إرساء سطح المكتب. يمكن أن تستخدم أجهزة Android Watch شاشات استراحة، ولكن يجب أن تتضمن الأنواع الأخرى من عمليات تنفيذ الأجهزة إمكانية استخدام شاشات الاستراحة وتوفِّر خيار إعدادات للمستخدمين من أجل ضبط شاشات الاستراحة بما يتوافق مع هدف android.settings.DREAM_SETTINGS
.
3.8.12. الموقع الجغرافي
إذا كانت تطبيقات الجهاز تتضمن أداة استشعار (مثل نظام تحديد المواقع العالمي (GPS)) يمكنها توفير إحداثيات الموقع:
- [C-1-1] يجب عرض أوضاع الموقع الجغرافي في قائمة "الموقع الجغرافي" ضمن "الإعدادات".
3.8.13. يونيكود والخط
يتيح Android استخدام رموز الإيموجي المحددة في Unicode 10.0.
إذا كانت عمليات تنفيذ الجهاز تتضمّن شاشة أو إخراج فيديو، سيتم اتخاذ الإجراءات التالية:
- [C-1-1] يجب أن يكون قادرًا على عرض رموز الإيموجي هذه بأحرف رسومية ملونة.
- [C-1-2] يجب أن يتضمن الدعم لما يلي:
- خط Roboto 2 بأوزان مختلفة -sans-serif-thin، sans-serif-light، sans-serif-medium، sans-serif-blue، sans-serif-condensed"، sans-serif-condensed-light للغات المتاحة على الجهاز.
- تغطية Unicode 7.0 كاملة للّغات اللاتينية واليونانية والسيريلية، بما في ذلك النطاقات اللاتينية الموسَّعة A وB وC وD، وجميع الرموز الرسومية في كتلة رموز العملات في Unicode 7.0.
- يجب أن تكون متوافقة مع درجة لون البشرة والرموز التعبيرية المتنوعة المناسبة للعائلات على النحو المحدّد في تقرير Unicode الفني رقم 51.
إذا كانت عمليات تنفيذ الأجهزة تتضمّن أداة IME، سيتم إجراء ما يلي:
- يجب أن يتم توفير أسلوب إدخال للمستخدم لهذه الرموز التعبيرية.
3.8.14 نوافذ متعددة
إذا كان لعمليات تنفيذ الأجهزة إمكانية عرض أنشطة متعددة في الوقت نفسه، سيتم:
- [C-1-1] يجب تنفيذ أوضاع النوافذ المتعددة هذه وفقًا لسلوكيات التطبيقات وواجهات برمجة التطبيقات الموضّحة في مستندات دعم وضع النوافذ المتعددة في حزمة تطوير البرامج(SDK) لنظام التشغيل Android، واستيفاء المتطلبات التالية:
- [C-1-2] يمكن أن تشير التطبيقات إلى ما إذا كانت قادرة على العمل في وضع النوافذ المتعددة في ملف
AndroidManifest.xml
، إما بشكل صريح من خلال ضبط السمةandroid:resizeableActivity
علىtrue
أو ضمنيًا من خلال تضمين targetSdkVersion > 24. يجب عدم تشغيل التطبيقات التي تضبط هذه السمة صراحةً علىfalse
في ملف البيان في وضع النوافذ المتعددة. قد يتم تشغيل التطبيقات القديمة التي تتضمّن targetSdkVersion < 24 والتي لم يتم ضبط سمةandroid:resizeableActivity
هذه عليها في وضع النوافذ المتعددة، ولكن يجب أن يعرض النظام تحذيرًا يفيد بأنّ التطبيق قد لا يعمل على النحو المتوقَّع في وضع النوافذ المتعددة. - [C-1-3] يجب ألا يتم توفير وضع تقسيم الشاشة أو الشكل الحر إذا كان ارتفاع الشاشة أقل من 440 وحدة بكسل مستقلة الكثافة وعرض الشاشة أقل من 440 بكسل مستقل الكثافة (dp).
- يجب أن تتوافق عمليات تنفيذ الأجهزة بحجم الشاشة
xlarge
مع وضع الشكل الحر.
إذا كانت عمليات تنفيذ الأجهزة تتيح أوضاع النوافذ المتعددة ووضع تقسيم الشاشة، سيتم إجراء ما يلي:
- [C-2-1] يجب تحميل مشغّل تطبيقات قابل لتغيير الحجم مسبقًا كإعداد تلقائي.
- [C-2-2] يجب اقتصاص النشاط الذي تم إرساؤه لنافذة متعددة في وضع تقسيم الشاشة، مع عرض بعض محتواها، إذا كان تطبيق "مشغّل التطبيقات" هو النافذة التي يتم التركيز عليها.
- يجب أن يلتزم [C-2-3] بالقيم المعلَن عنها في
AndroidManifestLayout_minWidth
وAndroidManifestLayout_minHeight
لتطبيق مشغّل التطبيقات التابع لجهة خارجية وألا يلغي هذه القيم أثناء عرض بعض محتوى النشاط الذي تم إرساؤه.
إذا كانت تطبيقات الأجهزة تتيح أوضاع النوافذ المتعددة ووضع النوافذ المتعددة في "نافذة ضمن النافذة"، سيتم إجراء ما يلي:
- [C-3-1] يجب تشغيل الأنشطة في وضع النوافذ المتعددة في وضع "نافذة ضمن النافذة" عندما يكون التطبيق: * استهداف المستوى 26 من واجهة برمجة التطبيقات أو المستويات الأعلى ويشير إلى
android:supportsPictureInPicture
* استهداف المستوى 25 من واجهة برمجة التطبيقات أو المستويات الأدنى ويشير إلى كل منandroid:resizeableActivity
وandroid:supportsPictureInPicture
- يجب أن يعرض [C-3-2] الإجراءات في SystemUI على النحو المحدّد في نشاط PIP الحالي من خلال
setActions()
API. - يجب أن يتوافق [C-3-3] مع نِسب عرض إلى ارتفاع أكبر من أو تساوي 1:2.39 وأقل من أو تساوي 2.39:1، على النحو المحدّد في نشاط نافذة ضمن النافذة (PIP) من خلال واجهة برمجة تطبيقات
setAspectRatio()
. - [C-3-4] يجب استخدام
KeyEvent.KEYCODE_WINDOW
للتحكم في نافذة PIP، وإذا لم يتم تنفيذ وضع PIP، يجب أن يكون المفتاح متاحًا للنشاط الذي تعمل في المقدّمة. - [C-3-5] يجب أن تتوفر للمستخدم قدرة على حظر عرض تطبيق في وضع PIP، كما أنّ تنفيذ AOSP يلبي هذا الشرط من خلال توفير عناصر تحكّم في مركز الإشعارات.
- [C-3-6] يجب تخصيص حد أدنى للعرض والارتفاع يبلغ 108 بكسل مستقل الكثافة (dp) للنافذة ضمن النافذة (PIP) والحد الأدنى للعرض وهو 240 بكسل مستقل الكثافة (dp) وارتفاع يبلغ 135 بكسل مستقل الكثافة (dp) للنافذة ضمن النافذة عندما يتم ضبط السمة
Configuration.uiMode
علىUI_MODE_TYPE_TELEVISION
3.9. إدارة الجهاز
يتضمّن Android ميزات تسمح للتطبيقات الواعية بالأمان بتنفيذ وظائف إدارة الجهاز على مستوى النظام، مثل فرض سياسات كلمة المرور أو إجراء محو البيانات عن بُعد، من خلال واجهة برمجة التطبيقات لإدارة جهاز Android].
إذا كانت عمليات تنفيذ الأجهزة تنفِّذ المجموعة الكاملة من سياسات إدارة الأجهزة المحدّدة في مستندات حزمة تطوير البرامج (SDK) لنظام التشغيل Android، ستنفذ الإجراءات التالية:
- [C-1-1] يجب أن يفصح عن
android.software.device_admin
. - [C-1-2] يجب توفير إمكانية إدارة حسابات مالكي الأجهزة على النحو الموضّح في الفقرة 3.9.1 والفقرة 3.9.1.1.
- يجب أن يفصح [C-1-3] عن توافق الملفات الشخصية المُدارة من خلال علامة ميزة
android.software.managed_users
، باستثناء الحالات التي يتم فيها ضبط الجهاز على الإبلاغ عن نفسه على أنّه جهاز مزوّد بذاكرة وصول عشوائي (RAM) منخفضة أو من أجل تخصيص وحدة تخزين داخلية (غير قابلة للإزالة) كمساحة تخزين مشتركة.
3.9.1 توفير المتطلبات اللازمة للأجهزة
3.9.1.1 توفير المتطلبات اللازمة لمالك الجهاز
إذا كانت عمليات تنفيذ الأجهزة تشير إلى android.software.device_admin
، سيتم ما يلي:
- [C-1-1] يجب أن يتيح تسجيل برنامج Device Policy (DPC) باعتباره تطبيق مالك الجهاز كما هو موضح أدناه:
- إذا لم يتم بعد ضبط بيانات المستخدمين في عملية تنفيذ الجهاز، سيحدث ما يلي:
- [C-1-3] يجب الإبلاغ عن
true
للموقع الإلكترونيDevicePolicyManager.isProvisioningAllowed(ACTION_PROVISION_MANAGED_DEVICE)
. - [C-1-4] يجب تسجيل تطبيق وحدة التحكّم بسياسة الجهاز (DPC) كتطبيق مالك الجهاز استجابةً للإجراء المطلوب
android.app.action.PROVISION_MANAGED_DEVICE
. - [C-1-5] يجب تسجيل تطبيق وحدة التحكّم بسياسة الجهاز (DPC) كتطبيق مالك الجهاز إذا أعلن الجهاز عن توفّر ميزة "الاتصالات القريبة المدى" (NFC) من خلال علامة الميزة
android.hardware.nfc
وتلقّى رسالة NFC تتضمّن سجلّاً من نوع MIMEMIME_TYPE_PROVISIONING_NFC
.
- [C-1-3] يجب الإبلاغ عن
- عندما تحتوي عملية تنفيذ الجهاز على بيانات المستخدمين، يحدث ما يلي:
- [C-1-6] يجب الإبلاغ عن
false
فيDevicePolicyManager.isProvisioningAllowed(ACTION_PROVISION_MANAGED_DEVICE)
. - [C-1-7] يجب ألا يتم بعد الآن تسجيل أي تطبيق لوحدة التحكّم بسياسة الجهاز (DPC) كتطبيق مالك الجهاز.
- [C-1-6] يجب الإبلاغ عن
- إذا لم يتم بعد ضبط بيانات المستخدمين في عملية تنفيذ الجهاز، سيحدث ما يلي:
- [C-1-2] يجب عدم ضبط تطبيق (بما في ذلك التطبيق المثبَّت مسبقًا) كتطبيق مالك الجهاز بدون موافقة صريحة أو إجراء صريح من المستخدم أو مشرف الجهاز.
إذا كانت عمليات تنفيذ الأجهزة تشير إلى android.software.device_admin
، ولكنها تتضمّن أيضًا حلاً لإدارة مالك الجهاز ملكية خاصة وتوفّر آلية للترويج لتطبيق تم إعداده في الحل الذي يخصّ "مالك الجهاز" بصفته "مالك الجهاز" مكافئًا لـ "مالك الجهاز" العادي على النحو الذي تعترف به واجهات برمجة تطبيقات DevicePolicyManager في نظام التشغيل Android العادية، فإنّها:
- [C-2-1] يجب تحديد عملية للتحقّق من أنّ التطبيق المحدّد الذي يتم الترويج له ينتمي إلى حل مشروع لإدارة أجهزة المؤسسات، وأنّه تم إعداده مسبقًا في الحل المخصّص للحصول على حقوق تعادل "مالك الجهاز".
- يجب أن يعرض [C-2-2] بيان الإفصاح عن موافقة مالك الجهاز AOSP نفسه كما في المسار الذي بدأه
android.app.action.PROVISION_MANAGED_DEVICE
قبل تسجيل تطبيق وحدة التحكّم بسياسة الجهاز كـ "مالك الجهاز". - قد يحتوي على بيانات المستخدمين على الجهاز قبل تسجيل تطبيق وحدة التحكّم بسياسة الجهاز (DPC) بصفته "مالك الجهاز".
3.9.1.2 توفير المتطلبات اللازمة للملف الشخصي المُدار
إذا كانت عمليات تنفيذ الأجهزة تشير إلى android.software.managed_users
، سيتم ما يلي:
-
[C-1-1] يجب تنفيذ واجهات برمجة التطبيقات التي تسمح لتطبيق وحدة التحكم بسياسة الجهاز (DPC) بأن يصبح مالك ملف شخصي مُدار جديد.
-
[C-1-2] يجب أن تتوافق عملية توفير المتطلبات اللازمة للملف الشخصي المُدار (المسار الذي يبدأه android.app.action.PROVISION_MANAGED_PROFILE) مع عملية تنفيذ بروتوكول AOSP.
-
يجب أن يقدّم [C-1-3] الميزات التالية للمستخدم ضمن "الإعدادات" لإعلام المستخدم عند إيقاف إحدى وظائف نظام معيّنة من قِبل "وحدة التحكّم بسياسة الجهاز" (DPC):
- يشير ذلك المصطلح إلى رمز متّسق أو غير ذلك من بيانات المستخدم (مثل رمز معلومات AOSP الأولية) لتوضيح الحالات التي يقيّد فيها مشرف الجهاز إعدادًا معيّنًا.
- رسالة توضيحية موجزة يقدِّمها مشرف الجهاز من خلال
setShortSupportMessage
. - رمز تطبيق وحدة التحكّم بسياسة الجهاز (DPC).
3.9.2 دعم الملفات الشخصية المُدارة
إذا كانت عمليات تنفيذ الأجهزة تشير إلى android.software.managed_users
، سيتم ما يلي:
- يجب أن يتوافق [C-1-1] مع الملفات الشخصية المُدارة من خلال واجهات برمجة تطبيقات
android.app.admin.DevicePolicyManager
. - [C-1-2] يجب أن يتيح إنشاء ملف شخصي مُدار واحد فقط.
- [C-1-3] يجب استخدام شارة رمز (على غرار شارة العمل الرئيسي الخاصة بمشروع AOSP) لتمثيل التطبيقات والتطبيقات المصغّرة المُدارة وعناصر واجهة المستخدم ذات الشارات، مثل "التطبيقات الأخيرة والإشعارات".
- يجب أن يعرض [C-1-4] رمز إشعار (على غرار شارة العمل الأولية الخاصة ببرنامج AOSP) للإشارة إلى الوقت الذي يكون فيه المستخدم ضمن تطبيق ملف شخصي مُدار.
- [C-1-5] يجب عرض إشعار منبثق يشير إلى أنّ المستخدم ضمن الملف الشخصي المُدار في حال استيقاظ الجهاز (ACTION_USER_PRESENT) ووقت تنشيطه (ACTION_USER_PRESENT) وكان التطبيق الذي يعمل في المقدّمة ضمن الملف الشخصي المُدار.
- [C-1-6] عند وجود ملف شخصي مُدار، يجب أن يُظهر عنصر العناصر المرئية في "أداة اختيار Intent" للسماح للمستخدم بإعادة توجيه الهدف من الملف الشخصي المُدار إلى المستخدم الأساسي، أو العكس، في حال تفعيله من خلال "وحدة التحكّم بسياسة الجهاز".
- [C-1-7] عند وجود ملف شخصي مُدار، يجب أن يعرض الخصائص التالية للمستخدم لكل من المستخدم الأساسي والملف الشخصي المُدار:
- فصل المستخدم الأساسي عن بيانات البطارية والموقع الجغرافي وبيانات الجوّال واستخدام مساحة التخزين، بالإضافة إلى حساب المستخدم الأساسي والملف الشخصي المُدار
- الإدارة المستقلة لتطبيقات الشبكة الافتراضية الخاصة المثبَّتة ضمن المستخدم الأساسي أو الملف الشخصي المُدار
- إدارة مستقلة للتطبيقات المثبّتة ضمن المستخدم الأساسي أو الملف الشخصي المُدار
- إدارة مستقلة للحسابات ضمن الملف الشخصي المُدار أو المستخدم الأساسي.
- [C-1-8] يجب التأكّد من أنّ برامج الاتصال وجهات الاتصال والمراسلة المثبَّتة مسبقًا يمكنها البحث عن معلومات المتصل والبحث عنها من الملف الشخصي المُدار (إن وُجد) إلى جانب المعلومات الواردة في الملف الشخصي الأساسي، إذا كانت "وحدة التحكّم في سياسة الجهاز" تسمح بذلك.
- [C-1-9] يجب أن يضمن توافقه مع جميع متطلبات الأمان السارية على جهاز تم تفعيل ميزة العديد من المستخدمين فيه (راجِع القسم 9.5)، حتى إذا لم يتم احتساب الملف الشخصي المُدار كمستخدم آخر إلى جانب المستخدم الأساسي.
- [C-1-10] يجب أن يتيح إمكانية تحديد شاشة قفل منفصلة تستوفي المتطلبات التالية لمنح إذن الوصول إلى التطبيقات التي يتم تشغيلها في ملف شخصي مُدار.
- يجب أن تراعي عمليات تنفيذ الأجهزة هدف
DevicePolicyManager.ACTION_SET_NEW_PASSWORD
وأن تعرض واجهة لإعداد بيانات اعتماد منفصلة لشاشة القفل للملف الشخصي المُدار. - يجب أن تستخدم بيانات اعتماد شاشة القفل للملف الشخصي المُدار آليات تخزين بيانات الاعتماد والإدارة نفسها المستخدمة في الملف الشخصي الرئيسي، على النحو الموضَّح في موقع مشروع مفتوح المصدر لنظام Android.
- يجب أن تنطبق سياسات كلمة المرور في وحدة التحكّم بسياسة الجهاز على بيانات اعتماد شاشة القفل للملف الشخصي المُدار فقط ما لم يتم استدعاؤها من خلال المثيل
DevicePolicyManager
الذي يعرضه getParentProfileInstance.
- يجب أن تراعي عمليات تنفيذ الأجهزة هدف
- عند عرض جهات الاتصال من الملف الشخصي المُدار في سجلّ المكالمات المثبَّت مسبقًا وواجهة المستخدم أثناء المكالمة والإشعارات التي تكون قيد التقدّم أو المكالمات الفائتة وجهات الاتصال وتطبيقات المراسلة، يجب وضع الشارة نفسها المستخدَمة للإشارة إلى تطبيقات الملف الشخصي المُدارة.
3.10. تسهيل الاستخدام
يوفّر Android طبقة لتسهيل الاستخدام تساعد المستخدمين الذين يعانون من عجز في التنقّل بين أجهزتهم بسهولة أكبر. بالإضافة إلى ذلك، يوفّر Android واجهات برمجة تطبيقات خاصة بالنظام الأساسي تمكّن عمليات تنفيذ خدمات تسهيل الاستخدام من تلقّي استدعاءات لأحداث النظام وإنشاء آليات بديلة للتعليقات، مثل تحويل النص إلى كلام والتجاوب الحسّي والتنقّل باستخدام كرة التعقب أو لوحة التحكّم.
إذا كانت عمليات تنفيذ الأجهزة تتوافق مع خدمات إمكانية الوصول التابعة لجهات خارجية، سيتم إجراء ما يلي:
- [C-1-1] يجب أن يتم تنفيذ إطار عمل تسهيل الاستخدام في Android كما هو موضح في مستندات حزمة SDK Accessibility APIs.
- يجب أن ينشئ [C-1-2] أحداث تسهيل الاستخدام ويقدّم
AccessibilityEvent
المناسب لجميع عمليات تنفيذAccessibilityService
المسجَّلة على النحو الموضَّح في حزمة SDK. - يجب أن يلتزم [C-1-3] بالغرض من "
android.settings.ACCESSIBILITY_SETTINGS
" لتوفير آلية يمكن للمستخدمين الوصول إليها لتفعيل خدمات تسهيل الاستخدام التابعة لجهات خارجية وإيقافها إلى جانب خدمات تسهيل الاستخدام المحمَّلة مُسبَقًا. - [C-1-4] يجب إضافة زر في شريط التنقّل بالنظام يسمح للمستخدم بالتحكّم في خدمة تسهيل الاستخدام عندما تشير خدمات تسهيل الاستخدام المفعّلة إلى
AccessibilityServiceInfo.FLAG_REQUEST_ACCESSIBILITY_BUTTON
. تجدر الإشارة إلى أنّه لا ينطبق هذا الشرط على عمليات تنفيذ الأجهزة التي لا تتضمّن شريط تنقّل للنظام، ولكن يجب أن تمنح عمليات تنفيذ الأجهزة قدرة المستخدم على التحكّم في خدمات تسهيل الاستخدام هذه.
إذا كانت عمليات تنفيذ الأجهزة تتضمّن خدمات تسهيل الاستخدام التي تم تحميلها مسبقًا، سيتم إجراء ما يلي:
- [C-2-1] يجب تنفيذ خدمات تسهيل الاستخدام هذه المحملة مسبقًا باعتبارها تطبيقات مع إمكانية التشغيل المباشر عند تشفير تخزين البيانات باستخدام التشفير المستند إلى الملف (FBE).
- يجب توفير آلية في مسار الإعداد غير المألوف للمستخدمين لتفعيل خدمات تسهيل الاستخدام ذات الصلة، بالإضافة إلى خيارات لضبط حجم الخط وحجم العرض وإيماءات التكبير.
3.11. تحويل النص إلى كلام
يشتمل Android على واجهات برمجة تطبيقات تتيح للتطبيقات استخدام خدمات تحويل النص إلى كلام وتسمح لمقدمي الخدمات بتوفير عمليات تنفيذ خدمات تحويل النص إلى كلام.
إذا كانت عمليات تنفيذ الجهاز تُبلغ عن الميزة android.hardware.audio.output، سيتم إجراء ما يلي:
- [C-1-1] يجب أن يتوافق مع واجهات برمجة تطبيقات إطار عمل تحويل النص إلى كلام في Android.
إذا كانت عمليات تنفيذ الأجهزة تتيح تثبيت محركات تحويل النص إلى كلام التابعة لجهات خارجية، فإنها:
- [C-2-1] يجب أن تتوفر للمستخدمين القدرة على اختيار محرك تحويل النص إلى كلام لاستخدامه على مستوى النظام.
3.12. إطار عمل إدخال التلفزيون
يعمل إطار عمل إدخال تلفزيون Android (TIF) على تبسيط عملية إرسال المحتوى المباشر إلى أجهزة تلفزيون Android. يوفّر TIF واجهة برمجة تطبيقات عادية لإنشاء وحدات إدخال تتحكّم في أجهزة Android TV.
في حال كانت عمليات تنفيذ الأجهزة تتوافق مع TIF، سيتم إجراء ما يلي:
- [C-1-1] يجب أن يعلن عن ميزة المنصة
android.software.live_tv
. - [C-1-2] يجب إجراء تحميل مسبق لتطبيق البث التلفزيوني (تطبيق البث التلفزيوني) واستيفاء جميع المتطلبات الموضّحة في القسم 3.12.1.
3.12.1 تطبيق بث تلفزيوني
في حال كانت عمليات تنفيذ الأجهزة تتوافق مع TIF:
- [C-1-1] يجب أن يوفر تطبيق البث التلفزيوني مرافق لتثبيت قنوات التلفزيون واستخدامها واستيفاء المتطلبات التالية:
يجب أن يستوفي تطبيق التلفزيون المطلوب لعمليات تنفيذ أجهزة Android التي أعلنت علامة ميزة android.software.live_tv
المتطلبات التالية:
- يجب أن تتيح عمليات تنفيذ الأجهزة تثبيت وإدارة مصادر الإدخال المستنِدة إلى TIF التابعة لجهات خارجية (إدخالات الجهات الخارجية).
- يمكن أن توفر عمليات تنفيذ الأجهزة فصلاً مرئيًا بين الإدخالات المستندة إلى TIF المثبَّتة مسبقًا والإدخالات التابعة لجهات خارجية.
- يجب ألا تعرض عمليات تنفيذ الأجهزة مدخلات الجهات الخارجية على أكثر من إجراء تنقّل واحد بعيدًا عن تطبيق البث التلفزيوني (أي توسيع قائمة إدخالات الجهات الخارجية من تطبيق البث التلفزيوني).
يوفّر "المشروع المفتوح المصدر لنظام Android" تنفيذًا لتطبيق تلفزيون يستوفي المتطلبات المذكورة أعلاه.
3.12.1.1 دليل البرامج الإلكتروني
في حال كانت عمليات تنفيذ الأجهزة تتوافق مع TIF، سيتم إجراء ما يلي:
- يجب أن يعرض [C-1-1] عنصرًا معلوماتيًا وتفاعليًا يجب أن يتضمن دليل برامج إلكتروني (EPG) تم إنشاؤه من القيم الواردة في حقول Tvct.Programs.
- [C-1-2] عند تغيير القناة، يجب أن تعرض عمليات تنفيذ الأجهزة بيانات وضع EPG للبرنامج قيد التشغيل حاليًا.
- [SR] يُنصَح بشدة بأن تعرض "دليل EPG" للإدخالات المثبَّتة والإدخالات التابعة لجهات خارجية بمستوى بروز متساوٍ. يجب ألا تعرض "دليل EPG" مدخلات الجهات الخارجية على بُعد أكثر من إجراء تنقّل واحد بعيدًا عن الإدخالات المثبَّتة في وضع EPG.
- يجب أن تعرض "دليل EPG" معلومات من جميع مصادر الإدخال المثبّتة ومصادر الإدخال التابعة لجهات خارجية.
- قد توفّر "دليل EPG" فصلاً مرئيًا بين مصادر الإدخال المثبَّتة والإدخالات التابعة لجهات خارجية.
3.12.1.2. التنقّل
في حال كانت عمليات تنفيذ الأجهزة تتوافق مع TIF، سيتم إجراء ما يلي:
-
[C-1-1] يجب أن يتيح التنقل في الوظائف التالية من خلال مفاتيح لوحة التحكّم ولوحة التحكّم للخلف والشاشة الرئيسية على أجهزة إدخال أجهزة Android TV (مثل وحدة التحكّم عن بُعد أو تطبيق التحكّم عن بُعد أو وحدة تحكّم الألعاب):
- تغيير قنوات التلفزيون
- فتح EPG
- ضبط مصادر الإدخال المستندة إلى TIF التابعة لجهات خارجية وضبطها (في حال توفُّر هذه الإدخالات)
- فتح قائمة الإعدادات
-
"ينبغي" تمرير الأحداث الرئيسية إلى إدخالات HDMI من خلال التحكم بالأجهزة الإلكترونية الاستهلاكية.
3.12.1.3. ربط تطبيق إدخال التلفزيون
يجب أن تتيح عمليات تنفيذ أجهزة Android TV ربط تطبيقات إدخال التلفزيون، ما يسمح لجميع الإدخالات بتوفير روابط للأنشطة من النشاط الحالي إلى نشاط آخر (مثل رابط من البرامج المباشرة إلى المحتوى ذي الصلة). "ينبغي" أن يعرض تطبيق البث التلفزيوني ربط تطبيق إدخال التلفزيون عند توفره.
3.12.1.4. تغيير الوقت
في حال كانت عمليات تنفيذ الأجهزة تتوافق مع TIF، سيتم إجراء ما يلي:
- [SR] يُنصَح بشدة بإتاحة ميزة تغيير الوقت، ما يسمح للمستخدم بإيقاف المحتوى المباشر مؤقتًا واستئنافه
- يجب أن يتم توفير طريقة للمستخدم لإيقاف البرنامج قيد التشغيل حاليًا مؤقتًا واستئناف تشغيله، في حال توفُّر ميزة تغيير الوقت لهذا البرنامج.
3.12.1.5. تسجيل التلفزيون
في حال كانت عمليات تنفيذ الأجهزة تتوافق مع TIF، سيتم إجراء ما يلي:
- [SR] يُنصح بشدة لإتاحة التسجيل على التلفزيون.
- إذا كان إدخال التلفزيون يتيح التسجيل ولم يكن محظورًا تسجيل برنامج، قد توفِّر "دليل EPG" طريقة لتسجيل برنامج.
3.13. الإعدادات السريعة
يوفّر Android مكوّنًا في واجهة المستخدم للإعدادات السريعة يتيح الوصول السريع إلى الإجراءات المستخدَمة بشكل متكرّر أو الحاجة الملحّة.
إذا كانت عمليات تنفيذ الأجهزة تتضمن مكوّنًا لواجهة المستخدم في "الإعدادات السريعة"، سينفّذ ما يلي:
- [C-1-1] يجب أن يسمح للمستخدم بإضافة أو إزالة الفئات المتوفرة من خلال واجهات برمجة تطبيقات
quicksettings
من تطبيق تابع لجهة خارجية. - [C-1-2] يجب ألا تتم إضافة مربّع تلقائيًا من تطبيق تابع لجهة خارجية إلى "الإعدادات السريعة" مباشرةً.
- [C-1-3] يجب أن يعرض جميع المربّعات التي يضيفها المستخدم من تطبيقات الجهات الخارجية إلى جانب أقسام الإعدادات السريعة التي يوفّرها النظام.
3.14. واجهة مستخدم الوسائط
إذا كانت عمليات تنفيذ الأجهزة تتضمّن إطار عمل لواجهة المستخدم الذي يتوافق مع التطبيقات التابعة لجهات خارجية التي تعتمد على MediaBrowser
وMediaSession
، سيتم ما يلي:
- [C-1-1] يجب عرض رموز MediaItem ورموز الإشعارات بدون تغيير.
- [C-1-2] يجب أن يعرض هذه العناصر كما هو موضّح في MediaSession، مثل البيانات الوصفية والرموز والصور.
- [C-1-3] يجب أن يعرض عنوان التطبيق.
- [C-1-4] يجب أن يحتوي على درج لتقديم العرض الهرمي MediaBrowser.
- [C-1-5] يجب استخدام النقر مرّتين على
KEYCODE_HEADSETHOOK
أوKEYCODE_MEDIA_PLAY_PAUSE
على أنهKEYCODE_MEDIA_NEXT
للنطاقMediaSession.Callback#onMediaButtonEvent
.
3.15. التطبيقات الفورية
يجب أن تستوفي عمليات تنفيذ الأجهزة المتطلبات التالية:
- [C-0-1] يجب منح التطبيقات الفورية الأذونات التي تم ضبط
android:protectionLevel
فيها على"ephemeral"
فقط. - [C-0-2] يجب ألا تتفاعل التطبيقات الفورية مع التطبيقات المثبَّتة من خلال أهداف ضمنية ما لم ينطبق أي مما يلي:
- تم الكشف عن فلتر نمط intent للمكوِّن ويحتوي على CATEGORY_BROWSABLE
- الإجراء هو أحد ACTION_SEND أو ACTION_SENDTO أو ACTION_SEND_MULTIPLE
- يتم عرض الاستهداف بشكل صريح باستخدام android:visibleToInstantApps
- [C-0-3] يجب ألا تتفاعل التطبيقات الفورية بشكل صريح مع التطبيقات المثبّتة ما لم يتم إظهار المكوِّن من خلال android:visibleToInstantApps.
- [C-0-4] يجب ألا ترى التطبيقات المثبّتة تفاصيل حول التطبيقات الفورية على الجهاز ما لم يتصل التطبيق الفوري بالتطبيق المثبَّت صراحةً.
3.16. إقران الجهاز المصاحب
يتيح نظام التشغيل Android إمكانية إقران الأجهزة الملحقة لإدارة عملية الربط بالأجهزة المصاحبة بشكل أكثر فعالية، كما يوفّر واجهة برمجة تطبيقات CompanionDeviceManager
للتطبيقات للوصول إلى هذه الميزة.
إذا كانت عمليات تنفيذ الأجهزة تتيح ميزة إقران الجهاز المصاحب، سيتم إجراء ما يلي:
- [C-1-1] يجب أن يفصح عن علامة الميزة
FEATURE_COMPANION_DEVICE_SETUP
. - [C-1-2] يجب أن يتأكد من تنفيذ واجهات برمجة التطبيقات في حزمة
android.companion
بشكل كامل. - [C-1-3] يجب أن يوفر للمستخدم خصائص المستخدم لاختيار/تأكيد توفُّر جهاز مصاحب وتشغيله.
4. توافق حزمة التطبيقات
عمليات تنفيذ الأجهزة:
- يجب أن يكون [C-0-1] قادرًا على تثبيت ملفات ".apk" وتشغيلها على نظام Android كما تم إنشاؤه بواسطة أداة "aapt" المضمّنة في حزمة تطوير البرامج (SDK) الرسمية لنظام التشغيل Android.
- بما أنّ الشرط أعلاه قد يمثّل تحديًا، ننصح عمليات تنفيذ الأجهزة باستخدام عمليات تطبيق SystemDevice لإدارة حزمة AOSP.
- يجب أن يتيح [C-0-2] إثبات ملكية ملفات " .apk" باستخدام الإصدار 2 من مخطّط توقيع حِزم APK وتوقيع JAR.
- [C-0-3] يجب ألا يوسّع نطاق تنسيقات رمز البايت .apk أو بيان Android أو Dalvik bytecode أو RenderScript من خلال رمز البايت الخاص بـ RenderScript بطريقة قد تمنع تثبيت هذه الملفات وتشغيلها بشكل صحيح على الأجهزة المتوافقة الأخرى.
- [C-0-4] يجب ألا يسمح هذا الإجراء للتطبيقات باستثناء "أداة تثبيت السجلّ" الحالية للحزمة بإلغاء تثبيت التطبيق تلقائيًا بدون أي طلب، كما هو موثق في حزمة تطوير البرامج (SDK) للحصول على إذن
DELETE_PACKAGE
. الاستثناءات الوحيدة هي أنّ تطبيق التحقّق من حزمة النظام الذي يتعامل مع PACKAGE_NEEDS_VERIFICATION من خلال إجراء عملية تحقق ونية التطبيق لدى "مدير مساحة التخزين" ويعالج ACTION_MANAGE_STORAGE.
يجب ألا تثبّت عمليات تنفيذ الأجهزة حِزم التطبيقات من مصادر غير معروفة، إلا إذا كان التطبيق الذي يطلب التثبيت يستوفي جميع المتطلبات التالية:
- يجب أن يتضمّن بيان إذن
REQUEST_INSTALL_PACKAGES
أو أن يتم ضبطandroid:targetSdkVersion
على 24 أو أقل. - يجب أن يحصل المستخدم على إذن لتثبيت تطبيقات من مصادر غير معروفة.
يجب أن تتضمّن عمليات تنفيذ الأجهزة نشاطًا يعالج هدف android.settings.MANAGE_UNKNOWN_APP_SOURCES
. يجب أن تتوفر للمستخدم إمكانية منح أو إبطال إذن تثبيت التطبيقات من مصادر غير معروفة لكل تطبيق، ولكن قد يختار تنفيذ هذا الإجراء لمنع عرض التطبيق على Chrome وإرجاع RESULT_CANCELED
إلى startActivityForResult()
، إذا كانت أداة تنفيذ الجهاز لا تريد السماح للمستخدمين بهذا الخيار. ومع ذلك، حتى في مثل هذه الحالات، يجب أن توضح للمستخدم سبب عدم وجود مثل هذا الاختيار.
5. توافق الوسائط المتعددة
عمليات تنفيذ الأجهزة:
- يجب أن يتوافق [C-0-1] مع تنسيقات الوسائط وبرامج الترميز وبرامج فك الترميز وأنواع الملفات وتنسيقات الملفات المحدّدة في القسم 5.1 لكل برنامج ترميز معرَّف في
MediaCodecList
. - يجب أن يُعلن [C-0-2] عن توافقه مع برامج الترميز وفك الترميز المتاحة للتطبيقات التابعة لجهات خارجية عبر
MediaCodecList
. - يجب أن يكون [C-0-3] قادرًا على فك ترميز جميع التنسيقات التي يمكنه ترميزها للتطبيقات التابعة لجهات خارجية. يشمل ذلك كل فيديوهات البث التي تنشئها برامج الترميز الخاصة بها والملفات الشخصية التي تمّ الإبلاغ عنها في
CamcorderProfile
.
عمليات تنفيذ الأجهزة:
- من المفترض أن يستهدف الحد الأدنى لوقت استجابة برنامج الترميز، أي ما يلي:
- "ينبغي ألا" تستهلك مخازن المدخلات وتخزنها وترجع مخازن المدخلات فقط بمجرد معالجتها.
- يجب ألا يتم الاحتفاظ بالموردين الاحتياطية التي تم فك ترميزها لفترة أطول مما هو محدَّد بموجب المعيار (مثل SPS).
- يجب ألا يتم الاحتفاظ بالموردين الاحتياطية المشفَّرة لفترة أطول مما هو مطلوب في بنية مجموعة الصور (GOP).
يتم توفير جميع برامج الترميز المدرجة في القسم أدناه كعمليات تنفيذ للبرامج في طريقة التنفيذ المفضّلة لنظام التشغيل Android من "مشروع مفتوح المصدر لنظام Android".
يُرجى ملاحظة أنّه لا توجد أي إقرارات من Google أو Open Handset Alliance هذه بأنّ برامج الترميز هذه مجانية من براءات الاختراع التابعة لجهات خارجية. ويُنصح الأشخاص الذين ينوون استخدام رمز المصدر هذا في منتجات الأجهزة أو البرامج بأن تنفيذ هذا الرمز، بما في ذلك البرامج المفتوحة المصدر أو البرامج التجريبية، قد يتطلب تراخيص براءات الاختراع من مالكي براءات الاختراع المعنيين.
5.1. برامج ترميز الوسائط
5.1.1. ترميز الصوت
يمكنك الاطّلاع على مزيد من التفاصيل في 5.1.3. تفاصيل برامج ترميز الصوت
إذا أعلنت عمليات تنفيذ الأجهزة عن android.hardware.microphone
، يجب أن تتوافق مع الترميز الصوتي التالي:
- [C-1-1] PCM/WAVE
5.1.2. فك ترميز الصوت
يمكنك الاطّلاع على مزيد من التفاصيل في 5.1.3. تفاصيل برامج ترميز الصوت
إذا كانت عمليات تنفيذ الأجهزة تشير إلى توافقها مع ميزة android.hardware.audio.output
، ينطبق عليها ما يلي:
- [C-1-1] ملف تعريف MPEG-4 AAC (AAC LC)
- [C-1-2] ملف تعريف MPEG-4 HE AAC (AAC+ )
- [C-1-3] ملف MPEG-4 HE AACv2 الشخصي (الإصدار AAC+ المحسّن)
- [C-1-4] AAC ELD (معيار AAC منخفض ومحسّن)
- [C-1-5] FLAC
- [C-1-6] MP3
- [C-1-7] MIDI
- [C-1-8] Vorbis
- [C-1-9] PCM/WAVE
- [C-1-10] Opus
إذا كانت عمليات تنفيذ الأجهزة تتيح فك ترميز المخازن المؤقتة لإدخالات AAC الخاصة بالبث المتعدد القنوات (أي أكثر من قناتَين) إلى PCM من خلال برنامج فك ترميز الصوت التلقائي AAC في واجهة برمجة التطبيقات android.media.MediaCodec
API، يجب استخدام ما يلي:
- [C-2-1] يجب إجراء فك الترميز بدون إعادة المزج (على سبيل المثال، يجب فك ترميز بث AAC 5.0 إلى خمس قنوات من PCM، ويجب فك ترميز بث AAC 5.1 إلى ست قنوات من PCM).
- [C-2-2] يجب أن تكون البيانات الوصفية للنطاق الديناميكي على النحو المحدّد في "التحكّم في النطاق الديناميكي (DRC)" في ISO/IEC 14496-3، ومفاتيح DRC في
android.media.MediaFormat
لضبط السلوكيات ذات الصلة بالنطاق الديناميكي في برنامج فك ترميز الصوت. تم تقديم مفاتيح AAC DRC في الإصدار 21 من واجهة برمجة التطبيقات، وهي: KEY_AAC_DRC_ATTENUATION_FACTOR وKEY_AAC_DRC_BOOST_FACTOR وKEY_AAC_DRC_HEAVY_COMPRESSION وKEY_AAC_DRC_TARGET_REFERENCE_LEVEL وKEY_AAC_LEVEL_ENCODED_
5.1.3. تفاصيل برامج ترميز الصوت
التنسيق/برنامج الترميز | التفاصيل | أنواع الملفات/تنسيقات الحاويات المتوافقة |
---|---|---|
ملف MPEG-4 AAC الشخصي (AAC LC) |
يتوافق مع المحتوى الأحادي/استيريو/5.0/5.1 بمعدّلات أخذ العيّنات العادية من 8 إلى 48 كيلوهرتز. |
|
ملف تعريف MPEG-4 HE AAC (AAC+ ) | يتوافق مع المحتوى الأحادي/استيريو/5.0/5.1 بمعدّلات أخذ العيّنات العادية من 16 إلى 48 كيلوهرتز. | |
MPEG-4 HE AACv2 الملف الشخصي (الإصدار AAC+ المحسّن) |
يتوافق مع المحتوى الأحادي/استيريو/5.0/5.1 بمعدّلات أخذ العيّنات العادية من 16 إلى 48 كيلوهرتز. | |
AAC ELD (معيار AAC منخفض ومحسّن) | دعم المحتوى الأحادي/استيريو مع معدلات أخذ العينات القياسية من 16 إلى 48 كيلوهرتز. | |
AMR-NB | 4.75 إلى 12.2 كيلوبت في الثانية، تم أخذ عينات من البيانات عند 8 كيلوهرتز | 3GPP (.3gp) |
AMR-WB | 9 معدّلات نقل البيانات من 6.60 كيلوبت في الثانية إلى 23.85 كيلوبت في الثانية استنادًا إلى العيّنات بمعدّل 16 كيلوهرتز | |
FLAC | صوت أحادي/استيريو (بدون قنوات متعددة) تصل معدّلات العينة إلى 48 كيلوهرتز (ولكن يُنصَح باستخدام ما يصل إلى 44.1 كيلوهرتز على الأجهزة التي يكون إخراجها 44.1 كيلوهرتز، لأنّ العينة السفلية التي تتراوح ترددها من 48 إلى 44.1 كيلوهرتز لا تتضمّن فلترًا بمعدّل تمرير منخفض). يُنصح باستخدام 16 بت؛ لا يوجد شريط تبديل للإصدار 24 بت. | FLAC (.flac) فقط |
MP3 | ثابت/استيريو 8-320 كيلوبت في الثانية (CBR) أو معدل نقل بيانات متغير (VBR) | MP3 (.mp3) |
MIDI | نوعا MIDI 0 و1. الإصدار 1 و2 من DLS. XMF وMobile XMF. إتاحة تنسيقات نغمات الرنين RTTTL/RTX وOTA وiMelody |
|
فوربيس |
|
|
تضمين نبضي مشفر (PCM)/موجة (موجة) | تضمين نبضي مشفر (PCM) خطي 16 بت (يصل إلى الحد الأقصى لعدد الأجهزة). يجب أن تتيح الأجهزة معدلات أخذ العينات لتسجيل PCM الأولي بترددات 8000 و11025 و16000 و44100 هرتز. | WAVE (.wav) |
Opus | Matroska (.mkv)، Ogg(.ogg) |
5.1.4. ترميز الصور
يمكنك الاطّلاع على مزيد من التفاصيل في 5.1.6. تفاصيل برامج ترميز الصور.
يجب أن تدعم عمليات تنفيذ الأجهزة ترميز الصور التالي:
- [C-0-1] JPEG
- [C-0-2] PNG
- [C-0-3] WebP
5.1.5. فك ترميز الصور
يمكنك الاطّلاع على مزيد من التفاصيل في 5.1.6. تفاصيل برامج ترميز الصور.
يجب أن تتيح عمليات تنفيذ الأجهزة ترميز فك ترميز الصور التالي:
- [C-0-1] JPEG
- [C-0-2] GIF
- [C-0-3] PNG
- [C-0-4] BMP
- [C-0-5] WebP
- [C-0-6] RAW
5.1.6. تفاصيل برامج ترميز الصور
التنسيق/برنامج الترميز | التفاصيل | أنواع الملفات/تنسيقات الحاويات المتوافقة |
---|---|---|
صور JPEG | أساسي+تدريجي | JPEG (.jpg) |
ملف GIF | GIF (.gif) | |
PNG | PNG (.png) | |
BMP | BMP (.bmp) | |
تنسيق WebP | WebP (.webp) | |
عرض أوّلي | ARW (.arw) وCR2 (.cr2) وDNG (.dng) وNEF (.nef) وNRW (.nrw) وORF (.orf) وPEF (.pef) وRAF (.raf) وRW2 (.rw2) وSRW (.srw) |
5.1.7. برامج ترميز الفيديو
- للحصول على جودة مقبولة لخدمات بث الفيديو على الويب ومؤتمرات الفيديو، يجب أن يتم استخدام برنامج ترميز VP8 للأجهزة يستوفي المتطلبات.
إذا كانت عمليات تنفيذ الأجهزة تشمل برنامجًا لفك ترميز الفيديوهات أو برنامج ترميز:
-
[C-1-1] يجب أن تتوافق برامج ترميز الفيديو مع أحجام مخزن البايت المؤقت للإخراج والإدخال التي تلائم أكبر إطار ممكن مضغوطًا وغير مضغوط وفقًا لما يحدده المعيار والضبط، ولكن ليس بشكل عام.
-
[C-1-2] يجب أن تتوافق برامج ترميز الفيديو وفك ترميزه مع تنسيق الألوان YUV420 المرن (Color_FormatYUV420flex).
إذا كانت عمليات تنفيذ الأجهزة تُعلن عن توفّر الملف الشخصي بنطاق عالي الديناميكية من خلال Display.HdrCapabilities
، سيحدث ما يلي:
- [C-2-1] يجب أن يتيح تحليل البيانات الوصفية الثابتة بتقنية HDR ومعالجتها.
في حال أعلنت عمليات تنفيذ الأجهزة عن توفّر إعادة التحميل داخل FEATURE_IntraRefresh
في الفئة MediaCodecInfo.CodecCapabilities
، سيتم ما يلي:
- [C-3-1]يجب أن تتوافق مع فترات إعادة التحميل في نطاق يتراوح بين 10 و60 لقطة، وأن تعمل بدقة خلال% 20 من فترة إعادة التحميل التي تم ضبطها.
5.1.8. قائمة برامج ترميز الفيديو
التنسيق/برنامج الترميز | التفاصيل |
أنواع الملفات المتوافقة/ تنسيقات الحاويات |
---|---|---|
بروتوكول H.263 |
|
|
H.264 AVC | راجِع القسم 5.2 و5.3 لمعرفة التفاصيل. |
|
H.265 HEVC | راجِع القسم 5.3 لمعرفة التفاصيل. | MPEG-4 (.mp4) |
MPEG-2 | الجودة الرئيسية | MPEG2-TS |
MPEG-4 SP | 3GPP (.3gp) | |
نموذج الفيديو 8 (VP8) | راجِع القسم 5.2 و5.3 لمعرفة التفاصيل. |
|
نموذج الفيديو 9 (VP9) | راجِع القسم 5.3 لمعرفة التفاصيل. |
|
5.2. ترميز الفيديو
إذا كانت آليات تنفيذ الأجهزة تتوافق مع أي برنامج ترميز للفيديو وتوفّره لتطبيقات تابعة لجهات خارجية، سيتم اتخاذ الإجراءات التالية:
- ينبغي ألا يزيد معدل نقل البيانات عن نافذتَين منزلقتَين عن معدل نقل البيانات بين الفواصل الزمنية داخل الإطار (I-frame).
- من المفترض ألا يزيد عن معدل نقل البيانات بنسبة تقارب 100% خلال نافذة تمرير مدتها ثانية واحدة
إذا كانت تصاميم الأجهزة تتضمّن شاشة شاشة مضمّنة لا يقل طولها عن 2.5 بوصة، أو تتضمّن منفذًا لإخراج الفيديو أو في حال الإعلان عن توافقها مع الكاميرا من خلال علامة الميزة android.hardware.camera.any
، ينطبق ما يلي:
- [C-1-1] يجب أن يتيح استخدام برنامج واحد على الأقل من برامج ترميز الفيديو VP8 أو H.264، وإتاحة هذا البرنامج للتطبيقات التابعة لجهات خارجية.
- يجب أن يتوافق مع برنامجَي ترميز الفيديوهات VP8 وH.264، وإتاحتها على التطبيقات التابعة لجهات خارجية.
إذا كانت عمليات تنفيذ الأجهزة متوافقة مع أي من برامج ترميز الفيديو H.264 أو VP8 أو VP9 أو HEVC وإتاحتها للتطبيقات التابعة لجهات خارجية، ينطبق ما يلي:
- [C-2-1] يجب أن يتوافق مع معدّلات نقل البيانات القابلة للضبط ديناميكيًا.
- يجب أن يتوافق مع معدلات عرض الإطارات المتغيرة، حيث من المفترض أن يحدد برنامج ترميز الفيديو مدة عرض اللقطة الفورية استنادًا إلى الطوابع الزمنية للمخازن المؤقتة للإدخال، ويخصص حزمة البت استنادًا إلى مدة عرض اللقطة.
إذا كانت آليات تنفيذ الأجهزة تتوافق مع برنامج ترميز الفيديو MPEG-4 SP وإتاحتها لتطبيقات تابعة لجهات خارجية، ينطبق ما يلي:
- يجب أن يتوافق مع معدلات نقل البيانات القابلة للضبط ديناميكيًا لبرنامج الترميز المتوافق.
5.2.1. بروتوكول H.263
إذا كانت عمليات تنفيذ الأجهزة متوافقة مع برامج ترميز H.263 وإتاحتها للتطبيقات التابعة لجهات خارجية، يجب مراعاة ما يلي:
- [C-1-1] يجب أن يتوافق مع المستوى 45 للملف الشخصي الأساسي.
- يجب أن يتوافق مع معدلات نقل البيانات القابلة للضبط ديناميكيًا لبرنامج الترميز المتوافق.
5.2.2. H-264
في حال كانت عمليات تنفيذ الأجهزة متوافقة مع برنامج ترميز H.264، سيتم إجراء ما يلي:
- [C-1-1] يجب أن يتوافق مع المستوى 3 للملف الشخصي الأساسي. ومع ذلك، فإن دعم ASO (ترتيب الشرائح العشوائي) وFMO (الترتيب المرن للكتلة الفائقة) وRS (الشرائح المتكررة) اختياري. بالإضافة إلى ذلك، للحفاظ على التوافق مع أجهزة Android الأخرى، يُنصح بعدم استخدام برامج الترميز ASO وFMO وRS في الملف الشخصي الأساسي.
- [C-1-2] يجب أن يتوافق مع ملفات ترميز الفيديو ذات الدقة العادية (SD) في الجدول التالي.
- يجب أن يتوافق مع المستوى 4 للملف الشخصي الرئيسي.
- يجب أن تكون متوافقة مع الملفات الشخصية لترميز الفيديو بدقة عالية (HD) كما هو موضّح في الجدول التالي.
إذا كانت عمليات تنفيذ الأجهزة تفيد بترميز H.264 للفيديوهات بدقة 720p أو 1080p من خلال واجهات برمجة تطبيقات الوسائط، سيتم إجراء ما يلي:
- [C-2-1] يجب أن يتوافق مع ملفات الترميز الشخصية في الجدول التالي.
دقة عادية (جودة منخفضة) | دقة عادية (جودة عالية) | دقة عالية - 720 بكسل | دقة عالية - 1080 بكسل | |
---|---|---|---|---|
دقة الفيديو | 320 × 240 بكسل | 720 × 480 بكسل | 1280 × 720 بكسل | 1920 × 1080 بكسل |
عدد اللقطات في الثانية للفيديو | 20 لقطة في الثانية | 30 إطارًا في الثانية | 30 إطارًا في الثانية | 30 إطارًا في الثانية |
معدّل نقل بيانات الفيديو | 384 كيلوبت في الثانية | 2 ميغابت في الثانية | 4 ميغابت في الثانية | 10 ميغابت في الثانية |
5.2.3. نموذج الفيديو 8 (VP8)
في حال كانت عمليات تنفيذ الأجهزة تتوافق مع برنامج ترميز VP8، سيتم إجراء ما يلي:
- [C-1-1] يجب أن يتوافق مع ملفات ترميز الفيديو بدقة عادية.
- يجب أن يتوافق مع ملفات ترميز الفيديو ذات الدقة العالية (HD) التالية.
- "يجب" إتاحة كتابة ملفات Matroska WebM.
- يجب استخدام برنامج ترميز VP8 للأجهزة يستوفي متطلبات ترميز أجهزة RTC الخاصة بمشروع WebM، لضمان جودة مقبولة لخدمات بث الفيديو على الويب وخدمات مؤتمرات الفيديو.
إذا كانت عمليات تنفيذ الأجهزة تفيد بترميز VP8 للفيديوهات بدقة 720p أو 1080p من خلال واجهات برمجة تطبيقات الوسائط، ينطبق ما يلي:
- [C-2-1] يجب أن يتوافق مع ملفات الترميز الشخصية في الجدول التالي.
دقة عادية (جودة منخفضة) | دقة عادية (جودة عالية) | دقة عالية - 720 بكسل | دقة عالية - 1080 بكسل | |
---|---|---|---|---|
دقة الفيديو | 320 × 180 بكسل | 640 × 360 بكسل | 1280 × 720 بكسل | 1920 × 1080 بكسل |
عدد اللقطات في الثانية للفيديو | 30 إطارًا في الثانية | 30 إطارًا في الثانية | 30 إطارًا في الثانية | 30 إطارًا في الثانية |
معدّل نقل بيانات الفيديو | 800 كيلوبت في الثانية | 2 ميغابت في الثانية | 4 ميغابت في الثانية | 10 ميغابت في الثانية |
5.2.4. نموذج الفيديو 9 (VP9)
في حال كانت عمليات تنفيذ الأجهزة تتوافق مع برنامج ترميز VP9، سيتم إجراء ما يلي:
- "يجب" إتاحة كتابة ملفات Matroska WebM.
5.3. فك ترميز الفيديو
في حال كانت عمليات تنفيذ الأجهزة تتوافق مع برامج ترميز VP8 أو VP9 أو H.264 أو H.265، سيتم إجراء ما يلي:
- [C-1-1] يجب أن يتيح التبديل بين درجة دقة الفيديو وعدد اللقطات في الثانية من خلال واجهات برمجة تطبيقات Android العادية ضمن البث نفسه لجميع برامج الترميز VP8 وVP9 وH.264 وH.265 في الوقت الفعلي وبدرجة الدقة القصوى التي يوفّرها كل برنامج ترميز على الجهاز.
إذا كانت عمليات تنفيذ الأجهزة تشير إلى توافقها مع برنامج فك ترميز Dolby Vision من خلال HDR_TYPE_DOLBY_VISION
، سينفّذ ما يلي:
- [C-2-1] يجب توفير أداة استخراج تتوافق مع تقنية Dolby Vision.
- [C-2-2] يجب أن يعرض محتوى Dolby Vision بشكل صحيح على شاشة الجهاز أو على منفذ إخراج الفيديو العادي (مثل HDMI).
- [C-2-3] يجب ضبط فهرس المسار للطبقات الأساسية المتوافقة مع الأنظمة القديمة (في حال توفُّره) ليكون مطابقًا لفهرس المسار لطبقة Dolby Vision المدمجة.
5.3.1. MPEG-2
إذا كانت عمليات تنفيذ الأجهزة تتوافق مع برامج فك ترميز MPEG-2، سيتم إجراء ما يلي:
- [C-1-1] يجب أن يتوافق مع المستوى العالي للملف الشخصي الرئيسي.
5.3.2 بروتوكول H.263
إذا كانت عمليات تنفيذ الأجهزة متوافقة مع برامج فك ترميز H.263، سيتم إجراء ما يلي:
- [C-1-1] يجب أن يتوافق مع المستوى 30 والمستوى 45 للملف الشخصي الأساسي.
5.3.3. MPEG-4
في حال تنفيذ الجهاز باستخدام برامج فك ترميز MPEG-4:
- [C-1-1] يجب أن يتوافق مع المستوى 3 من الملف الشخصي البسيط.
5.3.4 H.264
إذا كانت عمليات تنفيذ الأجهزة تتيح برامج فك ترميز H.264، سيتم إجراء ما يلي:
- [C-1-1] يجب أن يتوافق مع المستوى 3.1 للملف الشخصي الرئيسي والملف الشخصي الأساسي. يتوفر دعم ASO (ترتيب الشرائح العشوائي) وFMO (الترتيب المرن للكتلة الفائقة) وRS (الشرائح المتكررة) اختياري.
- يجب أن يكون [C-1-2] قادرًا على فك ترميز الفيديوهات باستخدام الملفات الشخصية ذات الدقة العادية (SD) والمدرَجة في الجدول التالي والمرمّزة باستخدام ملفَي تعريف Base والمستوى الرئيسي 3.1 (بما في ذلك 720p30).
- "يجب أن تكون قادرًا على فك ترميز الفيديوهات" باستخدام الملفات الشخصية ذات الدقة العالية (HD) كما هو موضَّح في الجدول التالي.
إذا كان الارتفاع الذي يتم الإبلاغ عنه من خلال طريقة Display.getSupportedModes()
مساويًا لدرجة دقة الفيديو أو أكبر منه، ستنطبق عمليات تنفيذ الأجهزة على ما يلي:
- [C-2-1] يجب أن يتوافق مع ملفات ترميز الفيديو ذات الدقة العالية 720p في الجدول التالي.
- [C-2-2] يجب أن يتوافق مع ملفات ترميز الفيديو بدقة عالية 1080p في الجدول التالي.
دقة عادية (جودة منخفضة) | دقة عادية (جودة عالية) | دقة عالية - 720 بكسل | دقة عالية - 1080 بكسل | |
---|---|---|---|---|
دقة الفيديو | 320 × 240 بكسل | 720 × 480 بكسل | 1280 × 720 بكسل | 1920 × 1080 بكسل |
عدد اللقطات في الثانية للفيديو | 30 إطارًا في الثانية | 30 إطارًا في الثانية | 60 لقطة في الثانية | 30 لقطة في الثانية (60 لقطة في الثانيةالتلفزيون) |
معدّل نقل بيانات الفيديو | 800 كيلوبت في الثانية | 2 ميغابت في الثانية | 8 ميغابت في الثانية | 20 ميغابت في الثانية |
5.3.5. H.265 (HEVC)
إذا كانت عمليات تنفيذ الأجهزة متوافقة مع برنامج ترميز H.265، سيتم إجراء ما يلي:
- [C-1-1] يجب أن يتوافق مع المستوى الرئيسي للملف الشخصي الرئيسي من المستوى 3 والملفات الشخصية لفك ترميز الفيديو بدقة عادية كما هو موضّح في الجدول التالي.
- "يُفترض" أن تتيح استخدام الملفات الشخصية لفك ترميز المحتوى بدقة عالية كما هو موضّح في الجدول التالي.
- [C-1-2] يجب أن يتوافق مع الملفات الشخصية لفك ترميز المحتوى بدقة عالية كما هو موضّح في الجدول التالي في حال توفُّر برنامج لفك ترميز الأجهزة.
إذا كان الارتفاع الذي تم تحديده من خلال الطريقة Display.getSupportedModes()
مساويًا لدرجة دقة الفيديو أو أكبر منه، يجب عندها:
- [C-2-1] يجب أن تتيح عمليات تنفيذ الأجهزة استخدام ملف واحد على الأقل لفك ترميز H.265 أو VP9 للملفات الشخصية ذات الدقة 720 و1080 والدقة الفائقة.
دقة عادية (جودة منخفضة) | دقة عادية (جودة عالية) | دقة عالية - 720 بكسل | دقة عالية - 1080 بكسل | دقة فائقة | |
---|---|---|---|---|---|
دقة الفيديو | 352 × 288 بكسل | 720 × 480 بكسل | 1280 × 720 بكسل | 1920 × 1080 بكسل | 3840 × 2160 بكسل |
عدد اللقطات في الثانية للفيديو | 30 إطارًا في الثانية | 30 إطارًا في الثانية | 30 إطارًا في الثانية | 30/60 لقطة في الثانية (60 لقطة في الثانيةالتلفزيون باستخدام فك ترميز أجهزة H.265) | 60 لقطة في الثانية |
معدّل نقل بيانات الفيديو | 600 كيلوبت في الثانية | 1.6 ميغابت في الثانية | 4 ميغابت في الثانية | 5 ميغابت في الثانية | 20 ميغابت في الثانية |
5.3.6. نموذج الفيديو 8 (VP8)
في حال كانت عمليات تنفيذ الأجهزة تتوافق مع برنامج ترميز VP8، سيتم إجراء ما يلي:
- [C-1-1] يجب أن يتوافق مع الملفات الشخصية لفك ترميز SD في الجدول التالي.
- يجب استخدام برنامج ترميز VP8 للأجهزة يستوفي المتطلبات.
- يجب أن تتوفر الملفات الشخصية لفك ترميز المحتوى بدقة عالية في الجدول التالي.
إذا كان الارتفاع كما هو موضح من خلال الطريقة Display.getSupportedModes()
يساوي أو أكبر من درجة دقة الفيديو، سيتم ما يلي:
- [C-2-1] يجب أن تتيح عمليات تنفيذ الأجهزة استخدام ملفات شخصية بدقة 720p في الجدول التالي.
- [C-2-2] يجب أن تتيح عمليات تنفيذ الأجهزة استخدام ملفات شخصية بدقة 1080p في الجدول التالي.
دقة عادية (جودة منخفضة) | دقة عادية (جودة عالية) | دقة عالية - 720 بكسل | دقة عالية - 1080 بكسل | |
---|---|---|---|---|
دقة الفيديو | 320 × 180 بكسل | 640 × 360 بكسل | 1280 × 720 بكسل | 1920 × 1080 بكسل |
عدد اللقطات في الثانية للفيديو | 30 إطارًا في الثانية | 30 إطارًا في الثانية | 30 لقطة في الثانية (60 لقطة في الثانيةالتلفزيون) | 30 (60 لقطة في الثانيةالتلفزيون) |
معدّل نقل بيانات الفيديو | 800 كيلوبت في الثانية | 2 ميغابت في الثانية | 8 ميغابت في الثانية | 20 ميغابت في الثانية |
5.3.7. نموذج الفيديو 9 (VP9)
في حال كانت عمليات تنفيذ الأجهزة تتوافق مع برنامج ترميز VP9، سيتم إجراء ما يلي:
- [C-1-1] يجب أن يتوافق مع الملفات الشخصية لفك ترميز الفيديوهات بدقة عادية كما هو موضّح في الجدول التالي.
- "يُفترض" أن تتيح استخدام الملفات الشخصية لفك ترميز المحتوى بدقة عالية كما هو موضّح في الجدول التالي.
إذا كانت عمليات تنفيذ الأجهزة تتوافق مع برنامج ترميز VP9 وبرنامج فك ترميز الأجهزة:
- [C-2-2] يجب أن يتيح استخدام الملفات الشخصية لفك ترميز المحتوى بدقة عالية كما هو موضّح في الجدول التالي.
إذا كان الارتفاع الذي تم تحديده من خلال الطريقة Display.getSupportedModes()
مساويًا لدرجة دقة الفيديو أو أكبر منه، يجب عندها:
- [C-3-1] يجب أن تتيح عمليات تنفيذ الأجهزة استخدام طريقة واحدة على الأقل لفك ترميز VP9 أو H.265 للملفات الشخصية 720 و1080 وUHD.
دقة عادية (جودة منخفضة) | دقة عادية (جودة عالية) | دقة عالية - 720 بكسل | دقة عالية - 1080 بكسل | دقة فائقة | |
---|---|---|---|---|---|
دقة الفيديو | 320 × 180 بكسل | 640 × 360 بكسل | 1280 × 720 بكسل | 1920 × 1080 بكسل | 3840 × 2160 بكسل |
عدد اللقطات في الثانية للفيديو | 30 إطارًا في الثانية | 30 إطارًا في الثانية | 30 إطارًا في الثانية | 30 لقطة في الثانية (60 لقطة في الثانيةالتلفزيون باستخدام فك ترميز أجهزة VP9) | 60 لقطة في الثانية |
معدّل نقل بيانات الفيديو | 600 كيلوبت في الثانية | 1.6 ميغابت في الثانية | 4 ميغابت في الثانية | 5 ميغابت في الثانية | 20 ميغابت في الثانية |
5.4. تسجيل الصوت
على الرغم من أنّ بعض المتطلبات الموضّحة في هذا القسم مدرَجة على أنّها "ينبغي" الحصول عليها منذ الإصدار Android 4.3، تم التخطيط لتعديل "تعريف التوافق" للإصدارات المستقبلية إلى "يجب". يُنصَح بشدة باستخدام أجهزة Android الحالية والجديدة لاستيفاء هذه المتطلبات المدرَجة على أنّها مطلوبة، وإلا لن تتمكن من تحقيق التوافق مع Android عند ترقيتها إلى إصدار مستقبلي.
5.4.1. التقاط صوت غير معدَّل
إذا كانت عمليات تنفيذ الأجهزة تشير إلى android.hardware.microphone
، سيتم ما يلي:
-
[C-1-1] يجب أن يسمح بالتقاط محتوى صوتي غير منسق بالخصائص التالية:
-
التنسيق: PCM خطي، 16 بت
- معدلات أخذ العينات: 8000، 11025، 16000، 44100 هرتز
-
القنوات: أحادي
-
[C-1-2] يجب أن يتم التقاطها بمعدلات عينة أعلى من دون زيادة العينات.
- يجب أن يشتمل [C-1-3] على فلتر مناسب للحماية من التشويش عند تسجيل معدلات العينات الموضحة أعلاه باستخدام العينات المنخفضة.
-
"ينبغي" السماح بالتقاط جودة راديو AM وDVD للمحتوى الصوتي الأولي، مما يعني الخصائص التالية:
-
التنسيق: PCM خطي، 16 بت
- معدلات أخذ العينات: 22050، 48000 هرتز
- القنوات: استيريو
إذا كانت تطبيقات الأجهزة تسمح بالتقاط جودة راديو AM وأقراص DVD للمحتوى الصوتي الأولي، سيتم إجراء ما يلي:
- [C-2-1] يجب أن يتم التصوير بدون زيادة حجم العيّنات بأي نسبة أعلى من 16000:22050 أو 44100:48000.
- يجب أن يشتمل [C-2-2] على فلتر مناسب لمنع التشويش عند استخدام أي فلاتر في المقدار الإضافي أو الأدنى.
5.4.2. الالتقاط للتعرف على الصوت
إذا كانت عمليات تنفيذ الأجهزة تشير إلى android.hardware.microphone
، سيتم ما يلي:
- [C-1-1] يجب أن يلتقط مصدر صوت
android.media.MediaRecorder.AudioSource.VOICE_RECOGNITION
بأحد معدلات العيّنات، 44100 و48, 000. - [C-1-2] يجب أن يوقِف تلقائيًا أي معالجة للصوت لخفض الضوضاء عند تسجيل بث صوتي من مصدر الصوت في
AudioSource.VOICE_RECOGNITION
. - [C-1-3] يجب أن توقِف تلقائيًا أي عنصر تحكّم تلقائي في الصوت عند تسجيل بث صوتي من مصدر الصوت في
AudioSource.VOICE_RECOGNITION
. - "يجب" تسجيل البث الصوتي لميزة "التعرّف على الصوت" بجهد مسطّح تقريبًا مقابل خصائص التردّد الصوتي، وتحديدًا، بتردد يزيد عن 3 ديسيبل، ابتداءً من 100 هرتز إلى 4,000 هرتز.
- "ينبغي" تسجيل بث الصوت لميزة "التعرّف على الصوت" مع ضبط حساسية الإدخال، بحيث ينتج عن مصدر طاقة صوت بتردد 90 ديسيبل عند مستوى 1000 هرتز 2500 رمز ثابت معدَّل للعينات ذات 16 بت.
- يجب تسجيل البث الصوتي لميزة "التعرّف على الصوت" كي تتغير مستويات اتساع صوت PCM خطيًا لنطاق SPL للإدخال الذي يزيد عن 30 ديسيبل على الأقل من -18 ديسيبل إلى +12 ديسيبل re 90 ديسيبل SPL في الميكروفون.
- يجب تسجيل البث الصوتي لميزة "التعرّف على الصوت" مع مستوى التشوّه التوافقي الإجمالي (THD) بنسبة أقل من% 1 لكل 1 كيلوهرتز وعند مستوى إدخال مستوى الصوت SPL 90 ديسيبل على الميكروفون.
إذا رصدت عمليات تنفيذ الأجهزة تكنولوجيا android.hardware.microphone
وتقنيات كتم الضوضاء (تخفيض الضوضاء) التي تم ضبطها للتعرّف على الكلام، سيتم تطبيق ما يلي:
- [C-2-1] يجب أن تسمح بالتحكّم في هذا التأثير الصوتي من خلال واجهة برمجة تطبيقات
android.media.audiofx.NoiseSuppressor
. - يجب أن يحدّد [C-2-2] بشكل فريد كل عملية تنفيذ لتقنية منع الضوضاء من خلال الحقل
AudioEffect.Descriptor.uuid
.
5.4.3. الالتقاط لإعادة توجيه التشغيل
تتضمّن الفئة android.media.MediaRecorder.AudioSource
مصدر الصوت REMOTE_SUBMIX
.
إذا كانت عمليات تنفيذ الأجهزة تشير إلى كلّ من android.hardware.audio.output
وandroid.hardware.microphone
، سيتم تطبيق ما يلي:
-
[C-1-1] يجب تنفيذ مصدر الصوت
REMOTE_SUBMIX
بشكل صحيح لكي يتم تسجيل مزيج من كل عمليات البث الصوتي باستثناء ما يلي: إذا كان التطبيق يستخدم واجهة برمجة التطبيقاتandroid.media.AudioRecord
للتسجيل من مصدر الصوت هذا:-
AudioManager.STREAM_RING
-
AudioManager.STREAM_ALARM
-
AudioManager.STREAM_NOTIFICATION
-
5.5. تشغيل الصوت
ويشمل نظام التشغيل Android إمكانية السماح للتطبيقات بتشغيل الصوت من خلال الجهاز الملحق الخاص بإخراج الصوت كما هو موضّح في الفقرة 7.8.2.
5.5.1. تشغيل الصوت الأولي
إذا كانت عمليات تنفيذ الأجهزة تشير إلى android.hardware.audio.output
، سيتم ما يلي:
-
[C-1-1] يجب أن يسمح بتشغيل محتوى صوتي غير منسق بالخصائص التالية:
- التنسيق: PCM خطي، 16 بت
- معدلات أخذ العينات: 8000، 11025، 16000، 22050، 32000، 44100
- القنوات: أحادي، استيريو
-
"يجب السماح" بتشغيل محتوى صوتي غير منسق بالخصائص التالية:
- معدلات أخذ العينات: 24000 و48000
5.5.2 التأثيرات الصوتية
يوفر Android واجهة برمجة تطبيقات للتأثيرات الصوتية لعمليات تنفيذ الأجهزة.
إذا كانت عمليات تنفيذ الأجهزة تشير إلى ميزة "android.hardware.audio.output
"، سيتم ما يلي:
- [C-1-1] يجب أن يتوافق مع عمليتَي تنفيذ
EFFECT_TYPE_EQUALIZER
وEFFECT_TYPE_LOUDNESS_ENHANCER
التي يمكن التحكم فيها من خلال الفئتين الفرعيتين AudioEffect (VoiceEffect):Equalizer
،LoudnessEnhancer
. - [C-1-2] يجب أن يتيح تنفيذ واجهة برمجة تطبيقات العروض المرئية، ويمكن التحكّم فيها من خلال فئة
Visualizer
. - يجب أن تتوافق مع عمليات التنفيذ
EFFECT_TYPE_BASS_BOOST
وEFFECT_TYPE_ENV_REVERB
وEFFECT_TYPE_PRESET_REVERB
وEFFECT_TYPE_VIRTUALIZER
التي يمكن التحكّم فيها من خلال الفئات الفرعيةAudioEffect
BassBoost
وEnvironmentalReverb
وPresetReverb
وVirtualizer
.
5.5.3. مستوى إخراج الصوت
عمليات تنفيذ أجهزة السيارات:
- يجب السماح بضبط مستوى الصوت بشكل منفصل لكل بث صوتي باستخدام نوع المحتوى أو استخدامه على النحو المحدّد في AudioAttributes واستخدام صوت السيارة كما هو محدّد في
android.car.CarAudioManager
.
5.6. وقت استجابة الصوت
إنّ وقت استجابة الصوت هو التأخير الزمني الذي تمر به إشارة صوتية عبر النظام. تعتمد العديد من فئات التطبيقات على وقت الاستجابة القصير لإنشاء مؤثرات صوتية في الوقت الفعلي.
استخدِم التعريفات التالية لأغراض هذا القسم:
- وقت استجابة الناتج. الفاصل الزمني بين وقت كتابة أحد التطبيقات لإطار بيانات بترميز PCM ووقت تقديم الصوت المقابل إلى البيئة في محوّل أو إشارة على الجهاز يخرج من الجهاز عبر منفذ ويمكن ملاحظته خارجيًا.
- وقت استجابة الإخراج البارد. وقت استجابة الإخراج للإطار الأول، عندما يكون نظام إخراج الصوت في وضع عدم النشاط وإيقاف التشغيل قبل الطلب.
- وقت استجابة الإخراج المستمر. وقت استجابة إخراج الإطارات اللاحقة بعد تشغيل الجهاز للصوت
- وقت استجابة الإدخال: يشير ذلك المصطلح إلى الفاصل الزمني بين وقت إرسال الصوت من خلال البيئة إلى الجهاز في محوّل الطاقة أو الإشارة داخل الجهاز عبر منفذ، وعندما يقرأ التطبيق الإطار المقابل لبيانات PCM المرمّزة.
- فقدان الإدخال. الجزء الأول من إشارة إدخال غير قابل للاستخدام أو غير متاح.
- وقت استجابة الإدخال البارد. مجموع وقت الإدخال المفقود ووقت استجابة الإدخال للإطار الأول، عندما يكون نظام الإدخال الصوتي في وضع عدم النشاط وإيقاف التشغيل قبل الطلب.
- وقت استجابة الإدخال المستمر. وقت استجابة الإدخال للّقطات اللاحقة، بينما يلتقط الجهاز الصوت.
- عدم استقرار الإخراج البارد. التباين بين القياسات المنفصلة لقيم وقت استجابة الإخراج البارد.
- عدم استقرار الإدخال البارد. يشير إلى التباين بين القياسات المنفصلة لقيم وقت استجابة الإدخال البارد.
- وقت استجابة الذهاب والعودة المستمر. مجموع وقت استجابة الإدخال المستمر بالإضافة إلى وقت استجابة الإخراج المستمر بالإضافة إلى فترة مخزن مؤقت واحدة. تتيح فترة التخزين المؤقت وقتًا للتطبيق لمعالجة الإشارة والوقت الذي يقضيه التطبيق في الحدّ من الفروق بين مصادر الإدخال والإخراج.
- واجهة برمجة تطبيقات قائمة انتظار المخزن المؤقت لـ OpenSL ES PCM. مجموعة واجهات برمجة تطبيقات OpenSL ES ذات الصلة بـ PCM ضمن Android NDK.
- واجهة برمجة التطبيقات للصوت الأصلي: مجموعة واجهات برمجة تطبيقات AAudio ضمن Android NDK.
إذا أشارت عمليات تنفيذ الأجهزة إلى أنّ android.hardware.audio.output
موصى بها بشدة لاستيفاء المتطلبات التالية أو تجاوزها:
- [SR] وقت استجابة الإخراج البارد يبلغ 100 مللي ثانية أو أقل
- [SR] وقت استجابة إخراج مستمر يبلغ 45 مللي ثانية أو أقل
- [SR] تقليل عدم استقرار الإخراج البارد
في حال استيفاء عمليات تنفيذ الأجهزة للمتطلبات المذكورة أعلاه بعد إجراء أي معايرة أولية عند استخدام واجهة برمجة تطبيقات قائمة انتظار المخزن المؤقت OpenSL ES PCM، وذلك للحصول على وقت استجابة الإخراج المستمر ووقت استجابة الإخراج البارد عبر جهاز إخراج صوتي متوافق واحد على الأقل، في ما يلي الميزات التالية:
- [SR] يُنصَح بشدة بالإبلاغ عن الصوت المنخفض الاستجابة من خلال الإعلان عن علامة الميزة "
android.hardware.audio.low_latency
". - [تسجيل صوتي] يُنصح بشدة باستيفاء متطلبات التشغيل الصوتي بوقت استجابة سريع عبر AAudio API.
إذا كانت عمليات تنفيذ الأجهزة لا تستوفي متطلبات الصوت ذي وقت الاستجابة السريع عبر واجهة برمجة تطبيقات قائمة انتظار المخزن المؤقت OpenSL ES PCM، سيتم إجراء ما يلي:
- [C-1-1] يجب ألا يُبلِغ عن توفير الصوت في وقت الاستجابة المنخفض.
إذا كانت عمليات تنفيذ الأجهزة تتضمّن android.hardware.microphone
، يُنصَح بشدة بأن تستوفي هذه الأجهزة متطلبات إدخال الصوت التالية:
- [SR] وقت استجابة الإدخال البارد يبلغ 100 مللي ثانية أو أقل
- [SR] وقت استجابة الإدخال المستمر 30 مللي ثانية أو أقل
- [SR] وقت الاستجابة المستمر ذهابًا وإيابًا 50 مللي ثانية أو أقل
- [SR] تقليل عدم استقرار الإدخال البارد
5.7. بروتوكولات الشبكة
يجب أن تتوافق عمليات تنفيذ الأجهزة مع بروتوكولات شبكة الوسائط لتشغيل الصوت والفيديو كما هو محدّد في مستندات حزمة تطوير البرامج (SDK) لنظام التشغيل Android.
إذا كانت عمليات تنفيذ الأجهزة تتضمن محتوًى صوتيًا أو برنامج فك ترميز فيديو، سيتم إجراء ما يلي:
-
يجب أن يتوافق [C-1-1] مع جميع برامج الترميز وتنسيقات الحاويات المطلوبة في القسم 5.1 عبر HTTP(S).
-
[C-1-2] يجب أن يتوافق مع تنسيقات شرائح الوسائط المعروضة في جدول "تنسيقات الوسائط" أدناه على بروتوكول مسودة البث المباشر عبر HTTP، الإصدار 7.
-
[C-1-3] يجب أن يتوافق مع الملف الشخصي التالي للصوت بتنسيق RTP وبرامج الترميز ذات الصلة في جدول RTSP أدناه. بالنسبة إلى الاستثناءات، يُرجى مراجعة الحواشي السفلية للجدول في القسم 5.1.
تنسيقات شرائح الوسائط
تنسيقات الشرائح | المَراجع | توفُّر برنامج ترميز مطلوب |
---|---|---|
MPEG-2 Transport Stream | ISO 13818 |
برامج ترميز الفيديوهات:
وMPEG-2. برامج ترميز الصوت:
|
الترميز المتقدّم للصوت مع إطارات ADTS وعلامات رقم التعريف 3 (ID3) | ISO 13818-7 | يمكنك مراجعة القسم 5.1.1 للحصول على تفاصيل حول الترميز المتقدّم للصوت والصيغ المختلفة منه. |
WebVTT | WebVTT |
بروتوكول RTSP (RTP، بروتوكول SDP)
اسم الملف الشخصي | المَراجع | توفُّر برنامج ترميز مطلوب |
---|---|---|
H264 AVC | RFC 6184 | لمزيد من التفاصيل حول H264 AVC، يمكنك الاطّلاع على القسم 5.1.3 |
MP4A-LATM | RFC 6416 | يمكنك مراجعة القسم 5.1.1 للحصول على تفاصيل حول الترميز المتقدّم للصوت والصيغ المختلفة منه. |
H263-1998 |
RFC 3551 RFC 4629 RFC 2190 |
يُرجى الاطّلاع على القسم 5.1.3 لمعرفة التفاصيل حول H263. |
H263-2000 | RFC 4629 | يُرجى الاطّلاع على القسم 5.1.3 لمعرفة التفاصيل حول H263. |
دورة AMR | RFC 4867 | راجِع القسم 5.1.1 للحصول على تفاصيل حول AMR-NB. |
AMR-WB | RFC 4867 | راجِع القسم 5.1.1 للحصول على تفاصيل حول AMR-WB |
MP4V-ES | RFC 6416 | راجِع القسم 5.1.3 لمعرفة تفاصيل حول MPEG-4 SP. |
mpeg4 عامة | RFC 3640 | يمكنك مراجعة القسم 5.1.1 للحصول على تفاصيل حول الترميز المتقدّم للصوت والصيغ المختلفة منه. |
MP2T | RFC 2250 | يُرجى الاطّلاع على MPEG-2 Transport Stream ضمن HTTP Live Streaming لمزيد من التفاصيل. |
5.8. الوسائط الآمنة
إذا كانت عمليات تنفيذ الأجهزة تتيح إخراج الفيديو الآمن وكانت متوافقة مع الأسطح الآمنة، يجب مراعاة ما يلي:
- [C-1-1] يجب أن يعلن عن دعمه لـ
Display.FLAG_SECURE
.
إذا تبيّن عمليات تنفيذ الأجهزة أنّها تتوافق مع Display.FLAG_SECURE
وتتوافق مع بروتوكول العرض اللاسلكي، يجب مراعاة ما يلي:
- [C-2-1] يجب تأمين الرابط باستخدام آلية تشفير قوية مثل HDCP 2.x أو أعلى للشاشات المتصلة عبر البروتوكولات اللاسلكية مثل Miracast.
في حال أشارت عمليّات تنفيذ الأجهزة إلى أنّها متوافقة مع "Display.FLAG_SECURE
" وتتوافق مع شاشة خارجية سلكية، سيتم ما يلي:
- [C-3-1] يجب أن يتوافق مع HDCP 1.2 أو الإصدارات الأحدث مع جميع الشاشات الخارجية السلكية.
5.9. الواجهة الرقمية للآلات الموسيقية (MIDI)
في حال أبلغت عمليات تنفيذ الأجهزة عن توافق ميزة android.software.midi
من خلال الفئة android.content.pm.PackageManager
، سيتم ما يلي:
-
[C-1-1] يجب أن يتوافق مع MIDI في جميع عمليات نقل الأجهزة التي تتضمّن MIDI والتي توفّر لها إمكانية اتصال عام غير MIDI، وذلك في الحالات التالية:
- وضع مضيف USB، القسم 7.7
- وضع أجهزة USB الطرفية، القسم 7.7
- دور MIDI عبر Bluetooth LE في دور مركزي، القسم 7.4.3
-
[C-1-2] يجب أن يتوافق مع نقل برامج MIDI بين التطبيقات (أجهزة MIDI الافتراضية).
5.10. صوت احترافي
في حال إبلاغ عمليات تنفيذ الأجهزة عن توافق ميزة "android.hardware.audio.pro
" من خلال فئة android.content.pm.PackageManager، سيتم ما يلي:
- [C-1-1] يجب الإبلاغ عن إتاحة الميزة
android.hardware.audio.low_latency
. - يجب أن يكون وقت استجابة الصوت ذهابًا وإيابًا مستمرًا في [C-1-2]، كما هو محدّد في وقت استجابة الصوت في القسم 5.6، على 20 مللي ثانية أو أقل و10 مللي ثانية أو أقل عبر مسار واحد متوافق على الأقل.
- [C-1-3] يجب أن يشتمل على منافذ USB تتوافق مع وضع مضيف USB ووضع الأجهزة الملحقة عبر USB.
- [C-1-4] يجب الإبلاغ عن إتاحة الميزة
android.software.midi
. - [C-1-5] يجب أن يستوفي وقت الاستجابة ومتطلبات صوت USB باستخدام واجهة برمجة تطبيقات قائمة انتظار المخزن المؤقت PCM OpenSL ES.
- [SR] يُوصى بشدة بتوفير مستوى ثابت من أداء وحدة المعالجة المركزية (CPU) عندما يكون الصوت نشطًا ويختلف حِمل وحدة المعالجة المركزية (CPU). يجب اختبار هذا باستخدام SimpleSynth تنفيذ 1bd6391. يجب تشغيل تطبيق SimpleSynth باستخدام المَعلمات أدناه وعدم تحقيق أي عمليات تشغيل أقل بعد 10 دقائق:
- دورات العمل: 200000
- التحميل المتغيّر: مفعَّل (سيؤدي هذا إلى التبديل بين% 100 و% 10 من قيمة دورات العمل كل ثانيتين، وهو مصمّم لاختبار سلوك منظِّم وحدة المعالجة المركزية)
- التحميل المستقر: غير مفعّل
- يجب تقليل دقة ساعة الصوت وانحرافها بالنسبة إلى الوقت القياسي.
- يجب تقليل تغيُّر ساعة الصوت إلى أدنى حد ممكن مقارنةً بوحدة المعالجة المركزية (CPU)
CLOCK_MONOTONIC
عندما يكون كلّ منهما نشط. - يجب تقليل وقت استجابة الصوت عبر محوّلات الطاقة على الجهاز.
- "يجب" تقليل وقت استجابة الصوت عبر صوت USB الرقمي.
- "يجب" توفير قياسات وقت استجابة الصوت في جميع المسارات.
- "ينبغي" الحد من عدم الاستقرار في أوقات إدخال طلب إكمال المخزن المؤقت الصوتي، نظرًا لأن هذا يؤثر على النسبة القابلة للاستخدام من معدل نقل بيانات وحدة المعالجة المركزية الكامل من خلال معاودة الاتصال.
- يجب ألا يتم توفير أي انقطاعات في الصوت (الإخراج) أو تجاوزات (الإدخال) عند الاستخدام العادي في وقت الاستجابة الذي تم الإبلاغ عنه.
- يجب ألا يكون هناك أي فارق في وقت الاستجابة بين القنوات.
- يجب تقليل وقت استجابة MIDI في جميع عمليات النقل.
- يجب تقليل تغيُّر وقت استجابة MIDI أثناء التحميل (عدم الاستقرار) في جميع عمليات النقل.
- يجب أن يتم توفير طوابع زمنية دقيقة لـ MIDI في جميع عمليات النقل.
- يجب تقليل ضوضاء الإشارة الصوتية عبر محوّلات على الجهاز، بما في ذلك الفترة التي تلي التشغيل على البارد مباشرةً.
- يجب أن توفر قيمة صفرية للفرق في ساعة الصوت بين جانبَي الإدخال والإخراج لنقاط النهاية المقابلة عندما يكون كلاهما نشطًا. وتشمل أمثلة نقاط النهاية المقابلة الميكروفون ومكبّر الصوت المتوفّرَين على الجهاز أو مصادر الإدخال والإخراج في مقبس الصوت.
- يجب أن تتعامل مع استدعاءات إكمال المخزن المؤقت للصوت مع وجهي الإدخال والإخراج لنقاط النهاية المقابلة في سلسلة التعليمات نفسها عندما يكون كلاهما نشط، كما يجب إدخال استدعاء الإخراج بعد العودة من معاودة الاتصال بالإدخال مباشرةً. أو إذا لم يكن من الممكن معالجة عمليات الاستدعاء في سلسلة المحادثات نفسها، يمكنك إدخال استدعاء الإخراج بعد وقت قصير من إدخال رد استدعاء الإدخال للسماح للتطبيق بأن يكون لدى التطبيق توقيت ثابت لجانبَي الإدخال والإخراج.
- يجب تقليل فرق الطور بين التخزين المؤقت للصوت HAL في جانبَي الإدخال والإخراج لنقاط النهاية المقابلة.
- يجب تقليل وقت استجابة اللمس.
- يجب تقليل تغيُّر وقت استجابة اللمس عند التحميل (عدم الاستقرار).
إذا كانت عمليات تنفيذ الأجهزة تستوفي جميع المتطلبات أعلاه، فإنها:
- [SR] يُنصَح بشدة بالإبلاغ عن إتاحة الميزة
android.hardware.audio.pro
عبر الفئةandroid.content.pm.PackageManager
.
في حال استيفاء عمليات تنفيذ الجهاز للمتطلبات من خلال واجهة برمجة تطبيقات قائمة انتظار المخزن المؤقت OpenSL ES PCM، سيتم إجراء ما يلي:
- [SR] يُنصَح بشدة باستيفاء المتطلبات نفسها عبر واجهة برمجة تطبيقات AAudio،
إذا كانت عمليات تنفيذ الجهاز تتضمّن مقبس صوت مقاس 3.5 ملم بأربعة موصّلات:
- [C-2-1] يجب أن يبلغ وقت استجابة الصوت ذهابًا وإيابًا بشكل مستمر 20 مللي ثانية أو أقل عبر مسار مقبس الصوت.
- [SR] يُنصَح بشدة بالامتثال للقسم مواصفات الأجهزة الجوّالة (المقبس) في مواصفات سماعات الرأس السلكية (الإصدار 1.1).
- يجب أن يكون وقت الاستجابة المستمر للصوت ذهابًا وإيابًا 10 ملي ثانية أو أقل فوق مسار مقبس الصوت.
في حال حذف مقبس صوت مقاس 3.5 ملم من 4 موصّلات من الأجهزة تتضمن منافذ USB تتوافق مع وضع مضيف USB، ينطبق ما يلي:
- [C-3-1] يجب تنفيذ فئة الصوت على USB.
- يجب أن يكون لدى [C-3-2] وقت استجابة صوت ذهاب وعودة مستمر لمدة 20 ملّي ثانية أو أقل عبر منفذ وضع مضيف USB باستخدام فئة الصوت على USB.
- يجب أن يكون وقت الاستجابة المستمر للصوت ذهابًا وإيابًا 10 ملي ثانية أو أقل عبر منفذ وضع مضيف USB باستخدام فئة صوت USB.
إذا كانت عمليات تنفيذ الأجهزة تتضمن منفذ HDMI، سيتم إجراء ما يلي:
- [C-4-1] يجب أن يتوافق مع الإخراج في الاستيريو وثمانية قنوات بعمق 20 بت أو 24 بت و192 كيلوهرتز بدون فقدان عمق البت أو إعادة أخذ العينات.
5.11. التقاط لم تتم معالجته
يتيح Android تسجيل الصوت الذي لم تتم معالجته من خلال مصدر الصوت android.media.MediaRecorder.AudioSource.UNPROCESSED
. في OpenSL ES، يمكن الوصول إليه باستخدام الإعداد المسبَق للسجلات SL_ANDROID_RECORDING_PRESET_UNPROCESSED
.
إذا كانت عمليات تنفيذ الأجهزة تهدف إلى توفير مصدر الصوت الذي لم تتم معالجته وإتاحتها للتطبيقات التابعة لجهات خارجية، ينطبق ما يلي:
-
[C-1-1] يجب الإبلاغ عن الدعم من خلال موقع
android.media.AudioManager
Property_SUPPORT_AUDIO_SOURCE_UNPROCESSED. -
يجب أن تكون خصائص النطاق [C-1-2] خصائص اتساع مسطّح مقابل تردد مسطّح في نطاق التردد المتوسط: بالتحديد 10 ديسيبل من 100 هرتز إلى 7000 هرتز لكل ميكروفون يُستخدَم في تسجيل مصدر الصوت الذي لم تتم معالجته.
-
يجب أن يعرض [C-1-3] مستويات اتساع في نطاق التردد المنخفض: من + 20 ديسيبل بدءًا من 5 هرتز إلى 100 هرتز مقارنةً بنطاق التردد المتوسط لكل ميكروفون يُستخدَم لتسجيل مصدر الصوت الذي لم تتم معالجته.
-
يجب أن يعرض [C-1-4] مستويات اتساع في نطاق التردد العالي: من + 30 ديسيبل بدءًا من 7000 هرتز إلى 22 كيلوهرتز مقارنةً بنطاق التردد المتوسط لكل ميكروفون يُستخدَم لتسجيل مصدر الصوت غير المعالجة.
-
[C-1-5] يجب ضبط حساسية إدخال الصوت على أن يعطي مصدر نغمة جيبية بتردد 1000 هرتز يتم تشغيله عند مستوى ضغط صوت يبلغ 94 ديسيبل (SPL) استجابة ذات متوسط ترددي يبلغ 520 لعينات يبلغ مستواها 16 بت (أو -36 ديسيبل لقياس كامل لكل نقطة عائمة/دقة تسجيل مزدوج لكل مصدر صوتي لم تتم معالجته).
-
[C-1-6] يجب أن تبلغ نسبة الإشارة إلى الضوضاء (SNR) 60 ديسيبل أو أعلى لكل ميكروفون يُستخدَم لتسجيل مصدر الصوت الذي لم تتم معالجته. (في حين يُقاس SNR كفرق بين مستوى SPL الذي يبلغ 94 ديسيبل ومؤشر مستوى الخدمة نفسه المكافئ للضوضاء الذاتية، بمقياس A).
-
يجب أن يكون مستوى التشوّه التوافقي الكلي (THD) أقل من% 1 لصوت 1 كيلوهرتز عند مستوى إدخال 90 ديسيبل لمستوى الصوت (SPL) عند مستوى الصوت لكل ميكروفون يُستخدَم لتسجيل مصدر الصوت غير المعالجة.
-
يجب ألا يكون هناك أي معالجة إشارات أخرى (مثل التحكم التلقائي في مستوى الكسب أو فلتر التمرير المرتفع أو إلغاء الصدى) في المسار بخلاف مضاعِف المستوى لنقل المستوى إلى النطاق المطلوب. معنى هذا التعديل:
- [C-1-8] في حال وجود أي معالجة إشارات في البنية لأي سبب من الأسباب، يجب أن تكون غير مفعَّلة وتنقل بشكل فعّال أي تأخير أو وقت استجابة إضافي إلى مسار الإشارة.
- [C-1-9] يجب ألا يؤدي مضاعف المستوى إلى أي تأخير أو وقت استجابة في مسار الإشارة، في حين أنّه يُسمح له بالظهور على المسار.
يتم إجراء جميع قياسات مستوى العميل (SPL) مباشرةً بجانب الميكروفون قيد الاختبار. عند ضبط العديد من إعدادات الميكروفون، تنطبق هذه المتطلبات على كل ميكروفون.
إذا كانت عمليات تنفيذ الأجهزة تشير إلى android.hardware.microphone
ولكنّها لا تتوافق مع مصدر صوت لم تتم معالجته، ينطبق ما يلي:
- [C-2-1] يجب أن تعرض
null
لطريقةAudioManager.getProperty(PROPERTY_SUPPORT_AUDIO_SOURCE_UNPROCESSED)
API، للإشارة إلى عدم توفُّر الدعم على نحو صحيح. - لا تزال [SR] يُنصَح بها بشدة لاستيفاء أكبر عدد من متطلّبات مسار الإشارة لمصدر التسجيل الذي لم تتم معالجته.
6. التوافق بين أدوات المطوّرين وخياراتهم
6.1. أدوات المطوّرين
عمليات تنفيذ الأجهزة:
- [C-0-1] يجب أن يتوافق مع أدوات مطوّري برامج Android المتوفرة في حزمة تطوير البرامج (SDK) لنظام التشغيل Android.
-
- يجب أن يتوافق [C-0-2] مع جميع وظائف adb على النحو الموضَّح في حزمة تطوير البرامج (SDK) لنظام التشغيل Android، بما في ذلك dumpsys.
- [C-0-3] يجب ألا يغير تنسيق أو محتويات أحداث نظام الجهاز (بطارية أو قرص تخزين بيانات أو بصمة الإصبع أو إحصاءات الرسومات أو شبكات netstats أو إشعارات أو برامج Procstats) التي يتم تسجيلها عبر dumpsys.
- [C-0-4] يجب أن يكون البرنامج الخفي لـ adb من جهة الجهاز غير نشط بشكل تلقائي ويجب أن تكون هناك آلية يمكن للمستخدمين الوصول إليها لتفعيل Android Debug Bridge.
- [C-0-5] يجب أن يتيح استخدام adb. يشمل Android استخدام أداة Adb الآمنة. يفعِّل Adb الآمن واجهة برمجة التطبيقات (ADb) على المضيفات المعروفة التي تمت مصادقتها.
-
[C-0-6] يجب أن يوفّر آلية تسمح باتصال Adb من جهاز مضيف. على سبيل المثال:
- في عمليات تنفيذ الأجهزة التي لا تحتوي على منفذ USB الذي يتوافق مع وضع الجهاز الملحق، يجب أن يتم تنفيذ adb عبر شبكة محلية (مثل إيثرنت أو Wi-Fi).
- يجب أن يوفّر برامج تشغيل لأنظمة التشغيل Windows 7 و9 و10، ما يسمح للمطوّرين بالاتصال بالجهاز باستخدام بروتوكول adb.
-
خدمة Dalvik Debug Monitor (ddms)
- يجب أن يتوافق [C-0-7] مع جميع ميزات نظام إدارة البيانات (ddms) كما هو موثّق في حزمة تطوير البرامج (SDK) لنظام التشغيل Android. بما أنّ نظام dms يستخدِم أداة adb، يُفترَض أن يكون الدعم لنظام ddms غير نشط تلقائيًا، ولكن يجب أن يكون متوافقًا عندما ينشط المستخدم Android Debug Bridge، على النحو الوارد أعلاه.
-
قرد
- [C-0-8] يجب أن يتضمن إطار عمل Monkey ويجعله متاحًا للتطبيقات للاستخدام.
-
سجلّ النظام الأساسي (SysTrace)
- [C-0-9] يجب أن يتوافق مع أداة تتبُّع النظم كما هو موثّق في حزمة تطوير البرامج (SDK) لنظام التشغيل Android. يجب أن يكون النظام غير نشط بشكل افتراضي ويجب أن تتوفر آلية يمكن للمستخدم الوصول إليها لتفعيل Systrace.
6.2. خيارات المطوّرين
يتيح Android للمطوّرين ضبط الإعدادات المتعلّقة بتطوير التطبيقات.
يجب أن توفر عمليات تنفيذ الأجهزة تجربة متسقة لخيارات المطوّرين، حيث:
- يجب أن يلتزم [C-0-1] بالهدف android.settings.APPLICATION_DEVELOPMENT_SETTINGS لعرض الإعدادات المتعلقة بتطوير التطبيقات. تُخفي عملية تنفيذ Android الأولية قائمة "خيارات المطوّرين" تلقائيًا وتمكِّن المستخدمين من تشغيل "خيارات المطوّرين" بعد الضغط على سبع (7) مرات في عنصر القائمة الإعدادات > لمحة عن الجهاز > رقم الإصدار.
- [C-0-2] يجب أن تخفي خيارات المطوّرين تلقائيًا ويجب أن توفّر آلية لتفعيل خيارات المطوّرين بدون الحاجة إلى أي إدراج خاص في القائمة المسموح بها.
- وقد نحدّ مؤقتًا من إمكانية الوصول إلى قائمة "خيارات المطوّرين" من خلال إخفاء القائمة أو إيقافها بشكل مرئي، وذلك لتجنُّب تشتيت الانتباه في الحالات التي تكون فيها سلامة المستخدم مصدر قلق.
7. توافُق الأجهزة
إذا كان الجهاز يتضمن مكوّنًا معيّنًا له يحتوي على واجهة برمجة تطبيقات مقابلة لمطوّري برامج الجهات الخارجية، اتّبِع الخطوات التالية:
- [C-0-1] يجب أن تنفذ عملية تنفيذ الجهاز واجهة برمجة التطبيقات هذه كما هو موضّح في مستندات حزمة تطوير البرامج (SDK) لنظام التشغيل Android.
إذا تفاعلت واجهة برمجة تطبيقات في حزمة تطوير البرامج (SDK) مع مكوّن جهاز تمت الإشارة إلى أنّه اختياري ولا يتضمّن تنفيذ الجهاز هذا المكوّن:
- [C-0-2] يجب عرض تعريفات الفئات الكاملة (كما هو موثّق في حزمة تطوير البرامج (SDK)) الخاصة بواجهات برمجة التطبيقات الخاصة بالمكوّن.
- [C-0-3] يجب تنفيذ سلوكيات واجهة برمجة التطبيقات في حالات الطوارئ بطريقة معقولة.
- [C-0-4] يجب أن تعرض طرق واجهة برمجة التطبيقات قيمًا فارغة في الحالات التي تسمح فيها مستندات حزمة تطوير البرامج (SDK) بذلك.
- [C-0-5] يجب أن تعرض طرق واجهة برمجة التطبيقات عمليات التنفيذ بدون بيئة للفئات حيث لا تسمح مستندات حزمة SDK بالقيم الفارغة.
- [C-0-6] يجب ألا يكون لدى طرق واجهة برمجة التطبيقات استثناءات غير موثّقة في مستندات حزمة تطوير البرامج (SDK).
- [C-0-7] يجب أن تُبلغ عمليات تنفيذ الأجهزة باستمرار عن معلومات دقيقة حول إعدادات الأجهزة من خلال الطريقتَين
getSystemAvailableFeatures()
وhasSystemFeature(String)
في الفئة android.content.pm.PackageManager لملف مرجعي الإصدار نفسه.
ومن الأمثلة النموذجية على السيناريو الذي تنطبق فيه هذه المتطلبات هي واجهة برمجة التطبيقات telephony API: حتى على الأجهزة التي ليست هواتف، يجب تنفيذ واجهات برمجة التطبيقات هذه في حالات الطوارئ المعقولة.
7.1. العرض والرسومات
يشتمل Android على مرافق تضبط تلقائيًا أصول التطبيقات وتنسيقات واجهة المستخدم بشكل مناسب للجهاز لضمان تشغيل تطبيقات الجهات الخارجية بشكل جيد على مجموعة متنوعة من إعدادات الأجهزة. يجب أن تنفِّذ الأجهزة واجهات برمجة التطبيقات والسلوكيات هذه بشكل صحيح، كما هو موضّح في هذا القسم.
يتم تعريف الوحدات المُشار إليها من خلال المتطلّبات في هذا القسم على النحو التالي:
- الحجم القطري الفعلي. المسافة بالبوصة بين زاويتين متقابلَين للجزء المضيء من الشاشة.
- نقاط لكل بوصة (dpi). عدد وحدات البكسل التي يشتمل عليها امتداد خطي أو عمودي خطي بمقدار 1". عند إدراج قيم النقاط لكل بوصة، يجب أن تكون القيم الأفقية والعمودية لكل بوصة ضمن النطاق.
- نسبة العرض إلى الارتفاع يشير إلى نسبة وحدات البكسل للبُعد الأطول إلى بُعد الأقصر للشاشة. على سبيل المثال، ستكون نسبة العرض 480×854 بكسل 854/480 = 1.779، أو 16:9 تقريبًا.
- وحدة بكسل مستقلة الكثافة (dp) وحدة البكسل الافتراضية التي تمت تسويتها إلى شاشة تبلغ 160 نقطة لكل بوصة، ويتم احتسابها على النحو التالي: بكسل = dps * (الكثافة/160).
7.1.1. إعدادات الشاشة
7.1.1.1. حجم الشاشة
يتوافق إطار عمل واجهة المستخدم من Android مع مجموعة متنوعة من أحجام تنسيق الشاشة المنطقية، كما يسمح للتطبيقات بطلب حجم تنسيق الشاشة في الإعدادات الحالية من خلال Configuration.screenLayout
باستخدام SCREENLAYOUT_SIZE_MASK
وConfiguration.smallestScreenWidthDp
.
-
[C-0-1] يجب أن تُبلغ عمليات تنفيذ الأجهزة عن حجم التنسيق الصحيح لـ
Configuration.screenLayout
كما هو محدّد في مستندات حزمة تطوير البرامج (SDK) لنظام التشغيل Android. على وجه التحديد، يجب أن تُبلغ عمليات تنفيذ الأجهزة عن أبعاد شاشة بكسل مستقلة الكثافة المنطقية (dp) الصحيحة على النحو التالي:- في الأجهزة التي يتم فيها ضبط السمة
Configuration.uiMode
على أنّها قيمة أخرى غير UI_mode_TYPE_watch التي تُبلغ عن حجمsmall
لـConfiguration.screenLayout
، يجب أن تحتوي الأجهزة على 426 وحدة بكسل مستقلة الكثافة × 320 بكسل مستقل الكثافة على الأقل. - يجب أن تحتوي الأجهزة التي يبلغ حجمها
normal
علىConfiguration.screenLayout
بدقة 480 بكسل مستقل الكثافة × 320 بكسل مستقل الكثافة (dp). - يجب أن تحتوي الأجهزة التي يبلغ حجمها
large
علىConfiguration.screenLayout
بدقة 640 بكسل مستقل الكثافة × 480 بكسل مستقل الكثافة (dp). - يجب أن تتضمّن الأجهزة التي يبلغ حجمها
xlarge
لـConfiguration.screenLayout
نسبة 960 بكسل مستقل الكثافة × 720 بكسل مستقل الكثافة على الأقل.
- في الأجهزة التي يتم فيها ضبط السمة
-
[C-0-2] يجب أن تتوافق عمليات تنفيذ الأجهزة بشكل صحيح مع دعم التطبيقات المذكور لأحجام الشاشة من خلال السمة <
supports-screens
> في ملف AndroidManifest.xml، كما هو موضّح في مستندات حزمة تطوير البرامج (SDK) لنظام التشغيل Android.
7.1.1.2. نسبة عرض إلى ارتفاع الشاشة
على الرغم من عدم فرض قيود على قيمة نسبة العرض إلى الارتفاع للشاشة في عرض الشاشة الفعلية، يجب أن تستوفي نسبة العرض إلى الارتفاع للشاشة المنطقية التي يتم عرض التطبيقات التابعة لجهات خارجية ضمنها، كما يمكن استنتاجها من قيم الطول والعرض التي يتم تسجيلها من خلال واجهات برمجة تطبيقات view.Display
وواجهة برمجة التطبيقات Configuration، ويجب أن تستوفي نسبة العرض إلى الارتفاع التالية:
-
[C-0-1] عمليات تنفيذ الأجهزة التي تم ضبط
Configuration.uiMode
فيها علىUI_MODE_TYPE_NORMAL
يجب أن تكون لها قيمة نسبة عرض إلى ارتفاع تتراوح بين 1.3333 (4:3) و1.86 (تقريبًا 16:9)، ما لم يُعتبَر التطبيق جاهزًا للتمديد لفترة أطول عن طريق استيفاء أحد الشروط التالية:- أعلن التطبيق أنّه يتيح زيادة نسبة العرض إلى الارتفاع للشاشة من خلال قيمة البيانات الوصفية في
android.max_aspect
. - يشير التطبيق إلى أنّه يمكن تغيير حجمه من خلال السمة android:resizeableActivity.
- يستهدف التطبيق المستوى 26 من واجهة برمجة التطبيقات أو المستويات الأعلى، ولا يتضمّن معرّف
android:MaxAspectRatio
يؤدي إلى الحدّ من نسبة العرض إلى الارتفاع المسموح بها.
- أعلن التطبيق أنّه يتيح زيادة نسبة العرض إلى الارتفاع للشاشة من خلال قيمة البيانات الوصفية في
-
[C-0-2] عمليات تنفيذ الأجهزة التي تم ضبط
Configuration.uiMode
فيها علىUI_MODE_TYPE_WATCH
يجب أن يتم ضبط نسبة العرض إلى الارتفاع فيها على 1.0 (1:1).
7.1.1.3. كثافة الشاشة
يحدِّد إطار عمل واجهة المستخدم على نظام التشغيل Android مجموعة من الكثافات المنطقية العادية لمساعدة مطوّري التطبيقات على استهداف موارد التطبيقات.
-
[C-0-1] بشكل تلقائي، يجب أن تُبلغ عمليات تنفيذ الجهاز عن كثافات إطار عمل Android المنطقي التالي من خلال واجهة برمجة التطبيقات DENSITY_DEVICE_STABLE ويجب ألا تتغير هذه القيمة في أي وقت، ومع ذلك، قد يُبلغ الجهاز عن كثافة عشوائية مختلفة وفقًا لتغييرات إعدادات الشاشة التي يجريها المستخدم (على سبيل المثال، حجم العرض) الذي تم ضبطه بعد التشغيل المبدئي.
- 120 نقطة لكل بوصة (ldpi)
- 160 نقطة لكل بوصة (mdpi)
- 213 نقطة لكل بوصة (tvdpi)
- 240 نقطة لكل بوصة (hdpi)
- 260 نقطة لكل بوصة (260 نقطة لكل بوصة)
- 280 نقطة لكل بوصة (280 نقطة لكل بوصة)
- 300 نقطة لكل بوصة (300 نقطة لكل بوصة)
- 320 نقطة لكل بوصة (xhdpi)
- 340 نقطة لكل بوصة (340 نقطة لكل بوصة)
- 360 نقطة لكل بوصة (360 نقطة لكل بوصة)
- 400 نقطة لكل بوصة (400 نقطة لكل بوصة)
- 420 نقطة لكل بوصة (420 نقطة لكل بوصة)
- 480 نقطة لكل بوصة (xxhdpi)
- 560 نقطة لكل بوصة (560 نقطة لكل بوصة)
- 640 نقطة لكل بوصة (xxxhdpi)
-
يجب أن تحدِّد عمليات تنفيذ الأجهزة كثافة إطار عمل Android العادية الأقرب رقميًا إلى الكثافة الفعلية للشاشة، ما لم تكن تلك الكثافة المنطقية تؤدي إلى خفض حجم الشاشة الذي تم الإبلاغ عنه إلى أقل من الحد الأدنى المتوافق. إذا كانت كثافة إطار عمل Android العادية الأقرب رقميًا من الكثافة الفعلية تؤدي إلى حجم شاشة أصغر من أصغر حجم شاشة متوافق متوافق (320 بكسل مستقل الكثافة)، يجب أن تسجّل عمليات تنفيذ الأجهزة أدنى كثافة لإطار عمل Android المعيارية التالية.
إذا كانت هناك إمكانية لتغيير حجم عرض الجهاز:
- [C-1-1] يجب ألا يزيد حجم العرض عن 1.5 مرة من الكثافة الأصلية، أو يجب أن ينتج عنه حد أدنى فعّال لبُعد الشاشة يقل عن 320 بكسل مستقل الكثافة (أي ما يعادل مؤهِّل الموارد sw320dp)، أيهما يأتي أولاً.
- [C-1-2] يجب ألا يتم تصغير حجم العرض عن الكثافة الأصلية بمقدار 0.85 مرة.
- لضمان سهولة الاستخدام وأحجام الخطوط المتسقة، يُنصح بتوفير إمكانية الضبط التالي لخيارات الشبكة الإعلانية المدمجة مع المحتوى (مع الالتزام بالحدود المعيّنة أعلاه)
- صغيرة: 0.85x
- الإعداد التلقائي: 1x (مقياس العرض الأصلي)
- كبيرة: 1.15x
- أكبر: 1.3x
- الأكبر 1.45x
7.1.2. مقاييس العرض
إذا كانت عمليات تنفيذ الجهاز تتضمّن شاشة أو إخراج فيديو، سيتم اتخاذ الإجراءات التالية:
- [C-1-1] يجب أن يعرض القيم الصحيحة لجميع مقاييس العرض المحدّدة في
android.util.DisplayMetrics
API.
إذا كانت عمليات تنفيذ الأجهزة لا تتضمّن شاشة مضمّنة أو إخراج فيديو، سيتم اتخاذ الإجراءات التالية:
- [C-2-1] يجب أن يبلغ عن القيم المعقولة لجميع مقاييس العرض المحدّدة في
android.util.DisplayMetrics
API للسمة التلقائية التي تمت محاكاتهاview.Display
.
7.1.3. اتجاه الشاشة
عمليات تنفيذ الأجهزة:
- يجب أن يُبلغ [C-0-1] عن اتجاهات الشاشة المتوافقة مع هذه السياسة (
android.hardware.screen.portrait
و/أوandroid.hardware.screen.landscape
) ويجب أن يبلغ عن اتجاه واحد متوافق على الأقل. على سبيل المثال، يجب أن يبلغ الجهاز ذو الشاشة الأفقية ذات الاتجاه الثابت، مثل تلفزيون أو كمبيوتر محمول،android.hardware.screen.landscape
فقط. - يجب أن يُبلِغ [C-0-2] عن القيمة الصحيحة للاتجاه الحالي للجهاز عند طلبه من خلال
android.content.res.Configuration.orientation
أوandroid.view.Display.getOrientation()
أو واجهات برمجة تطبيقات أخرى.
إذا كانت عمليات تنفيذ الأجهزة تتوافق مع كلا اتجاهَي الشاشة، سيتم إجراء ما يلي:
- [C-1-1] يجب أن تتيح التطبيقات الاتجاه الديناميكي إما باتجاه الشاشة العمودية أو الأفقية. وهذا يعني أنّ الجهاز يجب أن يراعي طلب التطبيق لاتجاه معيّن للشاشة.
- [C-1-2] يجب ألا يتم تغيير حجم الشاشة أو كثافةها التي تم الإبلاغ عنها عند تغيير الاتجاه.
- من الممكن اختيار الاتجاه العمودي أو الأفقي كإعداد تلقائي.
7.1.4. تسريع الرسومات الثنائية الأبعاد والثلاثية الأبعاد
7.1.4.1 OpenGL ES
عمليات تنفيذ الأجهزة:
- يجب أن يحدّد [C-0-1] إصدارات OpenGL ES المتوافقة (الإصدار 1.1 أو 2.0 أو 3.0 أو 3.1 أو 3.2) من خلال واجهات برمجة التطبيقات المُدارة (من خلال أسلوب
GLES10.getString()
مثلاً) وواجهات برمجة التطبيقات الأصلية. - يجب أن يشمل [C-0-2] التوافق مع جميع واجهات برمجة التطبيقات المُدارة ذات الصلة وواجهات برمجة التطبيقات الأصلية لكل إصدارات OpenGL ES التي تم تحديدها أنّها متوافقة.
إذا كانت عمليات تنفيذ الجهاز تتضمّن شاشة أو إخراج فيديو، سيتم اتخاذ الإجراءات التالية:
- يجب أن يتوافق [C-1-1] مع OpenGL ES 1.0 و2.0، كما هو موضّح ومفصَّل في مستندات حزمة تطوير البرامج (SDK) لنظام التشغيل Android.
- يُوصى بشدة بأن تكون [SR] متوافقة مع OpenGL ES 3.0.
- يجب أن تتوافق مع OpenGL ES 3.1 أو 3.2.
إذا كانت عمليات تنفيذ الأجهزة تتوافق مع أي من إصدارات OpenGL ES، سيتم إجراء ما يلي:
- [C-2-1] يجب أن يتم الإبلاغ عن أي إضافات OpenGL ES أخرى تم تنفيذها من خلال واجهات برمجة التطبيقات المُدارة في OpenGL ES وواجهات برمجة التطبيقات الأصلية، وفي المقابل، يجب ألا تُبلغ عن سلاسل الإضافات غير المتوافقة.
- [C-2-2] يجب أن يتوافق مع الإضافات
EGL_KHR_image
وEGL_KHR_image_base
وEGL_ANDROID_image_native_buffer
وEGL_ANDROID_get_native_client_buffer
وEGL_KHR_wait_sync
وEGL_KHR_get_all_proc_addresses
وEGL_ANDROID_presentation_time
وEGL_KHR_swap_buffers_with_damage
وEGL_ANDROID_recordable
. - يُنصَح بشدة بأن تكون [SR] متوافقة مع EGL_KHR_partial_update.
- من المفترض أن يتم إعداد تقرير دقيق من خلال طريقة
getString()
، باستخدام أي تنسيق متوافق لضغط المادة، ويكون عادةً خاصًا بالمورّد.
إذا كانت عمليات تنفيذ الأجهزة تشير إلى توافقها مع OpenGL ES 3.0 أو 3.1 أو 3.2، ينطبق ما يلي:
- [C-3-1] يجب تصدير رموز الدوال المقابلة لهذه النسخة بالإضافة إلى رموز الدوال OpenGL ES 2.0 في مكتبة libGLESv2.so.
إذا كانت عمليات تنفيذ الأجهزة تتوافق مع OpenGL ES 3.2، سيتم إجراء ما يلي:
- [C-4-1] يجب أن يتوافق مع حزمة إضافات OpenGL ES Android بالكامل.
إذا كانت عمليات تنفيذ الأجهزة تتوافق مع حزمة إضافات Android لـ OpenGL ES بالكامل، يجب:
- [C-5-1] يجب أن يحدد الدعم من خلال علامة الميزة
android.hardware.opengles.aep
.
إذا كشفت عمليات تنفيذ الأجهزة عن دعم الإضافة EGL_KHR_mutable_render_buffer
، سيحدث ما يلي:
- [C-6-1] يجب أن يتوافق أيضًا مع الإضافة
EGL_ANDROID_front_buffer_auto_refresh
.
7.1.4.2 Vulkan
يتوافق Android مع Vulkan، وهي واجهة برمجة تطبيقات منخفضة الأداء تعمل على عدّة أنظمة أساسية للرسومات الثلاثية الأبعاد العالية الأداء.
إذا كانت عمليات تنفيذ الأجهزة تتيح OpenGL ES 3.0 أو 3.1، سيتم:
- [SR] يُوصى بشدة بتضمين الدعم للإصدار Vulkan 1.0 .
إذا كانت عمليات تنفيذ الجهاز تتضمّن شاشة أو إخراج فيديو، سيتم اتخاذ الإجراءات التالية:
- يجب أن تتوافق مع الإصدار 1.0 من Vulkan.
عمليات تنفيذ الأجهزة، في حال كانت تشمل التوافق مع Vulkan 1.0:
- يجب أن يُبلغ [C-1-1] عن قيمة العدد الصحيح الصحيحة من خلال علامتَي الميزة
android.hardware.vulkan.level
وandroid.hardware.vulkan.version
. - [C-1-2] يجب أن تتعداد، على الأقل
VkPhysicalDevice
لواجهة Vulkan الأصلية لواجهة برمجة التطبيقاتvkEnumeratePhysicalDevices()
. - [C-1-3] يجب تنفيذ واجهات برمجة تطبيقات Vulkan 1.0 بشكل كامل لكل
VkPhysicalDevice
عدد. - [C-1-4] يجب تعداد الطبقات، المضمّنة في المكتبات الأصلية المسماة
libVkLayer*.so
في دليل المكتبة الأصلية لحزمة التطبيق، من خلال واجهتَي برمجة تطبيقات VulkanvkEnumerateInstanceLayerProperties()
وvkEnumerateDeviceLayerProperties()
. - [C-1-5] يجب ألا تعداد الطبقات التي توفرها المكتبات خارج حزمة التطبيق، أو توفير طرق أخرى لتتبُّع أو اعتراض واجهة برمجة تطبيقات Vulkan، ما لم يتم ضبط السمة
android:debuggable
علىtrue
. - [C-1-6] يجب الإبلاغ عن جميع سلاسل الإضافات التي تتوافق معها عبر واجهات برمجة تطبيقات Vulkan الأصلية، وفي المقابل يجب ألا تبلغ عن سلاسل الإضافات التي لا تتوافق معها بشكل صحيح.
عمليات تنفيذ الأجهزة، إذا لم تكن تشمل التوافق مع Vulkan 1.0:
- يجب ألا تتضمّن العلامة [C-2-1] أيًا من علامات ميزة Vulkan (مثل
android.hardware.vulkan.level
أوandroid.hardware.vulkan.version
). - [C-2-2] يجب ألا يتم تعداد أي
VkPhysicalDevice
لواجهة Vulkan الأصليةvkEnumeratePhysicalDevices()
.
7.1.4.3 RenderScript
- [C-0-1] يجب أن تتوافق عمليات تنفيذ الأجهزة مع Android RenderScript على النحو المفصّل في مستندات حزمة تطوير البرامج (SDK) لنظام التشغيل Android.
7.1.4.4 تسريع الرسومات ثنائية الأبعاد
يشتمل Android على آلية للتطبيقات توضح أنها تريد تفعيل تسريع الأجهزة للرسومات ثنائية الأبعاد على مستوى التطبيق أو النشاط أو النافذة أو العرض من خلال استخدام علامة البيان android:hardwareAccelerated أو طلبات البيانات المباشرة من واجهة برمجة التطبيقات.
عمليات تنفيذ الأجهزة:
- [C-0-1] يجب أن يفعّل تسريع الأجهزة تلقائيًا، ويجب أن يوقف تسريع الأجهزة إذا طلب المطور ذلك عن طريق ضبط android:hardwareAccelerated="false" أو إيقاف تسريع الأجهزة مباشرةً من خلال واجهات برمجة تطبيقات Android View.
- يجب أن يتّبع [C-0-2] سلوكًا متوافقًا مع مستندات حزمة تطوير البرامج (SDK) لنظام التشغيل Android في ما يتعلّق بتسريع الأجهزة.
يتضمّن Android عنصر TextureView يتيح للمطوّرين دمج زخارف OpenGL ES التي يتم تسريعها بالأجهزة كأهداف عرض في تسلسل هرمي لواجهة المستخدم.
- يجب أن يتوافق [C-0-3] مع واجهة برمجة تطبيقات TextureView، كما يجب أن يتّبع أسلوبًا متّسقًا في مرحلة تنفيذ Android.
7.1.4.5 شاشات واسعة النطاق
في حال كانت عمليات تنفيذ الأجهزة تتيح توافقها مع شاشات واسعة النطاق من خلال Display.isWideColorGamut()
، سيحدث ما يلي:
- [C-1-1] يجب أن يحتوي على شاشة معايرة بالألوان.
- يجب أن يحتوي [C-1-2] على شاشة تغطي سلسلة ألوان sRGB بالكامل في مساحة CIE 1931 xyY.
- يجب أن يحتوي [C-1-3] على شاشة لا تقل مساحتها عن 90% من NTSC 1953 في مساحة CIE 1931 xyY.
- [C-1-4] يجب أن يتوافق مع OpenGL ES 3.0 أو 3.1 أو 3.2 والإبلاغ عن ذلك بشكل صحيح.
- [C-1-5] يجب الإعلان عن دعم الإضافات
EGL_KHR_no_config_context
وEGL_EXT_pixel_format_float
وEGL_KHR_gl_colorspace
وEGL_EXT_colorspace_scrgb_linear
وEGL_GL_colorspace_display_p3
. - [SR] يُنصَح بشدة بتوفير إمكانية استخدام "
GL_EXT_sRGB
".
بالمقابل، إذا كانت عمليات تنفيذ الأجهزة لا تتيح الشاشات ذات النطاق العريض، سيؤدي ذلك إلى:
- [C-2-1] يجب أن تغطي 100% أو أكثر من مساحة sRGB في مساحة CIE 1931 xyY، على الرغم من أنّ سلسلة ألوان الشاشة غير محدّدة.
7.1.5. وضع التوافق مع التطبيقات القديم
يحدِّد Android "وضع التوافق" الذي يعمل فيه إطار العمل في الوضع "العادي" لحجم الشاشة المكافئ (العرض 320 بكسل مستقل الكثافة) لصالح التطبيقات القديمة التي لم يتم تطويرها للإصدارات القديمة من نظام التشغيل Android التي تُعِدّ مسبقًا استقلالية حجم الشاشة.
7.1.6. تكنولوجيا الشاشة
يشتمل نظام Android الأساسي على واجهات برمجة تطبيقات تسمح للتطبيقات بعرض رسومات غنية على الشاشة. يجب أن تتوافق الأجهزة مع جميع واجهات برمجة التطبيقات هذه على النحو المحدّد في حزمة تطوير البرامج (SDK) لنظام التشغيل Android، ما لم يتم السماح بذلك على وجه التحديد في هذا المستند.
عمليات تنفيذ الأجهزة:
- [C-0-1] يجب أن يتوافق مع شاشات قادرة على عرض رسومات ملونة 16 بت.
- "ينبغي" أن يتوافق مع شاشات العرض قادرة على عرض رسومات ملونة بـ 24 بت.
- [C-0-2] يجب أن يتوافق مع شاشات العرض القادرة على عرض الصور المتحركة.
- [C-0-3] يجب أن يستخدم تكنولوجيا العرض التي تتضمّن نسبة عرض إلى ارتفاع للبكسل (PAR) تتراوح بين 0.9 و1.15. وهذا يعني أنّ نسبة العرض إلى الارتفاع للبكسل يجب أن تكون قريبة من المربّع (1.0) مع تفاوت يتراوح بين %10 و%15.
7.1.7. الشاشات الثانوية
يتيح Android العرض الثانوي لإتاحة إمكانات مشاركة الوسائط وواجهات برمجة التطبيقات للمطوّرين للوصول إلى الشاشات الخارجية.
إذا كانت طُرق تنفيذ الأجهزة تتيح عرض شاشة خارجية من خلال اتصال سلكي أو لاسلكي أو متصل بشاشة إضافية، يُرجى اتّباع الخطوات التالية:
- [C-1-1] يجب أن ينفِّذ خدمة النظام وواجهة برمجة التطبيقات
DisplayManager
كما هو موضّح في مستندات حزمة تطوير البرامج (SDK) لنظام التشغيل Android.
7.2. أجهزة إدخال البيانات
عمليات تنفيذ الأجهزة:
- يجب أن يشتمل [C-0-1] على آلية إدخال، مثل شاشة تعمل باللمس أو التنقل بدون لمس للتنقل بين عناصر واجهة المستخدم.
7.2.1. لوحة المفاتيح
إذا كانت عمليات تنفيذ الأجهزة تتضمن إمكانية استخدام تطبيقات تحرير أسلوب الإدخال (IME) التابعة لجهات خارجية، فإنها:
- [C-1-1] يجب أن يفصح عن علامة ميزة
android.software.input_methods
. - [C-1-2] يجب تنفيذ
Input Management Framework
بالكامل - [C-1-3] يجب أن يتضمن لوحة مفاتيح برنامج محمّلة مسبقًا.
عمليات تنفيذ الأجهزة: [C-0-1] يجب ألا تتضمّن لوحة مفاتيح خارجية لا تتطابق مع أحد التنسيقات المحدّدة في android.content.res.Configuration.Dashboard (QWERTY أو مكوّنة من 12 مفتاحًا). يجب أن يشمل ذلك عمليات تنفيذ إضافية للوحة المفاتيح الافتراضية. * قد يتضمن لوحة مفاتيح خارجية.
7.2.2. التنقُّل بدون لمس
يتيح Android استخدام لوحة التحكّم وكرة التعقب والعجلة كآليات للتنقّل بدون لمس.
عمليات تنفيذ الأجهزة:
- [C-0-1] يجب أن يبلغ عن القيمة الصحيحة في android.content.res.Configuration.navigation.
في حال عدم توفُّر عمليات تنقّل لا تعمل باللمس في عمليات تنفيذ الأجهزة، سيؤدّي ذلك إلى ما يلي:
- [C-1-1] يجب أن يتم توفير آلية معقولة لواجهة مستخدم بديلة لاختيار النص وتعديله، وتكون متوافقة مع "محركات إدارة الإدخال". تتضمّن عملية التنفيذ المفتوحة المصدر لنظام Android آلية اختيار مناسبة للاستخدام مع الأجهزة التي لا تتضمّن إدخالات للتنقل لا تعمل باللمس.
7.2.3. مفاتيح التنقل
تُعد الوظائف الصفحة الرئيسية والعناصر الأخيرة ورجوع التي يتم توفيرها عادةً من خلال التفاعل مع زر فعلي مخصّص أو جزء مميّز من شاشة اللمس ضرورية لنموذج التنقّل في Android، وبالتالي عمليات تنفيذ الجهاز:
- [C-0-1] يجب أن تتوفر للمستخدم إمكانية تشغيل التطبيقات المثبّتة التي تم ضبط نشاط فيها على
<intent-filter>
معACTION=MAIN
وCATEGORY=LAUNCHER
أوCATEGORY=LEANBACK_LAUNCHER
لعمليات تنفيذ أجهزة التلفزيون. يجب أن تكون الدالة Home الآلية لهذه الوظيفة التي يمكن لهذا المستخدم الوصول إليها. - يجب توفير أزرار لوظيفة "الأخيرة" و"الرجوع".
إذا تم توفير وظيفتَي "الصفحة الرئيسية" و"الأخيرة" و"رجوع"، سيتم ما يلي:
- [C-1-1] يجب أن تتوفّر من خلال إجراء واحد (مثل النقر أو النقر مرّتين أو إيماءة) عندما يكون أي منها متاحًا.
- يجب أن يقدّم [C-1-2] إشارةً واضحةً إلى الإجراء الفردي الذي سيؤدي إلى تشغيل كل دالة. ومن الأمثلة على هذا المؤشر وجود رمز مرئي مطبوع على الزر، أو إظهار أيقونة برنامج في جزء شريط التنقل من الشاشة، أو توجيه المستخدم خلال تدفق توضيحي إرشادي خطوة بخطوة أثناء تجربة الإعداد خارج الصندوق.
عمليات تنفيذ الأجهزة:
- يُنصَح بشدة بعدم توفير آلية الإدخال لوظيفة القائمة في [SR]، وذلك لأنّه تم إيقافها لصالح شريط الإجراءات بدءًا من نظام التشغيل Android 4.0.
إذا كانت عمليات تنفيذ الجهاز توفر وظيفة القائمة، فإنها:
- [C-2-1] يجب عرض زر القائمة الكاملة للإجراء عندما لا تكون النافذة المنبثقة للقائمة الكاملة للإجراءات فارغة ويكون شريط الإجراءات مرئيًا.
- [C-2-2] يجب ألا يعدّل موضع النافذة المنبثقة لتجاوز الإجراء المعروضة من خلال تحديد زر القائمة الكاملة في شريط الإجراءات، ولكن يمكن عرض النافذة المنبثقة لتجاوز الإجراء في موضع معدل على الشاشة عند عرضها من خلال تحديد وظيفة القائمة.
إذا لم توفِّر عمليات تنفيذ الجهاز وظيفة "القائمة"، للتوافق مع الأنظمة القديمة، فإنّها:
- [C-3-1] يجب إتاحة وظيفة "القائمة" للتطبيقات عندما تكون قيمة
targetSdkVersion
أقل من 10، إما باستخدام زر فعلي أو مفتاح برنامج أو إيماءات. يجب الوصول إلى وظيفة القائمة هذه ما لم تكن مخفية مع وظائف التنقل الأخرى.
إذا كانت عمليات تنفيذ الأجهزة توفّر وظيفة المساعدة، سيحدث ما يلي:
- [C-4-1] يجب إتاحة وظيفة المساعدة من خلال إجراء واحد (مثل النقر أو النقر مرّتين أو الإيماءة) عندما تكون مفاتيح التنقل الأخرى متاحة.
- [SR] يُنصَح بشدة باستخدام الضغط مع الاستمرار على وظيفة الصفحة الرئيسية كتفاعل معيَّن.
إذا كانت عمليات تنفيذ الأجهزة تستخدم جزءًا مميّزًا من الشاشة لعرض مفاتيح التنقّل، سيتم إجراء ما يلي:
- [C-5-1] يجب أن تستخدم مفاتيح التنقل جزءًا مميّزًا من الشاشة، وغير متاح للتطبيقات، ويجب ألا تحجب أو تتداخل مع جزء الشاشة المتاح للتطبيقات.
- [C-5-2] يجب توفير جزء من الشاشة للتطبيقات التي تستوفي المتطلبات المحددة في الفقرة 7.1.1.
- يجب أن يحترم [C-5-3] العلامات التي يحدّدها التطبيق من خلال طريقة واجهة برمجة تطبيقات
View.setSystemUiVisibility()
، ليتم إخفاء هذا الجزء المميّز من الشاشة (أي شريط التنقل) بشكل صحيح كما هو موثَّق في حزمة تطوير البرامج (SDK).
7.2.4. إدخال الشاشة التي تعمل باللمس
يتيح Android استخدام مجموعة متنوّعة من أنظمة إدخال المؤشرات، مثل الشاشات التي تعمل باللمس ولوحات اللمس وأجهزة الإدخال التي تعمل باللمس المزيّفة. ترتبط عمليات تنفيذ الأجهزة المستنِدة إلى شاشة تعمل باللمس بجهاز العرض لمنح المستخدم انطباعًا بأنّه يعالج العناصر مباشرةً على الشاشة. نظرًا لأن المستخدم يلمس الشاشة مباشرة، لا يتطلب النظام أي عناصر وظيفية إضافية للإشارة إلى الكائنات التي يتم التلاعب بها.
عمليات تنفيذ الأجهزة:
- ينبغي أن تحتوي على نظام إدخال مؤشر من نوع ما (سواء كان يشبه الماوس أو اللمس).
- يجب أن تدعم المؤشرات التي يتم تتبُّعها بشكل مستقل بالكامل.
إذا كانت عمليات تنفيذ الأجهزة تتضمن شاشة تعمل باللمس (بلمسة واحدة أو أفضل)، فإن ذلك:
- [C-1-1] يجب أن يُبلغ عن
TOUCHSCREEN_FINGER
لحقل واجهة برمجة التطبيقاتConfiguration.touchscreen
. - [C-1-2] يجب الإبلاغ عن علامتَي الميزة
android.hardware.touchscreen
وandroid.hardware.faketouch
.
إذا كانت عمليات تنفيذ الأجهزة تتضمن شاشة تعمل باللمس يمكنها تتبع أكثر من لمسة واحدة، سيحدث ما يلي:
- [C-2-1] يجب الإبلاغ عن علامات الميزات المناسبة
android.hardware.touchscreen.multitouch
أوandroid.hardware.touchscreen.multitouch.distinct
أوandroid.hardware.touchscreen.multitouch.jazzhand
المتوافقة مع نوع الشاشة التي تعمل باللمس تحديدًا على الجهاز.
إذا كانت عمليات تنفيذ الأجهزة لا تتضمّن شاشة تعمل باللمس (وتعتمد على جهاز المؤشر فقط) وتستوفي متطلبات اللمس الزائف في القسم 7.2.5، فإنها:
- [C-3-1] يجب ألا يتم الإبلاغ عن أي علامة ميزة تبدأ بـ
android.hardware.touchscreen
ويجب أن تبلغ فقطandroid.hardware.faketouch
.
7.2.5. الإدخال باللمس الزائف
توفّر واجهة اللمس الزائفة نظام إدخال للمستخدم يتعامل مع مجموعة فرعية من إمكانات الشاشة التي تعمل باللمس تقريبًا. على سبيل المثال، الماوس أو وحدة التحكم عن بُعد التي تعمل على توجيه المؤشر على الشاشة تقترب من اللمس، ولكنها تتطلب من المستخدم الإشارة أولاً أو التركيز ثم النقر. تتيح العديد من أجهزة الإدخال، مثل الماوس ولوحة اللمس والماوس الهوائي المستند إلى الجيروسكوب ومؤشر الجيروسكوب وذراع التحكّم ولوحة اللمس المتعددة اللمسات إجراء تفاعلات اللمس الزائفة. يتضمّن Android ميزة android.hardware.fake touch الثابتة، التي تتوافق مع جهاز إدخال عالي الدقة لا يعمل باللمس، مثل الماوس أو لوحة اللمس التي يمكنها محاكاة الإدخال باللمس بشكل مناسب (بما في ذلك دعم الإيماءات الأساسية)، ويشير إلى أنّ الجهاز يوفّر مجموعة فرعية من وظائف الشاشة التي تعمل باللمس تمّت محاكاتها.
إذا كانت عمليات تنفيذ الأجهزة لا تشمل شاشة تعمل باللمس ولكنها تشتمل على نظام إدخال مؤشر آخر تريد إتاحته، سيتم:
- يجب أن تعلن عن توافقها مع علامة الميزة
android.hardware.faketouch
.
إذا أوضحت عمليات تنفيذ الأجهزة أنّها متوافقة مع "android.hardware.faketouch
"، سينفّذ ما يلي:
- [C-1-1] يجب الإبلاغ عن الموضع المطلق للشاشتَين X وY لموقع المؤشر وعرض مؤشر مرئي على الشاشة.
- [C-1-2] يجب الإبلاغ عن حدث اللمس الذي يتضمن رمز الإجراء الذي يحدد تغيير الحالة الذي يحدث على المؤشر لأسفل أو لأعلى على الشاشة.
- [C-1-3] يجب أن يتم دعم المؤشر للأسفل وأعلى على أي عنصر على الشاشة، ما يسمح للمستخدمين بمحاكاة النقر على أحد العناصر على الشاشة.
- [C-1-4] يجب أن يتم دعم المؤشر للأسفل والمؤشر للأعلى ثم المؤشر للأسفل ثم المؤشر للأعلى في المكان نفسه على عنصر يظهر على الشاشة خلال المهلة الزمنية، ما يتيح للمستخدمين محاكاة النقر مرّتين على أي عنصر على الشاشة
- [C-1-5] يجب أن يدعم المؤشر لأسفل على نقطة عشوائية على الشاشة، وأن يتحرك المؤشر إلى أي نقطة عشوائية أخرى على الشاشة، متبوعًا بمؤشر لأعلى، مما يسمح للمستخدمين بمحاكاة السحب باللمس.
- [C-1-6] يجب أن يدعم المؤشر للأسفل ثم يسمح للمستخدمين بتحريك العنصر بسرعة إلى موضع مختلف على الشاشة ثم المؤشر للأعلى على الشاشة، ما يتيح للمستخدمين تمرير عنصر على الشاشة بسرعة.
- [C-1-7] يجب أن يُبلغ عن
TOUCHSCREEN_NOTOUCH
لحقل واجهة برمجة التطبيقاتConfiguration.touchscreen
.
إذا أوضحت عمليات تنفيذ الأجهزة أنّها متوافقة مع "android.hardware.faketouch.multitouch.distinct
"، سينفّذ ما يلي:
- [C-2-1] يجب أن يعلن عن دعمه لـ
android.hardware.faketouch
. - [C-2-2] يجب أن يتيح التتبع المميز لاثنين أو أكثر من إدخالات المؤشر المستقلة.
إذا أوضحت عمليات تنفيذ الأجهزة أنّها متوافقة مع "android.hardware.faketouch.multitouch.jazzhand
"، سينفّذ ما يلي:
- [C-3-1] يجب أن يعلن عن دعمه لـ
android.hardware.faketouch
. - [C-3-2] يجب أن يتيح تتبُّعًا مختلفًا لـ 5 أرقام (لتتبُّع يد أصابع) أو إدخالات أكثر للمؤشر بشكل مستقل تمامًا.
7.2.6. دعم أذرعة التحكّم في الألعاب
7.2.6.1. تعيينات الأزرار
إذا كانت عمليات تنفيذ الأجهزة تشير إلى علامة ميزة android.hardware.gamepad
، سيتم ما يلي:
- يجب أن يتضمّن [C-1-1] وحدة تحكّم أو شحنة مع وحدة تحكّم منفصلة في العلبة، ما يتيح إدخال جميع الأحداث المدرَجة في الجداول أدناه.
- يجب أن يتمكّن [C-1-2] من ربط أحداث HID بثوابت
view.InputEvent
المرتبطة به في نظام التشغيل Android كما هو موضّح في الجداول أدناه. تشمل عملية التنفيذ الأولية لنظام التشغيل Android تنفيذ وحدات تحكُّم الألعاب التي تستوفي هذا الشرط.
زرّ | استخدام أجهزة HID2 | زر Android |
---|---|---|
أ1 | 0x09 0x0001 | KEYCODE_button_A (96) |
ب1 | 0x09 0x0002 | KEYCODE_button_B (97) |
X1 | 0x09 0x0004 | KEYCODE_button_X (99) |
ش1 | 0x09 0x0005 | KEYCODE_button_Y (100) |
لوحة التحكّم1 لوحة التحكّم1 |
0x01 0x00393 | AXIS_HAT_Y4 |
لوحة التحكّم لليسار1 لوحة التحكّم اليمنى1 |
0x01 0x00393 | AXIS_HAT_X4 |
زر الكتف الأيسر1 | 0x09 0x0007 | KEYCODE_button_L1 (102) |
زر الكتف الأيمن1 | 0x09 0x0008 | KEYCODE_button_R1 (103) |
النقر على الذراع اليسرى1 | 0x09 0x000E | KEYCODE_button_THUMBL (106) |
النقر بزر الماوس الأيمن1 | 0x09 0x000F | KEYCODE_button_THUMBR (107) |
الصفحة الرئيسية1 | 0x0c 0x0223 | KEYCODE_Home (3) |
رجوع1 | 0x0c 0x0224 | KEYCODE_BACK (4) |
1 KeyEvent
2 يجب الإفصاح عن حالات استخدام الواجهة البشرية (HID) أعلاه داخل لوحة ألعاب الفيديو (CA) 0x01 0x0005.
3 يجب أن يشتمل هذا الاستخدام على حد أدنى منطقي يبلغ 0، والحد الأقصى المنطقي 7، والحد الأدنى الفعلي بقيمة 0، والحد الأقصى المادي 315، ووحدات بالدرجات، وحجم التقرير 4. يتم تعريف القيمة المنطقية على أنها الدوران في اتجاه عقارب الساعة عن المحور الرأسي؛ على سبيل المثال، القيمة المنطقية 0 لا تمثل أي دوران ويتم الضغط على الزر لأعلى، بينما تمثل القيمة المنطقية 1 دورانًا بمقدار 45 درجة ويتم الضغط على المفتاحين لأعلى واليسار.
عناصر التحكّم التناظرية1 | استخدام أجهزة HID | زر Android |
---|---|---|
عامل التفعيل الأيسر | 0x02 0x00C5 | AXIS_LTRIGGER |
عامل التفعيل الأيمن | 0x02 0x00C4 | خوارزمية "AXIS_RTRIGGER" |
ذراع التحكّم الأيسر |
0x01 0x0030 0x01 0x0031 |
AXIS_X AXIS_Y |
ذراع التحكّم الأيمن |
0x01 0x0032 0x01 0x0035 |
AXIS_Z AXIS_RZ |
7.2.7. جهاز التحكّم عن بُعد
لمعرفة المتطلبات الخاصة بالأجهزة، يمكنك الاطّلاع على القسم 2.3.1.
7.3. أدوات الاستشعار
إذا كانت عمليات تنفيذ الأجهزة تتضمّن نوعًا معيّنًا من أدوات الاستشعار التي تتضمّن واجهة برمجة تطبيقات مقابلة للمطوّرين التابعين لجهات خارجية، يجب أن يتم في تنفيذ الجهاز استخدام واجهة برمجة التطبيقات هذه على النحو الموضَّح في مستندات حزمة تطوير البرامج (SDK) لنظام التشغيل Android ومستندات البرامج المفتوحة المصدر لنظام Android على أجهزة الاستشعار.
عمليات تنفيذ الأجهزة:
- [C-0-1] يجب أن يبلغ بدقة عن وجود أجهزة استشعار أو غيابها وفقًا لفئة
android.content.pm.PackageManager
. - يجب أن يعرض [C-0-2] قائمة دقيقة بأجهزة الاستشعار المتوافقة من خلال
SensorManager.getSensorList()
والطرق المشابهة. - يجب أن يعمل [C-0-3] بشكل معقول مع جميع واجهات برمجة تطبيقات أدوات الاستشعار الأخرى (على سبيل المثال، من خلال عرض
true
أوfalse
على النحو المناسب عندما تحاول التطبيقات تسجيل المستمعين، وليس استدعاء أدوات استماع أداة الاستشعار في حال عدم توفّر أدوات الاستشعار المقابلة لها، وما إلى ذلك).
إذا كانت عمليات تنفيذ الأجهزة تتضمّن نوع أداة استشعار محدّدًا يتضمّن واجهة برمجة تطبيقات خاصة بالمطوّرين التابعين لجهات خارجية، ينطبق عليهم ما يلي:
- [C-1-1] يجب الإبلاغ عن جميع قياسات أداة الاستشعار باستخدام قيم النظام الدولي للوحدات (المقاييس) ذات الصلة لكل نوع من أنواع أدوات الاستشعار على النحو المحدَّد في مستندات حزمة تطوير البرامج (SDK) لنظام التشغيل Android.
- [C-1-2] يجب أن يبلغ عن بيانات جهاز الاستشعار بحد أقصى لوقت الاستجابة 100 مللي ثانية
- 2 * sample_time لحالة جهاز استشعار يتم بثه بأقل وقت استجابة مطلوب 5 ملي ثانية + 2 * sample_time عندما يكون معالج التطبيقات قيد التشغيل. ولا يشمل هذا التأخير أي تأخير في الفلترة.
- [C-1-3] يجب الإبلاغ عن عينة المستشعر الأولى خلال 400 مللي ثانية + 2 * sample_time لجهاز الاستشعار الذي يتم تشغيله. ومن المقبول أن تكون دقة هذه العيّنة 0.
-
[SR] يجب الإبلاغ عن وقت الحدث بالثواني كما هو محدّد في مستندات حزمة تطوير البرامج (SDK) لنظام التشغيل Android، لتمثيل الوقت الذي وقع فيه الحدث ومزامنته مع ساعة SystemClock.elapsedRealtimeNano() . ننصح بشدة بأن تستوفي أجهزة Android الحالية والجديدة هذه المتطلبات حتى تتمكّن تلك الأجهزة من الترقية إلى إصدارات النظام الأساسي المستقبلية التي قد يصبح فيها هذا المكوّن مطلوبًا. ينبغي أن يكون خطأ المزامنة أقل من 100 مللي ثانية.
-
[C-1-7] بالنسبة إلى أي واجهة برمجة تطبيقات تشير مستندات حزمة تطوير البرامج (SDK) لنظام التشغيل Android إلى أنّها أداة استشعار مستمرّة، يجب أن توفّر عمليات تنفيذ الأجهزة باستمرار عيّنات بيانات دورية يُفترَض أن يكون عدم استقرارها أقل من 3%، حيث يُعرَّف عدم الاستقرار على أنّه الانحراف المعياري للفرق في قيم الطوابع الزمنية التي تم الإبلاغ عنها بين الأحداث المتتالية.
-
[C-1-8] يجب ألا يمنع بث حدث أداة الاستشعار وحدة المعالجة المركزية (CPU) للجهاز من إدخال حالة التعليق أو الاستيقاظ من حالة التعليق.
- عند تفعيل عدة أجهزة استشعار، يجب ألا يتجاوز استهلاك الطاقة مجموع استهلاك الطاقة المبلغ عنه لكل جهاز استشعار.
إنّ القائمة أعلاه ليست شاملة، لأنّ السلوك الموثَّق لحزمة تطوير البرامج (SDK) لنظام التشغيل Android ومستندات Android المفتوحة المصدر على أجهزة الاستشعار سيُعتبَر موثوقًا به.
تكون بعض أنواع أجهزة الاستشعار مركَّبة، ما يعني أنّه يمكن اشتقاقها من البيانات التي يوفّرها جهاز استشعار آخر أو أكثر. (تشمل الأمثلة أداة استشعار الاتجاه وجهاز استشعار التسارع الخطّي).
عمليات تنفيذ الأجهزة:
- يجب استخدام أنواع أجهزة الاستشعار هذه، عندما تتضمّن أدوات الاستشعار المادية المطلوبة كما هو موضّح في أنواع أجهزة الاستشعار.
إذا كانت عمليات تنفيذ الجهاز تتضمّن أداة استشعار مركّبة، سيتم تطبيق ما يلي:
- [C-2-1] يجب تنفيذ أداة الاستشعار كما هو موضّح في مستندات Android المفتوحة المصدر حول أجهزة الاستشعار المركّبة.
7.3.1. مقياس التسارع
- ينبغي أن تتضمن عمليات تنفيذ الأجهزة مقياس تسارع ثلاثي المحاور.
إذا كانت عمليات تنفيذ الأجهزة تتضمّن مقياس تسارع ثلاثي المحاور، سيتم إجراء ما يلي:
- يجب أن يتمكّن [C-1-1] من الإبلاغ عن الأحداث التي تصل ترددها إلى 50 هرتز على الأقل.
- [C-1-2] يجب استخدام أداة استشعار
TYPE_ACCELEROMETER
والإبلاغ عنها. - يجب أن يتوافق [C-1-3] مع نظام الإحداثيات لمستشعر Android كما هو موضّح في واجهات برمجة تطبيقات Android.
- يجب أن يكون [C-1-4] قادرًا على القياس من السقوط الحر الذي يصل إلى أربعة أضعاف الجاذبية(4 غرام) أو أكثر على أي محور.
- [C-1-5] يجب أن تصل درجة الدقة إلى 12 بت على الأقل.
- يجب أن لا يزيد الانحراف المعياري [C-1-6] عن 0.05 م/ث^، حيث يجب حساب الانحراف المعياري على أساس كل محور في العينات التي تم جمعها خلال فترة لا تقل عن 3 ثوانٍ وبأسرع معدل لجمع العينات.
- [SR] يُنصَح بشدة بتشغيل أداة الاستشعار المركّبة
TYPE_SIGNIFICANT_MOTION
. - يُنصَح بشدة بأن يستخدم [SR] جهاز استشعار "
TYPE_ACCELEROMETER_UNCALIBRATED
" في حال توفّر معايرة مقياس التسارع على الإنترنت. - يجب تنفيذ أدوات الاستشعار المركّبة
TYPE_SIGNIFICANT_MOTION
وTYPE_TILT_DETECTOR
وTYPE_STEP_DETECTOR
وTYPE_STEP_COUNTER
كما هو موضَّح في مستند حزمة تطوير البرامج (SDK) لنظام التشغيل Android. - "يجب" الإبلاغ عن الأحداث التي تصل ترددها إلى 200 هرتز على الأقل.
- يجب أن تبلغ درجة دقة الصورة 16 بت على الأقل.
- وينبغي معايرته أثناء الاستخدام إذا تغيرت الخصائص على مدار دورة الحياة وتم تعويضها، مع الحفاظ على معلمات التعويض بين عمليات إعادة تشغيل الجهاز.
- يجب تعويض درجة الحرارة.
- يجب أيضًا تنفيذ أداة استشعار
TYPE_ACCELEROMETER_UNCALIBRATED
.
في حال اشتمال عمليات تنفيذ الأجهزة على مقياس تسارع ثلاثي المحاور وتم تنفيذ أي من أجهزة الاستشعار المركّبة TYPE_SIGNIFICANT_MOTION
أو TYPE_TILT_DETECTOR
أو TYPE_STEP_DETECTOR
أو TYPE_STEP_COUNTER
:
- [C-2-1] يجب أن يكون مجموع استهلاك الطاقة دائمًا أقل من 4 ميغاواط.
- يجب أن تكون قيمة كل منهما أقل من 2 ميغاواط و0.5 ميغاواط عندما يكون الجهاز في حالة ديناميكية أو ثابتة.
إذا كانت عمليات تنفيذ الأجهزة تتضمّن مقياس تسارع ثلاثي المحاور وجهاز استشعار جيروسكوب، ينطبق ما يلي:
- [C-3-1] يجب تنفيذ أدوات الاستشعار المركّبة
TYPE_GRAVITY
وTYPE_LINEAR_ACCELERATION
. - يجب تشغيل جهاز الاستشعار المركّب
TYPE_GAME_ROTATION_VECTOR
. - [SR] يُنصَح بشدة باستخدام أداة استشعار "
TYPE_GAME_ROTATION_VECTOR
" على أجهزة Android الحالية والجديدة.
إذا كانت عمليات تنفيذ الأجهزة تشمل مقياس تسارع ثلاثي المحاور وجهاز استشعار للجيروسكوب وجهاز استشعار لمقياس المغناطيسية، فإنّها:
- [C-4-1] يجب استخدام أداة استشعار مركّبة
TYPE_ROTATION_VECTOR
.
7.3.2 مقياس المغناطيسية
- ينبغي أن تتضمن عمليات تنفيذ الأجهزة مقياس مغناطيسي ثلاثي المحاور (بوصلة).
إذا كانت عمليات تنفيذ الأجهزة تتضمّن مقياس مغناطيسي ثلاثي المحاور، سيتم إجراء ما يلي:
- [C-1-1] يجب تشغيل أداة استشعار
TYPE_MAGNETIC_FIELD
. - يجب أن يتمكّن [C-1-2] من الإبلاغ عن الأحداث التي تصل ترددها إلى 10 هرتز على الأقل، ويجب أيضًا الإبلاغ عن الأحداث التي تصل ترددها إلى 50 هرتز على الأقل.
- يجب أن يتوافق [C-1-3] مع نظام الإحداثيات لمستشعر Android كما هو موضّح في واجهات برمجة تطبيقات Android.
- يجب أن يكون جهاز [C-1-4] قادرًا على القياس بين -900 ميكرومتر و+900 ميكرو طن على كل محور قبل تشبُّع اللون.
- يجب أن يكون لمقياس المغناطيسية [C-1-5] قيمة إزاحة من الحديد الصلب أقل من 700 ميكرو طن، كما يجب أن تكون قيمتها أقل من 200 ميكرومتر، عن طريق وضع مقياس المغناطيسية بعيدًا عن المجالات المغناطيسية الديناميكية (التي يتسبب فيها الحالي) والمجال المغناطيسي الثابت (الناتج عن المغناطيس).
- يجب أن تكون دقة الشاشة [C-1-6] مساوية أو أكثر كثافة من 0.6 ميكرومتر.
- يجب أن يتيح [C-1-7] المعايرة والتعويض على الإنترنت في حال انحياز الحديد الصلب، والحفاظ على معايير التعويض بين عمليات إعادة تشغيل الأجهزة.
- يجب تطبيق التعويض باستخدام الحديد الناعم على [C-1-8]، ويمكن إجراء المعايرة أثناء استخدام الجهاز أو أثناء إنتاجه.
- يجب أن يكون للانحراف المعياري [C-1-9] انحراف معياري يتم احتسابه على أساس كل محور في العيّنات التي تم جمعها على مدى 3 ثوانٍ على الأقل في أسرع معدّل لجمع العيّنات، شرط ألا يزيد عن 1.5 ميكرو طن.
- يجب تنفيذ جهاز استشعار
TYPE_MAGNETIC_FIELD_UNCALIBRATED
. - [SR] يُنصَح بشدة باستخدام أداة استشعار "
TYPE_MAGNETIC_FIELD_UNCALIBRATED
" على أجهزة Android الحالية والجديدة.
إذا كانت عمليات تنفيذ الأجهزة تشمل مقياس المغناطيسية ثلاثي المحاور، ومستشعر مقياس التسارع، ومستشعر الجيروسكوب، فينبغي أن تكون:
- [C-2-1] يجب استخدام أداة استشعار مركّبة
TYPE_ROTATION_VECTOR
.
إذا كانت عمليات تنفيذ الأجهزة تتضمّن مقياس المغناطيسية ثلاثي المحاور، وهو مقياس التسارع، سينطبق التالي:
- قد يتم استخدام أداة استشعار "
TYPE_GEOMAGNETIC_ROTATION_VECTOR
".
إذا كانت عمليات تنفيذ الأجهزة تتضمّن مقياس المغناطيسية ثلاثي المحاور ومقياس التسارع وجهاز استشعار TYPE_GEOMAGNETIC_ROTATION_VECTOR
، سيتم اتخاذ الإجراءات التالية:
- [C-3-1] يجب أن تستهلك أقل من 10 ميغاواط.
- من المفترض أن تستهلك الطاقة أقل من 3 ميغاواط عند تسجيل أداة الاستشعار في وضع الدفعة عند 10 هرتز.
7.3.3. نظام تحديد المواقع العالمي (GPS)
عمليات تنفيذ الأجهزة:
- "يجب أن" تشتمل على جهاز استقبال GPS/GNSS.
إذا كانت عمليات تنفيذ الأجهزة تتضمّن مستقبِل نظام تحديد المواقع العالمي (GPS)/نظام GNSS (نظام تحديد المواقع العالمي (GPS)) وتُبلغ التطبيقات عن الإمكانية من خلال علامة ميزة android.hardware.location.gps
، سيتم إجراء ما يلي:
- [C-1-1] يجب أن يوفّر نتائج الموقع الجغرافي بمعدّل لا يقل عن 1 هرتز عند طلبه عبر "
LocationManager#requestLocationUpdate
". - [C-1-2] يجب أن يتمكن من تحديد الموقع في ظروف السماء المفتوحة (الإشارات القوية، والمسارات المتعددة المهمة، وتقنية HDOP أقل من 2) في غضون 10 ثوانٍ (أسرع وقت لإصلاح المشكلة لأول مرة)، عند الاتصال باتصال إنترنت بسرعة بيانات 0.5 ميغابت في الثانية أو أكثر. يتم تلبية هذا الشرط عادةً من خلال استخدام أحد أشكال تقنية نظام تحديد المواقع العالمي (GPS)/نظام GNSS المدعومة أو المتوقعة لخفض وقت قفل نظام تحديد المواقع العالمي (GPS)/نظام GNSS (تشمل بيانات المساعدة الوقت المرجعي، والموقع المرجعي، وساعة القمر الصناعي المؤقت).
- [SR] بعد إجراء عملية حساب الموقع الجغرافي هذه، يُنصَح بشدة بأن يتمكّن الجهاز من تحديد موقعه الجغرافي في مكان مفتوح خلال 10 ثوانٍ من إعادة تشغيل طلبات الموقع الجغرافي، وذلك بعد ساعة من الحساب الأولي للموقع الجغرافي، حتى عندما يتم إجراء الطلب اللاحق بدون اتصال بيانات و/أو بعد دورة الطاقة.
-
في السماء المفتوحة بعد تحديد الموقع الجغرافي، أثناء كونك ثابتًا أو متحركًا بسرعة تقل عن متر واحد في الثانية من التسارع:
- يجب أن يتمكن جهاز [C-1-3] من تحديد الموقع الجغرافي في نطاق 20 مترًا، وأن تزيد سرعته عن 0.5 متر في الثانية، أي ما لا يقل عن 95% من الوقت.
- [C-1-4] يجب أن يتتبع في وقت واحد وإعداد تقارير عبر
GnssStatus.Callback
8 أقمار صناعية على الأقل من مجموعة صور بانورامية واحدة. - يجب أن تكون قادرًا على تتبع ما لا يقل عن 24 قمرًا صناعيًا في وقت واحد، من مجموعات نجمية متعددة (على سبيل المثال، نظام تحديد المواقع العالمي (GPS) + واحد على الأقل من أقمار Glonass وBeidou وGalileo).
- [C-1-5] يجب الإبلاغ عن عملية إنشاء تقنية GNSS من خلال واجهة برمجة التطبيقات التجريبية "getGnssYearOfDevice".
- [SR] مواصلة عرض مخرجات الموقع الجغرافي العادية لنظام تحديد المواقع العالمي (GPS)/ GNSS أثناء مكالمة هاتفية للطوارئ.
- [SR] الإبلاغ عن قياسات GNSS من جميع المجموعات النجمية التي يتم تتبّعها (كما هو موضّح في رسائل GnssStatus)، باستثناء SBAS
- [SR] الإبلاغ عن AGC وتكرار قياس GNSS
- [SR] يمكنك الإبلاغ عن جميع تقديرات الدقة (بما في ذلك الاتجاه والسرعة والوضع العمودي) كجزء من كل موقع لنظام تحديد المواقع العالمي (GPS).
- يُوصى بشدة بأن يستوفي [SR] أكبر عدد ممكن من المتطلبات الإلزامية الإضافية للأجهزة التي تُبلغ العام "2016" أو "2017" من خلال Test API
LocationManager.getGnssYearOfHardware()
.
إذا كانت عمليات تنفيذ الأجهزة تتضمّن جهاز استقبال إشارات نظام تحديد المواقع العالمي (GPS)/نظام GNSS (GNSS) وتُبلغ التطبيقات عن الإمكانية من خلال علامة ميزة android.hardware.location.gps
وتُبلغ واجهة برمجة التطبيقات الاختبارية LocationManager.getGnssYearOfHardware()
للعام "2016" أو الإصدارات الأحدث، سيتم إجراء ما يلي:
- [C-2-1] يجب الإبلاغ عن قياسات GPS فور العثور عليها، حتى إذا لم يتم الإبلاغ عن موقع تم حسابه من GPS/GNSS بعد.
- [C-2-2] يجب الإبلاغ عن النطاقات الزائفة ومعدلات النطاق الزائف في نظام تحديد المواقع العالمي (GPS) إذا كانت السرعة مستقرة أو تتحرك بسرعة أقل من 0.2 متر في الثانية المربعة بعد تحديد الموقع الجغرافي، وذلك في ظروف السماء المفتوحة بعد تحديد الموقع، والتي لا تقل سرعتها عن 0.2 متر في الثانية، وسرعتها في حدود 0.2 متر في الثانية، لا تقل عن 95% من الوقت.
إذا كانت عمليات تنفيذ الأجهزة تتضمّن جهاز استقبال إشارات نظام تحديد المواقع العالمي (GPS)/نظام GNSS (GNSS) وتُبلغ التطبيقات عن الإمكانية من خلال علامة ميزة android.hardware.location.gps
وتُبلغ واجهة برمجة التطبيقات Test API من LocationManager.getGnssYearOfHardware()
العام "2017" أو الإصدارات الأحدث، سيتم إجراء ما يلي:
- [C-3-1] يجب مواصلة تقديم مخرجات الموقع الجغرافي العادية لنظام تحديد المواقع العالمي (GPS)/ GNSS (نظام تحديد المواقع العالمي (GNSS) أثناء مكالمة هاتفية طوارئ.
- [C-3-2] يجب الإبلاغ عن قياسات GNSS من جميع المجموعات النجمية التي يتم تتبعها (كما تم الإبلاغ عنها في رسائل GnssStatus)، باستثناء SBAS.
- [C-3-3] يجب الإبلاغ عن AGC وتكرار قياس GNSS.
- [C-3-4] يجب أن يبلغ عن جميع تقديرات الدقة (بما في ذلك الاتجاه والسرعة والوضع العمودي) كجزء من كل موقع من مواقع نظام تحديد المواقع العالمي (GPS).
7.3.4 الجيروسكوب
عمليات تنفيذ الأجهزة:
- يجب أن يشتمل على جيروسكوب (أداة استشعار تغيُّر الزاوية).
- يجب ألا تتضمّن أداة استشعار الجيروسكوب ما لم يتم أيضًا تضمين مقياس تسارع ثلاثي المحاور.
إذا كانت عمليات تنفيذ الجهاز تتضمن جيروسكوب، سيتم ما يلي:
- يجب أن يتمكّن [C-1-1] من الإبلاغ عن الأحداث التي تصل ترددها إلى 50 هرتز على الأقل.
- [C-1-2] يجب تشغيل أداة استشعار
TYPE_GYROSCOPE
واستخدام أداة استشعارTYPE_GYROSCOPE_UNCALIBRATED
أيضًا. - [C-1-3] يجب أن يكون قادرًا على قياس تغييرات الاتجاه لتصل إلى 1000 درجة في الثانية.
- [C-1-4] يجب أن تصل درجة الدقة إلى 12 بت أو أكثر، ويجب أن تكون ذات دقة 16 بت أو أكثر.
- [C-1-5] يجب تعويض درجة الحرارة فيه.
- يجب معايرة [C-1-6] وتعويضه أثناء الاستخدام، ويجب الحفاظ على معلَمات التعويض بين عمليات إعادة تشغيل الجهاز.
- يجب أن يحتوي [C-1-7] على تباين لا يزيد عن 1e-7 rad^2 / s^2 لكل هرتز (التباين لكل هرتز، أو rad^2 / s). يُسمح بأن يختلف التباين باختلاف معدل أخذ العينات، ولكن يجب أن يكون مقيدًا بهذه القيمة. بمعنى آخر، إذا كنت تقيس تباين الجيروسكوب بمعدل أخذ العينات 1 هرتز، فيجب ألا يزيد عن 1e-7 Rad^2/s^2.
- [SR] يُنصَح بشدة باستخدام أداة استشعار "
SENSOR_TYPE_GYROSCOPE_UNCALIBRATED
" على أجهزة Android الحالية والجديدة. - [SR] يُنصح بشدة بأن تكون درجة خطأ المعايرة أقل من 0.01 راد/ثانية عندما يكون الجهاز ثابتًا في درجة حرارة الغرفة.
- "يجب" الإبلاغ عن الأحداث التي تصل ترددها إلى 200 هرتز على الأقل.
إذا كانت عمليات تنفيذ الأجهزة تشمل جهاز جيروسكوب وجهاز استشعار لمقياس التسارع وجهاز استشعار المغناطيسية، تكون:
- [C-2-1] يجب استخدام أداة استشعار مركّبة
TYPE_ROTATION_VECTOR
.
إذا كانت عمليات تنفيذ الأجهزة تشمل جهاز استشعار جيروسكوب وجهاز استشعار لمقياس التسارع، سيتم تطبيق ما يلي:
- [C-3-1] يجب تنفيذ أدوات الاستشعار المركّبة
TYPE_GRAVITY
وTYPE_LINEAR_ACCELERATION
. - [SR] يُنصَح بشدة باستخدام أداة استشعار "
TYPE_GAME_ROTATION_VECTOR
" على أجهزة Android الحالية والجديدة. - يجب تشغيل جهاز الاستشعار المركّب
TYPE_GAME_ROTATION_VECTOR
.
7.3.5. مقياس الضغط الجوي
- ويجب أن تتضمّن عمليات تنفيذ الأجهزة مقياس الضغط الجوي (جهاز استشعار ضغط الهواء المحيط).
إذا كانت عمليات تنفيذ الأجهزة تتضمّن مقياسًا للمؤشر، سيتم تفسير ما يلي:
- [C-1-1] يجب استخدام أداة استشعار
TYPE_PRESSURE
والإبلاغ عنها. - [C-1-2] يجب أن يكون قادرًا على إرسال الأحداث بسرعة 5 هرتز أو أكثر.
- [C-1-3] يجب تعويض درجة الحرارة فيه.
- [SR] يُنصَح بشدة بأن تكون قادرًا على الإبلاغ عن قياسات الضغط في النطاق الذي يتراوح بين 300hPa إلى 1100hPa.
- "ينبغي" الحصول على دقة مطلقة تبلغ 1hPa.
- يجب أن تكون الدقة النسبية 0.12hPa أعلى من نطاق 20hPa (أي ما يعادل حوالي 1 متر وتغير حوالي 200 متر على مستوى سطح البحر).
7.3.6. مقياس درجة الحرارة
عمليات تنفيذ الأجهزة: قد يتم تضمين ميزان حرارة في البيئة المحيطة (جهاز استشعار الحرارة). قد يشمل ذلك جهاز استشعار لدرجة حرارة وحدة المعالجة المركزية (CPU).
إذا كانت عمليات تنفيذ الأجهزة تتضمّن مقياسًا لدرجة الحرارة في البيئة المحيطة (جهاز استشعار الحرارة)، سيتم اتخاذ الإجراءات التالية:
- يجب تعريف [C-1-1] على أنّه
SENSOR_TYPE_AMBIENT_TEMPERATURE
ويجب قياس درجة الحرارة في البيئة المحيطة (كابينة الغرفة/المركبة) من المكان الذي يتفاعل فيه المستخدم مع الجهاز بالدرجات المئوية. - [C-1-2] يجب تعريفه على أنه
SENSOR_TYPE_TEMPERATURE
. - [C-1-3] يجب أن يقيس درجة حرارة وحدة المعالجة المركزية للجهاز.
- [C-1-4] يجب ألا يتم قياس أي درجة حرارة أخرى.
يُرجى العلم أنّ نوع جهاز الاستشعار SENSOR_TYPE_TEMPERATURE
تم إيقافه نهائيًا في الإصدار 4.0 من نظام التشغيل Android.
7.3.7. مقياس ضوء
- وقد تشمل إجراءات استخدام الجهاز مقياس ضوء (أداة استشعار الضوء المحيط).
7.3.8 أداة استشعار التقارب
- وقد تتضمن عمليات تنفيذ الأجهزة أداة استشعار التقارب.
إذا كانت عمليات تنفيذ الأجهزة تتضمّن أداة استشعار التقارب، سيتم ما يلي:
- [C-1-1] يجب أن يقيس مسافة جسم في نفس اتجاه الشاشة. وهذا يعني أنّه يجب أن يكون جهاز استشعار التقارب موجَّهًا لرصد أي أجسام قريبة من الشاشة، لأنّ الغرض الأساسي من هذا النوع من أجهزة الاستشعار هو رصد هاتف يستخدمه المستخدم. إذا كانت عمليات تنفيذ الأجهزة تتضمّن أداة استشعار التقارب بأي اتجاه آخر، يجب ألا تكون متاحة من خلال واجهة برمجة التطبيقات هذه.
- [C-1-2] يجب أن يكون بدقة 1 بت أو أكثر.
7.3.9 أجهزة استشعار الدقة العالية
إذا كانت عمليات تنفيذ الأجهزة تتضمّن مجموعة من أدوات الاستشعار العالية الجودة كما هو موضّح في هذا القسم، وتمّ إتاحتها للتطبيقات التابعة لجهات خارجية، سيتم إجراء ما يلي:
- يجب أن يحدّد [C-1-1] الميزة من خلال علامة ميزة
android.hardware.sensor.hifi_sensors
.
إذا كانت عمليات تنفيذ الأجهزة تشير إلى android.hardware.sensor.hifi_sensors
، سيتم ما يلي:
-
يجب أن يتضمّن [C-2-1] جهاز استشعار "
TYPE_ACCELEROMETER
" ينطبق عليه ما يلي:- يجب أن يتراوح نطاق القياس بين -8 غرام و+8 غرام على الأقل.
- يجب أن تكون درجة دقة القياس 1024 LSB/G على الأقل.
- يجب أن يكون الحد الأدنى لتكرار القياس 12.5 هرتز أو أقل.
- يجب أن يبلغ الحد الأقصى لتردد القياس 400 هرتز أو أعلى.
- يجب أن يكون هناك تشويش في القياس ليس أعلى من 400 uG/بإدارة هرتز.
- يجب استخدام نموذج لا يتطلب تنشيطًا لهذا المستشعر مع إمكانية تخزين مؤقت لما لا يقل عن 3000 حدث استشعار.
- يجب أن يكون استهلاك الطاقة بالدفعة أقل من 3 ميغاواط.
- من المفترض أن يكون لها ثبات في انحياز الضوضاء الثابت بقيمة \<15 ميكروغرام لأعضاء الشاشة منتج ظرفاء تردديء من مجموعة البيانات الثابتة التي تبلغ 24 ساعة.
- يُفترض أن يكون هناك تغيُّر في الانحياز مقارنةً بدرجة الحرارة التي تبلغ ≤ +/- 1 مليغرام / درجة مئوية.
- يجب أن يكون الخط غير الخطي الأكثر ملاءمة بنسبة ≤ 0.5%، وتغيّر الحساسية مقابل درجة الحرارة 0.03%/درجة مئوية أو أقل.
- يجب أن يحتوي على طيف ضوضاء أبيض لضمان استيفاء متطلبات الأهلية اللازمة لسلامة جهاز الاستشعار.
-
يجب أن يحتوي [C-2-2] على
TYPE_ACCELEROMETER_UNCALIBRATED
تستوفي متطلبات الجودة نفسها المتوفّرة فيTYPE_ACCELEROMETER
. -
يجب أن يتضمّن [C-2-3] أداة استشعار
TYPE_GYROSCOPE
وهي:- يجب أن يتراوح نطاق القياس بين -1000 و +1000 نقطة في الثانية على الأقل.
- يجب أن تكون درجة دقة القياس 16 LSB/dps على الأقل.
- يجب أن يكون الحد الأدنى لتكرار القياس 12.5 هرتز أو أقل.
- يجب أن يبلغ الحد الأقصى لتردد القياس 400 هرتز أو أعلى.
- يجب أن يكون هناك تشويش في قياس حالة الجهاز لا يزيد عن 0.014 درجة/ثانية/وإعادة هرتز.
- "ينبغي" أن يكون لها ثبات تحيز ثابت بقيمة < 0.0002 °/s Apply (هرتز) من مجموعة البيانات الثابتة لمدة 24 ساعة.
- يُفترض أن يكون هناك تغيُّر في الانحياز مقارنةً بدرجة الحرارة التي تبلغ ≤ +/- 0.05 درجة/ ثانية / درجة مئوية.
- من المفترض أن يتغيّر مستوى الحساسية مقارنةً بدرجة الحرارة التي تقل عن 0.02% / درجة مئوية.
- يُفترض أن يحتوي الخط غير الخطي على أفضل ملائمة، وهو ≤ 0.2%.
- من المفترض أن تكون كثافة الضوضاء 0.007 درجة/ثانية/وإعادة هرتز أو أقل.
- يجب أن يحتوي على طيف ضوضاء أبيض لضمان استيفاء متطلبات الأهلية اللازمة لسلامة جهاز الاستشعار.
- من المفترض أن يحدث خطأ في المعايرة يقل عن 0.002 راد/ثانية في نطاق درجة حرارة يتراوح بين 10 و40 درجة مئوية عندما يكون الجهاز ثابتًا.
-
يجب أن يحتوي [C-2-4] على
TYPE_GYROSCOPE_UNCALIBRATED
تستوفي متطلبات الجودة نفسها المتوفّرة فيTYPE_GYROSCOPE
. - يجب أن يتضمّن [C-2-5] جهاز استشعار
TYPE_GEOMAGNETIC_FIELD
ينطبق عليه ما يلي:- يجب أن يتراوح نطاق القياس بين -900 و +900 uT.
- يجب أن تكون درجة دقة القياس 5 LSB/uT على الأقل.
- يجب أن يكون الحد الأدنى لتكرار القياس 5 هرتز أو أقل.
- يجب أن يبلغ الحد الأقصى لتردد القياس 50 هرتز أو أعلى.
- يجب أن يكون هناك تشويش في القياس ليس أعلى من 0.5 وحدة uT.
- يجب أن يحتوي [C-2-6] على
TYPE_MAGNETIC_FIELD_UNCALIBRATED
تستوفي متطلبات الجودة نفسها المتوفّرة فيTYPE_GEOMAGNETIC_FIELD
بالإضافة إلى ذلك:- يجب استخدام نموذج لا يتطلب تنشيطًا لهذا المستشعر مع إمكانية تخزين مؤقت لما لا يقل عن 600 حدث استشعار.
- يجب أن يحتوي على طيف ضوضاء أبيض لضمان استيفاء متطلبات الأهلية اللازمة لسلامة جهاز الاستشعار.
- يجب أن يتضمّن [C-2-7] أداة استشعار
TYPE_PRESSURE
وهي:- يجب أن يتراوح نطاق القياس بين 300 و1100 هيلتر باسك على الأقل.
- يجب أن تكون درجة دقة القياس 80 LSB/hPa على الأقل.
- يجب أن يكون الحد الأدنى لتكرار القياس 1 هرتز أو أقل.
- يجب أن يبلغ الحد الأقصى لتردد القياس 10 هرتز أو أعلى.
- يجب أن يكون هناك تشويش في القياس ليس أعلى من 2 Pa/fill هرتز.
- يجب استخدام نموذج لا يتطلب تنشيطًا لهذا المستشعر مع إمكانية تخزين مؤقت لما لا يقل عن 300 حدث استشعار.
- يجب أن يكون استهلاك الطاقة بالدفعة أقل من 2 ميغاواط.
- يجب أن يتضمّن [C-2-8] أداة استشعار
TYPE_GAME_ROTATION_VECTOR
وهي:- يجب استخدام نموذج لا يتطلب تنشيطًا لهذا المستشعر مع إمكانية تخزين مؤقت لما لا يقل عن 300 حدث استشعار.
- يجب أن يكون استهلاك الطاقة بالدفعة أقل من 4 ميغاواط.
- يجب أن يتضمّن [C-2-9] أداة استشعار
TYPE_SIGNIFICANT_MOTION
وهي:- يجب ألا يقل استهلاك الطاقة عن 0.5 مللي واط عندما يكون الجهاز ثابتًا و1.5 مللي واط عند تحرك الجهاز.
- يجب أن يتضمّن [C-2-10] جهاز استشعار
TYPE_STEP_DETECTOR
ينطبق عليه ما يلي:- يجب استخدام نموذج لا يتطلب تنشيطًا لهذا المستشعر مع إمكانية تخزين مؤقت لما لا يقل عن 100 حدث استشعار.
- يجب ألا يقل استهلاك الطاقة عن 0.5 مللي واط عندما يكون الجهاز ثابتًا و1.5 مللي واط عند تحرك الجهاز.
- يجب أن يكون استهلاك الطاقة بالدفعة أقل من 4 ميغاواط.
- يجب أن يتضمّن [C-2-11] جهاز استشعار
TYPE_STEP_COUNTER
ينطبق عليه ما يلي:- يجب ألا يقل استهلاك الطاقة عن 0.5 مللي واط عندما يكون الجهاز ثابتًا و1.5 مللي واط عند تحرك الجهاز.
- يجب أن يتضمّن [C-2-12] جهاز استشعار
TILT_DETECTOR
ينطبق عليه ما يلي:- يجب ألا يقل استهلاك الطاقة عن 0.5 مللي واط عندما يكون الجهاز ثابتًا و1.5 مللي واط عند تحرك الجهاز.
- [C-2-13] يجب أن يكون الطابع الزمني للحدث نفسه الذي تم الإبلاغ عنه من خلال "مقياس التسارع" و"أداة استشعار الجيروسكوب" و"مقياس المغناطيسية" في حدود 2.5 مللي ثانية من بعضهما البعض.
- يجب أن يتضمّن [C-2-14] الطوابع الزمنية لأحداث أداة استشعار الجيروسكوب في الأساس الزمني نفسه للنظام الفرعي للكاميرا وخلال 1 ملي ثانية من الخطأ.
- يجب أن يسلِّم [C-2-15] عينات إلى التطبيقات خلال 5 ملي ثانية من وقت توفُّر البيانات على أي من أجهزة الاستشعار المادية المذكورة أعلاه.
- [C-2-16] يجب ألا يزيد استهلاك الطاقة عن 0.5 مللي واط عندما يكون الجهاز ثابتًا و2.0 مللي واط عند تحرك الجهاز عند تفعيل أي مجموعة من أدوات الاستشعار التالية:
-
SENSOR_TYPE_SIGNIFICANT_MOTION
-
SENSOR_TYPE_STEP_DETECTOR
-
SENSOR_TYPE_STEP_COUNTER
-
SENSOR_TILT_DETECTORS
-
- [C-2-17] قد يتضمّن جهاز استشعار
TYPE_PROXIMITY
، ولكن في حال توفُّره، يجب أن تتوفّر حد أدنى من قدرة المخزن المؤقت تبلغ 100 حدث للمستشعر.
لاحظ أن جميع متطلبات استهلاك الطاقة في هذا القسم لا تشمل استهلاك الطاقة لدى معالج التطبيقات. ويشمل ذلك الطاقة التي تجذبها سلسلة المستشعر بالكامل، مثل جهاز الاستشعار وأي دائرة داعمة وأي نظام معالجة مخصّص للمستشعر وغير ذلك.
إذا كانت عمليات تنفيذ الأجهزة تتضمّن دعمًا مباشرًا لأداة الاستشعار، سيتم تطبيق ما يلي:
- يجب أن يفصح [C-3-1] عن دعم أنواع القنوات المباشرة وأسعار التقارير المباشرة من خلال واجهة برمجة التطبيقات
isDirectChannelTypeSupported
وgetHighestDirectReportRateLevel
. - [C-3-2] يجب أن يتوافق مع نوع واحد على الأقل من نوعَي القنوات المباشرة لجهاز الاستشعار لجميع أجهزة الاستشعار التي تشير إلى أنّها متوافقة مع القنوات المباشرة الخاصة بأداة الاستشعار
-
TYPE_HARDWARE_BUFFER
-
TYPE_MEMORY_FILE
- يجب توفير إمكانية الإبلاغ عن الأحداث من خلال القناة المباشرة لجهاز الاستشعار للمستشعر الأساسي (المتغير غير المتعلّق بالتنشيط) من الأنواع التالية:
-
TYPE_ACCELEROMETER
-
TYPE_ACCELEROMETER_UNCALIBRATED
-
TYPE_GYROSCOPE
-
TYPE_GYROSCOPE_UNCALIBRATED
-
TYPE_MAGNETIC_FIELD
-
TYPE_MAGNETIC_FIELD_UNCALIBRATED
7.3.10. أداة استشعار بصمة الإصبع
إذا كانت عمليات تنفيذ الأجهزة تتضمّن شاشة قفل آمنة:
- يجب أن يتضمن مستشعر بصمات الإصبع.
إذا كانت عمليات تنفيذ الجهاز تتضمّن أداة استشعار لبصمة الإصبع ووفّرت أداة الاستشعار لتطبيقات تابعة لجهات خارجية، سيتم إجراء ما يلي:
- [C-1-1] يجب أن يعلن عن تأييده لميزة
android.hardware.fingerprint
. - يجب أن ينفِّذ [C-1-2] واجهة برمجة التطبيقات المقابلة بشكل كامل كما هو موضّح في مستندات حزمة تطوير البرامج (SDK) لنظام التشغيل Android.
- [C-1-3] يجب أن يكون معدل قبول خاطئ لا يزيد عن 0.002%.
- [SR] يُوصى بشدة بأن يكون معدل قبول المحتال والانتحال لا يزيد عن 7%.
- [C-1-4] يجب الإفصاح عن أنّ هذا الوضع قد يكون أقل أمانًا من رقم التعريف الشخصي أو النقش أو كلمة المرور القوية مع تعداد مخاطر تفعيله بوضوح في حال كانت معدلات قبول الانتحال والمحتال أعلى من %7.
- [C-1-5] يجب أن تحد من معدّل الزحف لمدة 30 ثانية على الأقل بعد خمس محاولات خاطئة لإثبات الهوية باستخدام بصمة الإصبع.
- يجب أن يتوفر في [C-1-6] ملف تخزين مفاتيح مستنِد إلى الجهاز، وإجراء مطابقة بصمة الإصبع في بيئة تنفيذ موثوقة (TEE) أو على شريحة ذات قناة آمنة إلى TEE.
- يجب أن يحتوي [C-1-7] على جميع بيانات بصمات الأصابع التي يمكن التعرّف عليها ومصادقتها بطريقة مشفّرة بحيث لا يمكن الحصول عليها أو قراءتها أو تغييرها خارج بيئة التنفيذ الموثوقة (TEE) على النحو الموضَّح في إرشادات التنفيذ على موقع "المشروع المفتوح المصدر لنظام Android".
- [C-1-8] يجب أن تمنع إضافة بصمة إصبع بدون إنشاء سلسلة من الثقة أولاً، وذلك من خلال الطلب من المستخدم تأكيد البيانات الحالية أو إضافة بيانات اعتماد جديدة للجهاز (رقم التعريف الشخصي أو النقش أو كلمة المرور) مؤمّنة من قِبل بيئة التنفيذ الموثوقة (TEE). ويوفّر تنفيذ "المشروع المفتوح المصدر لنظام Android" الآلية في إطار العمل لإجراء ذلك.
- [C-1-9] يجب ألا يتيح لتطبيقات الجهات الخارجية التمييز بين بصمات الأصابع الفردية.
- يجب أن يلتزم [C-1-10] بعلامة DevicePolicyManager.KEYGUARD_DISABLE_FINGERPrint.
- [C-1-11] يجب نقل بيانات بصمة الإصبع بأمان أو إزالتها لاستيفاء المتطلبات المذكورة أعلاه عند الترقية من إصدار أقدم من Android 6.0.
- [SR] يُنصَح بشدة بأن يكون معدّل الرفض الخاطئ أقل من %10 عند قياسه على الجهاز.
- [SR] يُنصَح بشدة بأن يكون وقت الاستجابة أقل من ثانية واحدة، ويتم قياسه من وقت لمس أداة استشعار بصمة الإصبع إلى أن يتم فتح قفل الشاشة لإصبع واحد مسجَّل.
- يجب استخدام رمز بصمة الإصبع في Android الوارد في "المشروع المفتوح المصدر لنظام Android".
7.3.11. أدوات الاستشعار في Android Automotive فقط
تم تحديد أدوات الاستشعار الخاصة بالسيارات في android.car.CarSensorManager API
.
7.3.11.1 الترس الحالي
لمعرفة المتطلبات الخاصة بالأجهزة، يمكنك الاطّلاع على القسم 2.5.1.
7.3.11.2. الوضع الليلي/النهاري
لمعرفة المتطلبات الخاصة بالأجهزة، يمكنك الاطّلاع على القسم 2.5.1.
7.3.11.3. حالة القيادة
لمعرفة المتطلبات الخاصة بالأجهزة، يمكنك الاطّلاع على القسم 2.5.1.
7.3.11.4. سرعة العجلة
لمعرفة المتطلبات الخاصة بالأجهزة، يمكنك الاطّلاع على القسم 2.5.1.
7.3.12. أداة استشعار الوضعية
عمليات تنفيذ الأجهزة:
- قد يتم دعم أداة استشعار الوضعية بزاوية 6 درجات بحريّة.
إذا كانت تطبيقات الجهاز توفّر أداة استشعار الوضعية بزاوية 6 درجات بحريّة، سيتم:
- [C-1-1] يجب استخدام أداة استشعار
TYPE_POSE_6DOF
والإبلاغ عنها. - يجب أن يكون [C-1-2] أكثر دقة من متجه الدوران وحده.
7.4. إمكانية اتصال البيانات
7.4.1. الاتصالات الهاتفية
يشير مصطلح "الاتصال الهاتفي" كما تستخدمه واجهات برمجة تطبيقات Android وهذا المستند تحديدًا إلى الأجهزة المتعلقة بإجراء مكالمات صوتية وإرسال رسائل قصيرة SMS عبر شبكة GSM أو CDMA. على الرغم من أنّ هذه المكالمات الصوتية قد يتم تبديلها بين حِزم البيانات أو لا، فإنّها لأغراض Android مستقلة عن أي اتصال بيانات قد يتم تنفيذه باستخدام الشبكة نفسها. بمعنى آخر، تشير وظيفة "الهاتف" وواجهات برمجة التطبيقات في Android على وجه التحديد إلى المكالمات الصوتية والرسائل القصيرة SMS. على سبيل المثال، لا تُعتبر عمليات تنفيذ الأجهزة التي لا يمكنها إجراء مكالمات أو إرسال/استقبال رسائل SMS أجهزة هاتفية، بصرف النظر عما إذا كانت تستخدم شبكة خلوية لاتصال البيانات أم لا.
- قد يتم استخدام Android على الأجهزة التي لا تتضمن أجهزة اتصال هاتفي. بمعنى أن Android متوافق مع الأجهزة بخلاف الهواتف.
إذا كانت عمليات تنفيذ الأجهزة تتضمّن الاتصال الهاتفي من خلال بروتوكول GSM أو CDMA، سيتم إجراء ما يلي:
- [C-1-1] يجب أن يعلن عن علامة الميزة
android.hardware.telephony
وعلامات الميزات الفرعية الأخرى وفقًا للتكنولوجيا. - [C-1-2] يجب أن تنفيذ الدعم الكامل لواجهة برمجة التطبيقات الخاصة بتلك التقنية.
إذا كانت عمليات تنفيذ الأجهزة لا تتضمّن أجهزة هاتفية، فإنها:
- [C-2-1] يجب تنفيذ واجهات برمجة التطبيقات الكاملة في بيئة مستقلة.
7.4.1.1. التوافق مع حظر الأرقام
إذا أبلغت عمليات تنفيذ الأجهزة عن android.hardware.telephony feature
، سيتم ما يلي:
- [C-1-1] يجب أن يتضمن إمكانية حظر الأرقام
- يجب أن ينفِّذ [C-1-2]
BlockedNumberContract
وواجهة برمجة التطبيقات المقابلة لها بالكامل كما هو موضّح في مستندات حزمة تطوير البرامج (SDK). - [C-1-3] يجب حظر جميع المكالمات والرسائل من رقم هاتف في "BlockNumberProvider" بدون أي تفاعل مع التطبيقات. والاستثناء الوحيد هو عندما يتم رفع حظر الرقم مؤقتًا كما هو موضّح في مستندات حزمة تطوير البرامج (SDK).
- [C-1-4] يجب ألّا يتواصل مع موفِّر خدمة سجلّ المكالمات في النظام الأساسي بشأن مكالمة محظورة.
- [C-1-5] يجب ألّا يتواصل مع مقدِّم خدمات الاتصال الهاتفي بشأن رسالة محظورة.
- [C-1-6] يجب تنفيذ واجهة مستخدم لإدارة الأرقام المحظورة، والتي يتم فتحها بهدف العرض باستخدام طريقة
TelecomManager.createManageBlockedNumbersIntent()
. - [C-1-7] يجب ألا يسمح للمستخدمين الثانويين بعرض الأرقام المحظورة على الجهاز أو تعديلها، حيث يفترض نظام Android الأساسي أن المستخدم الأساسي يتمتع بالتحكم الكامل في خدمات الاتصال الهاتفي، في نسخة واحدة، على الجهاز. يجب إخفاء جميع واجهات المستخدم ذات الصلة التي تؤدي إلى حظر الوصول إلى المستخدمين الثانويين، كما يجب احترام القائمة المحظورة.
- "يجب نقل الأرقام المحظورة إلى مقدّم الخدمة عند تحديث الجهاز إلى الإصدار Android 7.0.
7.4.1.2. واجهة برمجة تطبيقات الاتصالات
في حال أبلغت عمليات تنفيذ الأجهزة عن android.hardware.telephony
، سينطبق التالي على:
- [C-SR] يُنصَح بشدة بمعالجة حدثَي
KEYCODE_MEDIA_PLAY_PAUSE
وKEYCODE_HEADSETHOOK
الخاصَين بسماعة الرأس بخصوص واجهات برمجة التطبيقات فيandroid.telecom
على النحو التالي:- يمكنك طلب الرقم
Connection.onDisconnect()
عند رصد ضغطة قصيرة على الحدث الرئيسي أثناء مكالمة جارية. - اطلب الرقم
Connection.onAnswer()
عند رصد ضغطة قصيرة على الحدث الرئيسي أثناء مكالمة واردة. - يمكنك الاتصال بالرقم
Connection.onReject()
عند رصد ضغطة مطوّلة على الحدث الرئيسي أثناء مكالمة واردة. - تبديل حالة كتم صوت جهاز
CallAudioState
- يمكنك طلب الرقم
7.4.2 معيار IEEE 802.11 (لشبكات Wi-Fi)
عمليات تنفيذ الأجهزة:
- يجب أن يتوفر دعم لشكل واحد أو أكثر من أشكال 802.11.
إذا كانت عمليات تنفيذ الجهاز تشمل التوافق مع 802.11 وكشفت الوظائف لتطبيق تابع لجهة خارجية،
- [C-1-1] يجب أن ينفذ واجهة برمجة تطبيقات Android المقابلة.
- [C-1-2] يجب الإبلاغ عن علامة ميزة الجهاز
android.hardware.wifi
. - [C-1-3] يجب أن يستخدم multicast API كما هو موضّح في مستندات حزمة SDK.
- [C-1-4] يجب أن يتوافق مع نظام أسماء النطاقات ذي البث المتعدد (mDNS) ويجب ألا يصف حزم mDNS (224.0.0.251) في أي وقت من التشغيل، بما في ذلك:
- حتى عندما لا تكون الشاشة في حالة نشطة.
- لتطبيقات أجهزة Android TV، حتى عندما يكون الجهاز في حالة وضع الاستعداد
- "يجب أن يتم ترتيب عنوان MAC المصدر ورقم تسلسل إطارات طلب الفحص عشوائيًا، مرة في بداية كل عملية فحص، بينما تكون دالة STA غير متصلة.
- يجب أن تستخدم كل مجموعة من إطارات طلبات الفحص التي تشمل عملية فحص واحدة عنوان MAC واحدًا متسقًا (يجب ألا يتم توزيع عنوان MAC عشوائيًا في منتصف عملية الفحص).
- يجب تكرار رقم تسلسل طلب الفحص كالمعتاد (بشكل تسلسلي) بين طلبات الفحص في الفحص.
- يجب أن يتم ترتيب رقم تسلسل طلب الفحص عشوائيًا بين طلب الفحص الأخير من عملية الفحص وطلب الفحص الأول في عملية الفحص التالية.
- يجب السماح بعناصر المعلومات التالية فقط في إطارات طلبات التحقيق، بينما تكون دالة STA غير متصلة:
- مجموعة معلمات SSID (0)
- مجموعة مَعلمات DS (3)
7.4.2.1. اتصال Wi-Fi مباشر
عمليات تنفيذ الأجهزة:
- يجب أن يشمل ذلك الدعم لاتصال Wi-Fi المباشر (شبكة Wi-Fi من نظير إلى نظير).
إذا كانت عمليات تنفيذ الأجهزة تتضمّن إمكانية الاتصال بشبكة Wi-Fi المباشرة، يعني ذلك ما يلي:
- [C-1-1] يجب أن يستخدم واجهة برمجة تطبيقات Android المقابلة كما هو موضح في مستندات حزمة تطوير البرامج (SDK).
- [C-1-2] يجب الإبلاغ عن ميزة الأجهزة
android.hardware.wifi.direct
. - [C-1-3] يجب أن يتوافق مع اتصال Wi-Fi المعتاد.
- "يجب أن" تدعم عمليات Wi-Fi وWi-Fi Direct بشكلٍ متزامن.
7.4.2.2. إعداد رابط مباشر عبر أنفاق شبكة Wi-Fi
عمليات تنفيذ الأجهزة:
- يجب أن توفّر هذه الخدمة إمكانية إجراء إعداد الربط المباشر عبر نفق Wi-Fi (TDLS) كما هو موضَّح في مستندات حزمة تطوير البرامج (SDK) لنظام التشغيل Android.
إذا كانت عمليات تنفيذ الأجهزة تشمل إتاحة "إمكانية الاتصال المباشر غير القابل للبرمجة (TDLS)" و"TDLS" من خلال واجهة برمجة تطبيقات WiFiManager، سيتم إجراء ما يلي:
- [C-1-1] يجب أن يعلن عن توفّر TDLS من خلال
WifiManager.isTdlsSupported
. - "يجب" استخدام "TDL" فقط عندما يكون ذلك ممكنًا ومفيدًا.
- يجب أن يكون لديك بعض الإرشادات وألّا تستخدم الاتصال القصير المدى (TDLS) عندما يكون أداؤه أسوأ من الانتقال إلى نقطة وصول Wi-Fi.
7.4.2.3. التعرُّف على شبكة Wi-Fi
عمليات تنفيذ الأجهزة:
- يجب أن تتوافق مع خدمة Wi-Fi Aware.
في حال كانت عمليات تنفيذ الأجهزة تتضمّن إتاحة خدمة Wi-Fi Aware وتعرض الوظائف لتطبيقات تابعة لجهات خارجية، سيتم عندها ما يلي:
- [C-1-1] يجب أن ينفِّذ واجهات برمجة تطبيقات
WifiAwareManager
كما هو موضّح في مستندات حزمة تطوير البرامج (SDK). - [C-1-2] يجب أن يعلن عن علامة الميزة
android.hardware.wifi.aware
. - [C-1-3] يجب أن يتوافق مع عمليات Wi-Fi وWi-Fi في الوقت نفسه.
- [C-1-4] يجب أن يتم توزيع عنوان واجهة إدارة Wi-Fi Aware عشوائيًا على فترات زمنية لا تزيد عن 30 دقيقة وعند تفعيل خدمة Wi-Fi Aware.
7.4.2.4. نقطة مرور Wi-Fi
عمليات تنفيذ الأجهزة:
- يجب أن يتوافق مع نقطة مرور Wi-Fi.
إذا كانت عمليات تنفيذ الأجهزة تتضمّن توافقًا مع "نقطة مرور Wi-Fi"، سيحدث ما يلي:
- [C-1-1] يجب تنفيذ واجهات برمجة تطبيقات
WifiManager
ذات الصلة بنقطة المرور كما هو موضّح في مستندات حزمة تطوير البرامج (SDK). - [C-1-2] يجب أن يتوافق مع معيار IEEE 802.11u، الذي يرتبط تحديدًا باكتشاف الشبكة وتحديدها، مثل خدمة الإعلانات العامة (GAS) وبروتوكول طلب بحث شبكة الوصول (ANQP).
وبالعكس إذا كانت عمليات تنفيذ الجهاز لا تشمل التوافق مع "نقطة مرور Wi-Fi":
- [C-2-1] يجب أن يظهر
UnsupportedOperationException
في تنفيذ واجهات برمجة تطبيقاتWifiManager
المرتبطة بنقطة المرور.
7.4.3. البلوتوث
إذا كانت عمليات تنفيذ الأجهزة تتوافق مع الملف الشخصي لـ Bluetooth Audio:
- يجب أن تكون متوافقة مع برامج ترميز الصوت المتقدّمة وبرامج ترميز صوت البلوتوث (مثل LDAC).
إذا كانت عمليات تنفيذ الأجهزة تشير إلى ميزة android.hardware.vr.high_performance
، سيتم ما يلي:
- [C-1-1] يجب أن يتوافق مع Bluetooth 4.2 وBluetooth LE Data Length.
يتيح Android استخدام البلوتوث والبلوتوث منخفض الطاقة.
إذا كانت عمليات تنفيذ الأجهزة تتضمّن إمكانية استخدام البلوتوث والبلوتوث منخفض الطاقة، يعني ذلك ما يلي:
- [C-2-1] يجب أن يفصح عن ميزات النظام الأساسي ذات الصلة (
android.hardware.bluetooth
وandroid.hardware.bluetooth_le
على التوالي) وتنفيذ واجهات برمجة تطبيقات النظام الأساسي. - "يجب" تنفيذ الملفات الشخصية ذات الصلة عبر البلوتوث، مثل A2DP وAVCP وOBEX وما إلى ذلك، على النحو المناسب للجهاز.
إذا كانت عمليات تنفيذ الأجهزة تتضمّن إمكانية استخدام Bluetooth Low Energy، سيتم إجراء ما يلي:
- يجب أن يُعلِن [C-3-1] عن ميزة الأجهزة "
android.hardware.bluetooth_le
". - [C-3-2] يجب تفعيل واجهات برمجة تطبيقات البلوتوث المستندة إلى GATT (الملف الشخصي للسمات العامة) كما هو موضح في مستندات حزمة تطوير البرامج (SDK) وandroid.Bluetooth.
- [C-3-3] يجب أن يبلغ القيمة الصحيحة لـ
BluetoothAdapter.isOffloadedFilteringSupported()
للإشارة إلى ما إذا كان منطق الفلترة لفئات واجهة برمجة التطبيقات ScanFilter قد تم تنفيذه. - [C-3-4] يجب الإبلاغ عن القيمة الصحيحة لـ
BluetoothAdapter.isMultipleAdvertisementSupported()
للإشارة إلى ما إذا كانت إعلانات Low Energy Advertising متاحة. - يجب أن تتوافق مع إلغاء تحميل منطق الفلترة إلى مجموعة شرائح البلوتوث عند تنفيذ ScanFilter API.
- يجب أن يتيح تحميل المسح المجمَّع إلى شريحة البلوتوث.
-
يجب أن يدعم الإعلان المتعدد في 4 خانات على الأقل.
-
[SR] يُنصَح بشدة بتنفيذ مهلة خاصة بعنوان خاص قابل للحلّ لا تزيد عن 15 دقيقة، وتدوير العنوان عند انتهاء المهلة لحماية خصوصية المستخدم.
7.4.4 الاتصالات القريبة المدى
عمليات تنفيذ الأجهزة:
- يجب أن تشتمل هذه الوسائط على جهاز إرسال واستقبال وأجهزة ذات صلة بالاتصالات القريبة المدى (NFC).
- يجب أن يستخدم [C-0-1] واجهتَي برمجة تطبيقات
android.nfc.NdefMessage
وandroid.nfc.NdefRecord
حتى إذا لم يتوافقا مع تقنية الاتصال القصير المدى (NFC) أو تشيران إلى ميزةandroid.hardware.nfc
بأنّ الفئات تمثّل تنسيقًا لتمثيل البيانات مستقلاً عن البروتوكول.
إذا كانت عمليات تنفيذ الأجهزة تشمل أجهزة NFC وتنوي إتاحتها للتطبيقات التابعة للجهات الخارجية، سيتم إجراء ما يلي:
- [C-1-1] يجب الإبلاغ عن الميزة
android.hardware.nfc
من خلال طريقةandroid.content.pm.PackageManager.hasSystemFeature()
. - يجب أن تكون قادرًا على قراءة رسائل NDEF وكتابتها عبر معايير NFC التالية على النحو التالي:
- [C-1-2] يجب أن يكون قادرًا على العمل كقارئ أو كاتب منتدى NFC (على النحو المحدد في المواصفات الفنية لمنتدى NFCForum-TS-DigitalProtocol-1.0) من خلال معايير NFC التالية:
- NFCA (ISO14443-3A)
- NFCB (ISO14443-3B)
- NfcF (JIS X 6319-4)
- IsoDep (ISO 14443-4)
- أنواع علامات منتدى NFC 1 و2 و3 و4 و5 (يحدّدها منتدى NFC)
-
[SR] يُنصَح بشدة بأن تكون قادرًا على قراءة رسائل NDEF وكتابتها وكذلك البيانات الأولية باستخدام معايير NFC التالية. تجدر الإشارة إلى أنّه على الرغم من أنّ معايير الاتصال القصير المدى (NFC) موصى بها بشدة، فمن المقرر تغييرها في "تعريف التوافق" لإصدار مستقبلي. هذه المعايير اختيارية في هذا الإصدار، ولكنّها ستكون مطلوبة في الإصدارات المستقبلية. ننصح بشدة الأجهزة الحالية والجديدة التي تعمل على هذا الإصدار من Android باستيفاء هذه المتطلبات الآن حتى تتمكّن هذه الأجهزة من الترقية إلى إصدارات النظام الأساسي المستقبلية.
-
يجب أن يكون [C-1-3] قادرًا على نقل البيانات واستلامها باستخدام المعايير والبروتوكولات التالية:
- ISO 18092
- الإصدار 1.2 من LLCP (مُحدَّد من قِبل منتدى NFC)
- بروتوكول SDP 1.0 (محدد من قِبل منتدى NFC)
- بروتوكول الدفع NDEF
- SNEP 1.0 (تم تعريفه من قِبل منتدى NFC)
- [C-1-4] يجب أن يتوافق مع ميزة شعاع Android وأن يفعّل ميزة "شعاع Android" تلقائيًا.
- يجب أن يكون [C-1-5] قادرًا على الإرسال والاستقبال باستخدام شعاع Android، عند تفعيل شعاع Android أو تشغيل وضع P2p آخر ذي ملكية خاصة بتقنية NFC.
- [C-1-6] يجب تنفيذ خادم SNEP التلقائي. يجب إرسال رسائل NDEF الصالحة التي يستلمها خادم SNEP التلقائي إلى التطبيقات باستخدام intent
android.nfc.ACTION_NDEF_DISCOVERED
. يجب ألا يؤدي إيقاف شعاع Android في الإعدادات إلى إيقاف إرسال رسالة NDEF الواردة. - يجب أن يلتزم [C-1-7] بالغرض من "
android.settings.NFCSHARING_SETTINGS
" لعرض إعدادات المشاركة عبر NFC. - [C-1-8] يجب تنفيذ خادم NPP. يجب معالجة الرسائل المُستلَمة على خادم NPP بالطريقة نفسها التي تتم بها معالجة خادم SNEP التلقائي.
- [C-1-9] يجب تنفيذ برنامج SNEP ومحاولة إرسال P2P NDEF الصادر إلى خادم SNEP التلقائي عند تفعيل شعاع Android. في حال عدم العثور على خادم SNEP تلقائي، على العميل محاولة الإرسال إلى خادم NPP.
- [C-1-10] يجب أن تسمح للأنشطة التي تعمل في المقدّمة لضبط رسالة NDEF P2P الصادرة باستخدام
android.nfc.NfcAdapter.setNdefPushMessage
وandroid.nfc.NfcAdapter.setNdefPushMessageCallback
وandroid.nfc.NfcAdapter.enableForegroundNdefPush
. - يجب استخدام إيماءة أو تأكيد على الشاشة، مثل "Touch to Beam"، قبل إرسال رسائل P2P NDEF الصادرة.
- [C-1-11] يجب أن يتيح توصيل اتصال NFC بالبلوتوث عندما يكون الجهاز متوافقًا مع الملف الشخصي للدفع لكائنات البلوتوث.
- يجب أن يتيح [C-1-12] نقل الاتصال بالبلوتوث عند استخدام "
android.nfc.NfcAdapter.setBeamPushUris
"، من خلال تطبيق مواصفات "الإصدار 1.2 من عملية نقل الاتصال" و"الإقران الآمن عبر البلوتوث باستخدام الإصدار 1.0" من منتدى NFC. يجب أن يؤدي هذا التنفيذ إلى تنفيذ خدمة شركة ذات مسؤولية محدودة (LLP) للتسليم باسم الخدمة "urn:nfc:sn:handover" لتبديل سجلات طلب/نقل البيانات عبر NFC، كما يجب أن تستخدم ملف Bluetooth Object Push Profile (ملف الدفع بواسطة عنصر البلوتوث) لنقل البيانات الفعلية عبر البلوتوث. لأسباب قديمة (للحفاظ على التوافق مع الأجهزة التي تعمل بالإصدار 4.1 من نظام التشغيل Android)، يجب أن يقبل التنفيذ طلبات SNEP GET لتبادل طلبات التسليم/السجلات المحددة عبر NFC. ومع ذلك، ينبغي ألا يرسل التنفيذ نفسه طلبات SNEP GET لتنفيذ تسليم الاتصال. - [C-1-13] يجب إجراء استطلاع لكل التكنولوجيات المتوافقة أثناء استخدام وضع اكتشاف NFC.
- يجب أن يكون في وضع الاكتشاف عبر NFC عندما يكون الجهاز نشطًا وشاشته نشطة ومقفلة.
- يجب أن تكون قادرة على قراءة الرمز الشريطي وعنوان URL (إذا كانا مشفّرين) لمنتجات الرمز الشريطي لتقنية NFC (إذا كانت مشفّرة).
(تجدر الإشارة إلى أنّ الروابط المتاحة للجميع لا تتوفّر لمواصفات منتدى JIS وISO وNFC المذكورة أعلاه).
يتيح Android استخدام وضع محاكاة بطاقة مضيف NFC (HCE).
إذا كانت عمليات تنفيذ الأجهزة تتضمّن مجموعة شرائح لوحدة تحكُّم NFC متوافقة مع تقنية HCE (لبروتوكول NfcA و/أو NfcB) وتتوافق مع ميزة توجيه معرّف التطبيق (AID)، يجب إجراء ما يلي:
- [C-2-1] يجب أن يبلغ عن ثابت خاصية
android.hardware.nfc.hce
. - يجب أن يتوافق [C-2-2] مع واجهات برمجة تطبيقات NFC HCE كما هو محدّد في حزمة تطوير البرامج (SDK) لنظام التشغيل Android.
إذا كانت عمليات تنفيذ الجهاز تتضمّن مجموعة شرائح لوحدة تحكُّم NFC قادرة على توفير وظيفة HCE لتقنية NFCF، وتم تفعيل هذه الميزة على تطبيقات تابعة لجهات خارجية، سيتم إجراء ما يلي:
- [C-3-1] يجب أن يبلغ عن ثابت خاصية
android.hardware.nfc.hcef
. - يجب أن ينفِّذ [C-3-2] واجهات برمجة تطبيقات محاكاة بطاقة NfcF كما هو محدّد في حزمة تطوير البرامج (SDK) لنظام التشغيل Android.
إذا كانت عمليات تنفيذ الأجهزة تتوافق مع تقنية NFC بشكل عام كما هو موضّح في هذا القسم وكانت تتوافق مع تقنيات MIFARE (MIFARE Classic وMIFARE Ultralight وNDEF على MIFARE Classic) من دور القارئ/الكاتب، يجب مراعاة ما يلي:
- [C-4-1] يجب أن تنفيذ واجهات برمجة تطبيقات Android المقابلة لها كما هو موثق في حزمة تطوير البرامج (SDK) لنظام التشغيل Android.
- [C-4-2] يجب الإبلاغ عن الميزة
com.nxp.mifare
من خلال الطريقةandroid.content.pm.PackageManager.hasSystemFeature
(). يُرجى العِلم أنّ هذه الميزة ليست من ميزات Android العادية، وبالتالي لا تظهر كثابت في فئةandroid.content.pm.PackageManager
.
7.4.5 الحد الأدنى لإمكانات الشبكة
عمليات تنفيذ الأجهزة:
- [C-0-1] يجب أن يتضمن الدعم لشكل واحد أو أكثر من أشكال شبكات البيانات. ويجب أن تتضمّن عمليات تنفيذ الأجهزة على وجه التحديد توافقًا لمعيار بيانات واحد على الأقل بسرعة 200 كيلوبت في الثانية أو أكثر. تشمل أمثلة التكنولوجيات التي تستوفي هذا الشرط EDGE وHSPA وEV-DO و802.11g وإيثرنت ورقم PAN للبلوتوث وما إلى ذلك.
- يجب أن يشتمل [C-0-2] على حزمة شبكات IPv6 وأن يتيح اتصال IPv6 باستخدام واجهات برمجة التطبيقات المُدارة، مثل
java.net.Socket
وjava.net.URLConnection
، بالإضافة إلى واجهات برمجة التطبيقات الأصلية، مثل مقابسAF_INET6
. - [C-0-3] يجب تفعيل IPv6 تلقائيًا.
- يجب أن يضمن أن اتصال IPv6 موثوق مثل IPv4.
- [C-0-4] يجب الحفاظ على اتصال IPv6 في وضع القيلولة.
- [C-0-5] يجب ألا يؤدي تقييد المعدل إلى فقدان الجهاز للاتصال ببروتوكول IPv6 على أي شبكة متوافقة مع بروتوكول IPv6 تستخدم عمر RAW لا يقل عن 180 ثانية.
- يجب أن تتضمّن أيضًا التوافق مع معيار واحد على الأقل من معايير البيانات اللاسلكية الشائعة، مثل 802.11 (Wi-Fi) عندما يكون معيار الشبكة المادي (مثل الإيثرنت) هو اتصال البيانات الأساسي.
- قد تنفذ أكثر من شكل واحد من أشكال اتصال البيانات.
ويعتمد المستوى المطلوب من دعم IPv6 على نوع الشبكة، كما يلي:
إذا كانت عمليات تنفيذ الأجهزة تتوافق مع شبكات Wi-Fi، سيتم إجراء ما يلي:
- [C-1-1] يجب أن يتيح التشغيل على حزمتَي بروتوكول الإنترنت وIPv6 فقط على شبكة Wi-Fi.
إذا كانت عمليات تنفيذ الأجهزة تتوافق مع شبكات إيثرنت:
- [C-2-1] يجب أن يتوافق مع عملية تكديس ثنائي على Ethernet.
إذا كانت عمليات تنفيذ الأجهزة تتوافق مع بيانات شبكة الجوّال، سيتم إجراء ما يلي:
- يجب أن يستوفي [C-3-1] هذه المتطلبات في الوقت نفسه على كل شبكة يتصل بها الجهاز عندما يكون الجهاز متصلاً بأكثر من شبكة واحدة (على سبيل المثال، Wi-Fi وبيانات شبكة الجوّال)،
- يجب أن يتوافق مع تشغيل IPv6 (بروتوكول IPv6 فقط وربما تكديس ثنائي) على بيانات شبكة الجوّال.
7.4.6. إعدادات المزامنة
عمليات تنفيذ الأجهزة:
- يجب تفعيل إعداد المزامنة التلقائية الرئيسية تلقائيًا في [C-0-1] كي تعرض الطريقة
getMasterSyncAutomatically()
القيمة "true".
7.4.7. توفير البيانات
إذا كانت عمليات تنفيذ الأجهزة تتضمّن اتصالاً تفرض تكلفة استخدام، تكون:
- [SR] يُنصَح بشدة بتوفير وضع توفير البيانات.
إذا كانت عمليات تنفيذ الأجهزة توفر وضع "توفير البيانات"، سيتم ما يلي:
- [C-1-1] يجب أن يتوافق مع جميع واجهات برمجة التطبيقات في الفئة
ConnectivityManager
كما هو موضّح في مستندات حزمة تطوير البرامج (SDK) - يجب أن يوفّر [C-1-2] واجهة مستخدم في الإعدادات تنفّذ الغرض من
Settings.ACTION_IGNORE_BACKGROUND_DATA_RESTRICTIONS_SETTINGS
، ما يسمح للمستخدمين بإضافة تطبيقات إلى القائمة المسموح بها أو إزالتها منها.
في حال لم توفِّر عمليات تنفيذ الأجهزة وضع "توفير البيانات"، سيحدث ما يلي:
- [C-2-1] يجب أن تعرض القيمة
RESTRICT_BACKGROUND_STATUS_DISABLED
لـConnectivityManager.getRestrictBackgroundStatus()
- [C-2-2] يجب ألا يتم بث
ConnectivityManager.ACTION_RESTRICT_BACKGROUND_CHANGED
. - [C-2-3] يجب أن يحتوي على نشاط يعالج هدف "
Settings.ACTION_IGNORE_BACKGROUND_DATA_RESTRICTIONS_SETTINGS
" ولكن قد يتم تنفيذه بغرض التنفيذ.
7.5. الكاميرات
إذا كانت عمليات تنفيذ الأجهزة تتضمّن كاميرا واحدة على الأقل، سيتم إجراء ما يلي:
- [C-1-1] يجب أن يعلن عن علامة الميزة
android.hardware.camera.any
. - [C-1-2] يجب أن يكون بإمكان التطبيق تخصيص 3 صور RGBA_8888 نقطية في الوقت نفسه بما يعادل حجم الصور الناتجة عن أداة استشعار الكاميرا ذات الدقة الأكبر على الجهاز، بينما الكاميرا مفتوحة لغرض المعاينة الأساسية والالتقاط المستمر.
7.5.1. الكاميرا الخلفية
الكاميرا الخلفية هي كاميرا توجد على جانب الجهاز مقابل الشاشة، وهي تعرض مشاهد في أقصى جانب من الجهاز، مثل الكاميرا التقليدية.
عمليات تنفيذ الأجهزة:
- يجب أن يشتمل على كاميرا خلفية.
إذا كانت تصاميم الجهاز تتضمّن كاميرا خلفية واحدة على الأقل، سيتم إجراء ما يلي:
- [C-1-1] يجب الإبلاغ عن علامة الميزة
android.hardware.camera
وandroid.hardware.camera.any
. - [C-1-2] يجب أن تبلغ درجة دقة الهاتف 2 ميغابكسل على الأقل.
- يجب أن يتوفر إما التركيز التلقائي للجهاز أو التركيز التلقائي للبرامج في برنامج تشغيل الكاميرا (الشفاف لبرامج التطبيق).
- قد يحتوي على أجهزة ذات تركيز ثابت أو EDOF (عمق مجال ممتد).
- وقد يتضمن فلاشًا.
إذا كانت الكاميرا تتضمن وميض:
- [C-2-1] يجب ألا تتم إضاءة مصباح الفلاش أثناء تسجيل مثيل
android.hardware.Camera.PreviewCallback
على سطح معاينة الكاميرا، ما لم يفعّل التطبيق الفلاش صراحةً من خلال تفعيل سماتFLASH_MODE_AUTO
أوFLASH_MODE_ON
لعنصرCamera.Parameters
. لا ينطبق هذا الشرط على تطبيق الكاميرا المضمَّن في النظام، بل على تطبيقات الجهات الخارجية التي تستخدمCamera.PreviewCallback
فقط.
7.5.2 الكاميرا الأمامية
الكاميرا الأمامية هي كاميرا تقع على نفس الجانب من الجهاز الذي توجد فيه الشاشة، وهي عبارة عن كاميرا تُستخدم عادةً لتصوير المستخدم، مثل مؤتمرات الفيديو والتطبيقات المشابهة.
عمليات تنفيذ الأجهزة:
- قد يحتوي على كاميرا أمامية
إذا كانت عمليات تنفيذ الجهاز تتضمّن كاميرا أمامية واحدة على الأقل، سيتم إجراء ما يلي:
- [C-1-1] يجب الإبلاغ عن علامة الميزة
android.hardware.camera.any
وandroid.hardware.camera.front
. - [C-1-2] يجب أن تكون درجة الدقة VGA (640x480 بكسل) على الأقل.
- [C-1-3] يجب عدم استخدام كاميرا أمامية كإعداد تلقائي لواجهة برمجة التطبيقات للكاميرا، ويجب عدم ضبط واجهة برمجة التطبيقات للتعامل مع الكاميرا الأمامية كالكاميرا الخلفية التلقائية، حتى لو كانت الكاميرا الوحيدة على الجهاز.
- [C-1-5] يجب إجراء انعكاس أفقي لمعاينة الكاميرا بالنسبة إلى الاتجاه الذي يحدّده التطبيق عندما يطلب التطبيق الحالي صراحةً تدوير شاشة الكاميرا عن طريق طلب استخدام الإجراء
android.hardware.Camera.setDisplayOrientation()
. في المقابل، يجب عكس المعاينة على طول المحور الأفقي التلقائي للجهاز عندما لا يطلب التطبيق الحالي تدوير شاشة الكاميرا بشكل صريح من خلال استدعاء الإجراءandroid.hardware.Camera.setDisplayOrientation()
. - [C-1-6] يجب ألا تعكس آخر عمليات بث الفيديو الثابتة أو الصور الثابتة التي تم التقاطها والتي تم إرجاعها إلى عمليات معاودة الاتصال بالتطبيق أو الملتزمة بمساحة تخزين الوسائط.
- [C-1-7] يجب أن تعكس الصورة المعروضة في ما بعد المشاهدة بالطريقة نفسها التي تستخدمها في بث صورة معاينة الكاميرا.
- قد تتضمّن ميزات (مثل التركيز التلقائي والفلاش وما إلى ذلك) المتوفّرة للكاميرات الخلفية كما هو موضَّح في القسم 7.5.1.
إذا كان بإمكان المستخدم تغيير عمليات تنفيذ الأجهزة (مثلاً، تلقائيًا باستخدام مقياس تسارع أو يدويًا من خلال إدخال المستخدم):
- [C-2-1] يجب انعكاس معاينة الكاميرا أفقيًا وفقًا للاتجاه الحالي للجهاز.
7.5.3. كاميرا خارجية
عمليات تنفيذ الأجهزة:
- وقد يتضمن ذلك دعمًا لكاميرا خارجية ليست بالضرورة متصلة دائمًا.
إذا كانت عمليّات تنفيذ الأجهزة تتضمّن توافقًا مع كاميرا خارجية، سيحدث ما يلي:
- [C-1-1] يجب أن تعلن عن علامتَي ميزة المنصة
android.hardware.camera.external
وandroid.hardware camera.any
. - [C-1-2] يجب أن يتوافق مع فئة الفيديو عبر USB (UVC 1.0 أو الإصدارات الأحدث) في حال توصيل الكاميرا الخارجية من خلال منفذ USB.
- "يجب" أن يتم استخدام ضغطات الفيديو مثل MJPEG، وذلك لنقل عمليات البث بجودة عالية غير مرمّزة (أي مجموعات بث الصور الأولية أو المضغوطة بشكل مستقل).
- قد تتوافق مع عدة كاميرات.
- قد يتم دعم ترميز الفيديو المستند إلى الكاميرا. يجب أن تتوفّر إمكانية الوصول إلى بث / MJPEG المتزامن غير المرمّز (QVGA أو بدرجة دقة أعلى) عبر تطبيق الجهاز، إذا كان ذلك متاحًا.
7.5.4. سلوك واجهة برمجة التطبيقات للكاميرا
يشتمل Android على حزمتَين من واجهة برمجة التطبيقات للوصول إلى الكاميرا، وهما واجهة برمجة التطبيقات android.hardware.camera2 الجديدة التي تعرض للتطبيق التحكّم في الكاميرا على مستوى منخفض، بما في ذلك تدفقات البث/الانفجار الفعال بدون نسخ وعناصر التحكُّم في التعرّض للضوء والكسب وموازنة اللون الأبيض وتحويل الألوان وإزالة التشويش وزيادة الحدة والمزيد.
تم وضع علامة إيقاف حزمة واجهة برمجة التطبيقات القديمة، android.hardware.Camera
، في الإصدار Android 5.0، ولكن ستظل متاحة للتطبيقات لاستخدامها. يجب أن تضمن عمليات تنفيذ أجهزة Android الدعم المستمر لواجهة برمجة التطبيقات كما هو موضّح في هذا القسم وفي حزمة تطوير البرامج (SDK) لنظام التشغيل Android.
يجب أن تنفِّذ عمليات تنفيذ الأجهزة السلوكيات التالية مع واجهات برمجة التطبيقات المتعلقة بالكاميرا، في جميع الكاميرات المتاحة. عمليات تنفيذ الأجهزة:
- [C-0-1] يجب استخدام
android.hardware.PixelFormat.YCbCr_420_SP
لبيانات المعاينة المقدَّمة إلى طلبات معاودة الاتصال بالتطبيق عند عدم اتصال أحد التطبيقات بـandroid.hardware.Camera.Parameters.setPreviewFormat(int)
مطلقًا. - [C-0-2] يجب أن يكون بتنسيق الترميز NV21 أيضًا عندما يسجّل أحد التطبيقات مثيل
android.hardware.Camera.PreviewCallback
ويطلب النظام الإجراءonPreviewFrame()
ويكون تنسيق المعاينة هو YCbCr_420_SP، ويتم تمرير بيانات البايت إلىonPreviewFrame()
. بمعنى آخر، يجب أن يكون NV21 هو الإعداد التلقائي. - يجب أن يتوافق [C-0-3] مع تنسيق YV12 (كما يُشار إليه في ثابت
android.graphics.ImageFormat.YV12
) في معاينات الكاميرا لكلّ من الكاميرا الأمامية والخلفية من أجلandroid.hardware.Camera
. (قد يستخدم برنامج ترميز الفيديو والكاميرا في الجهاز أيّ تنسيق بكسل أصلي، ولكن يجب أن يتيح تنفيذ الجهاز التحويل إلى YV12). - يجب أن يتوافق [C-0-4] مع
android.hardware.ImageFormat.YUV_420_888
وandroid.hardware.ImageFormat.JPEG
كمخرجات من خلال واجهة برمجة التطبيقاتandroid.media.ImageReader
API لأجهزةandroid.hardware.camera2
التي تُعلِن عن إمكانية استخدامREQUEST_AVAILABLE_CAPABILITIES_BACKWARD_COMPATIBLE
فيandroid.request.availableCapabilities
. - [C-0-5] يجب أن يتم تنفيذ واجهة برمجة تطبيقات الكاميرا الكاملة المضمَّنة في مستندات حزمة تطوير البرامج (SDK) لنظام التشغيل Android، بغض النظر عمّا إذا كان الجهاز يتضمّن تركيزًا تلقائيًا أو إمكانات أخرى على سبيل المثال، يجب أن تطلب الكاميرات التي لا تحتوي على ميزة "التركيز التلقائي" من أجهزة
android.hardware.Camera.AutoFocusCallback
المسجَّلة (على الرغم من أنّ هذه الكاميرات لا صلة لها بكاميرا تعمل بدون تركيز تلقائي). تجدر الإشارة إلى أنّ ذلك ينطبق على الكاميرات الأمامية، على سبيل المثال، على الرغم من أنّ معظم الكاميرات الأمامية لا تتيح ميزة التركيز التلقائي، يجب أن تكون عمليّات معاودة الاتصال من واجهة برمجة التطبيقات "مزيّفة" على النحو الموضّح. - يجب أن يتعرف [C-0-6] على كل اسم معلَمة محدد كثابت في فئة
android.hardware.Camera.Parameters
ويحترمه. وفي المقابل، يجب ألا تلتزم عمليات تنفيذ الجهاز بثوابت السلسلة التي يتم تمريرها إلى طريقةandroid.hardware.Camera.setParameters()
غير تلك الموثَّقة كثوابت فيandroid.hardware.Camera.Parameters
أو تتعرّف عليها. ويعني هذا أنّ عمليات تنفيذ الأجهزة يجب أن تتوافق مع جميع مَعلمات "الكاميرا" العادية إذا كان الجهاز يسمح بذلك، ويجب ألا تتيح استخدام أنواع مَعلمات "الكاميرا" المخصَّصة. على سبيل المثال، يجب أن تتوافق عمليات التصوير على الأجهزة التي تتيح التقاط الصور باستخدام تقنيات التصوير بتقنية النطاق العالي الديناميكية (HDR) مع مَعلمة الكاميراCamera.SCENE_MODE_HDR
. - يجب أن يُبلِغ [C-0-7] عن مستوى الدعم المناسب للسمة
android.info.supportedHardwareLevel
كما هو موضّح في حزمة تطوير البرامج (SDK) لنظام التشغيل Android، وأن يبلّغ عن علامات ميزات إطار العمل المناسبة. - يجب أن يفصح [C-0-8] أيضًا عن إمكانات الكاميرا الفردية الخاصة بـ "
android.hardware.camera2
" من خلال السمةandroid.request.availableCapabilities
وأن يفصح عن علامات الميزات المناسبة. يجب أن تحدِّد العلامة الخاصة بهذه الميزة إذا كان أي من أجهزة الكاميرا المرفقة يتيح هذه الميزة. - [C-0-9] يجب بث هدف
Camera.ACTION_NEW_PICTURE
عند التقاط صورة جديدة بواسطة الكاميرا وإضافة إدخال الصورة إلى متجر الوسائط. - [C-0-10] يجب بث هدف
Camera.ACTION_NEW_VIDEO
عند تسجيل فيديو جديد بواسطة الكاميرا وإضافة إدخال الصورة إلى متجر الوسائط.
7.5.5 اتجاه الكاميرا
إذا كانت أجهزة الكاميرا مزوّدة بكاميرا أمامية أو خلفية، تكون هذه الكاميرات:
- [C-1-1] يجب أن يكون موجهًا بحيث يتوافق بُعد الكاميرا الطويل مع البعد الطويل للشاشة. أي أنّه عند تثبيت الجهاز في الاتجاه الأفقي، يجب أن تلتقط الكاميرات الصور في الاتجاه الأفقي. وينطبق ذلك بغض النظر عن الاتجاه الطبيعي للجهاز، أي ينطبق على الأجهزة الأساسية ذات الاتجاه الأفقي، بالإضافة إلى الأجهزة ذات الاتجاه العمودي الأساسي.
7.6. الذاكرة وسعة التخزين
7.6.1. الحد الأدنى من مساحة الذاكرة ومساحة التخزين
عمليات تنفيذ الأجهزة:
- [C-0-1] يجب أن يشتمل على إدارة تنزيل يمكن أن تستخدمها التطبيقات لتنزيل ملفات البيانات ويجب أن تكون قادرة على تنزيل ملفات فردية لا يقل حجمها عن 100 ميغابايت إلى موقع "ذاكرة التخزين المؤقت" التلقائي.
7.6.2. مساحة التخزين المشتركة للتطبيق
عمليات تنفيذ الأجهزة:
- يجب أن يوفّر [C-0-1] مساحة تخزين تتم مشاركتها بواسطة التطبيقات، ويُشار إليها أيضًا باسم "وحدة التخزين الخارجية المشتركة" أو "وحدة التخزين المشتركة للتطبيق" أو من خلال مسار Linux "/sdcard" التي يتم تثبيتها عليه.
- يجب ضبط [C-0-2] مع مساحة التخزين المشتركة المثبَّتة تلقائيًا، بعبارة أخرى "خارج الصندوق"، بغض النظر عمّا إذا كانت مساحة التخزين منفَّذة على مكوّن وحدة تخزين داخلية أو وسيط تخزين قابل للإزالة (على سبيل المثال، فتحة بطاقة رقمية آمنة).
- [C-0-3] يجب تثبيت مساحة التخزين المشتركة للتطبيق مباشرةً على مسار Linux
sdcard
أو تضمين رابط رمزي لنظام التشغيل Linux منsdcard
إلى نقطة التثبيت الفعلية. - [C-0-4] يجب فرض إذن "
android.permission.WRITE_EXTERNAL_STORAGE
" على مساحة التخزين المشتركة هذه على النحو الموضَّح في حزمة تطوير البرامج (SDK). يجب أن تكون مساحة التخزين المشتركة قابلة للكتابة من خلال أي تطبيق يحصل على هذا الإذن.
قد تستوفي عمليات تنفيذ الأجهزة المتطلبات أعلاه باستخدام أي مما يلي:
- وحدة تخزين قابلة للإزالة ويمكن للمستخدم الوصول إليها، مثل فتحة بطاقة رقمية آمنة (SD).
- جزء من مساحة التخزين الداخلية (غير القابلة للإزالة) كما هو منصوص عليه في "المشروع المفتوح المصدر لنظام Android" (AOSP).
إذا كانت عمليات تنفيذ الأجهزة تستخدم مساحة تخزين قابلة للإزالة لاستيفاء المتطلبات المذكورة أعلاه، سيتم إجراء ما يلي:
- [C-1-1] يجب تنفيذ واجهة مستخدم منبثقة أو منبثقة تحذّر المستخدم عند عدم إدخال وسيط تخزين في الخانة.
- يجب أن يحتوي [C-1-2] على وسيط تخزين بتنسيق FAT (مثل بطاقة SD) أو أن يظهر على العلبة والمواد الأخرى المتوفّرة وقت الشراء ويجب شراء وسيط التخزين بشكل منفصل.
إذا كانت عمليات تنفيذ الأجهزة تستخدم حصة من مساحة التخزين غير القابلة للإزالة لتلبية المتطلبات المذكورة أعلاه، سيتم إجراء ما يلي:
- "ينبغي" استخدام تنفيذ AOSP لمساحة التخزين المشتركة للتطبيق الداخلي.
- قد تتم مشاركة مساحة التخزين مع بيانات التطبيق الخاصة.
إذا كانت عمليات تنفيذ الجهاز تتضمن مسارات تخزين مشتركة متعددة (مثل فتحة بطاقة SD ووحدة تخزين داخلية مشتركة)، سيتم إجراء ما يلي:
- [C-3-1] يجب ألا يسمح إلا بتطبيقات Android المثبَّتة مسبقًا أو الحاصلة على أذونات مميزة والتي لديها إذن
WRITE_EXTERNAL_STORAGE
بالكتابة في وحدة التخزين الخارجية الثانوية، إلا عند الكتابة إلى الأدلة الخاصة بالحزمة أو ضمنURI
التي يتم عرضها من خلال تفعيل هدفACTION_OPEN_DOCUMENT_TREE
.
إذا كانت عمليات تنفيذ الأجهزة تحتوي على منفذ USB يتوافق مع وضع أجهزة USB الطرفية، سيتم إجراء ما يلي:
- يجب أن يوفّر [C-3-1] آلية للوصول إلى البيانات في مساحة التخزين المشتركة للتطبيق من كمبيوتر مضيف.
- يجب أن يتم الكشف عن المحتوى من كلا مسارَي التخزين بشفافية من خلال خدمة فحص الوسائط من Android و
android.provider.MediaStore
. - قد يتم استخدام وحدة تخزين USB كبيرة الحجم، ولكن "ينبغي" استخدام "بروتوكول نقل الوسائط" لتلبية هذا المطلب.
إذا كانت عمليات تنفيذ الأجهزة تتضمّن منفذ USB مع وضع USB للأجهزة الملحقة وتتوافق مع بروتوكول نقل الوسائط، سيتم إجراء ما يلي:
- يجب أن يكون متوافقًا مع مضيف بروتوكول نقل الوسائط (MTP) المرجعي لنظام التشغيل Android، وهو نقل ملفات Android.
- يجب أن يتم الإبلاغ عن فئة جهاز USB بقيمة 0x00.
- يجب الإبلاغ عن اسم واجهة USB بتنسيق "MTP".
7.6.3. مساحة تخزين قابلة للاستخدام
إذا كان من المتوقّع أن يكون الجهاز جوّالاً بطبيعته على عكس أجهزة التلفزيون، في ما يلي الإجراءات التي يمكن تنفيذها على الجهاز:
- [SR] يُنصَح بشدة بتنفيذ مساحة التخزين القابلة للاستخدام في موقع ثابت على المدى الطويل، لأنّ فصلها عن طريق الخطأ يمكن أن يتسبّب في فقدان البيانات أو تلفها.
إذا كان منفذ جهاز التخزين القابل للإزالة في مكان ثابت طويل الأمد، مثل داخل حجرة البطارية أو غطاء واقي آخر، تكون عمليات تنفيذ الأجهزة:
- [SR] يُنصَح بشدة بتنفيذ مساحة التخزين القابلة للاستخدام.
7.7. USB
إذا كانت عمليات تنفيذ الأجهزة تحتوي على منفذ USB، سيتم إجراء ما يلي:
- يجب أن يتوافق مع وضع الجهاز الطرفي USB ويجب أن يتوافق مع وضع مضيف USB.
7.7.1. وضع الأجهزة الملحقة بكابل USB
إذا كانت عمليات تنفيذ الأجهزة تتضمّن منفذ USB متوافقًا مع وضع الأجهزة الملحقة:
- [C-1-1] يجب أن يكون المنفذ قابلاً للتوصيل بمضيف USB يحتوي على منفذ USB عادي من النوع A أو من النوع C.
- [C-1-2] يجب الإبلاغ عن القيمة الصحيحة لـ
iSerialNumber
في واصف جهاز USB العادي من خلالandroid.os.Build.SERIAL
. - [C-1-3] يجب أن يرصد شاحن بقوة 1.5 أمبير و3.0 أمبير وفقًا لمعيار المقاوم من نوع C ويجب أن يرصد التغييرات في الإعلان إذا كان شاحنًا بمنفذ من النوع C.
- [SR] يجب أن يستخدم المنفذ جهاز USB من نوع USB صغير أو صغير-B أو من النوع C. يُنصَح بشدة باستيفاء هذه المتطلبات على أجهزة Android الحالية والجديدة حتى تتمكّن هذه الأجهزة من الترقية إلى إصدارات النظام الأساسي المستقبلية.
- [SR] يجب وضع المنفذ في الجزء السفلي من الجهاز (وفقًا للاتجاه الطبيعي) أو تفعيل تدوير شاشة البرنامج في جميع التطبيقات (بما في ذلك الشاشة الرئيسية)، لكي يتمّ عرض الشاشة بشكل صحيح عند توجيه الجهاز إلى المنفذ في الأسفل. يُنصَح بشدة باستيفاء هذه المتطلبات على أجهزة Android الحالية والجديدة حتى تتمكّن هذه الأجهزة من الترقية إلى إصدارات الأنظمة الأساسية المستقبلية.
- [SR] يجب توفير إمكانية رسم تيار بقوة 1.5 أمبير أثناء اهتزاز HS وحركة المرور كما هو محدد في مواصفات شحن البطارية بمنفذ USB، النسخة 1.2. يُنصَح بشدة باستيفاء هذه المتطلبات على أجهزة Android الحالية والجديدة حتى تتمكّن هذه الأجهزة من الترقية إلى إصدارات النظام الأساسي المستقبلية.
- [SR] يُنصح بشدة بعدم استخدام طرق الشحن الخاصة التي تعدّل الجهد الكهربائي لـ Vbus بدرجة خارج المستويات التلقائية، أو تغيير أدوار الحوض/المصدر، ما قد يؤدي إلى حدوث مشاكل في إمكانية التشغيل التفاعلي مع الشواحن أو الأجهزة التي تتوافق مع الطُرق العادية لشحن الطاقة عبر USB. على الرغم من أن ذلك يسمى بـ "موصى به بشدة"، إلا أننا قد نطلب في إصدارات Android المستقبلية من جميع الأجهزة من النوع C أن تتيح إمكانية التشغيل التفاعلي الكامل مع أجهزة الشحن القياسية من النوع C.
- [SR] يُنصَح بشدة بإتاحة ميزة "الشحن الفائق" لإتاحة تبديل البيانات وإتاحة أدوار العمل عند توفُّر وضع مضيف USB من نوع C ومنفذ USB.
- يجب أن يتوافق مع ميزة "تسليم الطاقة" لشحن الجهد العالي، وإتاحة الأوضاع البديلة مثل العرض الخارجي.
- يجب تنفيذ واجهة برمجة تطبيقات "الملحق المفتوح لنظام Android" (AOA) ومواصفاته كما هو موثّق في مستندات حزمة تطوير البرامج (SDK) لنظام التشغيل Android.
في حال تنفيذ مواصفات الجهاز، بما في ذلك منفذ USB، في ما يتعلّق بمواصفات AOA:
- [C-2-1] يجب أن يعلن عن إتاحة ميزة الأجهزة
android.hardware.usb.accessory
. - [C-2-2] يجب أن تشتمل فئة مساحة تخزين USB الكبيرة على السلسلة "android" في نهاية وصف الواجهة
iInterface
ضمن وحدة تخزين USB الكبيرة.
7.7.2 وضع مضيف USB
إذا كانت عمليات تنفيذ الجهاز تتضمن منفذ USB متوافقًا مع وضع المضيف، سيتم إجراء ما يلي:
- يجب أن يستخدم [C-1-1] واجهة برمجة تطبيقات مضيف USB لنظام التشغيل Android كما هو موثّق في حزمة تطوير البرامج (SDK) لنظام التشغيل Android، ويجب أن يعلن عن توافقه مع ميزة الأجهزة
android.hardware.usb.host
. - [C-1-2] يجب أن يتيح توصيل أجهزة USB الطرفية العادية. بمعنى آخر، يجب أن:
- توفّر منفذ من النوع C على الجهاز أو مع شحن كابلات تتوافق مع منفذ خاص بالجهاز مع منفذ USB عادي من النوع C (جهاز USB من النوع C)
- توفّر منفذ من النوع A على الجهاز أو شحنه مع كابلات تتوافق مع منفذ خاص بالجهاز مع منفذ USB عادي من النوع A
- توفّر منفذ Micro-AB على الجهاز يجب شحنه مع كابل يتوافق مع منفذ من النوع A القياسي
- [C-1-3] يجب ألا يتم شحنه مع محوّل يحوّل من منافذ USB من النوع A أو ميكرو-AB إلى منفذ من النوع C (وعاء).
- [SR] ننصح بشدة بتنفيذ USB audio class على النحو الموضَّح في مستندات حزمة تطوير البرامج (SDK) لنظام التشغيل Android.
- يجب أن يتم توفير شحن جهاز USB الطرفي المتصل أثناء وضع المضيف، والإعلان عن مصدر تيار لا يقل عن 1.5 أمبير على النحو الموضح في قسم "معلمات الإنهاء" في الإصدار 1.2 من مراجعة مواصفات كابل USB من نوع C ومواصفات الموصل لموصّلات USB من نوع C أو باستخدام النطاق الحالي لإخراج منفذ نقل البيانات السريع(CDP) كما هو محدَّد في مواصفات شحن بطارية USB، الإصدار 1.2 من موصل USB الصغير.
- "يجب" تنفيذ معايير USB من نوع C واعتمادها.
إذا كانت عمليات تنفيذ الأجهزة تتضمن منفذ USB يتوافق مع وضع المضيف وفئة صوت USB، سيتم إجراء ما يلي:
- [C-2-1] يجب أن يتوافق مع فئة USB HID.
- يجب أن يوفّر [C-2-2] إمكانية رصد وربط حقول بيانات HID التالية المحدّدة في جداول استخدام واجهة HID لأجهزة USB وطلب استخدام طلبات الصوت مع ثوابت
KeyEvent
على النحو التالي:- معرِّف استخدام صفحة الاستخدام (0xC) (0x0CD):
KEYCODE_MEDIA_PLAY_PAUSE
- معرّف استخدام صفحة الاستخدام (0xC) (0x0E9):
KEYCODE_VOLUME_UP
- معرِّف استخدام صفحة الاستخدام (0xC) (0x0EA):
KEYCODE_VOLUME_DOWN
- معرّف استخدام صفحة الاستخدام (0xCF) (0x0CF):
KEYCODE_VOICE_ASSIST
- معرِّف استخدام صفحة الاستخدام (0xC) (0x0CD):
إذا كانت عمليات تنفيذ الأجهزة تتضمن منفذ USB يتوافق مع وضع المضيف وإطار عمل الوصول إلى مساحة التخزين (SAF)، سيتم إجراء ما يلي:
- يجب أن يتعرّف [C-3-1] على أي أجهزة بروتوكول نقل الوسائط (MTP) المتصلة عن بُعد ويتيح الوصول إلى محتواها من خلال الأهداف
ACTION_GET_CONTENT
وACTION_OPEN_DOCUMENT
وACTION_CREATE_DOCUMENT
. .
إذا كانت عمليات تنفيذ الجهاز تتضمن منفذًا USB يتوافق مع وضع المضيف ومنفذ USB من نوع C،:
- [C-4-1] يجب أن يتم تنفيذ وظيفة "منفذ الأدوار المزدوجة" على النحو المحدّد في مواصفات USB من نوع C (الفقرة 4.5.1.3.3).
- [SR] يُنصَح بشدة بأن يتوافق مع DisplayPort، ويجب أن يتوافق مع معدلات البيانات الفائقة السرعة على USB، وننصح بشدة بإتاحة وظيفة "الشحن الفائق" لإتاحة البيانات وتبديل أدوار الطاقة.
- [SR] يُنصَح بشدة بعدم إتاحة وضع ملحق مهايئ الصوت كما هو موضّح في الملحق "أ" في المراجعة 1.2 لمواصفات كابل وموصّل USB من نوع C.
- يجب تنفيذ نموذج Try.* الأكثر ملاءمة لعامل شكل الجهاز. على سبيل المثال، "ينبغي" أن يستخدم جهاز محمول باليد طراز Try.SNK.
7.8. الصوت
7.8.1. الميكروفون
إذا كانت عمليات تنفيذ الجهاز تتضمن ميكروفونًا، سيتم ما يلي:
- [C-1-1] يجب أن يبلغ عن ثابت خاصية
android.hardware.microphone
. - يجب أن تستوفي [C-1-2] متطلبات التسجيل الصوتي الواردة في القسم 5.4.
- [C-1-3] يجب أن يستوفي متطلبات وقت استجابة الصوت في القسم 5.6.
- [SR] يُنصَح بشدة بأن يتيح التسجيل بالموجات فوق الصوتية كما هو موضَّح في الفقرة 7.8.3.
إذا حذفَت عمليات تنفيذ الجهاز ميكروفونًا، سيحدث ما يلي:
- [C-2-1] يجب ألا يتم الإبلاغ عن ثابت خاصية
android.hardware.microphone
. - [C-2-2] يجب تنفيذ واجهة برمجة تطبيقات التسجيل الصوتي كإجراء فوري على الأقل، وفقًا للفقرة 7.
7.8.2 إخراج الصوت
إذا كانت عمليات تنفيذ الجهاز تتضمّن مكبّر صوت أو منفذ إخراج صوت/وسائط متعددة لجهاز ملحق بإخراج الصوت، مثل مقبس صوت بأربعة موصّلات مقاس 3.5 ملم أو منفذ وضع مضيف USB باستخدام فئة صوت USB، ينطبق ما يلي:
- [C-1-1] يجب أن يبلغ عن ثابت خاصية
android.hardware.audio.output
. - [C-1-2] يجب أن تستوفي متطلبات تشغيل الصوت الواردة في القسم 5.5.
- [C-1-3] يجب أن يستوفي متطلبات وقت استجابة الصوت في القسم 5.6.
- [SR] يُنصَح بشدة بأن يتيح التشغيل بالموجات فوق الصوتية القريبة كما هو موضَّح في الفقرة 7.8.3.
إذا لم تتضمّن عمليات تنفيذ الجهاز مكبّر صوت أو منفذ لإخراج الصوت، سيسري ما يلي:
- [C-2-1] يجب ألا يتم الإبلاغ عن ميزة "
android.hardware.audio.output
". - [C-2-2] يجب أن تنفذ واجهات برمجة التطبيقات المتعلقة بإخراج الصوت في عمليات بيئة مستقلة على الأقل.
لتوضيح هذا القسم، "منفذ إخراج" هو واجهة مادية، مثل مقبس صوت مقاس 3.5 ملم أو منفذ HDMI أو منفذ وضع مضيف USB مع فئة صوت USB. لا يمكن تضمين "منفذ إخراج" في دعم إخراج الصوت عبر البروتوكولات المستنِدة إلى الراديو، مثل البلوتوث أو Wi-Fi أو الشبكة الخلوية.
7.8.2.1. منافذ الصوت التناظرية
لكي يكون الجهاز متوافقًا مع سمّاعات الرأس وملحقات الصوت الأخرى التي تستخدم مقبس صوت مقاس 3.5 ملم في منظومة Android المتكاملة، يجب أن يكون هناك مقبس صوت مقاس 3.5 ملم بمنفذ واحد على الأقل من منافذ الصوت التناظرية واحد أو أكثر من منافذ الصوت التناظرية.
إذا كانت عمليات تنفيذ الأجهزة تحتوي على مقبس صوت مقاس 3.5 ملم بأربعة موصّلات:
- [C-1-1] يجب أن يتيح تشغيل الصوت على سماعات رأس استيريو وسماعات رأس استيريو مع ميكروفون.
- [C-1-2] يجب أن تتوافق مع مقابس صوت TRRS مع طلب تثبيت CTIA.
- [C-1-3] يجب أن يتيح رصد الرموز الرئيسية وربطها برموز المفاتيح للنطاقات الثلاثة التالية من المعاوقة المكافئة بين الميكروفون والموصّلات الأرضية في مقبس الصوت:
-
70 أوم أو أقل:
KEYCODE_HEADSETHOOK
-
210-290 أوم:
KEYCODE_VOLUME_UP
-
360-680 أوم:
KEYCODE_VOLUME_DOWN
-
70 أوم أو أقل:
- [C-1-4] يجب أن يشغّل
ACTION_HEADSET_PLUG
عند إدخال قابس، ولكن فقط بعد أن تلمس جميع جهات الاتصال على المقبس الأجزاء ذات الصلة بالمقبس - يجب أن يكون [C-1-5] قادرًا على تشغيل ما لا يقل عن 150 ميغا فولت أو أقل بنسبة 10% من الجهد الكهربي للإخراج من خلال معاوقة مكبّر صوت بقوة 32 أوم.
- يجب أن يحتوي [C-1-6] على جهد كهربائي متحيز للميكروفون يتراوح بين 1.8 فولت و2.9 فولت.
- [SR] يُنصَح بشدة برصد رمز المفتاح وربطه باستخدام النطاق التالي من المعاوقة المكافئة بين الميكروفون والموصّلات الأرضية في مقبس الصوت:
-
110-180 أوم:
KEYCODE_VOICE_ASSIST
-
110-180 أوم:
- يجب أن تتوافق مع مقابس الصوت من خلال طلب تثبيت OMTP.
- يجب أن تتوفّر إمكانية التسجيل الصوتي من سماعات رأس استيريو تتضمّن ميكروفون.
إذا كانت عمليات تنفيذ الأجهزة تتضمّن مقبس صوت مقاس 4 موصّلات مقاس 3.5 ملم وتتوافق مع ميكروفون، وتم بث android.intent.action.HEADSET_PLUG
مع ضبط الميكروفون ذي القيمة الإضافية على القيمة 1، سيتم إجراء ما يلي:
- [C-2-1] يجب أن يتيح رصد الميكروفون في ملحق الصوت الذي يتم توصيله.
7.8.3. الموجات فوق الصوتية القريبة
الصوت القريب من الموجات فوق الصوتية هو نطاق يتراوح بين 18.5 كيلوهرتز و20 كيلوهرتز.
عمليات تنفيذ الأجهزة:
- يجب تقديم تقرير صحيح عن دعم إمكانات الصوت شبه الصوتية عبر واجهة برمجة التطبيقات AudioManager.getProperty على النحو التالي:
إذا كانت قيمة PROPERTY_SUPPORT_MIC_NEAR_ULTRASOUND
هي "صحيح"، يجب استيفاء المتطلبات التالية في مصدرَي الصوت VOICE_RECOGNITION
وUNPROCESSED
:
- [C-1-1] يجب ألا تتجاوز استجابة طاقة الميكروفون في النطاق بين 18.5 كيلوهرتز إلى 20 كيلوهرتز أكثر من 15 ديسيبل أسفل الاستجابة عند 2 كيلوهرتز.
- [C-1-2] يجب ألا تقل نسبة الإشارة إلى الضوضاء غير المرجحة في الميكروفون عن 18.5 إلى 20 كيلوهرتز بالنسبة إلى نغمة 19 كيلوهرتز عند -26 ديسيبل، يجب ألا تقل عن 50 ديسيبل.
إذا كانت قيمة PROPERTY_SUPPORT_SPEAKER_NEAR_ULTRASOUND
هي "صحيح":
- [C-2-1] يجب ألا تقل استجابة مكبّر الصوت عند 18.5 كيلوهرتز إلى 20 كيلوهرتز عن 40 ديسيبل أسفل الاستجابة عند 2 كيلوهرتز.
7.9 الواقع الافتراضي
يشتمل Android على واجهات برمجة تطبيقات ومرافق لتصميم تطبيقات "الواقع الافتراضي" (VR)، بما في ذلك تجارب الواقع الافتراضي ذات الجودة العالية على الأجهزة الجوّالة. يجب أن تنفِّذ عمليات تنفيذ الأجهزة واجهات برمجة التطبيقات والسلوكيات هذه بشكل صحيح، كما هو موضّح في هذا القسم.
7.9.1. وضع الواقع الافتراضي
يتيح Android استخدام وضع الواقع الافتراضي، وهي ميزة تتعامل مع العرض المجسَّم للإشعارات وتوقِف مكونات واجهة مستخدم النظام الأحادي بينما يكون تركيز المستخدم في تطبيق الواقع الافتراضي.
7.9.2. أداء عالٍ في الواقع الافتراضي
في حال حددت عمليات تنفيذ الأجهزة إمكانية استخدام الواقع الافتراضي العالي الأداء لفترات أطول للمستخدمين من خلال علامة ميزة android.hardware.vr.high_performance
، سيتم إجراء ما يلي:
- [C-1-1] يجب أن يحتوي على نواتين ماديتين على الأقل.
- [C-1-2] يجب أن يفصح عن
android.software.vr.mode feature
. - [C-1-3] يجب أن يتوافق مع وضع الأداء المستدام.
- [C-1-4] يجب أن يتوافق مع OpenGL ES 3.2.
- [C-1-5] يجب أن تتوافق مع أجهزة Vulkan من المستوى 0 ويجب أن تتوافق مع أجهزة Vulkan من المستوى 1.
- [C-1-6] يجب تنفيذ
EGL_KHR_mutable_render_buffer
وEGL_ANDROID_front_buffer_auto_refresh
وEGL_ANDROID_get_native_client_buffer
وEGL_KHR_fence_sync
وEGL_KHR_wait_sync
وEGL_IMG_context_priority
وEGL_EXT_protected_content
، وأن يعرض الإضافات في قائمة إضافات EGL المتاحة. - [C-1-7] يجب أن يتمكن كل من وحدة معالجة الرسومات والشاشة من مزامنة الوصول إلى المخزن المؤقت المشترك، لكي يتم عرض العرض بالعين المتبادل لمحتوى الواقع الافتراضي بمعدل 60 لقطة في الثانية مع سياقين للعرض بدون أي عناصر تمزيق مرئية.
- [C-1-8] يجب تنفيذ
GL_EXT_multisampled_render_to_texture
وGL_OVR_multiview
وGL_OVR_multiview2
وGL_OVR_multiview_multisampled_render_to_texture
وGL_EXT_protected_textures
وGL_EXT_EGL_image_array
وGL_EXT_external_buffer
، وأن يعرض الإضافات في قائمة إضافات GL المتاحة. - يجب أن يدعم [C-1-9] علامتَي
AHardwareBuffer
AHARDWAREBUFFER_USAGE_GPU_DATA_BUFFER
وAHARDWAREBUFFER_USAGE_SENSOR_DIRECT_DATA
كما هو موضّح في NDK. - [C-1-10] يجب أن تنفيذ الدعم لـ
AHardwareBuffers
مع أكثر من طبقة واحدة. - [C-1-11] يجب أن يتيح فك ترميز H.264 بمعدل 3840x2160@30fps-40 ميغابت في الثانية على الأقل (ما يعادل 4 نُسخ من 1920x1080@30fps-10 ميغابت في الثانية أو مثيلَين بمعدّل 1920x1080@60fps و20 ميغابت في الثانية).
- [C-1-12] يجب أن يتوافق مع HEVC وVP9، ويجب أن يكون قادرًا على فك الترميز بسرعة 1920x1080@30fps-10 ميغابت في الثانية و10 ميغابت في الثانية على الأقل، ويجب أن يكون قادرًا على فك ترميز 3840x2160@30fps-20 ميغابت في الثانية (أي ما يعادل 4 مثيلات بتنسيق 1080x1920 ميغابت في الثانية).
- [C-1-13] يجب أن يتوافق مع واجهة برمجة التطبيقات
HardwarePropertiesManager.getDeviceTemperatures
وأن يعرض قيمًا دقيقة لدرجة حرارة الجلد. - يجب أن يحتوي [C-1-14] على شاشة مضمّنة، ويجب أن تكون درجة دقته بدقة فائقة(1080p) ويُنصح بشدة بأن تكون بدقة QuadHD (1440p) أو أعلى.
- [C-1-15] يجب أن يتم تحديث الشاشة بتردد 60 هرتز على الأقل أثناء استخدام وضع الواقع الافتراضي (VR).
- [C-1-16] يجب أن يكون وقت استجابة العرض (وفقًا لقياس وقت التبديل بين "الرمادي إلى الرمادي" و"الأبيض إلى الأسود" و"الأسود إلى الأبيض") أقل من 6 مللي ثانية.
- [C-1-17] يجب أن تكون الشاشة متوافقة مع وضع التدرُّب المنخفض لمدة تقل عن 5 ملي ثانية أو أقل، ويتم تعريفها بأنّها الفترة الزمنية التي تنبعث فيها وحدة البكسل الضوء.
- [C-1-18] يجب أن يتوافق مع Bluetooth 4.2 وملحق Bluetooth LE Data Length الفقرة 7.4.3.
- يجب أن يتيح [C-1-19] استخدام نوع القناة المباشرة والإبلاغ عنه بشكل صحيح لكل أنواع أدوات الاستشعار التلقائية التالية:
-
TYPE_ACCELEROMETER
-
TYPE_ACCELEROMETER_UNCALIBRATED
-
TYPE_GYROSCOPE
-
TYPE_GYROSCOPE_UNCALIBRATED
-
TYPE_MAGNETIC_FIELD
-
TYPE_MAGNETIC_FIELD_UNCALIBRATED
-
- يجب أن يتوافق [C-1-20] مع نوع القناة المباشرة
TYPE_HARDWARE_BUFFER
لجميع أنواع القنوات المباشرة المذكورة أعلاه. - [SR] يُنصَح بها بشدة لإتاحة استخدام ميزة "
android.hardware.sensor.hifi_sensors
" ويجب أن تستوفي المتطلبات المتعلّقة بالجيروسكوب ومقياس التسارع ومقياس المغناطيسية فيandroid.hardware.hifi_sensors
. - قد يتم توفير وحدة أساسية حصرية للتطبيق الذي يعمل في المقدّمة، وقد يتيح أيضًا استخدام واجهة برمجة التطبيقات
Process.getExclusiveCores
لعرض أرقام نوى وحدة المعالجة المركزية (CPU) الحصرية للتطبيق الذي يعمل في المقدّمة. إذا كان النظام الأساسي الحصري متوافقًا، يجب ألا يسمح الأساسي بتشغيل أي عمليات أخرى لمساحة المستخدم (باستثناء برامج تشغيل الأجهزة التي يستخدمها التطبيق)، ولكن قد يسمح بتشغيل بعض عمليات kernel حسب الضرورة.
8. الأداء والقوة
تمثل بعض معايير الحد الأدنى للأداء والطاقة أهمية كبيرة لتجربة المستخدم وتؤثر على الافتراضات الأساسية لدى المطورين عند تطوير التطبيق.
8.1. الاتساق في تجربة المستخدم
يمكن توفير واجهة مستخدم سلسة للمستخدم في حال توفُّر حد أدنى من المتطلبات، وذلك لضمان اتساق عدد اللقطات في الثانية وأوقات الاستجابة للتطبيقات والألعاب. استنادًا إلى نوع الجهاز، قد يكون لعمليات تنفيذ الأجهزة متطلبات قابلة للقياس بشأن وقت استجابة واجهة المستخدم وتبديل المهام كما هو موضَّح في القسم 2.
8.2. أداء الوصول إلى وحدات الإدخال والإخراج من الملفات
من خلال توفير أساس مشترك لأداء ثابت للوصول إلى الملفات على مساحة تخزين البيانات الخاصة للتطبيق (قسم /data
) يمكن لمطوّري التطبيقات تحديد توقّع مناسب يمكن أن يساعد في تصميم برامجهم. استنادًا إلى نوع الجهاز، قد تكون هناك متطلبات معيّنة موضّحة في القسم 2 لعمليات القراءة والكتابة التالية لعمليات تنفيذ الأجهزة:
- أداء الكتابة التسلسلية: تم قياسه عن طريق كتابة ملف 256 ميغابايت باستخدام مخزن مؤقت للكتابة بحجم 10 ميغابايت.
- أداء الكتابة العشوائية: يتم قياسه عن طريق كتابة ملف 256 ميغابايت باستخدام مخزن مؤقت للكتابة بحجم 4 كيلوبايت.
- أداء القراءة التسلسلية: تم القياس من خلال قراءة ملف بحجم 256 ميغابايت باستخدام مخزن مؤقت للكتابة بحجم 10 ميغابايت.
- أداء القراءة العشوائية: تم القياس من خلال قراءة ملف 256 ميغابايت باستخدام مخزن مؤقت للكتابة بحجم 4 كيلوبايت.
8.3. أوضاع توفير الطاقة
يشتمل Android على وضعَي توفير الطاقة وضعَي "تطبيقات الاستعداد" و"القيلولة" لتحسين استخدام البطارية. [SR] ننصح بشدة بجعل جميع التطبيقات المستثناة من هذه الأوضاع متاحة للمستخدم النهائي. [SR] يُوصى بشدة بعدم الانحراف عن "مشروع مفتوح المصدر لنظام Android" عند تشغيل خوارزميات التشغيل والصيانة والتنبيه واستخدام إعدادات النظام العامة لأوضاع توفير الطاقة هذه.
بالإضافة إلى أوضاع توفير الطاقة، قد تطبق عمليات تنفيذ أجهزة Android أيًّا من حالات طاقة السكون الأربع أو كلّها كما هو محدّد في واجهة التكوين المتقدمة وواجهة الطاقة (ACPI).
في حال تنفيذ الجهاز لحالة الطاقة S3 وS4 كما هو محدّد في ACPI، سيتم إجراء ما يلي:
- يجب ألّا يدخل [C-1-1] هذه الحالات إلا عند إغلاق غطاء هو جزء من الجهاز.
8.4. محاسبة استهلاك الطاقة
وتوفِّر المحاسبة وإعداد التقارير الأكثر دقة لاستهلاك الطاقة لمطوّر التطبيق كلاً من الحوافز والأدوات اللازمة لتحسين نمط استخدام الطاقة للتطبيق.
عمليات تنفيذ الأجهزة:
- [SR] يُنصَح بشدة بتقديم ملف تعريفي للطاقة لكل مكوّن من أجل تحديد قيمة الاستهلاك الحالية لكل مكوّن من مكونات الجهاز، مع استنزاف البطارية بشكل تقريبي بسبب تلك المكوّنات بمرور الوقت كما هو موثَّق في موقع "مشروع مفتوح المصدر لنظام Android".
- [SR] يُنصَح بشدة بالإبلاغ عن جميع قيم استهلاك الطاقة بالمللي أمبير في الساعة (mAh).
- [SR] يُنصَح بشدة بالإبلاغ عن استهلاك طاقة وحدة المعالجة المركزية (CPU) حسب المُعرّف الفريد لكل عملية. يلبي "المشروع المفتوح المصدر لنظام Android" المتطلّبات من خلال تنفيذ وحدة نواة
uid_cputime
. - [SR] يُنصَح بشدة بإتاحة هذا الاستخدام للطاقة من خلال أمر
adb shell dumpsys batterystats
shell إلى مطوّر التطبيقات. - يجب أن يُنسب إلى مكون الجهاز نفسه إذا لم يتمكن من عزو استخدام طاقة مكون الجهاز إلى أحد التطبيقات.
8.5. الأداء المتسق
يمكن أن يتذبذب الأداء بشكل كبير بالنسبة إلى التطبيقات عالية الأداء التي تستمر لفترة طويلة، سواء بسبب تشغيل التطبيقات الأخرى في الخلفية أو بسبب تقييد وحدة المعالجة المركزية بسبب حدود درجة الحرارة. يتضمّن Android واجهات آلية، لكي يطلب التطبيق في المقدّمة من النظام، عندما يكون الجهاز متوافقًا، أن يطلب من النظام تخصيص الموارد بشكل أفضل لمعالجة هذه التقلّبات.
عمليات تنفيذ الأجهزة:
-
[C-0-1] يجب أن تبلّغ بدقة عن توافق "وضع الأداء المستدام" من خلال طريقة واجهة برمجة التطبيقات
PowerManager.isSustainedPerformanceModeSupported()
. -
يجب أن يتوافق مع "وضع الأداء المستدام".
في حال أبلغت عمليات تنفيذ الأجهزة عن أنّها تتوافق مع "وضع الأداء المستدام"، سيتم إجراء ما يلي:
- [C-1-1] يجب أن يتم توفير مستوى أداء ثابت للتطبيق الذي يعمل في المقدّمة لمدة 30 دقيقة على الأقل، عندما يطلبه التطبيق.
- يجب أن يلتزم [C-1-2] بواجهة برمجة تطبيقات
Window.setSustainedPerformanceMode()
وواجهات برمجة التطبيقات الأخرى ذات الصلة.
إذا كانت عمليات تنفيذ الأجهزة تتضمّن وحدة معالجة مركزية (CPU) واحدة أو أكثر، ينطبق ما يلي:
- يجب أن يتم توفير مجموعة أساسية واحدة حصرية على الأقل يمكن حجزها بواسطة التطبيق الذي يعمل في المقدّمة.
إذا كانت عمليات تنفيذ الأجهزة تتيح تخصيص مجموعة أساسية واحدة حصرية للتطبيق الذي يعمل في المقدّمة، سيتم إجراء ما يلي:
- [C-2-1] يجب أن يُبلغ من خلال طريقة واجهة برمجة التطبيقات
Process.getExclusiveCores()
أرقام تعريف النوى الحصرية التي يمكن حجزها من خلال التطبيق الذي يعمل في المقدّمة. - [C-2-2] يجب ألا يسمح بتشغيل أي عمليات مساحة للمستخدم باستثناء برامج تشغيل الأجهزة التي يستخدمها التطبيق على النوى الحصرية، ولكن قد يسمح بتشغيل بعض عمليات kernel حسب الضرورة.
في حال لم تكن عمليات تنفيذ الأجهزة متوافقة مع مجموعة أساسية حصرية، سيحدث ما يلي:
- [C-3-1] يجب عرض قائمة فارغة من خلال طريقة واجهة برمجة التطبيقات
Process.getExclusiveCores()
.
9. توافق نموذج الأمان
عمليات تنفيذ الأجهزة:
-
[C-0-1] يجب تنفيذ نموذج أمان متوافق مع نموذج أمان نظام Android الأساسي على النحو المحدّد في المستند المرجعي للأمان والأذونات ضمن واجهات برمجة التطبيقات في مستندات مطوّر برامج Android.
-
يجب أن يتيح [C-0-2] تثبيت التطبيقات الموقعة ذاتيًا بدون طلب أي أذونات/شهادات إضافية من أي جهات خارجية/هيئات خارجية. على وجه التحديد، يجب أن تدعم الأجهزة المتوافقة آليات الأمان الموضحة في الأقسام الفرعية التالية.
9.1. الأذونات
عمليات تنفيذ الأجهزة:
-
يجب أن يتوافق [C-0-1] مع نموذج أذونات Android كما هو محدّد في مستندات مطوّري برامج Android. ويجب أن تفرض هذه التطبيقات على وجه التحديد كل إذن محدّد على النحو الموضّح في مستندات حزمة تطوير البرامج (SDK)، ولا يجوز حذف أي أذونات أو تغييرها أو تجاهلها.
-
يمكنك إضافة أذونات إضافية، شرط ألا تكون سلاسل أرقام تعريف الأذونات الجديدة ضمن مساحة الاسم
android.\*
. -
[C-0-2] يجب منح الأذونات التي تتضمّن
protectionLevel
بقيمةPROTECTION_FLAG_PRIVILEGED
فقط للتطبيقات التي تم تحميلها مسبقًا في المسارات المميّزة لصورة النظام وضمن المجموعة الفرعية من الأذونات المُدرَجة في القائمة المسموح بها صراحةً لكل تطبيق. تستوفي عملية تنفيذ AOSP هذا الشرط من خلال قراءة الأذونات المُدرَجة في القائمة المسموح بها واستخدامها من الملفات في مسارetc/permissions/
واستخدام مسارsystem/priv-app
كمسار امتياز.
أما الأذونات التي لها مستوى حماية من الخطورة، فهي أذونات التشغيل. تطلب التطبيقات التي يكون حجمها targetSdkVersion
> 22 الوصول إليها في وقت التشغيل.
عمليات تنفيذ الأجهزة:
- يجب أن يعرض [C-0-3] واجهة مخصّصة للمستخدم ليقرّر ما إذا كان يريد منح أذونات التشغيل المطلوبة، كما يجب أن يوفر واجهة للمستخدم لإدارة أذونات التشغيل.
- يجب أن يتضمّن [C-0-4] عملية تنفيذ واحدة فقط لواجهتَي المستخدم.
- [C-0-5] يجب ألا يمنح أي أذونات تشغيل للتطبيقات المثبّتة مسبقًا إلا في الحالات التالية:
- يمكن الحصول على موافقة المستخدم قبل أن يستخدمها التطبيق
- ترتبط أذونات وقت التشغيل بنمط هدف يتم فيه ضبط التطبيق المثبّت مسبقًا كمعالج تلقائي.
إذا كانت عمليات تنفيذ الأجهزة تتضمّن تطبيقًا مثبَّتًا مسبقًا أو كنت تريد السماح للتطبيقات التابعة للجهات الخارجية بالوصول إلى إحصاءات الاستخدام، سيتم إجراء ما يلي:
- [C-1-1] يُنصَح باستخدامها بشكل كبير مع توفير آلية يمكن للمستخدمين الوصول إليها لمنح أو إبطال إمكانية الوصول إلى إحصاءات الاستخدام استجابةً لنية
android.settings.ACTION_USAGE_ACCESS_SETTINGS
في التطبيقات التي تعلن عن إذنandroid.permission.PACKAGE_USAGE_STATS
.
إذا كانت عمليات تنفيذ الأجهزة تهدف إلى منع أي تطبيقات، بما في ذلك التطبيقات المثبَّتة مسبقًا، من الوصول إلى إحصاءات الاستخدام، سيتم إجراء ما يلي:
- يجب أن يكون لدى [C-2-1] نشاط يعالج نمط النية بالشراء
android.settings.ACTION_USAGE_ACCESS_SETTINGS
، ولكن يجب تنفيذه في حالة منع، أي سلوك مكافئ لسلوك المستخدم عندما يتم رفض وصول المستخدم.
9.2. المعرّف الفريد وعزل العمليات
عمليات تنفيذ الأجهزة:
- [C-0-1] يجب أن يتوافق مع نموذج وضع الحماية لتطبيقات Android، والذي يتم فيه تشغيل كل تطبيق كمعرّف فريد فريد من نوع Unixstyle في نظام Unixstyle وعملية منفصلة.
- [C-0-2] يجب أن يتيح تشغيل تطبيقات متعددة برقم تعريف مستخدم Linux نفسه، بشرط أن يتم توقيع التطبيقات وإنشائها بشكل صحيح، على النحو المحدّد في مرجع الأمان والأذونات.
9.3. أذونات نظام الملفات
عمليات تنفيذ الأجهزة:
- [C-0-1] يجب أن يتوافق مع نموذج أذونات الوصول إلى الملفات في Android على النحو المحدّد في مرجع الأمان والأذونات.
9.4. بيئات التنفيذ البديلة
يجب أن تحافظ عمليات تنفيذ الأجهزة على اتساق نموذج الأذونات والأمان في Android، حتى إذا كانت تتضمّن بيئات وقت تشغيل تنفِّذ تطبيقات باستخدام بعض البرامج أو التكنولوجيا الأخرى بخلاف تنسيق Dalvik التنفيذي أو الرمز البرمجي الأصلي. معنى هذا التعديل:
-
[C-0-1] يجب أن تكون أوقات التشغيل البديلة تطبيقات Android بحد ذاتها، وأن تلتزم بنموذج الأمان العادي لنظام التشغيل Android، كما هو موضّح في قسم آخر في القسم 9.
-
[C-0-2] يجب عدم منح أوقات التشغيل البديلة الإذن بالوصول إلى الموارد المحمية بأذونات غير مطلوبة في ملف
AndroidManifest.xml
الخاص ببيئة التشغيل باستخدام الآلية <uses-permission
>. -
[C-0-3] يجب ألا تسمح أوقات التشغيل البديلة للتطبيقات باستخدام الميزات المحمية بواسطة أذونات Android التي تقتصر على تطبيقات النظام.
-
[C-0-4] يجب أن تلتزم أوقات التشغيل البديلة بنموذج وضع الحماية لنظام التشغيل Android، ويجب ألا تعيد التطبيقات المثبَّتة التي تستخدم بيئة تشغيل بديلة استخدام وضع الحماية لأي تطبيق آخر مثبَّت على الجهاز إلا من خلال آليات Android العادية لرقم تعريف المستخدم المشترك وشهادة التوقيع.
-
[C-0-5] يجب عدم تشغيل بيئات التشغيل البديلة مع أوضاع الحماية المقابلة لتطبيقات Android الأخرى أو منحها أو منحها إذن الوصول إليها.
-
[C-0-6] يجب عدم إطلاق بيئات التشغيل البديلة مع التطبيقات الأخرى أو منحها أو منحها أي امتيازات للمستخدم المميّز (الجذر) أو أي رقم تعريف مستخدم آخر.
-
[C-0-7] عند تضمين ملفات
.apk
لبيئات التشغيل البديلة في صورة النظام لعمليات تنفيذ الأجهزة، يجب توقيعها بمفتاح مختلف عن المفتاح المستخدَم لتوقيع التطبيقات الأخرى المضمّنة في عمليات تنفيذ الأجهزة. -
[C-0-8] عند تثبيت التطبيقات، يجب أن تحصل أوقات التشغيل البديلة على موافقة المستخدم على أذونات Android التي يستخدمها التطبيق.
-
[C-0-9] عندما يحتاج أحد التطبيقات إلى استخدام مورد جهاز يتوفّر له إذن Android مقابل له (مثل الكاميرا أو نظام تحديد المواقع العالمي (GPS) أو غير ذلك)، يجب أن تُعلِم بيئة التشغيل البديلة المستخدم بتمكّن التطبيق من الوصول إلى هذا المورد.
-
[C-0-10] عندما لا تسجِّل بيئة التشغيل إمكانيات التطبيق بهذه الطريقة، يجب أن تسرد بيئة التشغيل جميع الأذونات التي تحتفظ بها بيئة التشغيل نفسها عند تثبيت أي تطبيق يستخدم بيئة التشغيل تلك.
-
"يجب أن يتم تثبيت التطبيقات في بيئات التشغيل البديلة من خلال
PackageManager
في أوضاع حماية منفصلة لنظام التشغيل Android (أرقام تعريف مستخدمي Linux، وما إلى ذلك). -
قد توفّر بيئات التشغيل البديلة وضع حماية واحد على Android تتم مشاركته بين جميع التطبيقات التي تستخدم بيئة التشغيل البديلة.
9.5. دعم عدة مستخدمين
يشمل نظام التشغيل Android إمكانية استخدام عدة مستخدمين ودعمًا لعزل المستخدمين بشكل كامل.
- قد تتم عمليات تنفيذ الأجهزة ولكن من المفترض ألا يتم تفعيل ميزة تعدد المستخدمين إذا كانت تستخدم وسائط قابلة للإزالة لتخزينها الخارجية الأساسية.
إذا كانت عمليات تنفيذ الأجهزة تشمل مستخدمين متعددين، سيتم إجراء ما يلي:
- يجب أن يستوفي [C-1-1] المتطلبات التالية المتعلّقة بإتاحة إمكانية تعدد المستخدمين.
- [C-1-2] يجب أن يستخدم كل مستخدم نموذج أمان يتوافق مع نموذج أمان نظام Android الأساسي على النحو المحدّد في المستند المرجعي للأمان والأذونات في واجهات برمجة التطبيقات.
- يجب أن يحتوي [C-1-3] على أدلة منفصلة ومعزولة لتخزين التطبيقات المشتركة (المعروفة أيضًا باسم
/sdcard
) لكل مثيل مستخدم. - [C-1-4] يجب أن يتأكّد من أنّ التطبيقات التي يملكها مستخدم معيّن وتشغّله نيابةً عنه لا يمكنها إدراج الملفات التي يملكها أيّ مستخدم آخر أو قراءتها أو الكتابة فيها، حتى في حال تخزين بيانات كلا المستخدمَين في وحدة التخزين أو نظام الملفات نفسه.
- [C-1-5] يجب تشفير محتوى بطاقة SD عند تفعيل ميزة المستخدمين المتعددين باستخدام مفتاح مخزَّن فقط على وسائط غير قابلة للإزالة لا يمكن للنظام الوصول إليها إلا إذا كانت عمليات تنفيذ الأجهزة تستخدم وسائط قابلة للإزالة لواجهات برمجة تطبيقات التخزين الخارجي. ولأن ذلك سيجعل الوسائط غير قابلة للقراءة بواسطة كمبيوتر شخصي مضيف، سيتطلب ذلك عمليات تنفيذ الأجهزة للتبديل إلى بروتوكول نقل الوسائط (MTP) أو نظام مشابه لتوفير إمكانية الوصول إلى بيانات المستخدم الحالي في أجهزة الكمبيوتر المضيفة.
إذا كانت عمليات تنفيذ الأجهزة تشمل مستخدمين متعددين ولم يتم الإعلان عن علامة ميزة android.hardware.telephony
، ينطبق عليهم ما يلي:
- [C-2-1] يجب أن تتوافق مع الملفات الشخصية المحظورة، وهي ميزة تتيح لمالكي الأجهزة إدارة المستخدمين الإضافيين وإمكانياتهم على الجهاز. باستخدام الملفات الشخصية المقيّدة، يمكن لمالكي الأجهزة إعداد بيئات منفصلة بسرعة لكي يعمل فيها مستخدمون إضافيون، مع إمكانية إدارة القيود الأكثر دقة في التطبيقات المتاحة في تلك البيئات.
إذا كانت عمليات تنفيذ الأجهزة تشمل عدة مستخدمين وأعلنت علامة ميزة android.hardware.telephony
، سيتم إجراء ما يلي:
- [C-3-1] يجب ألا يتيح استخدام الملفات الشخصية المحظورة ولكن يجب أن يتوافق مع تنفيذ AOSP لعناصر التحكّم لتفعيل /إيقاف المستخدمين الآخرين من الوصول إلى المكالمات الصوتية والرسائل القصيرة SMS.
9.6. تحذير بشأن الرسائل القصيرة برسوم إضافية
يتيح Android تحذير المستخدمين من أي رسالة SMS مميّزة صادرة. الرسائل القصيرة برسوم إضافية هي رسائل نصية يتم إرسالها إلى خدمة مسجّلة لدى مشغّل شبكة الجوّال وقد تفرض رسومًا على المستخدم.
إذا أوضحت عمليات تنفيذ الأجهزة أنّها متوافقة مع "android.hardware.telephony
"، سينفّذ ما يلي:
- [C-1-1] يجب تحذير المستخدمين قبل إرسال رسالة قصيرة SMS إلى الأرقام التي تم تحديدها من خلال التعبيرات العادية المحددة في ملف
/data/misc/sms/codes.xml
على الجهاز. يوفّر "المشروع المفتوح المصدر لنظام Android" عملية تنفيذ تستوفي هذا الشرط.
9.7. ميزات أمان Kernel
يتضمن "وضع الحماية لنظام التشغيل Android" ميزات تستخدم نظام التحكم الإلزامي في الوصول (MAC) المحسَّن للأمان (SELinux)، ووضع الحماية seccomp، وميزات الأمان الأخرى في نواة Linux. عمليات تنفيذ الأجهزة:
- [C-0-1] يجب الحفاظ على التوافق مع التطبيقات الحالية، حتى عند تنفيذ نظام التشغيل SELinux أو أي ميزات أمان أخرى تحت إطار عمل Android.
- [C-0-2] يجب ألا يكون له واجهة مستخدم مرئية عند رصد انتهاك أمني وحظره بنجاح من خلال ميزة الأمان المنفَّذة أسفل إطار عمل Android، ولكن قد تظهر واجهة مستخدم مرئية عند حدوث انتهاك أمني غير محظور أدى إلى نجاح الاستغلال.
- [C-0-3] يجب ألا تجعل SELinux أو أي ميزات أمان أخرى تم تنفيذها أسفل إطار عمل Android قابلة للتهيئة للمستخدم أو مطوّر التطبيق.
- [C-0-4] يجب ألا يسمح لتطبيق يمكن أن يؤثر على تطبيق آخر من خلال واجهة برمجة التطبيقات (مثل واجهة برمجة التطبيقات لإدارة الأجهزة) في ضبط سياسة تنتهك التوافق.
- يجب أن يقسّم [C-0-5] إطار عمل الوسائط إلى عمليات متعددة ليكون من الممكن منح إذن الوصول بشكل أكثر تحديدًا لكل عملية على النحو الموضّح في موقع "مشروع مفتوح المصدر لنظام Android".
- يجب أن ينفذ [C-0-6] آلية وضع حماية لتطبيق kernel تسمح بتصفية اتصالات النظام باستخدام سياسة قابلة للتهيئة من البرامج المتعددة السلاسل. يلبي "المشروع المفتوح المصدر لنظام Android" هذا الشرط من خلال تفعيل seccomp-BPF بمزامنة سلسلة المحادثات (TSYNC) كما هو موضَّح في قسم "ضبط النواة" على source.android.com.
تعتبر ميزات السلامة والحماية الذاتية في Kernel جزءًا لا يتجزأ من أمان Android. عمليات تنفيذ الأجهزة:
- [C-0-7] يجب تنفيذ إجراءات الحماية من تجاوز سعة المخزن المؤقت لحزمة kernel (مثل
CONFIG_CC_STACKPROTECTOR_STRONG
). - [C-0-8] يجب تنفيذ إجراءات حماية صارمة في ذاكرة النواة عندما يكون الرمز البرمجي القابل للتنفيذ للقراءة فقط، وتكون البيانات للقراءة فقط غير قابلة للتنفيذ وغير قابلة للكتابة، والبيانات القابلة للكتابة غير قابلة للتنفيذ (مثل
CONFIG_DEBUG_RODATA
أوCONFIG_STRICT_KERNEL_RWX
). - [SR] يُنصَح بشدة بالاحتفاظ ببيانات kernel التي تتم كتابتها فقط أثناء وضع علامة للقراءة فقط بعد الإعداد (مثل
__ro_after_init
). - [SR} يُنصح بشدة بتنفيذ التحقّق من حدود حجم الكائن الثابت والديناميكي في النُسخ بين مساحة المستخدم ومسافة kernel (مثل
CONFIG_HARDENED_USERCOPY
). - [SR] يُنصَح بشدة بعدم تنفيذ ذاكرة مساحة المستخدم مطلقًا عند التشغيل في النواة (مثل PXN للأجهزة، أو التي تتم محاكاتها عبر
CONFIG_CPU_SW_DOMAIN_PAN
أوCONFIG_ARM64_SW_TTBR0_PAN
). - [SR] يُنصَح بشدة بعدم قراءة أو كتابة ذاكرة مساحة المستخدم في النواة خارج واجهات برمجة التطبيقات للوصول العادي إلى نسخة المستخدم (مثل رقم PAN للأجهزة، أو في حال تمّت محاكاتها عبر
CONFIG_CPU_SW_DOMAIN_PAN
أوCONFIG_ARM64_SW_TTBR0_PAN
) - [SR] يُنصَح بشدة بإجراء ترتيب عشوائي لتنسيق الرمز البرمجي والذاكرة والنواة، وتجنُّب حالات التعرّض التي قد تؤدي إلى الإضرار بالتوزيع العشوائي (على سبيل المثال،
CONFIG_RANDOMIZE_BASE
مع قصور برنامج الإقلاع من خلال/chosen/kaslr-seed Device Tree node
أوEFI_RNG_PROTOCOL
).
إذا كانت عمليات تنفيذ الأجهزة تستخدم نواة Linux، فإنها:
- [C-1-1] يجب تنفيذ SELinux.
- [C-1-2] يجب تعيين SELinux على وضع الفرض العام.
- [C-1-3] يجب إعداد جميع النطاقات في وضع الفرض. ولا يُسمح بالنطاقات الخاصة بوضع التساهل، بما في ذلك النطاقات الخاصة بجهاز أو مورِّد.
- [C-1-4] يجب ألا يجري تعديل أو حذف أو استبدال قواعد findallow الموجودة في مجلد System/sepolicy المقدَّم في "مشروع مفتوح المصدر لنظام Android" (AOSP) والسياسة يجب أن يتم تجميعها مع جميع القواعد "Neverallow" (عدم السماح أبدًا) لنطاقات AOSP SELinux والنطاقات الخاصة بالأجهزة/المورّدين.
- "يجب أن" يتم الاحتفاظ بسياسة SELinux التلقائية المتوفّرة في مجلد system/sepolicy ضمن "المشروع المفتوح المصدر لنظام Android" الرئيسي وإضافة المزيد من هذه السياسة إلى هذه السياسة من أجل عملية الإعداد الخاصة بالجهاز.
في حال كانت عمليات تنفيذ الأجهزة تستخدم kernel بخلاف نظام Linux، سيتم ما يلي:
- [C-2-1] يجب استخدام نظام تحكم إلزامي في الوصول يعادل نظام SELinux.
9.8. الخصوصية
9.8.1. سجلّ الاستخدام
يخزِّن Android سجلّ خيارات المستخدم ويدير هذا السجلّ من خلال UsageStatsManager.
عمليات تنفيذ الأجهزة:
- [C-1-1] يجب أن يحتفظ بفترة احتفاظ معقولة بسجلّ المستخدمين هذا.
- [SR] يُنصَح بشدة بالاحتفاظ بفترة الاحتفاظ بالبيانات التي تبلغ 14 يومًا وفقًا للإعدادات التلقائية في عملية تنفيذ بروتوكول AOSP.
9.8.2. يتم التسجيل
إذا كانت عمليات تنفيذ الأجهزة تتضمّن وظائف في النظام تسجِّل المحتوى المعروض على الشاشة و/أو تسجِّل البث الصوتي الذي يتم تشغيله على الجهاز، سيتم اتخاذ الإجراءات التالية:
- يجب أن يتلقّى [C-1-1] إشعارًا مستمرًا للمستخدم عند تفعيل هذه الوظيفة والتسجيل أو التسجيل بشكل نشط.
إذا كانت عمليات تنفيذ الأجهزة تتضمّن مكوّنًا غير مفعَّل، مع إمكانية تسجيل الصوت المحيط لاستنتاج معلومات مفيدة حول سياق المستخدم، سيتم إجراء ما يلي:
- يجب ألا يخزّن [C-2-1] في مساحة تخزين دائمة على الجهاز أو ينقل خارج الجهاز الصوت الأولي المسجّل أو أي تنسيق يمكن تحويله مرة أخرى إلى الصوت الأصلي أو إلى صورة فاكس قريبة من الجهاز، إلا بموافقة صريحة من المستخدم.
9.8.3. إمكانية الاتصال
إذا كانت عمليات تنفيذ الأجهزة تحتوي على منفذ USB يتوافق مع وضع أجهزة USB الطرفية، سيتم إجراء ما يلي:
- [C-1-1] يجب أن يعرض واجهة مستخدم تطلب موافقة المستخدم قبل السماح بالوصول إلى محتوى مساحة التخزين المشتركة عبر منفذ USB.
9.8.4. حركة بيانات الشبكة
عمليات تنفيذ الأجهزة:
- يجب تثبيت شهادات الجذر نفسها مسبقًا لمتجر مرجع التصديق (CA) الموثوق به من قِبل النظام كما هو مُقدَّم في المشروع المفتوح المصدر لنظام Android الأساسي [C-0-1].
- [C-0-2] يجب شحنه مع متجر CA جذر مستخدم فارغ.
- [C-0-3] يجب أن يعرض تحذيرًا للمستخدم يشير إلى احتمال مراقبة حركة بيانات الشبكة، عند إضافة مرجع تصديق جذر للمستخدم.
في حال توجيه حركة بيانات الأجهزة من خلال شبكة VPN، ستنطبق عمليات تنفيذ الأجهزة على ما يلي:
- [C-1-1] يجب أن يعرض تحذيرًا للمستخدم يشير إلى:
- قد تتم مراقبة حركة بيانات الشبكة.
- ويتم توجيه حركة بيانات الشبكة هذه عبر تطبيق VPN المحدد الذي يوفر شبكة VPN.
إذا كانت عمليات تنفيذ الأجهزة تتضمّن آلية، تكون مفعّلة تلقائيًا وفقًا للإعدادات التلقائية، تعمل على توجيه حركة بيانات الشبكة من خلال خادم وكيل أو بوابة شبكة VPN (على سبيل المثال، التحميل المُسبق لخدمة VPN بعد منح android.permission.CONTROL_VPN
) ما يلي:
- [C-2-1] يجب أن يطلب موافقة المستخدم قبل تفعيل هذه الآلية، ما لم يتم تفعيل شبكة VPN من خلال "وحدة التحكّم بسياسة الجهاز" عبر
DevicePolicyManager.setAlwaysOnVpnPackage()
، وفي هذه الحالة لا يحتاج المستخدم إلى تقديم موافقة منفصلة، ولكن يجب إشعاره فقط.
إذا كانت عمليات تنفيذ الأجهزة تسمح للمستخدم بالتبديل إلى وظيفة "شبكة افتراضية خاصة (VPN) قيد التشغيل دائمًا" لتطبيق شبكة VPN تابع لجهة خارجية، سيتم إجراء ما يلي:
- [C-3-1] يجب إيقاف إمكانية توفير هذا المستخدم على التطبيقات التي لا توفِّر خدمة شبكة VPN قيد التشغيل دائمًا في ملف
AndroidManifest.xml
من خلال ضبط سمةSERVICE_META_DATA_SUPPORTS_ALWAYS_ON
علىfalse
.
9.9. تشفير مساحة تخزين البيانات
إذا كانت عمليات تنفيذ الأجهزة توفّر شاشة قفل آمنة كما هو موضّح في القسم 9.11.1، سيسري ما يلي:
- [C-1-1] يجب أن يدعم تشفير تخزين البيانات للبيانات الخاصة للتطبيق (
/data partition
)، بالإضافة إلى قسم مساحة التخزين المشتركة في التطبيق (/sdcard partition
) إذا كان جزءًا دائمًا غير قابل للإزالة من الجهاز.
إذا كانت عمليّات تنفيذ الأجهزة توفّر شاشة قفل آمنة كما هو موضّح في القسم 9.11.1 وكانت تتيح تشفير تخزين البيانات بأداء التشفير المتقدّم (AES) الذي يزيد عن 50 ميغا بايت في الثانية، ينطبق ما يلي:
-
[C-2-1] يجب تفعيل تشفير تخزين البيانات تلقائيًا عندما يكمل المستخدم تجربة الإعداد بطريقة غير تقليدية. إذا سبق أن تم إطلاق عمليات تنفيذ الأجهزة على إصدار سابق من Android مع إيقاف التشفير تلقائيًا، لن يتمكّن هذا الجهاز من استيفاء هذا الشرط من خلال تحديث برامج النظام، وبالتالي قد يتم استثناءه.
-
أن تستوفي متطلبات تشفير تخزين البيانات المذكورة أعلاه من خلال تنفيذ ميزة التشفير المستند إلى الملف (FBE).
9.9.1. التشغيل المباشر
عمليات تنفيذ الأجهزة:
-
[C-0-1] يجب أن تنفذ واجهات برمجة تطبيقات وضع التشغيل المباشر حتى إذا لم تكن تدعم تشفير مساحة التخزين.
-
[C-0-2] لا يزال من المطلوب بث هدفَي
ACTION_LOCKED_BOOT_COMPLETED
وACTION_USER_UNLOCKED
لإرسال إشارة إلى تطبيقات تستنِد إلى ميزة "التشغيل المباشر" تشير إلى أنّ مواقع التخزين في وضع تشفير الجهاز (DE) وتشفير بيانات الاعتماد (CE) متاحة للمستخدم.
9.9.2. التشفير المستنِد إلى الملفات
في حال توافق عمليات تنفيذ الأجهزة مع FBE، سيتم إجراء ما يلي:
- يجب بدء تشغيل [C-1-1] بدون تحدي المستخدم في ما يتعلق ببيانات الاعتماد والسماح للتطبيقات التي تستنِد إلى ميزة "التشغيل المباشر" بالوصول إلى مساحة تخزين الجهاز المشفر (DE) بعد بث رسالة
ACTION_LOCKED_BOOT_COMPLETED
. - [C-1-2] يجب عدم السماح بالوصول إلى مساحة تخزين بيانات الاعتماد المشفّرة (CE) إلا بعد أن يفتح المستخدم قفل الجهاز عن طريق تقديم بيانات الاعتماد (مثل رمز المرور أو رقم التعريف الشخصي أو النقش أو بصمة الإصبع) وبث رسالة
ACTION_USER_UNLOCKED
. - [C-1-3] يجب ألا يوفر أي طريقة لإلغاء قفل وحدة التخزين المحمية بموجب CE بدون بيانات الاعتماد التي يوفرها المستخدم.
- [C-1-4] يجب أن يتوافق مع "التشغيل المتحقّق منه" والتأكّد من أنّ مفاتيح DE مرتبطة بالتشفير بجذر ثقة جهاز الجهاز.
- [C-1-5] يجب أن يتيح تشفير محتوى الملف باستخدام معيار التشفير المتقدّم (AES) مع طول مفتاح يبلغ 256 بت في وضع XTS.
-
[C-1-6] يجب أن يتيح تشفير اسم الملف باستخدام AES مع مفتاح بطول 256 بت في وضع CBC-CTS.
-
المفاتيح التي تحمي منطقتَي التخزين CE وDE:
-
[C-1-7] يجب أن يكون مرتبطًا بالتشفير بوحدة تخزين مفاتيح مدعومة بالأجهزة.
- [C-1-8] يجب ربط مفاتيح CE ببيانات اعتماد شاشة القفل لدى المستخدم.
- [C-1-9] يجب ربط مفاتيح CE برمز مرور تلقائي في حال عدم تحديد المستخدم بيانات اعتماد شاشة القفل.
-
[C-1-10] يجب أن يكون فريدًا ومتميزًا، أي أنّ مفتاح CE أو DE لا يتطابق مع أي مفتاح CE أو DE لأي مستخدم آخر.
-
"يجب" أن تكون التطبيقات الأساسية المُحمَّلة مسبقًا (مثل المنبّه والهاتف والمراسلة) متوافقة مع ميزة "التشغيل المباشر".
- قد يتيح استخدام رموز بديلة وأطوال المفاتيح وأوضاعها لمحتوى الملف وتشفير اسم الملف، ولكن يجب أن يستخدم تلقائيًا أنواع التشفير وأطوال المفاتيح والأوضاع المتوافقة بشكل إلزامي.
يوفّر مشروع برنامج مفتوح المصدر لنظام Android التنفيذ المفضّل لهذه الميزة استنادًا إلى ميزة تشفير Linux kernel ext4.
9.9.3. تشفير القرص الكامل
إذا كانت عمليات تنفيذ الأجهزة تتيح تشفير الأقراص الكاملة (FDE)، سيتم إجراء ما يلي:
- يجب أن يستخدم [C-1-1] معيار AES مع مفتاح بحجم 128 بت (أو أكثر) ووضع مصمَّم للتخزين (مثل AES-XTS أو AES-CBC-ESSIV).
- [C-1-2] يجب استخدام رمز مرور تلقائي لإدخال مفتاح التشفير، ويجب ألا يتم إدخال مفتاح التشفير في مساحة التخزين في أي وقت بدون أن يتم تشفيره.
- [C-1-3] يجب أن يشفر تشفير AES مفتاح التشفير تلقائيًا ما لم يوقِف المستخدم ذلك صراحةً إلا عندما يكون قيد الاستخدام النشط، مع زيادة بيانات اعتماد شاشة القفل باستخدام خوارزمية تمديد بطيئة (مثل PBKDF2 أو scrypt).
- [C-1-4] يجب ربط خوارزمية تمديد كلمة المرور التلقائية المذكورة أعلاه بملف تخزين المفاتيح هذا بطريقة مشفّرة في حال لم يحدّد المستخدم بيانات اعتماد شاشة القفل أو أوقف استخدام رمز المرور للتشفير وكان الجهاز يوفّر ملف تخزين مفاتيح مستنِد إلى الجهاز.
- [C-1-5] يجب ألا يتم إرسال مفتاح التشفير خارج الجهاز (حتى عند لفّه برمز مرور المستخدم و/أو مفتاح مرتبط بالجهاز).
يوفر المشروع المفتوح المصدر لنظام Android التنفيذ الأمثل لهذه الميزة، استنادًا إلى ميزة نواة في Linux وهي dm-crypt.
9.10. سلامة الجهاز
تضمن المتطلبات التالية الشفافية في حالة سلامة الجهاز. عمليات تنفيذ الأجهزة:
- [C-0-1] يجب أن يبلغ بشكل صحيح من خلال طريقة System API
PersistentDataBlockManager.getFlashLockState()
ما إذا كانت حالة برنامج الإقلاع تسمح بوميض صورة النظام. حالةFLASH_LOCK_UNKNOWN
محجوزة لترقية عمليات تنفيذ الأجهزة من إصدار سابق من Android حيث لا تتوفّر طريقة واجهة برمجة تطبيقات النظام الجديدة هذه.
"التشغيل المتحقّق منه" هو ميزة تضمن سلامة برامج الجهاز. إذا كان الجهاز يتيح هذه الميزة، يعني ذلك ما يلي:
- [C-1-1] يجب أن يعلن عن علامة ميزة المنصة
android.software.verified_boot
. - [C-1-2] يجب إجراء التحقق في كل تسلسل تمهيد.
- [C-1-3] يجب أن يبدأ إجراء عملية إثبات الهوية من مفتاح جهاز غير قابل للتغيير يشكّل أساس الثقة ويصل إلى قسم النظام.
- [C-1-4] يجب تنفيذ كل مرحلة من مراحل التحقّق للتحقق من صحة ومصداقية جميع وحدات البايت في المرحلة التالية قبل تنفيذ الرمز البرمجي في المرحلة التالية.
- [C-1-5] يجب أن يستخدم خوارزميات التحقق فعالية الاقتراحات الحالية الصادرة عن المعهد الوطني للمعايير والتكنولوجيا (NIST) بشأن خوارزميات التجزئة (SHA-256) وأحجام المفاتيح العامة (RSA-2048).
- [C-1-6] يجب ألا يسمح بإكمال التمهيد عند تعذُّر التحقق من النظام، ما لم يوافق المستخدم على محاولة التشغيل على أي حال، وفي هذه الحالة يجب عدم استخدام البيانات من أي مجموعات تخزين لم يتم التحقق منها.
- [C-1-7] يجب ألا يسمح بتعديل الأقسام التي تم التحقّق منها على الجهاز ما لم يفتح المستخدم قفل برنامج الإقلاع بشكل صريح.
- [SR] في حال توفّر عدة شرائح منفصلة في الجهاز (مثل الراديو أو معالج الصور المتخصص)، يُنصَح بشدة بإجراء عملية تشغيل لكل شريحة من هذه الشرائح للتحقّق من كل مرحلة عند التشغيل.
- [SR] يُنصح بشدة باستخدام مساحة التخزين التي تظهر التلاعب في البيانات: عند فتح قفل برنامج الإقلاع. تعني مساحة التخزين التي يظهر فيها التلاعب بنظام التشغيل Android أنّه بإمكان برنامج الإقلاع اكتشاف ما إذا كان قد تم التلاعب بوحدة التخزين من داخل نظام التشغيل العالي المستوى (HLOS).
- [SR] يُنصَح بشدة بمطالبة المستخدم أثناء استخدام الجهاز، وكذلك طلب تأكيد مادي قبل السماح بالانتقال من وضع قفل برنامج الإقلاع إلى وضع فتح قفل برنامج الإقلاع.
- [SR] يُنصَح بشدة بتنفيذ الحماية من العودة إلى الحالة السابقة لبروتوكول HLOS (مثل التشغيل وأقسام النظام) واستخدام مساحة التخزين التي تظهر عند رصد التلاعب لتخزين البيانات الوصفية المستخدَمة لتحديد الحد الأدنى المسموح به لإصدار نظام التشغيل.
- يجب تنفيذ الحماية من العودة إلى الحالة السابقة لأي مكوّن يتضمّن برامج ثابتة دائمة (مثل المودم والكاميرا)، كما يجب استخدام مساحة تخزين تظهر عند رصد التلاعب لكي يتم تخزين البيانات الوصفية المستخدَمة لتحديد الحد الأدنى المسموح به للإصدار.
يوفّر "المشروع المفتوح المصدر لنظام Android" التطبيقي المفضَّل لهذه الميزة في مستودع external/avb/
، والذي يمكن دمجه في برنامج الإقلاع المستخدَم لتحميل Android.
إذا كانت عمليات تنفيذ الأجهزة تُبلغ عن علامة الميزة android.hardware.ram.normal
، سيتم ما يلي:
- [C-2-1] يجب أن يتوافق مع التشغيل المتحقَّق منه لسلامة الجهاز.
إذا سبق تشغيل تنفيذ الجهاز بدون دعم التشغيل المتحقَّق منه على إصدار سابق من Android، لن يتمكّن هذا الجهاز من إضافة دعم لهذه الميزة من خلال تحديث برنامج النظام، وبالتالي يتم استثناءه من هذا المطلب.
9.11. المفاتيح وبيانات الاعتماد
يسمح نظام ملف تخزين مفاتيح Android لمطوّري التطبيقات بتخزين مفاتيح التشفير في حاوية واستخدامها في عمليات التشفير من خلال واجهة برمجة تطبيقات KeyChain أو واجهة برمجة تطبيقات Keystore. عمليات تنفيذ الأجهزة:
- [C-0-1] يجب أن يسمح على الأقل باستيراد أكثر من 8192 مفتاحًا.
- [C-0-2] يجب أن تحتوي مصادقة شاشة القفل على محاولات للحدّ من معدّل الزحف، كما يجب أن تتضمّن خوارزمية تراجع هائلة. ولتجاوز 150 محاولة فاشلة، يجب أن يكون التأخير 24 ساعة على الأقل لكل محاولة.
- يجب ألا يضع حدًا لعدد المفاتيح التي يمكن إنشاؤها.
عندما يكون تنفيذ الجهاز متوافقًا مع شاشة قفل آمنة:
- [C-1-1] يجب الاحتفاظ بنسخة احتياطية من تنفيذ ملف تخزين المفاتيح باستخدام أجهزة آمنة.
- يجب أن يتضمن [C-1-2] تطبيقات لخوارزميات التشفير RSA وAES وECDSA وHMAC، بالإضافة إلى وظائف التجزئة MD5 وSHA1 وSHA-2 للتوافق بشكل مناسب مع الخوارزميات المتوافقة مع نظام Android Keystore في منطقة معزولة بشكل آمن عن الرمز الذي يعمل على النواة والإصدارات الأحدث. يجب أن تحظر ميزة العزل الآمن جميع الآليات المحتملة التي من خلالها قد يصل رمز النواة أو رمز مساحة المستخدم إلى الحالة الداخلية للبيئة المعزولة، بما في ذلك قانون الأسواق الرقمية. يفي "المشروع المفتوح المصدر لنظام Android" (AOSP) بهذا الشرط من خلال استخدام تنفيذ Trusty، إلا أنّ الخيارات البديلة المتاحة هي أحد الحلول الأخرى المستندة إلى ARM TrustZone أو إحدى الجهات الخارجية التي تمت مراجعتها وفقًا لعزلة مناسبة تستند إلى برنامج Hypervisor (مراقب الأجهزة الظاهرية).
- يجب إجراء مصادقة شاشة القفل في بيئة التنفيذ المعزولة [C-1-3] والسماح باستخدام المفاتيح المرتبطة بالمصادقة فقط. يجب تخزين بيانات اعتماد شاشة القفل بطريقة تسمح فقط لبيئة التنفيذ المعزولة بإجراء مصادقة شاشة القفل. يوفّر "المشروع المفتوح المصدر لنظام Android" الرئيسي طبقة استخلاص أجهزة Gatekeeper ونظام Trusty، واللذَين يمكن استخدامهما لاستيفاء هذا الشرط.
- [C-1-4] يجب أن يتيح مصادقة المفتاح حيث يكون مفتاح توقيع المصادقة محميًا باستخدام أجهزة آمنة ويتم التوقيع في أجهزة آمنة. يجب مشاركة مفاتيح توقيع المصادقة على عدد كبير من الأجهزة لمنع استخدام المفاتيح كمعرّفات للأجهزة. تتمثل إحدى طرق استيفاء هذا الشرط في مشاركة مفتاح المصادقة نفسه ما لم يتم إنتاج 100,000 وحدة على الأقل من رمز تخزين تعريفي معيّن. في حال إنتاج أكثر من 100,000 وحدة من رمز التخزين التعريفي، قد يتم استخدام مفتاح مختلف لكل 100,000 وحدة.
ملاحظة: إذا سبق أن تم إطلاق تطبيق على جهاز يعمل بإصدار Android سابق، سيتم استثناء هذا الجهاز من متطلّبات توفُّر ملف تخزين مفاتيح مستنِد إلى الجهاز، إلا إذا تم توضيح ميزة android.hardware.fingerprint
التي تتطلّب استخدام ملف تخزين مفاتيح مستنِد إلى الجهاز.
9.11.1. شاشة القفل الآمنة
إذا كانت عمليات تنفيذ الأجهزة تحتوي على شاشة قفل آمنة وتتضمن وكيلاً موثوقًا واحدًا أو أكثر يستخدم TrustAgentService
System API، عندها:
- يجب أن يشير [C-1-1] إلى المستخدم في واجهة المستخدم في "الإعدادات" و"شاشة القفل" في الحالات التي يتم فيها تأجيل قفل الشاشة تلقائيًا أو إتاحة إمكانية فتح قفل الشاشة بواسطة الوكيل المعتمد. تستوفي ميزة AOSP الشرط من خلال عرض وصف نصي لقائمتي "إعداد القفل تلقائيًا" و "زر التشغيل يقفل الإعدادات على الفور" ورمز مميز على شاشة القفل.
- يجب أن يلتزم [C-1-2] بجميع واجهات برمجة التطبيقات للوكيل الموثوق به وينفّذها بالكامل في الفئة
DevicePolicyManager
، مثل ثابتKEYGUARD_DISABLE_TRUST_AGENTS
. - [C-1-3] يجب ألا يتم تنفيذ الوظيفة
TrustAgentService.addEscrowToken()
بشكل كامل على جهاز يُستخدم كجهاز شخصي أساسي (مثل محمول باليد)، ولكن قد يتم تنفيذ الوظيفة بالكامل على الأجهزة التي تتم مشاركتها عادةً. - [C-1-4] يجب أن يشفِّر الرموز المميّزة التي أضافها
TrustAgentService.addEscrowToken()
قبل تخزينها على الجهاز. - [C-1-5] يجب ألا يتم تخزين مفتاح التشفير على الجهاز.
- [C-1-6] يجب أن يُبلغ المستخدم بتداعيات الأمان قبل تفعيل الرمز المميّز للضمان لفك تشفير مساحة تخزين البيانات.
إذا كانت عمليات تنفيذ الأجهزة تضيف طرق المصادقة أو تعدلها لفتح قفل شاشة القفل، سيتم التعامل مع طريقة المصادقة هذه على أنها طريقة آمنة لقفل الشاشة:
- يجب أن يكون [C-2-1] هو طريقة مصادقة المستخدم كما هو موضّح في طلب مصادقة المستخدم لاستخدام المفتاح.
- [C-2-2] يجب فتح قفل جميع المفاتيح الخاصة بتطبيق مطوِّر تابع لجهة خارجية لاستخدامها عندما يفتح المستخدم قفل شاشة القفل الآمنة. على سبيل المثال، يجب أن تكون جميع المفاتيح متاحة لتطبيق مطوِّر تابع لجهة خارجية من خلال واجهات برمجة التطبيقات ذات الصلة، مثل
createConfirmDeviceCredentialIntent
وsetUserAuthenticationRequired
.
إذا كانت عمليات تنفيذ الأجهزة تضيف طرق المصادقة أو تعدلها لفتح قفل شاشة القفل إذا كانت تستند إلى سر معروف، عندها يتم التعامل مع طريقة المصادقة هذه باعتبارها طريقة آمنة لقفل الشاشة:
- [C-3-1] يجب أن يكون قصور أقصر طول مسموح به للمدخلات أكبر من 10 بت.
- [C-3-2] يجب أن يكون الحد الأقصى لقصور جميع الإدخالات المحتملة أكبر من 18 بت.
- [C-3-3] يجب ألا يحلّ محلّ أي من طرق المصادقة الحالية (رقم التعريف الشخصي أو النقش أو كلمة المرور) التي تم تنفيذها وتقديمها في AOSP.
- [C-3-4] يجب أن يتم إيقافه عندما يضبط تطبيق "وحدة التحكّم بسياسة الجهاز" (DPC) سياسة جودة كلمة المرور عبر طريقة
DevicePolicyManager.setPasswordQuality()
باستخدام ثابت جودة أكثر تقييدًا منPASSWORD_QUALITY_SOMETHING
.
إذا كانت عمليات تنفيذ الأجهزة تضيف طرق المصادقة لفتح قفل شاشة القفل أو عدّلتها إذا كانت تستند إلى رمز مميّز مادي أو الموقع الجغرافي، عند التعامل مع طريقة المصادقة هذه على أنّها طريقة آمنة لقفل الشاشة، سيتم إجراء ما يلي:
- يجب أن تتوفّر في [C-4-1] آلية احتياطية لاستخدام إحدى طرق المصادقة الأساسية التي تستند إلى مفتاح سرّي معروف وتفي بالمتطلبات ليتم التعامل معها على أنّها شاشة قفل آمنة.
- [C-4-2] يجب أن يتم إيقافها والسماح للمصادقة الأساسية بفتح قفل الشاشة فقط عندما يضبط تطبيق وحدة التحكّم بسياسة الجهاز (DPC) هذه السياسة إما باستخدام طريقة
DevicePolicyManager.setKeyguardDisabledFeatures(KEYGUARD_DISABLE_TRUST_AGENTS)
أو على طريقةDevicePolicyManager.setPasswordQuality()
ذات جودة ثابتة أكثر تقييدًا منPASSWORD_QUALITY_UNSPECIFIED
. - [C-4-3] يجب أن يطلب المستخدم إجراء المصادقة الأساسية (مثل رقم التعريف الشخصي أو النقش أو كلمة المرور) مرة واحدة على الأقل كل 72 ساعة أو أقل.
إذا كانت عمليات تنفيذ الأجهزة تضيف طرق المصادقة أو تعدلها لفتح قفل شاشة القفل استنادًا إلى المقاييس الحيوية، عندها يتم التعامل مع طريقة المصادقة هذه باعتبارها طريقة آمنة لقفل الشاشة:
- يجب أن يتضمّن [C-5-1] آلية احتياطية لاستخدام إحدى طرق المصادقة الأساسية التي تستند إلى مفتاح سرّي معروف وتفي بالمتطلبات اللازمة للتعامل معها على أنّها شاشة قفل آمنة.
- [C-5-2] يجب أن يكون غير مفعّل ولا يسمح للمصادقة الأساسية بفتح قفل الشاشة إلا عندما يضبط تطبيق "وحدة التحكّم بسياسة الجهاز" سياسة ميزة "حماية المفاتيح" من خلال استدعاء الطريقة
DevicePolicyManager.setKeyguardDisabledFeatures(KEYGUARD_DISABLE_FINGERPRINT)
. - يجب أن يحصل [C-5-3] على معدّل قبول خاطئ يساوي أو أقوى من المطلوب في أداة استشعار بصمة الإصبع كما هو موضّح في الفقرة 7.3.10، أو يجب أن يكون غير مفعّل ولا يسمح للمصادقة الأساسية بفتح قفل الشاشة إلا إذا ضبط تطبيق وحدة التحكّم بسياسة الجهاز (DPC) سياسة جودة كلمة المرور من خلال طريقة
DevicePolicyManager.setPasswordQuality()
باستخدام ثابت جودة أكثر تقييدًا منPASSWORD_QUALITY_BIOMETRIC_WEAK
. - [SR] يُنصَح بشدة باعتماد معدلات قبول للاحتيال والاحتيال تكون مساوية أو أقوى من المطلوب في أداة استشعار بصمة الإصبع كما هو موضّح في الفقرة 7.3.10.
إذا لم تكن معدّلات قبول الانتحال والاحتيال مساوية أو أقوى مما هو مطلوب في أداة استشعار بصمة الإصبع كما هو موضّح في الفقرة 7.3.10 وقد حدّد تطبيق "وحدة التحكّم بسياسة الجهاز" (DPC) سياسة جودة كلمة المرور من خلال طريقة DevicePolicyManager.setPasswordQuality()
مع مستوى جودة ثابت أكثر تقييدًا من PASSWORD_QUALITY_BIOMETRIC_WEAK
، عندئذ:
- [C-6-1] يجب إيقاف طرق المقاييس الحيوية هذه والسماح للمصادقة الأساسية فقط بفتح قفل الشاشة.
- [C-6-2] يجب أن يطلب المستخدم إجراء المصادقة الأساسية (مثل رقم التعريف الشخصي أو النقش أو كلمة المرور) مرة واحدة على الأقل كل 72 ساعة أو أقل.
في حال إضافة طرق المصادقة أو تعديلها لفتح قفل شاشة القفل أو تعديلها في حال استخدام طريقة المصادقة هذه لفتح قفل حارس المفاتيح بدون التعامل معها كشاشة قفل آمنة، سيتم اتخاذ الإجراءات التالية:
- [C-7-1] يجب أن تعرض
false
لكل من طريقةKeyguardManager.isKeyguardSecure()
وKeyguardManager.isDeviceSecure()
. - [C-7-2] يجب أن يتم إيقافه عندما يضبط تطبيق "وحدة التحكّم بسياسة الجهاز" (DPC) سياسة جودة كلمة المرور عبر طريقة
DevicePolicyManager.setPasswordQuality()
مع استخدام ثابت جودة أكثر تقييدًا منPASSWORD_QUALITY_UNSPECIFIED
. - [C-7-3] يجب ألا يعيد ضبط موقّتات انتهاء صلاحية كلمة المرور التي تم ضبطها من خلال
DevicePolicyManager.setPasswordExpirationTimeout()
. - [C-7-4] يجب ألا يصادق الوصول إلى ملفات تخزين المفاتيح في حال طلب التطبيق
KeyGenParameterSpec.Builder.setUserAuthenticationRequired(true)
).
9.12. حذف البيانات
جميع عمليات تنفيذ الأجهزة:
- [C-0-1] يجب أن يوفّر للمستخدمين آلية لتنفيذ "إعادة الضبط على الإعدادات الأصلية".
- [C-0-2] يجب أن يحذف كل البيانات التي ينشئها المستخدم. ويعني ذلك أن جميع البيانات باستثناء ما يلي:
- صورة النظام
- أي ملفات نظام تشغيل مطلوبة من خلال نسخة النظام
- [C-0-3] يجب أن يحذف البيانات بطريقة تفي بالمعايير المتّبعة في المجال، مثل NIST SP800-88.
- يجب أن يؤدي [C-0-4] إلى بدء عملية "إعادة الضبط على الإعدادات الأصلية" الواردة أعلاه عند استدعاء واجهة برمجة التطبيقات
DevicePolicyManager.wipeData()
من خلال تطبيق "وحدة التحكّم بسياسة الجهاز" الخاص بالمستخدم الأساسي. - قد يتم توفير خيار مسح البيانات بسرعة لإجراء مسح منطقي للبيانات فقط.
9.13. وضع التشغيل الآمن
يوفّر Android "وضع التشغيل الآمن"، الذي يتيح للمستخدمين بدء تشغيل وضع يتيح تشغيل تطبيقات النظام المثبَّتة مسبقًا فقط وإيقاف جميع التطبيقات التابعة لجهات خارجية. ويوفر هذا الوضع، الذي يُعرف باسم "وضع التشغيل الآمن"، للمستخدم إمكانية إلغاء تثبيت تطبيقات الجهات الخارجية التي قد تتسبّب بضرر.
في ما يلي إجراءات تنفيذ الأجهزة:
- [SR] يُنصَح بشدة بتنفيذ "وضع التشغيل الآمن".
إذا كانت عمليات تنفيذ الأجهزة تفعِّل "وضع التشغيل الآمن"، سينطبق ما يلي:
-
[C-1-1] يجب أن يتم توفير خيار للمستخدم للدخول إلى "وضع التشغيل الآمن" بطريقة لا يمكن مقاطعتها من التطبيقات التابعة لجهات خارجية المثبّتة على الجهاز، إلا عندما يكون التطبيق التابع لجهة خارجية هو "وحدة التحكّم بسياسة الجهاز" ويضبط علامة
UserManager.DISALLOW_SAFE_BOOT
على "صحيح". -
[C-1-2] يجب أن توفر للمستخدم إمكانية إلغاء تثبيت أي تطبيقات تابعة لجهات خارجية في الوضع الآمن.
-
يجب أن توفّر للمستخدم خيارًا للدخول إلى "وضع التشغيل الآمن" من قائمة التشغيل باستخدام سير عمل يختلف عن سير عمل التشغيل العادي.
9.14. عزل أنظمة المركبات في السيارات
من المتوقع أن تتبادل أجهزة Android Automotive البيانات مع الأنظمة الفرعية للمركبات المهمة، وذلك من خلال استخدام HAL للمركبة لإرسال الرسائل واستلامها عبر شبكات المركبات، مثل حافلات CAN.
ويمكن تأمين تبادل البيانات من خلال تنفيذ ميزات الأمان أسفل طبقات إطار عمل Android لمنع التفاعل الضار أو غير المقصود مع هذه الأنظمة الفرعية.
10. اختبار توافق البرامج
يجب أن تجتاز عمليات تنفيذ الأجهزة جميع الاختبارات الموضَّحة في هذا القسم.
ومع ذلك، تجدر الإشارة إلى أنّه لا تتوفّر حزمة لاختبارات البرامج شاملة تمامًا. لهذا السبب، يُستحسن بشدة من منفّذي الأجهزة من أجل توفير أقل عدد ممكن من التغييرات في المرجع والتنفيذ المفضّل لنظام التشغيل Android من خلال "مشروع مفتوح المصدر لنظام Android". سيقلل هذا من خطر إدخال أخطاء تؤدي إلى عدم التوافق التي تتطلب إعادة العمل والتحديثات المحتملة للأجهزة.
10.1. مجموعة أدوات اختبار التوافق
يجب أن تجتاز عمليات تنفيذ الأجهزة مجموعة اختبار التوافق مع Android (CTS) المتاحة من "المشروع المفتوح المصدر لنظام Android" باستخدام برنامج الشحن النهائي على الجهاز. بالإضافة إلى ذلك، على الجهات التي تنفذ تنفيذ الأجهزة استخدام التنفيذ المرجعي في شجرة البرامج المفتوحة المصدر لنظام Android قدر الإمكان، كما يجب أن يضمن التوافق في حالات الغموض في CTS وأي إعادة تنفيذ لأجزاء من رمز المصدر المرجعي.
تم تصميم CTS للتشغيل على جهاز فعلي. مثل أي برنامج، قد تحتوي CTS بحد ذاتها على أخطاء. وسيتم إصدار إصدار CTS بشكل مستقل عن تعريف التوافق هذا، وقد يتم إصدار عدة مراجعات من CTS لنظام التشغيل Android 8.1. يجب أن تجتاز عمليات تنفيذ الجهاز أحدث إصدار من CTS متاح عند اكتمال برامج الجهاز.
10.2. أداة التحقّق من CTS
يجب أن تنفِّذ عمليات تنفيذ الجهاز جميع الحالات السارية في أداة التحقق من CTS بشكل صحيح. أداة CTS Verifier مضمَّنة في "مجموعة أدوات اختبار التوافق"، وتم تصميمها بواسطة مشغّل بشري لاختبار الوظائف التي لا يمكن اختبارها من خلال نظام آلي، مثل الأداء الصحيح للكاميرا وأدوات الاستشعار.
تُجري أداة CTS Verifier اختبارات للعديد من أنواع الأجهزة، بما في ذلك بعض الأجهزة الاختيارية. يجب أن تجتاز عمليات تنفيذ الأجهزة جميع الاختبارات للأجهزة التي تمتلكها. على سبيل المثال، إذا كان الجهاز يتضمن مقياس تسارع، يجب أن ينفّذ حالة اختبار مقياس التسارع بشكلٍ صحيح في أداة CTS Verifier. يمكن تخطّي حالات اختبار الميزات المُشار إليها في مستند تعريف التوافق هذا أو حذفها.
يجب أن يشغِّل كل جهاز وكل إصدار أداة CTS Verifier بشكل صحيح، كما هو موضَّح أعلاه. ومع ذلك، وبما أنّ العديد من الإصدارات متشابهة إلى حدّ كبير، ليس من المتوقَّع أن يشغّل القائمون على تنفيذ الأجهزة أداة CTS Verifier بشكل صريح على إصدارات لا تختلف سوى في طرق بسيطة. على وجه التحديد، عمليات تنفيذ الأجهزة التي تختلف عن التنفيذ الذي اجتازت أداة CTS Verifier فقط من خلال مجموعة اللغات المضمّنة والعلامات التجارية وما إلى ذلك. قد يتم حذف اختبار CTS Verifier.
11. برامج قابلة للتحديث
يجب أن تتضمّن عمليات تنفيذ الأجهزة آلية لاستبدال برامج النظام بالكامل. لا تحتاج الآلية إلى إجراء ترقيات "مباشرة"، أي قد تحتاج إلى إعادة تشغيل الجهاز.
يمكن استخدام أي طريقة، بشرط أن تحل محل البرنامج المثبّت مسبقًا على الجهاز بالكامل. على سبيل المثال، ستفي أي من الأساليب التالية بهذا الشرط:
- عمليات تنزيل "عبر شبكة غير سلكيّة" (OTA)" يتم تحديثها بلا اتصال بالإنترنت عن طريق إعادة التشغيل.
- يتم تحديث "Tethered" عبر USB من جهاز كمبيوتر مضيف.
- يتم تحديث "بلا اتصال بالإنترنت" من خلال إعادة التشغيل والتحديث من ملف على وحدة تخزين قابلة للإزالة.
أمّا إذا كان تنفيذ الجهاز يتضمّن إتاحة اتصال بيانات لا تفرض تكلفة استخدام، مثل 802.11 أو ملف شخصي للرقم PAN في البلوتوث (شبكة المنطقة الشخصية)، يجب أن يتيح عمليات التنزيل عبر الهواء مع التحديث بلا اتصال بالإنترنت من خلال إعادة التشغيل.
يجب أن تتيح آلية التحديث المستخدَمة التحديثات بدون حجب بيانات المستخدمين. ويعني هذا أنّ آلية التحديث يجب أن تحتفظ بالبيانات الخاصة للتطبيقات والبيانات التي تتم مشاركتها بين التطبيقات. تجدر الإشارة إلى أنّ برامج Android الرئيسية تتضمن آلية تحديث تستوفي هذا الشرط.
بالنسبة إلى عمليات تنفيذ الأجهزة التي تعمل بالإصدار 6.0 من نظام التشغيل Android والإصدارات الأحدث، يجب أن تتيح آلية التحديث التحقق من أنّ صورة النظام ثنائية المطابقة للنتيجة المتوقعة بعد التحديث عبر الهواء. يفي تنفيذ التحديث عبر الهواء المستند إلى الكتل في المشروع المفتوح المصدر لنظام Android، الذي تمت إضافته منذ الإصدار Android 5.1، بهذا الشرط.
يجب أيضًا أن تتوافق عمليات تنفيذ الأجهزة مع تحديثات نظام A/B. ينفذ AOSP هذه الميزة باستخدام عنصر التحكم في التشغيل HAL.
إذا تم العثور على خطأ في تنفيذ الجهاز بعد إتاحته ولكن خلال فترة معقولة للمنتج والذي تم تحديده بالتشاور مع فريق التوافق مع Android للتأثير على توافق التطبيقات التابعة للجهات الخارجية، على القائم بتنفيذ الجهاز تصحيح الخطأ من خلال تحديث برنامج متاح يمكن تطبيقه وفقًا للآلية التي تم وصفها للتو.
يتضمن Android ميزات تسمح لتطبيق "مالك الجهاز" (إذا كان متوفرًا) بالتحكّم في تثبيت تحديثات النظام. لتسهيل ذلك، يجب أن ينفِّذ النظام الفرعي لتحديث النظام للأجهزة التي تُبلغ عن android.software.device_admin السلوك الموضّح في الفئة SystemUpdatePolicy.
12. سجل التغييرات في المستند
للحصول على ملخص بالتغييرات التي طرأت على تعريف التوافق في هذا الإصدار:
للحصول على ملخص للتغييرات التي تطرأ على أقسام الأفراد:
- المقدّمة
- أنواع الأجهزة
- البرامج
- حزمة التطبيقات
- الوسائط المتعددة
- أدوات المطوّرين وخياراتهم
- توافق الأجهزة
- الأداء والقوة
- نموذج الأمان
- اختبار التوافق مع البرامج
- برامج Updatable
- سجلّ تغييرات المستند
- التواصل معنا
12.1. نصائح حول عرض سجلّ التغييرات
ويتم تمييز التغييرات على النحو التالي:
-
CDD
تغييرات جوهرية في متطلبات التوافق: -
مستندات Google
يمكنك تجميل أو إنشاء تغييرات ذات صلة.
للحصول على أفضل عرض، أضِف مَعلمتَي عناوين URL pretty=full
وno-merges
إلى عناوين URL لسجلّ التغييرات.
13 التواصل معنا
يمكنك الانضمام إلى منتدى التوافق مع Android وطلب توضيحات أو طرح أي مشاكل تعتقد أنّ المستند لا يغطيها.