جدول المحتويات
3.1. توافق واجهات برمجة التطبيقات المُدارة
3.2. التوافق مع واجهة برمجة التطبيقات
3.2.3.1. نوايا التطبيقات الأساسية
3.2.3.5. إعدادات التطبيقات التلقائية
3.3. التوافق مع واجهات برمجة التطبيقات الأصلية
3.3.1. واجهات التطبيق الثنائية
3.3.2. توافق الرمز الأصلي لمعالج ARM 32 بت
3.5. التوافق السلوكي لواجهات برمجة التطبيقات
3.6. مساحات أسماء واجهة برمجة التطبيقات
3.8.1. مشغّل التطبيقات (الشاشة الرئيسية)
3.9.1.1 إعداد حساب مالك الجهاز
3.9.1.2 توفير الملف الشخصي المُدار
3.9.2. دعم الملف الشخصي المُدار
3.12. إطار عمل إدخال التلفزيون
3.12.1.1. دليل البرامج الإلكتروني
3.12.1.3. ربط تطبيق إدخال التلفزيون
5. التوافق مع الوسائط المتعددة
5.4.2. تسجيل الصوت للتعرّف عليه
5.4.3. تسجيل المحتوى لإعادة توجيهه أثناء التشغيل
5.5.1. تشغيل الصوت غير المعالج
6. توافق أدوات المطوّرين وخياراته
7.1.1.2. نسبة العرض إلى الارتفاع للشاشة
7.1.2. مقاييس الشبكة الإعلانية
7.1.4. ميزة "تسريع الرسومات الثنائية والثلاثية الأبعاد"
7.1.5. وضع التوافق مع التطبيقات القديمة
7.2.2. التنقّل بدون لمس الشاشة
7.3.9. أجهزة الاستشعار العالية الدقة
7.3.10. أداة استشعار بصمة الإصبع
7.4. إمكانية الوصول إلى البيانات
7.4.2. معيار IEEE 802.11 (لشبكات Wi-Fi)
7.4.2.2. إعداد رابط مباشر عبر نفق Wi-Fi
7.4.4. تقنية الاتصال القصير المدى
7.4.5. الحد الأدنى لإمكانية الاتصال بالشبكة
7.6.1. الحد الأدنى للذاكرة ومساحة التخزين
7.6.2. مساحة التخزين المشتركة للتطبيقات
7.6.3. ميزة "مساحة تخزين قابلة للاستخدام"
7.8.3. تقنية التصوير بالموجات فوق الصوتية
1. مقدّمة
يسرد هذا المستند المتطلبات التي يجب استيفاؤها لكي تكون الأجهزة متوافقة مع الإصدار 6.0 من نظام التشغيل Android.
يتم استخدام الكلمات "يجب" و"يجب عدم" و"مطلوب" و"يجب" و"يجب عدم" و"يجب" و"يجب عدم" و"مُستحسَن" و"يجوز" و"اختياري" وفقًا لمعيار مجموعة مهندسي شبكة الإنترنت (IETF) المحدّد في RFC2119 [الموارد، 1].
وفقًا لما هو مُستخدَم في هذا المستند، يشير "منفذ الجهاز" أو "منفذ" إلى شخص أو مؤسسة تطوّر حلًّا للأجهزة/البرامج يعمل بنظام التشغيل Android 6.0. "تنفيذ الجهاز" أو "التنفيذ هو حلّ الأجهزة/البرامج" الذي تم تطويره.
لكي يُعتبَر الإصدار متوافقًا مع Android 6.0، يجب أن تستوفي عمليات تنفيذ الأجهزة المتطلبات الواردة في تعريف التوافق هذا، بما في ذلك أي مستندات مدمجة من خلال مرجع.
إذا كان هذا التعريف أو اختبارات البرامج الموضّحة في الفقرة 10 غير واضح أو غير مكتمل، تقع على عاتق مُنفِّذ الجهاز مهمة ضمان التوافق مع عمليات التنفيذ الحالية.
لهذا السبب، يُعدّ "المشروع المفتوح المصدر لنظام Android" [المراجع، 2] هو المرجع والتنفيذ المفضّل لنظام Android. ننصح بشدة مطوّري التطبيقات المتوافقة مع الأجهزة بالاستناد إلى أقصى حد ممكن إلى رمز المصدر "الأساسي" المتاح من "مشروع Android المفتوح المصدر". على الرغم من أنّه يمكن نظريًا استبدال بعض المكوّنات بعمليات تنفيذ بديلة، يُنصح بشدة بعدم اتّباع هذه الممارسة، لأنّ اجتياز اختبارات البرامج سيصبح أكثر صعوبة. تقع على عاتق المُنفِّذ مسؤولية ضمان التوافق السلوكي الكامل مع تنفيذ Android العادي، بما في ذلك "مجموعة اختبارات التوافق" وما عداها. أخيرًا، يُرجى العلم أنّ هذا المستند يحظر صراحةً بعض عمليات استبدال المكوّنات و تعديلاتها.
إنّ العديد من المراجع المدرَجة في الفقرة 14 مستمَدة مباشرةً أو غير مباشرةً من حزمة تطوير البرامج (SDK) لنظام التشغيل Android، وستكون متطابقة من الناحية الوظيفية مع المعلومات الواردة في مستندات حزمة SDK هذه. في أي حالة اختلاف بين تعريف التوافق أو مجموعة أدوات اختبار التوافق ومستندات حزمة تطوير البرامج (SDK)، يتم اعتبار مستندات حزمة SDK مستندات موثوقة. إنّ أي تفاصيل فنية مقدَّمة في المراجع المضمّنة في القسم 14 تُعدّ جزءًا من تعريف التوافق هذا.
2- أنواع الأجهزة
على الرغم من أنّه تم استخدام "مشروع Android المفتوح المصدر" في تنفيذ مجموعة متنوعة من أنواع الأجهزة وأشكالها، تم تحسين العديد من جوانب البنية ومتطلبات التوافق للأجهزة المحمولة. بدءًا من الإصدار Android 5.0، يهدف مشروع Android Open Source Project إلى توفير مجموعة أكبر من أنواع الأجهزة كما هو موضّح في هذا القسم.
يشير جهاز Android المحمول إلى تنفيذ جهاز Android الذي يتم استخدامه عادةً من خلال مسكه باليد، مثل مشغلات mp3 والهواتف والأجهزة اللوحية. عمليات تنفيذ التطبيقات على الأجهزة المزوّدة بنظام التشغيل Android:
- يجب أن يكون مزوّدًا بشاشة تعمل باللمس مدمجة في الجهاز.
- يجب أن يكون مزوّدًا بمصدر طاقة يضمن إمكانية نقله، مثل بطارية.
يشير جهاز Android Television إلى استخدام جهاز Android كواجهة ترفيه لاستهلاك الوسائط الرقمية والأفلام والألعاب والتطبيقات و/أو البث التلفزيوني المباشر للمستخدمين الذين يجلسون على بُعد حوالي ثلاثة أمتار (واجهة مستخدِم "للاسترخاء" أو "واجهة مستخدِم على بُعد ثلاثة أمتار"). أجهزة Android Television:
- يجب أن يكون مزوّدًا بشاشة مدمجة أو أن يتضمّن منفذ إخراج فيديو، مثل VGA أو HDMI أو منفذ لاسلكي لعرض المحتوى.
- يجب الإفصاح عن الميزتَين android.software.leanback و android.hardware.type.television [الموارد، 3].
يشير جهاز ساعة Android إلى تنفيذ جهاز Android مخصّص للارتداء على الجسم، ربما على المعصم، و:
- يجب أن يكون الجهاز مزوّدًا بشاشة يبلغ طولها الأفقي بين 1.1 و 2.5 بوصة.
- يجب الإفصاح عن الميزة android.hardware.type.watch.
- يجب أن يكون متوافقًا مع uiMode = UI_MODE_TYPE_WATCH [Resources, 4].
يشير تنفيذ Android Automotive إلى وحدة الترفيه في السيارة التي تعمل بنظام التشغيل Android كنظام تشغيل لبعض وظائف النظام و/أو الترفيه والمعلومات أو كلّها. عمليات تنفيذ Android Automotive:
- يجب الإفصاح عن الميزة android.hardware.type.automotive.
- يجب أن تتيح uiMode = UI_MODE_TYPE_CAR [Resources, 5].
يجب أن تستوفي جميع عمليات تنفيذ أجهزة Android التي لا تندرج ضمن أي من أنواع الأجهزة المذكورة أعلاه جميع المتطلبات الواردة في هذا المستند لتكون متوافقة مع الإصدار 6.0 من Android، ما لم يتم وصف المتطلّب صراحةً على أنّه لا ينطبق إلا على نوع معيّن من أجهزة Android من المذكورة أعلاه.
2.1 إعدادات الجهاز
في ما يلي ملخّص للاختلافات الرئيسية في إعدادات الأجهزة حسب نوع الجهاز. (تشير الخلايا الفارغة إلى "يمكن"). لا يتناول هذا الجدول جميع الإعدادات، راجِع أقسام الأجهزة ذات الصلة للحصول على مزيد من التفاصيل.
الفئة | الميزة | القسم | حمل الكاميرا يدويًا | التلفزيون | المشاهدة | Automotive | غير ذلك |
---|---|---|---|---|---|---|---|
الإدخال | لوحة التحكم | 7.2.2. التنقّل بدون لمس الشاشة | يجب | ||||
الشاشة التي تعمل باللمس | 7.2.4. الإدخال باللمس | يجب | يجب | يجب | |||
الميكروفون | 7.8.1. الميكروفون | يجب | يجب | يجب | يجب | يجب | |
أجهزة الاستشعار | مقياس التسارع | 7.3.1 أداة قياس التسارع | يجب | يجب | يجب | ||
نظام تحديد المواقع العالمي (GPS) | 7.3.3. نظام تحديد المواقع العالمي (GPS) | يجب | يجب | ||||
إمكانية الاتصال | Wi-Fi | 7.4.2. IEEE 802.11 | يجب | يجب | يجب | يجب | |
اتصال Wi-Fi مباشر | 7.4.2.1. اتصال Wi-Fi المباشر | يجب | يجب | يجب | |||
البلوتوث | 7.4.3. البلوتوث | يجب | يجب | يجب | يجب | يجب | |
بلوتوث منخفض الطاقة | 7.4.3. البلوتوث | يجب | يجب | يجب | يجب | يجب | |
وضع الجهاز الملحق/المضيف USB | 7.7. USB | يجب | يجب | يجب | |||
الإخراج | منافذ مكبّر الصوت و/أو إخراج الصوت | 7.8.2. إخراج الصوت | يجب | يجب | يجب | يجب |
3- البرامج
3.1. التوافق مع واجهة برمجة التطبيقات المُدارة
بيئة تنفيذ رمز بايت Dalvik المُدارة هي الوسيلة الأساسية لتشغيل تطبيقات Android. واجهة برمجة تطبيقات Android هي مجموعة واجهات نظام Android الأساسي التي يتم عرضها للتطبيقات التي تعمل في بيئة التشغيل المُدارة. يجب أن تقدّم عمليات تنفيذ الأجهزة تنفيذات كاملة، بما في ذلك جميع السلوكيات الموثَّقة، لأي واجهة برمجة تطبيقات موثَّقة معروضة من خلال حزمة تطوير البرامج (SDK) لنظام التشغيل Android [Resources, 6] أو أي واجهة برمجة تطبيقات مُزيّنة بعلامة "@SystemApi" في رمز المصدر المرتبط بنظام Android.
يجب ألا تحذف عمليات تنفيذ الأجهزة أي واجهات برمجة تطبيقات مُدارة أو تغيِّر واجهات برمجة التطبيقات أو التوقيعات أو تنحرف عن السلوك المُوثَّق أو تتضمّن عمليات لا تؤدي إلى أيّ تأثير، إلا في الحالات التي يسمح فيها "تعريف التوافق" تحديدًا بذلك.
يسمح تعريف التوافق هذا ببعض أنواع الأجهزة التي يتضمّن Android واجهات برمجة تطبيقات يمكن أن يتم حذفها من خلال عمليات تنفيذ الأجهزة. وفي هذه الحالات، يجب أن تظل واجهات برمجة التطبيقات متوفرة وأن تعمل بطريقة معقولة. اطّلِع على القسم 7 لمعرفة المتطلبات المحدّدة لهذا السيناريو.
3.2. التوافق مع واجهة برمجة التطبيقات
بالإضافة إلى واجهات برمجة التطبيقات المُدارة من الفقرة 3.1، يتضمّن Android أيضًا واجهة برمجة تطبيقات "غير حاسمة" مهمة تعمل أثناء التشغيل فقط، في شكل عناصر مثل النوايا والأذونات والجوانب المشابهة لتطبيقات Android التي لا يمكن فرضها في وقت تجميع التطبيق.
3.2.1. الأذونات
على جهات تنفيذ الأجهزة توفير جميع الثوابت المتعلّقة بالأذونات وفرضها كما هو موضح في صفحة مرجع الأذونات [الموارد، 7]. يُرجى العلم أنّ القسم 9 يسرد متطلبات إضافية متعلقة بنموذج أمان Android.
3.2.2. إنشاء المَعلمات
تتضمّن واجهات برمجة تطبيقات Android عددًا من الثوابت في فئة android.os.Build [Resources, 8] التي تهدف إلى وصف الجهاز الحالي. لتوفير قيم متّسقة ومفيدة في جميع عمليات تنفيذ الأجهزة، يتضمّن الجدول التالي قيودًا إضافية على تنسيقات هذه القيم التي يجب أن تمتثل لها عمليات تنفيذ الأجهزة.
المَعلمة | التفاصيل |
---|---|
VERSION.RELEASE | إصدار نظام Android الذي يتم تنفيذه حاليًا بتنسيق يمكن للمستخدم قراءته يجب أن يحتوي هذا الحقل على إحدى قيم السلاسل المحدّدة في [الموارد، 9]. |
VERSION.SDK | إصدار نظام Android الذي يتم تنفيذه حاليًا بتنسيق يمكن لرمز التطبيق التابع لجهة خارجية الوصول إليه بالنسبة إلى Android 6.0، يجب أن يحتوي هذا الحقل على قيمة تكامل 23. |
VERSION.SDK_INT | إصدار نظام Android الذي يتم تنفيذه حاليًا بتنسيق يمكن لرمز التطبيق التابع لجهة خارجية الوصول إليه بالنسبة إلى Android 6.0، يجب أن يحتوي هذا الحقل على قيمة تكامل 23. |
VERSION.INCREMENTAL | قيمة يختارها مُنفِّذ الجهاز لتحديد الإصدار المحدّد من نظام Android الذي يتم تنفيذه حاليًا، بتنسيق يمكن لشخص عادي قراءته يجب عدم إعادة استخدام هذه القيمة لإصدارات مختلفة يتم توفيرها للمستخدمين النهائيين. من الاستخدامات الشائعة لهذا الحقل الإشارة إلى رقم الإصدار أو معرّف تغيير تحكّم المصدر المستخدَم لإنشاء الإصدار. ما مِن متطلبات تتعلّق بالتنسيق المحدد لهذا الحقل، باستثناء أنّه يجب ألّا يكون فارغًا أو سلسلة ملف فارغة (""). |
ألعاب ألواح | قيمة يختارها منفذ الجهاز لتحديد الجهاز الداخلي المُحدَّد الذي يستخدمه الجهاز، بتنسيق يمكن لشخص عادي قراءته من الاستخدامات المحتملة لهذا الحقل هو الإشارة إلى المراجعة المحدّدة للوحة التي تشغّل الجهاز. يجب أن تكون قيمة هذا الحقل قابلة للترميز بترميز ASCII المكوّن من 7 بتات وأن تتطابق مع التعبير العادي "^[a-zA-Z0-9_-]+$". |
العلامة التجارية | قيمة تعكس اسم العلامة التجارية المرتبط بالجهاز كما هو معروف لدى المستخدمين النهائيين يجب أن يكون بتنسيق يسهل قراءته ويجب أن يمثّل شركة تصنيع الجهاز أو علامة الشركة التجارية التي يتم تحتها تسويق الجهاز. يجب أن تكون قيمة هذا الحقل قابلة للترميز بترميز ASCII المكوّن من 7 بتات وأن تتطابق مع التعبير العادي "^[a-zA-Z0-9_-]+$". |
SUPPORTED_ABIS | اسم مجموعة التعليمات (نوع وحدة المعالجة المركزية + اصطلاح ABI) للرمز الأصلي راجِع الفقرة 3.3. التوافق مع واجهات برمجة التطبيقات الأصلية: |
SUPPORTED_32_BIT_ABIS | اسم مجموعة التعليمات (نوع وحدة المعالجة المركزية + اصطلاح ABI) للرمز الأصلي راجِع الفقرة 3.3. التوافق مع واجهات برمجة التطبيقات الأصلية: |
SUPPORTED_64_BIT_ABIS | اسم مجموعة التعليمات الثانية (نوع وحدة المعالجة المركزية + اصطلاح ABI) للرمز المبرمَج الأصلي راجِع الفقرة 3.3. التوافق مع واجهات برمجة التطبيقات الأصلية: |
CPU_ABI | اسم مجموعة التعليمات (نوع وحدة المعالجة المركزية + اصطلاح ABI) للرمز الأصلي راجِع الفقرة 3.3. التوافق مع واجهات برمجة التطبيقات الأصلية: |
CPU_ABI2 | اسم مجموعة التعليمات الثانية (نوع وحدة المعالجة المركزية + اصطلاح ABI) للرمز المبرمَج الأصلي راجِع الفقرة 3.3. التوافق مع واجهات برمجة التطبيقات الأصلية: |
الجهاز | قيمة يختارها منفذ الجهاز تحتوي على اسم التطوير أو الاسم الرمزي الذي يحدِّد إعدادات ميزات الجهاز ومقاييس التصميم الصناعي للجهاز يجب أن تكون قيمة هذا الحقل قابلة للترميز بترميز ASCII المكوّن من 7 بت وتتطابق مع التعبير العادي "^[a-zA-Z0-9_-]+$". |
بصمة الإصبع | سلسلة تحدّد هذا الإصدار بشكل فريد يجب أن يكون التنسيق سهل القراءة. يجب أن يتّبع هذا النموذج:
$(BRAND)/$(PRODUCT)/ مثلاً: acme/myproduct/ يجب ألّا يتضمّن المرجع البصمة أحرف مسافات بيضاء. إذا كانت الحقول الأخرى المضمّنة في النموذج أعلاه تحتوي على أحرف مسافات بيضاء، يجب استبدالها في بصمة التصميم بحرف آخر، مثل علامة الشرطة المائلة تحتية ("_"). يجب أن تكون قيمة هذا الحقل قابلة للترميز بترميز ASCII المكوّن من 7 بت. |
الأجهزة | اسم الجهاز (من سطر أوامر kernel أو /proc) يجب أن يكون سهل الفهم بالنسبة إلى المستخدمين. يجب أن تكون قيمة هذا الحقل قابلة للترميز بترميز ASCII المكوّن من 7 بت وأن تتطابق مع التعبير العادي "^[a-zA-Z0-9_-]+$". |
HOST | سلسلة تحدِّد بشكل فريد المضيف الذي تم إنشاء الإصدار عليه، بتنسيق يقبله المستخدم ما مِن متطلبات بشأن التنسيق المحدّد لهذا الحقل، باستثناء أنّه يجب ألّا يكون فارغًا أو سلسلة فارغة (""). |
رقم التعريف | معرّف يختاره مُنفِّذ الجهاز للإشارة إلى إصدار معيّن، بتنسيق يسهل على المستخدم قراءته يمكن أن يكون هذا الحقل هو نفسه android.os.Build.VERSION.INCREMENTAL، ولكن يجب أن يكون له قيمة مفيدة بما يكفي للمستخدمين النهائيين من أجل التمييز بين إصدارات البرامج. يجب أن تكون قيمة هذا الحقل قابلة للترميز بترميز ASCII المكوّن من 7 بتات وأن تتطابق مع التعبير العادي "^[a-zA-Z0-9._-]+$". |
الشركة المصنّعة | الاسم التجاري للمصنّع الأصلي للجهاز (OEM) ما مِن متطلبات بشأن التنسيق المحدّد لهذا الحقل، باستثناء أنّه يجب ألّا يكون فارغًا أو سلسلة فارغة (""). |
الطراز | قيمة يختارها مُنفِّذ الجهاز تحتوي على اسم الجهاز كما يعرفه المستخدِم النهائي يجب أن يكون هذا هو الاسم نفسه الذي يتم بموجبه تسويق الجهاز وبيعه للمستخدمين النهائيين. ما مِن متطلبات بشأن التنسيق المحدد لهذا الحقل، باستثناء أنّه يجب ألّا يكون فارغًا أو سلسلة فارغة (""). |
المنتج | قيمة يختارها مُنفِّذ الجهاز تحتوي على اسم التطوير أو اسم الرمز البرمجي للمنتج المحدّد (رمز التخزين التعريفي) الذي يجب أن يكون فريدًا ضمن العلامة التجارية نفسها. يجب أن تكون قابلة للقراءة من قِبل البشر، ولكن ليس بالضرورة أن تكون مخصّصة للاطّلاع عليها من قِبل مستخدمي الإصدار النهائي. يجب أن تكون قيمة هذا الحقل قابلة للترميز بترميز ASCII المكوّن من 7 بتات وأن تتطابق مع التعبير العادي "^[a-zA-Z0-9_-]+$". |
SERIAL | رقم تسلسلي للأجهزة، يجب أن يكون متاحًا وفريدًا على مستوى الأجهزة التي تحمل الطراز والشركة المصنّعة نفسيهما يجب أن تكون قيمة هذا الحقل قابلة للترميز بترميز ASCII المكوّن من 7 بتات وأن تتطابق مع التعبير العادي "^([a-zA-Z0-9]{6,20})$". |
العلامات | قائمة مفصولة بفواصل بالعلامات التي اختارها مُنفِّذ الجهاز والتي تميّز الإصدار بشكلٍ أكبر يجب أن يحتوي هذا الحقل على إحدى القيم التي تتوافق مع الإعدادات الثلاثة المعتادة لتوقيع نظام Android الأساسي: مفاتيح الإصدار، ومفاتيح المطوّرين، ومفاتيح الاختبار. |
الوقت | قيمة تمثّل الطابع الزمني لوقت إنشاء الإصدار |
النوع | قيمة يختارها مُنفِّذ الجهاز لتحديد إعدادات وقت التشغيل للإصدار يجب أن يحتوي هذا الحقل على إحدى القيم التي تتوافق مع الإعدادات النموذجية لوقت تشغيل Android: user أو userdebug أو eng. |
المستخدم | اسم أو رقم تعريف المستخدم (أو المستخدم المبرمَج) الذي أنشأ الإصدار ما مِن متطلبات بشأن التنسيق المحدّد لهذا الحقل، باستثناء أنّه يجب ألّا يكون فارغًا أو سلسلة فارغة (""). |
SECURITY_PATCH | قيمة تشير إلى مستوى تصحيح الأمان لإصدار معيّن يجب أن يشير ذلك إلى أنّ الإصدار يحتوي على جميع تصحيحات الأمان الصادرة حتى تاريخ نشر "نشرة أمان Android" العامة المحدّدة. يجب أن تكون بالتنسيق [YYYY-MM-DD] وأن تتطابق مع إحدى سلاسل إشعارات الأمان العامة الخاصة بـ Android مستوى تصحيح الأمان، على سبيل المثال "2015-11-01". |
BASE_OS | قيمة تمثّل مَعلمة FINGERPRINT للإصدار الذي يشبه هذا الإصدار تمامًا باستثناء الرقع المقدَّمة في بلاغ الأمان العام لنظام التشغيل Android يجب أن يعرض الإصدار القيمة الصحيحة، وإذا لم يكن هناك إصدار مماثل، يجب عرض سلسلة فارغة (""). |
3.2.3. توافق الغرض
يجب أن تلتزم عمليات تنفيذ الأجهزة بنظام الأهداف غير المُحكم في Android، كما هو описан في الأقسام أدناه. ويُقصد بـ "الالتزام" أنّه على مطوّر التطبيقات المتوافقة مع الأجهزة أن يقدّم نشاطًا أو خدمة على Android تحدّد فلتر نية مطابقًا يرتبط بالسلوك الصحيح لكل نمط نية محدّد وينفذه.
3.2.3.1. أغراض التطبيقات الأساسية
تسمح رسائل Intent في Android لمكوّنات التطبيقات بطلب وظائف من مكوّنات Android الأخرى. يتضمّن مشروع Android upstream قائمة بالتطبيقات التي تُعدّ تطبيقات Android أساسية، والتي تُنفِّذ عدّة أنماط تهدف إلى تنفيذ إجراءات شائعة. تطبيقات Android الأساسية هي:
- ساعة مكتب
- المتصفح
- التقويم
- جهات الاتصال
- معرض الصور
- GlobalSearch
- قاذفة القنابل
- الموسيقى
- الإعدادات
يجب أن تتضمّن عمليات تنفيذ التطبيقات على الأجهزة تطبيقات Android الأساسية كما هو مناسب، ولكن يجب أن تتضمّن مكوّنًا ينفِّذ أنماط Intent نفسها التي تحدّدها جميع مكوّنات النشاط أو الخدمة "العلنية" لتطبيقات Android الأساسية هذه. يُرجى العِلم أنّ مكونات النشاط أو الخدمة تُعدّ "عامة" عندما تكون السمة android:exported غير متوفّرة أو لها القيمة true.
3.2.3.2. حلّ النية
بما أنّ Android هو نظام أساسي قابل للتوسيع، يجب أن تسمح عمليات تنفيذ الأجهزة بتجاوز كل نمط نية مشار إليه في الفقرة 3.2.3.1 من خلال التطبيقات التابعة لجهات خارجية. يسمح التنفيذ المفتوح المصدر لنظام Android بهذا تلقائيًا، ويجب ألا يربط مورّدو الأجهزة امتيازات خاصة باستخدام تطبيقات النظام لنماذج النية هذه، أو يمنعوا التطبيقات التابعة لجهات خارجية من الربط بهذه نماذج والتحكّم فيها. ويشمل هذا الحظر على وجه التحديد، على سبيل المثال لا الحصر، إيقاف واجهة مستخدم "أداة الاختيار" التي تسمح للمستخدم بالاختيار بين تطبيقات متعددة تعالج جميعها نمط الطلب نفسه.
يجب أن توفّر عمليات تنفيذ الأجهزة واجهة مستخدم للمستخدمين من أجل تعديل النشاط default للنوايا.
ومع ذلك، قد تقدّم عمليات تنفيذ الأجهزة أنشطة تلقائية لنماذج عناوين URI معيّنة (مثل http://play.google.com) عندما يوفّر النشاط التلقائي سمة أكثر تحديدًا لعنوان URI للبيانات. على سبيل المثال، نمط فلتر الأهداف الذي يحدِّد معرّف الموارد المنتظم للبيانات "http://www.android.com" هو أكثر تحديدًا من نمط العمل التلقائي الأساسي للمتصفّح الذي يخصّ "http://".
يتضمّن Android أيضًا آلية تتيح للتطبيقات التابعة لجهات خارجية الإفصاح عن سلوك ربط تطبيقات معتمد تلقائي لأنواع معيّنة من نوايا معرّفات الموارد المنتظمة (URI) للويب [الموارد، 140]. عند تحديد مثل هذه التصاريح الموثوقة في أنماط فلاتر الأهداف للتطبيق، تؤدي تنفيذات الأجهزة إلى ما يلي:
- يجب محاولة التحقّق من صحة أي فلاتر أهداف من خلال تنفيذ خطوات التحقّق المحدّدة في مواصفات روابط مواد العرض الرقمية [الموارد، 141] على النحو الذي نفّذه مدير الحِزم في مشروع Android Open Source Project.
- يجب محاولة التحقّق من فلاتر الأهداف أثناء تثبيت التطبيق وضبط جميع فلاتر أهداف UIR التي تم التحقّق منها بنجاح كمعالجات تطبيقات تلقائية لـ UIR الخاصة بها.
- يجوز للتطبيق ضبط فلاتر أهداف معيّنة لعناوين URL كمعالِجات تطبيق تلقائية لمعرّفات URL الخاصة به، إذا تم التحقّق منها بنجاح ولكن تعذّر على فلاتر عناوين URL المعنيّة الأخرى إكمال عملية التحقّق. إذا كان تنفيذ الجهاز يفعل ذلك، يجب أن يقدّم للمستخدم عمليات إلغاء أنماط لكل معرّف موارد منتظم في قائمة الإعدادات.
- يجب أن يقدّم التطبيق للمستخدم عناصر تحكّم في "روابط التطبيقات" لكل تطبيق في "الإعدادات" على النحو التالي:
- يجب أن يتمكّن المستخدم من إلغاء السلوك التلقائي لـ روابط التطبيقات بشكل كامل ليكون التطبيق: مفتوحًا دائمًا أو يطلب الإذن دائمًا أو لا يفتح أبدًا، ويجب أن ينطبق ذلك على جميع فلاتر عناوين URI المعنيّة بالتجوال بشكلٍ متساوٍ.
- يجب أن يتمكّن المستخدم من الاطّلاع على قائمة بفلاتر أغراض معرّفات الموارد المنتظمة المعنيّة.
- قد يمنح تنفيذ الجهاز المستخدم إمكانية إلغاء مفعول فلاتر أغراض معرّفات الموارد المنتظمة (URI) المرشحة المحدّدة التي تم التحقّق منها بنجاح، وذلك على أساس كل فلتر غرض.
- يجب أن يمنح تنفيذ الجهاز للمستخدمين إمكانية عرض فلاتر أهداف معرّفات الموارد المنتظمة (URI) المرشحة المحدّدة وإلغاء تطبيقها إذا كان تنفيذ الجهاز يسمح لبعض فلاتر أهداف معرّفات الموارد المنتظمة (URI) المرشحة بالنجاح في عملية التحقّق بينما قد يتعذّر على بعض الفلاتر الأخرى إكمالها.
3.2.3.3. مساحات أسماء الأهداف
يجب ألا تتضمّن عمليات تنفيذ الأجهزة أي مكوّن Android يراعي أي نماذج تهدف إلى إنشاء هدف جديد أو هدف بث باستخدام سلسلة ACTION أو CATEGORY أو سلسلة مفتاح مهمة أخرى في مساحة الاسم android.* أو com.android.*. على جهات تنفيذ الأجهزة عدم تضمين أي مكونات Android تلتزم بأي أنماط جديدة لبث طلبات التفويض أو أنماط طلبات التفويض باستخدام سلسلة مفتاح ACTION أو CATEGORY أو سلسلة مفتاح أخرى في مساحة حزمة تنتمي إلى مؤسسة أخرى. يجب ألا يغيّر مورّدو الأجهزة أو يوسّع أيًا من أنماط النوايا المستخدَمة من قِبل التطبيقات الأساسية المُدرَجة في الفقرة 3.2.3.1. قد تتضمّن عمليات تنفيذ الأجهزة أنماط النية باستخدام مساحات الاسم التي تكون مرتبطة بوضوح بمؤسستها. هذا الحظر هو مشابه للحظر المحدّد لفئات لغة Java في الفقرة 3.6.
3.2.3.4. نوايا البث
تعتمد التطبيقات التابعة لجهات خارجية على المنصة لبث بيانات نية معيّنة بهدف إعلامها بالتغييرات في بيئة الأجهزة أو البرامج. يجب أن تبث الأجهزة المتوافقة مع Android نوايا البث العام في استجابة لأحداث النظام المناسبة. يتم وصف نوايا البث في مستندات IDE SDK.
3.2.3.5. الإعدادات التلقائية للتطبيقات
يتضمّن Android إعدادات توفّر للمستخدمين طريقة سهلة لاختيار تطبيقاتهم التلقائية، مثل الشاشة الرئيسية أو الرسائل القصيرة. يجب أن تقدّم عمليات تنفيذ الأجهزة قائمة إعدادات مشابهة وأن تكون متوافقة مع نمط فلتر الأهداف وطرق واجهة برمجة التطبيقات الموضّحة في مستندات حزمة تطوير البرامج (SDK) كما هو موضّح أدناه، وذلك عندما يكون ذلك منطقيًا.
عمليات التنفيذ على الأجهزة:
- يجب أن يحترم التطبيق النية android.settings.HOME_SETTINGS لعرض قائمة إعدادات التطبيق التلقائية للشاشة الرئيسية، إذا أبلغ تنفيذ الجهاز عن android.software.home_screen [Resources, 10]
- يجب توفير قائمة إعدادات ستستدعي نية android.provider.Telephony.ACTION_CHANGE_DEFAULT لعرض مربّع حوار لمحاولة تغيير تطبيق الرسائل القصيرة التلقائي، إذا كان تنفيذ الجهاز يُبلغ عن android.hardware.telephony [Resources, 11]
- يجب أن يحترم التطبيق النية android.settings.NFC_PAYMENT_SETTINGS لعرض قائمة إعدادات تطبيق تلقائية لميزة "الدفع بدون تلامس الأجهزة"، إذا كان تنفيذ الجهاز يُبلغ عن android.hardware.nfc.hce [Resources, 10]
3.3. التوافق مع واجهات برمجة التطبيقات الأصلية
3.3.1. واجهات التطبيق الثنائية
يمكن لرمز Dalvik الثنائي المُدار استدعاء رمز أصلي متوفر في ملف التطبيق .apk كملف ELF .so تم تجميعه للبنية المناسبة لأجهزة الجهاز. بما أنّ الرموز البرمجية الأصلية تعتمد بشكل كبير على تكنولوجيا المعالج الأساسية، يحدِّد Android عددًا من واجهات ABI في IDE لنظام التشغيل Android (NDK). يجب أن تكون عمليات تنفيذ الأجهزة متوافقة مع واجهة برمجة تطبيقات واحدة أو أكثر محددة، ويجب أن توفّر التوافق مع حزمة تطوير البرامج (NDK) لنظام التشغيل Android، على النحو الموضّح أدناه.
إذا كان تطبيق الجهاز يتضمّن توافقًا مع واجهة برمجة تطبيقات Android، يعني ذلك ما يلي:
- يجب أن تتضمّن واجهة برمجة التطبيقات إمكانية استخدام الرمز البرمجي الذي يتم تشغيله في البيئة المُدارة للاتّصال بالرمز البرمجي الأصلي، وذلك باستخدام دلالات Java Native Interface (JNI) العادية.
- يجب أن يكون متوافقًا مع المصدر (أي متوافقًا مع العنوان) ومتوافقًا مع الثنائي (لملف ABI) مع كل مكتبة مطلوبة في القائمة أدناه
- يجب أن يكون متوافقًا مع واجهة ABI المكافئة لإصدار 32 بت في حال توفّر أي واجهة ABI لإصدار 64 بت.
- يجب أن يُبلغ التطبيق بدقة عن واجهة Application Binary Interface (ABI) الأصلية المتوافقة مع الجهاز، وذلك من خلال المَعلمات android.os.Build.SUPPORTED_ABIS وandroid.os.Build.SUPPORTED_32_BIT_ABIS وandroid.os.Build.SUPPORTED_64_BIT_ABIS، وكلّ مَعلمة منها هي قائمة مفصولة بفواصل لواجهات ABI مرتبة من الأكثر إلى الأقل تفضيلًا.
- يجب أن يتم الإبلاغ، من خلال المَعلمات أعلاه، عن واجهات برمجة التطبيقات (ABI) التي تم توثيقها و описанها في أحدث إصدار من مستندات إدارة واجهات برمجة التطبيقات (ABI) في Android NDK [المراجع، 12]، ويجب أن تتضمّن دعمًا لوحدة معالجة البيانات المتسلسلة المحسّنة (Advanced SIMD) (المعروفة أيضًا باسم NEON) [المراجع، 13] .
- يجب إنشاؤها باستخدام رمز المصدر وملفات الرأس المتاحة في المشروع المصدر لنظام التشغيل Android المفتوح المصدر
يجب أن تكون واجهات برمجة التطبيقات التالية للرمز البرمجي الأصلي متاحة للتطبيقات التي تتضمّن رمزًا برمجيًا أصليًا:
- libc (مكتبة C)
- libm (مكتبة الرياضيات)
- الحد الأدنى من التوافق مع C++
- واجهة JNI
- liblog (تسجيل Android)
- libz (ضغط Zlib)
- libdl (الرابط الديناميكي)
- libGLESv1_CM.so (OpenGL ES 1.x)
- libGLESv2.so (OpenGL ES 2.0)
- libGLESv3.so (OpenGL ES 3.x)
- libEGL.so (إدارة سطح OpenGL الأصلي)
- libjnigraphics.so
- libOpenSLES.so (لتشغيل الصوت في OpenSL ES 1.0.1)
- libOpenMAXAL.so (لتوفير دعم OpenMAX AL 1.0.1)
- libandroid.so (لتوفير وظائف الأنشطة الأصلية في Android)
- libmediandk.so (تتيح استخدام واجهات برمجة التطبيقات الأصلية للوسائط)
- توفُّر OpenGL، كما هو موضّح أدناه
يُرجى العلم أنّ الإصدارات المستقبلية من Android NDK قد توفّر إتاحة استخدام IDE إضافية. إذا لم يكن تطبيق الجهاز متوافقًا مع IDE قيد الاستخدام ومحدد مسبقًا، يجب ألّا يُبلغ عن توافقه مع أي IDE على الإطلاق.
يُرجى العلم أنّه يجب أن تتضمّن عمليات تنفيذ الأجهزة libGLESv3.so ويجب أن تتضمّن رابطًا رمزيًا (رابط رمزي) إلى libGLESv2.so.، ويجب أن تُصدِر بدورها جميع رموز دوال OpenGL ES 3.1 و مجموعة إضافات Android [Resources, 14] كما هو محدّد في إصدار NDK android-21. على الرغم من أنّه يجب توفُّر كل العلامات، يجب تنفيذ الدوالّ المقابلة لإصدارات OpenGL ES والإضافات المتوافقة مع الجهاز فقط.
في حال تضمين مكتبة أصلية باسم libvulkan.so، يجب أن تُصدِر عمليات تنفيذ الأجهزة رموزاً للدوالّ وأن تقدّم تنفيذًا لواجهة برمجة التطبيقات Vulkan 1.0 وإضافات VK_KHR_surface وVK_KHR_swapchain وVK_KHR_android_surface على النحو المحدّد من قِبل مجموعة Khronos وأن تجتاز اختبارات التوافق مع Khronos.
إنّ توافق الرموز البرمجية الأصلية يشكّل تحديًا. لهذا السبب، ننصح بشدة جهات تنفيذ الأجهزة باستخدام تطبيقات المكتبات المُدرَجة أعلاه من المصدر الأساسي لمشروع Android Open Source Project.
3.3.2. توافق الرمز الأصلي لنظام ARM 32 بت
تُوقِف بنية ARMv8 نهائيًا العديد من عمليات وحدة المعالجة المركزية، بما في ذلك بعض العمليات المستخدَمة في الرموز البرمجية الأصلية الحالية. على أجهزة ARM بنظام 64 بت، يجب أن تظل العمليات التالية المنتهية الصلاحية متاحة للرمز البرمجي الأصلي بنظام ARM بسعة 32 بت، إما من خلال دعم وحدة المعالجة المركزية الأصلية أو من خلال محاكاة البرامج:
- تعليمات SWP وSWPB
- تعليمات SETEND
- عمليات الحواجز CP15ISB وCP15DSB وCP15DMB
كانت الإصدارات القديمة من Android NDK تستخدِم /proc/cpuinfo لاكتشاف ميزات وحدة المعالجة المركزية من الرمز البرمجي الأصلي لمعالج ARM 32 بت. للتوافق مع التطبيقات التي تم إنشاؤها باستخدام حزمة تطوير البرامج (NDK) هذه، يجب أن تتضمّن الأجهزة السطور التالية في /proc/cpuinfo عند قراءتها بواسطة تطبيقات ARM 32 بت:
- "الميزات: "، متبوعة بقائمة بأي ميزات اختيارية لوحدة المعالجة المركزية ARMv7 يتوافق معها الجهاز
- "بنية وحدة المعالجة المركزية: "، متبوعًا بعدد صحيح يصف أعلى بنية ARM متوافقة للجهاز (مثل "8" لأجهزة ARMv8)
لا تنطبق هذه المتطلبات إلا عندما تقرأ تطبيقات ARM بسعة 32 بت ملف /proc/cpuinfo. يجب ألا تغيّر الأجهزة ملف /proc/cpuinfo عند قراءته من خلال تطبيقات ARM أو تطبيقات غير متوافقة مع ARM بإصدار 64 بت.
3.4. توافق الويب
3.4.1. توافق WebView
يجوز لأجهزة Android Watch، ولكن يجب أن تقدّم جميع عمليات تنفيذ الأجهزة الأخرى تنفيذًا كاملاً لواجهة برمجة التطبيقات android.webkit.Webview.
يجب الإبلاغ عن ميزة النظام الأساسي android.software.webview على أي جهاز يوفر تنفيذًا كاملاً لواجهة برمجة التطبيقات android.webkit.WebView، ويجب عدم الإبلاغ عنها على الأجهزة التي لا توفّر تنفيذًا كاملاً لواجهة برمجة التطبيقات. يستخدم تطبيق Android Open Source رمزًا من مشروع Chromium لتطبيق android.webkit.WebView [الموارد، 15]. بما أنّه من غير الممكن تطوير مجموعة اختبارات شاملة لنظام عرض الويب، على مطوّري الأجهزة استخدام الإصدار المحدّد من Chromium في تنفيذ WebView. وعلى وجه التحديد:
- يجب أن تستند عمليات تنفيذ android.webkit.WebView على الجهاز إلى الإصدار Chromium من مشروع Android Open Source Project (مشروع Android المفتوح المصدر) لنظام التشغيل Android 6.0. يتضمّن هذا الإصدار مجموعة محدّدة من الإصلاحات المتعلّقة بالوظائف والأمان لمكوّن WebView [الموارد، 16].
- يجب أن تكون سلسلة وكيل المستخدم التي يُبلغ عنها 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.
- قد تحذف عمليات تنفيذ الأجهزة كلمة Mobile في سلسلة وكيل المستخدم.
يجب أن يتضمّن مكوّن WebView ميزات HTML5 بقدرٍ ممكن، وإذا كان يتيح الميزة، يجب أن يكون متوافقًا مع مواصفات HTML5 [الموارد، 17].
3.4.2. توافق المتصفّح
يجوز أن تحذف عمليات التنفيذ في Android Television وWatch وAndroid Automotive تطبيق المتصفّح، ولكن يجب أن تكون متوافقة مع أنماط الأهداف العامة كما هو موضّح في الفقرة 3.2.3.1. يجب أن تتضمّن جميع الأنواع الأخرى من عمليات تنفيذ الأجهزة تطبيق متصفّح مستقلًا لأجل تصفّح الويب العام للمستخدمين.
قد يستند المتصفّح المستقل إلى تكنولوجيا متصفّح أخرى غير WebKit. ومع ذلك، حتى في حال استخدام تطبيق متصفّح بديل، يجب أن يستند العنصر android.webkit.WebView المقدَّم للتطبيقات التابعة لجهات خارجية إلى WebKit، كما هو موضّح في الفقرة 3.4.1.
يجوز لعمليات التنفيذ إرسال سلسلة وكيل مستخدم مخصّصة في تطبيق المتصفّح المستقل.
يجب أن يتضمّن تطبيق المتصفّح المستقل (سواء كان مستندًا إلى تطبيق المتصفّح WebKit المتوافق مع الإصدارات السابقة أو بديلاً تابعًا لجهة خارجية) إتاحة استخدام أكبر عدد ممكن من ميزات HTML5 [الموارد، 17]. على الأقل، يجب أن تتوافق عمليات تنفيذ الأجهزة مع كل من منصّات برمجة التطبيقات التالية المرتبطة بـ HTML5:
- ذاكرة التخزين المؤقت للتطبيق/العمل بلا إنترنت [الموارد، 18]
- علامة <video> [الموارد، 19]
- الموقع الجغرافي [المراجع، 20]
بالإضافة إلى ذلك، يجب أن تكون عمليات تنفيذ الأجهزة متوافقة مع واجهة برمجة التطبيقات webstorage API (HTML5/W3C) [الموارد، 21]، ويجب أن تكون متوافقة مع واجهة برمجة التطبيقات IndexedDB API (HTML5/W3C) [الموارد، 22]. يُرجى العلم أنّه مع انتقال الهيئات المسؤولة عن معايير تطوير الويب إلى تفضيل استخدام IndexedDB بدلاً من webstorage، من المتوقّع أن يصبح IndexedDB مكوّنًا مطلوبًا في إصدار مستقبلي من Android.
3.5. التوافق السلوكي لواجهة برمجة التطبيقات
يجب أن تكون سلوكيات كل نوع من أنواع واجهات برمجة التطبيقات (المُدارة واللينة والبرامج الأصلية والويب) متسقة مع التنفيذ المفضّل لمشروع Android Open Source Project في المصدر المفتوح [المراجع، 2]. في ما يلي بعض مجالات التوافق المحدّدة:
- يجب ألا تغيّر الأجهزة سلوك النية العادية أو دلالة ذلك.
- يجب ألّا تغيّر الأجهزة دورة الحياة أو دلالات دورة الحياة الخاصة بأحد أنواع مكوّنات النظام (مثل Service وActivity وContentProvider وما إلى ذلك).
- يجب ألّا تغيّر الأجهزة دلالة الإذن العادي.
يُرجى العِلم أنّ القائمة أعلاه ليست شاملة. تختبر مجموعة أدوات اختبار التوافق (CTS) أجزاءً كبيرة من المنصة للتحقّق من التوافق السلوكي، ولكن ليس كلها. تقع على عاتق المنفِّذ مسؤولية ضمان التوافق السلوكي مع "مشروع Android المفتوح المصدر". لهذا السبب، على مطوّري الأجهزة استخدام الرمز المصدر المتاح من خلال "المشروع المفتوح المصدر لنظام Android" كلما أمكن، بدلاً من إعادة تنفيذ أجزاء مهمة من النظام.
3.6. مساحات أسماء واجهة برمجة التطبيقات
يتّبع نظام التشغيل Android اصطلاحات مساحة اسم الحزمة والفئة التي تحدّدها لغة برمجة Java. لضمان التوافق مع التطبيقات التابعة لجهات خارجية، يجب ألا يُجري مورّدو الأجهزة أي تعديلات محظورة (راجِع المعلومات أدناه) على مساحات أسماء الحِزم التالية:
- java.*
- javax.*
- sun.*
- android.*
- com.android.*
تشمل التعديلات المحظورة ما يلي:
- يجب ألا تعدّل عمليات تنفيذ الأجهزة واجهات برمجة التطبيقات المتاحة للجميع على منصة Android من خلال تغيير أي توقيعات طُرق أو فئات أو إزالة فئات أو حقول فئات.
- يجوز لمطوّري الأجهزة تعديل التنفيذ الأساسي لواجهات برمجة التطبيقات، ولكن يجب ألا تؤثر هذه التعديلات في السلوك المذكور وتوقيع لغة Java لواجهات برمجة التطبيقات المتاحة للجميع.
- يجب ألا يضيف مورّدو الأجهزة أي عناصر متاحة للجميع (مثل الفصول أو الواجهات أو الحقول أو الطرق إلى الفصول أو الواجهات الحالية) إلى واجهة برمجة التطبيقات المذكورة أعلاه.
"العنصر المعروض للجميع" هو أيّ عنصر لم يتمّ تزيينه بالعلامة "@hide" كما هو مستخدَم في رمز المصدر الأساسي لنظام التشغيل Android. بعبارة أخرى، يجب ألا يعرِض مورّدو الأجهزة واجهات برمجة تطبيقات جديدة أو يغيّروا واجهات برمجة التطبيقات الحالية في مساحات الاسم المُشار إليها أعلاه. يجوز لمنفّذِي الأجهزة إجراء تعديلات داخلية فقط، ولكن يجب عدم الإعلان عن هذه التعديلات أو إطلاع المطوّرين عليها بأي شكل من الأشكال.
يجوز لمطوّري الأجهزة إضافة واجهات برمجة تطبيقات مخصّصة، ولكن يجب ألّا تكون أيّ من واجهات برمجة التطبيقات هذه في ملف تعريف اسم يملكه منتظم آخر أو يشير إليه. على سبيل المثال، على مطوّري التطبيقات المخصّصة للأجهزة عدم إضافة واجهات برمجة تطبيقات إلى مساحة الاسم com.google.* أو مساحة اسم مشابهة، بل يمكن لشركة Google فقط إجراء ذلك. وبالمثل، على Google عدم إضافة واجهات برمجة تطبيقات إلى مساحات أسماء الشركات الأخرى. بالإضافة إلى ذلك، إذا كان تطبيق الجهاز يتضمّن واجهات برمجة تطبيقات مخصّصة خارج مساحة اسم Android العادية، يجب تجميع واجهات برمجة التطبيقات هذه في مكتبة مشترَكة لنظام التشغيل Android لكي تتأثّر فقط التطبيقات التي تستخدمها صراحةً (من خلال آلية lt;uses-librarygt;) بزيادة استخدام ذاكرة هذه واجهات برمجة التطبيقات.
إذا اقترح أحد مطوّري الأجهزة تحسين إحدى مساحات أسماء الحِزم المذكورة أعلاه، (مثلاً، عن طريق إضافة وظيفة جديدة مفيدة إلى واجهة برمجة تطبيقات حالية أو إضافة واجهة برمجة تطبيقات جديدة)، على المطوّر الانتقال إلى source.android.com وبدء عملية المساهمة بالتغييرات والرموز البرمجية وفقًا لاطلاعه على المعلومات الواردة في ذلك الموقع الإلكتروني.
يُرجى العِلم أنّ القيود المذكورة أعلاه تتوافق مع القواعد العادية لتسمية واجهة برمجة التطبيقات في لغة Java البرمجية، ويهدف هذا القسم ببساطة إلى تعزيز تلك القواعد وجعلها ملزمة من خلال تضمينها في تعريف التوافق هذا.
3.7 التوافق مع بيئة التشغيل
يجب أن تتوافق عمليات تنفيذ الأجهزة مع تنسيق Dalvik Executable (DEX) الكامل و مواصفات ودلالات رمز Dalvik الثنائي [Resources, 23]. على مطوّري الأجهزة استخدام ART، وهو التنفيذ المرجعي لتنسيق تنفيذ Dalvik، ونظام إدارة الحِزم المرجعي للتنفيذ.
يجب أن تضبط عمليات تنفيذ الأجهزة أوقات تشغيل Dalvik لتخصيص الذاكرة وفقًا لنظام Android الأساسي، وكما هو محدّد في الجدول التالي. (اطّلِع على الفقرة 7.1.1 للاطّلاع على تعريفات حجم الشاشة وكثافة الشاشة).
يُرجى العِلم أنّ قيم الذاكرة المحدّدة أدناه تُعدّ الحدّ الأدنى للقيم، وقد تخصص عمليات تنفيذ الأجهزة مزيدًا من الذاكرة لكل تطبيق.
تنسيق الشاشة | كثافة الشاشة | الحد الأدنى لذاكرة التطبيق |
---|---|---|
ساعة Android | 120 نقطة لكل بوصة (ldpi) | 32 ميغابايت |
160 نقطة لكل بوصة (mdpi) | ||
213 نقطة لكل بوصة (tvdpi) | ||
240 نقطة لكل بوصة (دقة عالية) | 36 ميغابايت | |
280 نقطة لكل بوصة (280dpi) | ||
320 نقطة لكل بوصة (xhdpi) | 48 ميغابايت | |
360 نقطة في البوصة (360dpi) | ||
400 نقطة لكل بوصة (400dpi) | 56 ميغابايت | |
420 نقطة لكل بوصة (420dpi) | 64 ميغابايت | |
480 نقطة لكل بوصة (xxhdpi) | 88 ميغابايت | |
560 نقطة في البوصة (560dpi) | 112 ميغابايت | |
640 نقطة لكل بوصة (xxxhdpi) | 154 ميغابايت | |
صغير/عادي | 120 نقطة لكل بوصة (ldpi) | 32 ميغابايت |
160 نقطة لكل بوصة (mdpi) | ||
213 نقطة لكل بوصة (tvdpi) | 48 ميغابايت | |
240 نقطة لكل بوصة (دقة عالية) | ||
280 نقطة لكل بوصة (280dpi) | ||
320 نقطة لكل بوصة (xhdpi) | 80 ميغابايت | |
360 نقطة في البوصة (360dpi) | ||
400 نقطة لكل بوصة (400dpi) | 96 ميغابايت | |
420 نقطة لكل بوصة (420dpi) | 112 ميغابايت | |
480 نقطة لكل بوصة (xxhdpi) | 128 ميغابايت | |
560 نقطة في البوصة (560dpi) | 192 ميغابايت | |
640 نقطة لكل بوصة (xxxhdpi) | 256 ميغابايت | |
كبير | 120 نقطة لكل بوصة (ldpi) | 32 ميغابايت |
160 نقطة لكل بوصة (mdpi) | 48 ميغابايت | |
213 نقطة لكل بوصة (tvdpi) | 80 ميغابايت | |
240 نقطة لكل بوصة (دقة عالية) | ||
280 نقطة لكل بوصة (280dpi) | 96 ميغابايت | |
320 نقطة لكل بوصة (xhdpi) | 128 ميغابايت | |
360 نقطة في البوصة (360dpi) | 160 ميغابايت | |
400 نقطة لكل بوصة (400dpi) | 192 ميغابايت | |
420 نقطة لكل بوصة (420dpi) | 228 ميغابايت | |
480 نقطة لكل بوصة (xxhdpi) | 256 ميغابايت | |
560 نقطة في البوصة (560dpi) | 384 ميغابايت | |
640 نقطة لكل بوصة (xxxhdpi) | 512 ميغابايت | |
كبير جدًا | 120 نقطة لكل بوصة (ldpi) | 48 ميغابايت |
160 نقطة لكل بوصة (mdpi) | 80 ميغابايت | |
213 نقطة لكل بوصة (tvdpi) | 96 ميغابايت | |
240 نقطة لكل بوصة (دقة عالية) | ||
280 نقطة لكل بوصة (280dpi) | 144 ميغابايت | |
320 نقطة لكل بوصة (xhdpi) | 192 ميغابايت | |
360 نقطة في البوصة (360dpi) | 240 ميغابايت | |
400 نقطة لكل بوصة (400dpi) | 288 ميغابايت | |
420 نقطة لكل بوصة (420dpi) | 336 ميغابايت | |
480 نقطة لكل بوصة (xxhdpi) | 384 ميغابايت | |
560 نقطة في البوصة (560dpi) | 576 ميغابايت | |
640 نقطة لكل بوصة (xxxhdpi) | 768 ميغابايت |
3.8. توافق واجهة المستخدم
3.8.1. مشغّل التطبيقات (الشاشة الرئيسية)
يتضمّن نظام التشغيل Android تطبيق مشغّل (الشاشة الرئيسية) وإمكانية استخدام تطبيقات تابعة لجهات خارجية لتحل محل مشغّل الجهاز (الشاشة الرئيسية). يجب أن تُعلن عمليات تنفيذ الأجهزة التي تسمح للتطبيقات التابعة لجهات خارجية باستبدال الشاشة الرئيسية للجهاز عن ميزة النظام الأساسي android.software.home_screen.
3.8.2. التطبيقات المصغَّرة
التطبيقات المصغّرة اختيارية لجميع عمليات تنفيذ أجهزة Android، ولكن يجب أن تكون متوافقة مع أجهزة Android المحمولة.
يحدِّد Android نوع المكوّن وواجهة برمجة التطبيقات ودورة الحياة المقابلة التي تسمح للتطبيقات بعرض "AppWidget" للمستخدم النهائي [الموارد، 24]، وهي ميزة يُنصح بشدة بتوفّرها في عمليات تنفيذ التطبيقات على الأجهزة المحمولة. يجب أن تستوفي عمليات تنفيذ الأجهزة التي تتيح تضمين التطبيقات المصغّرة على الشاشة الرئيسية المتطلبات التالية وأن تقرّ بتوافقها مع ميزة النظام الأساسي android.software.app_widgets.
- يجب أن تتضمّن مشغّلات التطبيقات على الأجهزة ميزات مدمجة تتيح استخدام التطبيقات المصغّرة، وأن توفّر ميزات واجهة مستخدم تتيح إضافة التطبيقات المصغّرة وضبطها وعرضها وإزالتها مباشرةً داخل مشغّل التطبيقات.
- يجب أن تكون عمليات تنفيذ الأجهزة قادرة على عرض التطبيقات المصغّرة التي تبلغ مساحتها 4 x 4 بحجم الشبكة العادي. اطّلِع على "إرشادات تصميم التطبيقات المصغّرة" في مستندات حزمة تطوير البرامج (SDK) لنظام التشغيل Android [الموارد، 24] لمعرفة التفاصيل.
- قد تتيح عمليات تنفيذ الأجهزة التي تتضمّن ميزة قفل الشاشة استخدام التطبيقات المصغّرة على شاشة القفل.
3.8.3. الإشعارات
يتضمّن نظام التشغيل Android واجهات برمجة تطبيقات تتيح للمطوّرين إرسال إشعارات إلى المستخدمين بشأن الأحداث البارزة [الموارد، 25] باستخدام ميزات الأجهزة والبرامج في الجهاز.
تسمح بعض واجهات برمجة التطبيقات للتطبيقات بعرض الإشعارات أو جذب الانتباه باستخدام الأجهزة، وتحديدًا الصوت والاهتزاز والضوء. يجب أن تتوافق عمليات تنفيذ الأجهزة مع الإشعارات التي تستخدم ميزات الأجهزة، كما هو موضّح في مستندات IDE ، وبقدر الإمكان مع الأجهزة المخصّصة لتنفيذ التطبيق. على سبيل المثال، إذا كان تنفيذ الجهاز يتضمّن أداة اهتزاز، يجب تنفيذ واجهات برمجة التطبيقات الخاصة بالاهتزاز بشكل صحيح. إذا كان تنفيذ الجهاز لا يتضمّن معدات، يجب تنفيذ واجهات برمجة التطبيقات المقابلة كعمليات لا تؤدي إلى أيّ إجراء. يمكنك الاطّلاع على مزيد من التفاصيل حول هذا السلوك في القسم 7.
بالإضافة إلى ذلك، يجب أن يعرض التنفيذ بشكل صحيح جميع الموارد (الرموز وملفات الرسوم المتحركة وغيرها) المتوفّرة في واجهات برمجة التطبيقات [الموارد، 26]، أو في دليل أنماط رموز شريط الحالة/النظام [الموارد، 27]، والذي يتضمّن في حال استخدام جهاز Android Television إمكانية عدم عرض الإشعارات. يجوز لمطوّري الأجهزة توفير تجربة مستخدم بديلة للإشعارات عن تلك التي يوفّرها تنفيذ إشارة مرجعية لنظام Android المفتوح المصدر، ومع ذلك، يجب أن تتوافق أنظمة الإشعارات البديلة مع موارد الإشعارات الحالية، كما هو موضّح أعلاه.
يتيح Android إرسال إشعارات مختلفة، مثل:
- الإشعارات الغنية: طرق عرض تفاعلية للإشعارات الجارية
- الإشعارات المنبثقة: يمكن للمستخدمين التفاعل مع "العروض التفاعُلية" أو إغلاقها بدون مغادرة التطبيق الحالي.
- الإشعارات على شاشة القفل الإشعارات التي تظهر على شاشة القفل مع إمكانية التحكّم بشكل دقيق في مستوى الرؤية
عند عرض هذه الإشعارات، يجب أن تُنفِّذ عمليات التنفيذ على أجهزة Android الإشعارات الغنية والإشعارات المنبثقة بشكل صحيح وأن تتضمّن العنوان/الاسم والرمز والنص كما هو موضّح في واجهات برمجة التطبيقات Android [الموارد، 28].
يتضمّن نظام التشغيل Android واجهات برمجة تطبيقات Notification Listener Service API التي تسمح للتطبيقات (بعد أن يسمح المستخدم بذلك صراحةً) بتلقّي نسخة من جميع الإشعارات عند إرسالها أو تعديلها. يجب أن تُرسِل عمليات تنفيذ الأجهزة إعلامات كاملة بشكل صحيح وسريع إلى جميع خدمات الاستماع المثبَّتة والمفعَّلة من قِبل المستخدمين، بما في ذلك أي بيانات وصفية مرفقة بعنصر الإشعار.
3.8.4. البحث
يتضمّن Android واجهات برمجة تطبيقات [الموارد، 29] تتيح للمطوّرين دمج ميزة البحث في تطبيقاتهم، وإظهار بيانات تطبيقاتهم في البحث العام على النظام. بشكلٍ عام، تتكون هذه الوظيفة من واجهة مستخدم واحدة على مستوى النظام تسمح للمستخدمين بإدخال طلبات البحث وعرض اقتراحات أثناء كتابتهم وعرض النتائج. تسمح واجهات برمجة التطبيقات لنظام التشغيل Android للمطوّرين بإعادة استخدام هذه الواجهة لتوفير ميزة البحث داخل تطبيقاتهم، كما تسمح لهم بتقديم النتائج إلى واجهة مستخدم البحث الشاملة الشائعة.
يجب أن تتضمّن عمليات تنفيذ أجهزة Android ميزة البحث الشامل، وهي واجهة مستخدم واحدة ومشترَكة لبحث على مستوى النظام يمكنها تقديم اقتراحات في الوقت الفعلي استجابةً لإدخال المستخدم. يجب أن تُنفِّذ عمليات تنفيذ الأجهزة واجهات برمجة التطبيقات التي تسمح للمطوّرين بإعادة استخدام واجهة المستخدم هذه لتوفير ميزة البحث ضمن تطبيقاتهم الخاصة. إنّ عمليات تنفيذ الأجهزة التي تُنفِّذ واجهة البحث الشامل يجب أن تُنفِّذ واجهات برمجة التطبيقات التي تسمح للتطبيقات التابعة لجهات خارجية بإضافة اقتراحات إلى مربّع البحث عند تشغيله في وضع البحث الشامل. في حال عدم تثبيت تطبيقات تابعة لجهات خارجية تستفيد من هذه الوظيفة، من المفترض أن يكون السلوك التلقائي هو عرض نتائج واقتراحات محرّك بحث الويب.
يجب أن توفّر عمليات تنفيذ أجهزة Android مساعدًا على الجهاز لمعالجة إجراء "المساعدة" [الموارد، 30].
يتضمّن Android أيضًا واجهات برمجة التطبيقات Assist API للسماح للتطبيقات باختيار مقدار المعلومات التي يتمّت مشاركتها مع المساعد على الجهاز في السياق الحالي [الموارد، 31]. يجب أن تشير عمليات تنفيذ الجهاز التي تتيح إجراء "المساعدة" بوضوح إلى المستخدم النهائي عند مشاركة السياق من خلال عرض ضوء أبيض حول حواف الشاشة. لضمان ظهور الإشارة بوضوح للمستخدم النهائي، يجب أن تبلغ مدة سطوع الإشارة مدة تنفيذ سطوع إشارة Project Android Open Source (المشروع المفتوح المصدر لنظام التشغيل Android) أو تتجاوزها.
3.8.5. النخب
يمكن للتطبيقات استخدام واجهة برمجة التطبيقات Toast لعرض سلاسل قصيرة غير مشروطة على العميل المنتهي، والتي تختفي بعد فترة زمنية قصيرة [Resources, 32]. يجب أن تعرِض عمليات تنفيذ الأجهزة إشعارات Toast من التطبيقات للمستخدمين النهائيين بطريقة واضحة جدًا.
3.8.6. المظاهر
يقدّم Android "المظاهر" كآلية للتطبيقات لتطبيق الأنماط على مستوى نشاط أو تطبيق كامل.
يتضمّن Android مجموعة مظاهر "هولو" كمجموعة من الأنماط المحدّدة التي يمكن لمطوّري التطبيقات استخدامها إذا أرادوا مطابقة مظهر ومضمون مظهر "هولو" كما هو محدّد في حزمة تطوير البرامج (SDK) لنظام التشغيل Android [Resources, 33]. يجب ألا تغيّر عمليات تنفيذ الأجهزة أيًا من سمات مظهر Holo المعروضة للتطبيقات [Resources, 34].
يتضمّن Android مجموعة مظاهر "مادية" كمجموعة من الأنماط المحدّدة التي يمكن لمطوّري التطبيقات استخدامها إذا أرادوا مطابقة مظهر وملمس مظهر التصميم على مستوى الأنواع المتنوعة من أجهزة Android المختلفة. يجب أن تتوافق عمليات تنفيذ التطبيقات على الأجهزة مع عائلة المظهر "المادية"، ويجب ألّا تغيّر أيًا من سمات المظهر "المادية" أو مواد العرض المعروضة للتطبيقات [الموارد، 35].
يتضمّن Android أيضًا مجموعة مظاهر "تلقائي على الجهاز" كمجموعة من الأنماط المحدّدة التي يمكن لمطوّري التطبيقات استخدامها إذا أرادوا مطابقة مظهر مظهر الجهاز وأسلوبه كما حدّده مُنفِّذ الجهاز. يجوز لعمليات تنفيذ التطبيقات على الأجهزة تعديل سمات المظهر التلقائي للجهاز المعروضة للتطبيقات [الموارد، 34].
يتيح نظام Android استخدام مظهر متغير مع أشرطة نظام شفافة، ما يسمح لمطوّري التطبيقات بملء المنطقة خلف شريط الحالة وشريط التنقّل بمحتوى تطبيقاتهم. لتوفير تجربة متّسقة للمطوّرين في هذا الإعداد، من المهم الحفاظ على نمط رمز شريط الحالة على مستوى عمليات التنفيذ المختلفة للأجهزة. لذلك، يجب أن تستخدم عمليات التنفيذ على أجهزة Android اللون الأبيض لرمز حالة النظام (مثل قوة الإشارة ومستوى البطارية) والإشعارات الصادرة عن النظام، ما لم يشير الرمز إلى حالة مشكلة أو يطلب أحد التطبيقات شريط حالة فاتحًا باستخدام العلامة SYSTEM_UI_FLAG_LIGHT_STATUS_BAR. عندما يطلب أحد التطبيقات عرض شريط حالة خفيف، يجب أن تغيّر تطبيقات Android لون رموز حالة النظام إلى الأسود [Resources, 34].
3.8.7. خلفيات متحركة
يحدِّد نظام التشغيل Android نوع المكوّن وواجهة برمجة التطبيقات ومراحل النشاط المقابلة التي تسمح للتطبيقات بعرض "خلفية حية" واحدة أو أكثر للمستخدم النهائي [الموارد، 36]. الخلفيات الحية هي صور متحركة أو أنماط أو صور مشابهة تتضمّن إمكانات محدودة لإدخال البيانات، ويتم عرضها كخلفية خلف التطبيقات الأخرى.
يُعتبر الجهاز قادرًا على تشغيل الخلفيات المتحركة بشكل موثوق إذا كان بإمكانه تشغيل جميع الخلفيات المتحركة بدون أي قيود على الوظائف بمعدّل مقبولاً للقطة في الثانية بدون أي تأثيرات سلبية على التطبيقات الأخرى. إذا كانت القيود المفروضة على الأجهزة تؤدي إلى تعطُّل الخلفيات و/أو التطبيقات أو حدوث خلل فيها أو استهلاك موارد مفرطة لوحدة المعالجة المركزية أو البطارية أو تشغيلها بمعدّلات عرض إطارات منخفضة بشكل غير مقبول، يعني ذلك أنّه لا يمكن تشغيل الخلفية الحية على الجهاز. على سبيل المثال، قد تستخدم بعض خلفيات الصور المتحركة سياق OpenGL 2.0 أو 3.x لعرض محتواها. لن تعمل الخلفية الحية بشكل موثوق على الأجهزة التي لا تتوافق مع سياقات OpenGL المتعدّدة، لأنّ استخدام الخلفية الحية لسياق OpenGL قد يؤدي إلى تعارض مع التطبيقات الأخرى التي تستخدم أيضًا سياق OpenGL.
يجب أن توفّر عمليات تنفيذ الأجهزة التي يمكنها تشغيل الخلفيات الحية بشكل موثوق كما هو موضّح أعلاه الخلفيات الحية، ويجب أن تُبلغ عند التنفيذ عن علامة ميزة النظام الأساسي android.software.live_wallpaper.
3.8.8. التبديل بين الأنشطة
بما أنّ مفتاح التنقّل في وظائف "التطبيقات المستخدَمة مؤخرًا" اختياري، تكون متطلبات تنفيذ شاشة النظرة العامة اختيارية لأجهزة Android Television وأجهزة Android Watch.
يتضمّن رمز المصدر في Android الأصلي شاشة النظرة العامة [الموارد، 37]، وهي واجهة مستخدم على مستوى النظام للتبديل بين المهام وعرض الأنشطة والمهام التي تم الوصول إليها مؤخرًا باستخدام صورة مصغّرة لحالة التطبيق الرسومية في اللحظة التي غادر فيها المستخدم التطبيق آخر مرة. القسم 7.2.3: قد تؤدي عمليات تنفيذ التطبيقات على الأجهزة، بما في ذلك مفتاح التنقّل في وظائف التطبيقات الأخيرة كما هو موضّح بالتفصيل في القسم 7.2.3، إلى تغيير الواجهة، ولكن يجب أن تستوفي المتطلبات التالية:
- يجب عرض المحتوى الأخير المرتبط كمجموعة تتحرك معًا.
- يجب أن تتيح إضافة ما يصل إلى 6 أنشطة معروضة على الأقل.
- يجب أن يعرض عنوان 4 أنشطة على الأقل في المرة الواحدة.
- من المفترض أن يتم عرض لون التمييز والرمز وعنوان الشاشة في قسم "العناصر الأخيرة".
- يجب تنفيذ سلوك تثبيت الشاشة [الموارد، 38] وتزويد المستخدم بقائمة إعدادات لتفعيل الميزة أو إيقافها.
- يجب أن تعرض عنصر إتاحة إغلاق ("x")، ولكن قد يتم تأخير ذلك إلى أن يتفاعل المستخدِم مع الشاشات.
ننصح بشدة باستخدام واجهة مستخدم Android الأحدث (أو واجهة مشابهة مستندة إلى الصور المصغّرة) لشاشة النظرة العامة في عمليات تنفيذ التطبيقات على الأجهزة.
3.8.9. إدارة الإدخال
يتيح نظام التشغيل Android إدارة الإدخال واستخدام أدوات تعديل methods methods التابعة لجهات خارجية [الموارد، 39]. يجب أن تعلن عمليات تنفيذ الأجهزة التي تسمح للمستخدمين باستخدام طرق إدخال تابعة لجهات خارجية على الجهاز عن ميزة النظام الأساسي android.software.input_methods وتتيح واجهات برمجة تطبيقات IME كما هو محدّد في مستندات حزمة تطوير البرامج (SDK) لنظام التشغيل Android.
يجب أن توفّر عمليات تنفيذ الأجهزة التي تحدّد ميزة android.software.input_methods آلية يمكن للمستخدم الوصول إليها لإضافة وضبط methods methods التابعة لجهات خارجية. يجب أن تعرِض عمليات تنفيذ الأجهزة واجهة الإعدادات استجابةً للطلب android.settings.INPUT_METHOD_SETTINGS.
3.8.10. عناصر التحكّم في الوسائط على شاشة القفل
تم إيقاف Remote Control Client API نهائيًا في Android 5.0 لصالح Media Notification Template الذي يسمح لتطبيقات الوسائط بالدمج مع عناصر التحكّم في التشغيل التي تظهر على شاشة القفل [Resources, 40] بصفتها إشعارات شاشة القفل. يجب أن تعرِض عمليات تنفيذ الأجهزة نموذج إشعارات الوسائط بشكل صحيح كجزء من إشعارات شاشة القفل الموضّحة في القسم 3.8.3.
3.8.11. أحلام
يتيح نظام التشغيل Android استخدام شاشات توقف تفاعلية تُعرف باسم "الأحلام" [Resources, 41]. تتيح ميزة "الأحلام" للمستخدمين التفاعل مع التطبيقات عندما يكون الجهاز المتصل بمصدر طاقة في وضع السكون أو في وضع الإرساء في قاعدة شحن مكتبية. يجوز لأجهزة Android Watch استخدام ميزة "الأحلام"، ولكن يجب أن تتضمّن أنواع الأجهزة الأخرى التي تستخدم الميزة دعمًا لها وأن توفّر خيارًا للإعدادات يتيح للمستخدمين ضبط الميزة استجابةً لوحدة android.settings.DREAM_SETTINGS intent.
3.8.12. الموقع الجغرافي
عندما يكون الجهاز مزوّدًا بمستشعر أجهزة (مثل نظام تحديد المواقع العالمي (GPS)) قادر على توفير إحداثيات الموقع الجغرافي، يجب عرض أوضاع الموقع الجغرافي في قائمة "الموقع الجغرافي" ضمن "الإعدادات" [المراجع، 42].
3.8.13. يونيكود والخط
يتيح نظام التشغيل Android استخدام رموز الإيموجي الملونة. عندما تتضمّن عمليات تنفيذ تطبيقات Android طريقة إدخال، يجب أن توفّر الأجهزة للمستخدم طريقة إدخال لشخصيات الإيموجي المحدّدة في Unicode 6.1 [الموارد، 43]. يجب أن تكون جميع الأجهزة قادرة على عرض أحرف الرموز التعبيرية هذه برمز مميّز بالألوان.
يتيح نظام التشغيل Android استخدام الخط Roboto 2 بدرجات كثافة مختلفة، وهي sans-serif-thin وsans-serif-light وsans-serif-medium وsans-serif-black وsans-serif-condensed وsans-serif-condensed-light، ويجب تضمين كل هذه الدرجات لأجل اللغات المتاحة على الجهاز وتغطية Unicode 7.0 الكاملة للغة اللاتينية واليونانية والسيريلية، بما في ذلك النطاقات A وB وC وD للغة اللاتينية الموسّعة، وجميع الأحرف الرسومية في مجموعة رموز العملات في Unicode 7.0.
3.9. إدارة الجهاز
يتضمّن نظام Android ميزات تتيح للتطبيقات المهتمة بالأمان تنفيذ وظائف إدارة الجهاز على مستوى النظام، مثل فرض سياسات كلمات المرور أو تنفيذ ميزة "محو البيانات عن بُعد" من خلال واجهة برمجة التطبيقات لإدارة أجهزة Android [الموارد، 44]. يجب أن توفّر عمليات تنفيذ الأجهزة تنفيذًا لفئة DevicePolicyManager [Resources, 45]. يجب أن تتيح عمليات تنفيذ الأجهزة التي تتضمّن ميزة قفل الشاشة المستندة إلى رقم التعريف الشخصي (رقمي) أو كلمة المرور (أبجدية رقمية) استخدام المجموعة الكاملة من سياسات إدارة الجهاز المحدّدة في مستندات حزمة تطوير البرامج (SDK) لنظام التشغيل Android [Resources, 44] والإبلاغ عن ميزة النظام الأساسي android.software.device_admin.
3.9.1 إدارة الجهاز
3.9.1.1 إعداد حساب مالك الجهاز
إذا كان تطبيق تنفيذ الجهاز يعلن عن ميزة android.software.device_admin، يجب أن تتيح عملية الإعداد خارج العلبة تسجيل تطبيق "جهاز تحكّم في سياسة الجهاز" (DPC) كتطبيق "مالك الجهاز" [ الموارد، 46]. قد تتضمّن عمليات تنفيذ الأجهزة تطبيقًا مثبَّتًا مسبقًا يؤدي وظائف إدارة الجهاز، ولكن يجب عدم ضبط هذا التطبيق على أنّه تطبيق "مالك الجهاز" بدون موافقة صريحة أو إجراء من المستخدم أو إداري الجهاز.
يجب أن تكون تجربة المستخدم لعملية إعداد مالك الجهاز (التدفق الذي يبدأه android.app.action.PROVISION_MANAGED_DEVICE [ Resources, 47]) متوافقة مع عملية تنفيذ AOSP.
إذا أبلغ تنفيذ الجهاز عن android.hardware.nfc، يجب تفعيل تكنولوجيا NFC ، حتى أثناء عملية الإعداد خارج العلبة، للسماح بإعداد تكنولوجيا NFC لمالكي الأجهزة [الموارد، 48].
3.9.1.2 توفير الملف الشخصي المُدار
إذا كان تطبيق تنفيذ الجهاز يعلن عن android.software.managed_users، يجب أن يكون من الممكن تسجيل تطبيق "جهاز تحكّم في سياسة الجهاز" (DPC) بصفته مالكًا لملف شخصي مُدار جديد. [ الموارد، 49]
يجب أن تكون تجربة المستخدم لعملية توفير الملف الشخصي المُدار (التدفق الذي يبدأه android.app.action.PROVISION_MANAGED_PROFILE [ Resources, 50]) متوافقة مع عملية تنفيذ AOSP.
3.9.2 توافق الملف الشخصي المُدار
الأجهزة المتوافقة مع الملف الشخصي المُدار هي الأجهزة التي:
- يجب الإفصاح عن android.software.device_admin (راجِع الفقرة 3.9 "إدارة الجهاز").
- أن تكون غير مزوّدة بذاكرة وصول عشوائي منخفضة (راجِع الفقرة 7.6.1)
- تخصيص مساحة تخزين داخلية (غير قابلة للإزالة) كمساحة تخزين مشتركة (راجِع الفقرة 7.6.2)
يجب أن تستوفي الأجهزة المتوافقة مع الملف الشخصي المُدار الشروط التالية:
- يجب الإفصاح عن علامة ميزة النظام الأساسي android.software.managed_users.
- إتاحة الملفات الشخصية المُدارة من خلال واجهات برمجة التطبيقات android.app.admin.DevicePolicyManager
- السماح بإنشاء ملف شخصي مُدار واحد فقط [Resources, 50]
- استخدِم شارة رمز (مثل شارة العمل في AOSP) لتمثيل التطبيقات المصغّرة والتطبيقات المُدارة وعناصر واجهة المستخدم الأخرى التي تحمل شارة، مثل "التطبيقات المستخدَمة مؤخرًا" والإشعارات.
- عرض رمز إشعار (يشبه شارة العمل في AOSP) للإشارة إلى أنّ المستخدم يستخدم تطبيقًا في ملف شخصي مُدار
- عرض إشعار عابر يشير إلى أنّ المستخدم في الملف الشخصي المُدار في حال بدء تشغيل الجهاز (ACTION_USER_PRESENT) وكان التطبيق الذي يعمل في المقدّمة ضمن الملف الشخصي المُدار
- في حال توفّر ملف شخصي مُدار، يجب عرض عنصر تحكم مرئي في "أداة اختيار" النوايا للسماح للمستخدم بإعادة توجيه النية من الملف الشخصي المُدار إلى المستخدم الأساسي أو العكس، إذا فعّل ذلك "جهاز تحكّم في سياسة الجهاز".
- في حال توفّر ملف شخصي مُدار، يجب عرض ميزات المستخدم التالية لكلٍّ من
المستخدم الأساسي والملف الشخصي المُدار:
- احتساب استخدام البطارية والموقع الجغرافي وبيانات الجوّال ومساحة التخزين بشكل منفصل للمستخدم الأساسي والملف الشخصي المُدار
- إدارة مستقلة لتطبيقات VPN المثبَّتة في الملف الشخصي الأساسي للمستخدم أو الملف الشخصي المُدار
- إدارة مستقلة للتطبيقات المثبَّتة في الملف الشخصي الأساسي للمستخدم أو الملف الشخصي المُدار
- إدارة مستقلة للحسابات ضمن الملف الشخصي للمستخدم الأساسي أو الملف الشخصي المُدار
- تأكَّد من أنّ تطبيق الاتصال التلقائي يمكنه البحث عن معلومات المتصل من الملف الشخصي المُدار (إذا كان متوفّرًا) إلى جانب المعلومات الواردة من الملف الشخصي الأساسي، إذا كان "جهاز التحكّم في سياسة الجهاز" يسمح بذلك.
- يجب التأكّد من استيفاء جميع متطلبات الأمان السارية على جهاز تم تفعيل ميزة "مستخدمون متعدّدون" عليه (راجِع الفقرة 9.5)، على الرغم من أنّ الملف الشخصي المُدار لا يتم احتسابه كمستخدم آخر بالإضافة إلى المستخدم الأساسي.
3.10. تسهيل الاستخدام
يقدّم نظام التشغيل Android طبقة تسهيل الاستخدام تساعد المستخدمين الذين يعانون من عجز في التنقّل في أجهزتهم بسهولة أكبر. بالإضافة إلى ذلك، يقدّم Android واجهات برمجة تطبيقات النظام التي تتيح لعمليات تنفيذ خدمات تسهيل الاستخدام تلقّي عمليات استدعاء لأحداث المستخدم والنظام وإنشاء آليات ملاحظات بديلة، مثل تحويل النص إلى كلام والملاحظات اللمسية والتنقّل باستخدام كرة التتبُّع/أداة التوجيه [الموارد، 51].
تشمل عمليات تنفيذ الأجهزة المتطلبات التالية:
- يجب أن توفّر عمليات تنفيذ Android Automotive تنفيذًا لإطار العمل المتعلّق بتسهيل الاستخدام في Android يكون متوافقًا مع تنفيذ Android التلقائي.
- يجب أن تقدّم عمليات تنفيذ الأجهزة (باستثناء Android Automotive) تنفيذًا لإطار عمل تسهيل الاستخدام في Android متوافقًا مع تنفيذ Android التلقائي.
- يجب أن تتوافق عمليات تنفيذ الخدمات على الأجهزة (باستثناء Android Automotive) مع عمليات تنفيذ خدمات تسهيل الاستخدام التابعة لجهات خارجية من خلال واجهتَي برمجة التطبيقات android.accessibilityservice API [المراجع، 52]
- يجب أن تُنشئ عمليات تنفيذ التطبيق على الأجهزة (باستثناء Android Automotive) أحداث AccessibilityEvents وأن تُرسِل هذه الأحداث إلى جميع عمليات تنفيذ AccessibilityService المسجَّلة بطريقة تتوافق مع عملية تنفيذ Android التلقائية.
- يجب أن توفّر عمليات تنفيذ الأجهزة (أجهزة Android Automotive وAndroid Watch التي لا تتضمّن مخرجًا صوتيًا) آلية يمكن للمستخدم الوصول إليها لتفعيل خدمات تسهيل الاستخدام وإيقافها، ويجب أن تعرض هذه الواجهة استجابةً لطلب android.provider.Settings.ACTION_ACCESSIBILITY_SETTINGS.
بالإضافة إلى ذلك، يجب أن توفّر عمليات تنفيذ الأجهزة تنفيذًا للخدمة لتسهيل الاستخدام على الجهاز، ويجب أن توفّر آلية للمستخدمين لتفعيل خدمة تسهيل الاستخدام أثناء إعداد الجهاز. يتوفّر تنفيذ مفتوح المصدر لخدمة تسهيل الاستخدام من مشروع Eyes Free [الموارد، 53].
3.11. تحويل النص إلى كلام
يتضمّن Android واجهات برمجة تطبيقات تتيح للتطبيقات الاستفادة من خدمات تحويل النص إلى كلام (TTS) وتسمح لمقدّمي الخدمات بتوفير عمليات تنفيذ لخدمات تحويل النص إلى كلام [الموارد، 54]. يجب أن تستوفي عمليات تنفيذ الأجهزة التي تُبلغ عن الميزة android.hardware.audio.output هذه المتطلبات المتعلقة بإطار عمل تحويل النص إلى كلام (TTS) في Android.
عمليات تنفيذ Android Automotive:
- يجب أن تكون متوافقة مع واجهات برمجة التطبيقات لإطار عمل تحويل النص إلى كلام في Android.
- قد تتيح إمكانية تثبيت محرّكات تحويل نص إلى كلام تابعة لجهات خارجية. على الشركاء توفير واجهة يمكن للمستخدم الوصول إليها تتيح له اختيار محرك تحويل محتوى إلى كلام لاستخدامه على مستوى النظام، في حال توفّر ذلك.
جميع عمليات تنفيذ الأجهزة الأخرى:
- يجب أن يكون متوافقًا مع واجهات برمجة التطبيقات لإطار عمل تحويل النص إلى كلام في Android، ويجب أن يتضمّن محرّك تحويل النص إلى كلام يتوافق مع اللغات المتاحة على الجهاز. يُرجى العِلم أنّ الإصدار الأحدث من الإصدار العلني لبرنامج Android المفتوح المصدر يتضمّن تنفيذًا كاملاً لمحرك تحويل النص إلى كلام.
- يجب أن تتيح إمكانية تثبيت محرّكات تحويل النص إلى كلام التابعة لجهات خارجية
- يجب توفير واجهة يمكن للمستخدم الوصول إليها تتيح للمستخدمين اختيار محرك تحويل كتابة إلى كلام للاستخدام على مستوى النظام.
3.12. إطار عمل إدخال التلفزيون
يعمل إطار عمل إدخال Android Television (TIF) على تبسيط عملية إرسال المحتوى المباشر إلى أجهزة Android Television. توفّر واجهة TIF واجهة برمجة تطبيقات عادية لإنشاء وحدات إدخال تتحكّم في أجهزة Android Television. يجب أن تتيح عمليات تنفيذ تطبيقات Android Television الاستفادة من إطار عمل إدخال التلفزيون [الموارد، 55].
يجب أن تحدّد عمليات تنفيذ الأجهزة التي تتيح استخدام TIF ميزة المنصة android.software.live_tv.
3.12.1. تطبيق للبث التلفزيوني
يجب أن يتضمّن أي تطبيق متوافق مع البث التلفزيوني المباشر تطبيق تلفزيون (TV App) مثبّتًا. يقدّم "المشروع المفتوح المصدر لنظام Android" تطبيقًا لتطبيق TV.
يجب أن يتيح تطبيق التلفزيون التلقائي الوصول إلى القنوات من مصادر الإدخال المثبَّتة ومصادر الإدخال التابعة لجهات خارجية. تجدر الإشارة إلى أنّ المدخلات المثبَّتة تشمل جميع المدخلات المقدَّمة تلقائيًا، سواء كانت مستندة إلى TIF أم لا.يجب أن يقدّم تطبيق التلفزيون تسهيلات لتثبيت قنوات التلفزيون واستخدامها [Resources, 56] وأن يستوفي المتطلبات التالية:
- يجب أن تسمح عمليات تنفيذ الأجهزة بتثبيت وإدارة مدخلات مستندة إلى TIF تابعة لجهات خارجية (مدخلات تابعة لجهات خارجية) [الموارد، 57] .
- قد توفّر عمليات تنفيذ الأجهزة فصلاً مرئيًا بين الإدخالات المُثبَّتة مسبقًا المستندة إلى TIF (الإدخالات المثبَّتة) [الموارد، 58] والإدخالات التابعة لجهات خارجية.
- يجب ألا تعرض عمليات تنفيذ الأجهزة الإدخالات التابعة لجهات خارجية أكثر من إجراء تنقّل واحد بعيدًا عن تطبيق التلفزيون (أي توسيع قائمة الإدخالات التابعة لجهات خارجية من تطبيق التلفزيون).
3.12.1.1. دليل البرامج الإلكتروني
يجب أن تعرض عمليات تنفيذ أجهزة Android Television شاشة معلومات تفاعلية، ويجب أن تتضمّن دليل برامج إلكترونيًا (EPG) يتم إنشاؤه من القيم الواردة في حقول TvContract.Programs [Resources, 59]. يجب أن يستوفي جدول البرامج الإلكتروني المتطلبات التالية:
- يجب أن يعرض دليل البرامج الإلكتروني معلومات من جميع مدخلات البث المثبّتة ومدخلات البث التابعة لجهات خارجية.
- يجوز أن يوفّر دليل البرامج الإلكتروني (EPG) فصلاً مرئيًا بين الإدخالات المثبَّتة والإدخالات التابعة لجهات خارجية.
- يُنصح بشدة بأن يعرض دليل البرامج الإلكتروني الإدخالات المثبَّتة و inputs التابعة لجهات خارجية بشكل بارز بالقدر نفسه. يجب ألّا يعرض دليل البرامج الإلكتروني إدخالات الجهات الخارجية بمسافة تزيد عن إجراء تنقّل واحد عن الإدخالات المثبّتة في دليل البرامج الإلكتروني.
- عند تغيير القناة، يجب أن تعرض عمليات تنفيذ الأجهزة بيانات EPG لبرنامج الذي يتم تشغيله حاليًا.
3.12.1.2. التنقّل
يجب أن تسمح أجهزة إدخال جهاز Android Television (مثل وحدة التحكّم عن بُعد أو تطبيق التحكّم عن بُعد أو وحدة تحكّم في الألعاب) بالتنقّل إلى جميع الأقسام التي يمكن تنفيذ إجراءات بشأنها على الشاشة باستخدام لوحة التوجيه. يجب استخدام عصا التحكم في الاتجاهات الأربعة للأعلى وللأسفل لتغيير قنوات التلفزيون المباشر عندما لا يتوفّر قسم قابل للتنفيذ على الشاشة.
من المفترض أن يُرسِل تطبيق التلفزيون الأحداث الرئيسية إلى مصادر إدخال HDMI من خلال CEC.
3.12.1.3. ربط تطبيق إدخال التلفزيون
يجب أن تتيح عمليات تنفيذ أجهزة Android Television ربط التطبيقات التي تُستخدَم كمدخلات للتلفزيون، ما يسمح لجميع المدخلات بتوفير روابط الأنشطة من النشاط الحالي إلى نشاط آخر (أي رابط من البرنامج المباشر إلى محتوى ذي صلة) [الموارد، 60]. يجب أن يعرض تطبيق التلفزيون ربط تطبيق إدخال التلفزيون عند توفيره.
4- توافق حِزم التطبيقات
يجب أن تعمل عمليات تنفيذ الأجهزة على تثبيت ملفات APK الخاصة بنظام التشغيل Android وتشغيلها على النحو الذي تم إنشاؤه بواسطة أداة aapt المضمّنة في حزمة تطوير البرامج (SDK) الرسمية لنظام التشغيل Android [المراجع، 61].
يجب ألا تؤدي عمليات تنفيذ الأجهزة إلى توسيع نطاق تنسيقات ملف .apk [Resources, 62] أو ملف بيان Android [Resources, 49] أو ملف رمز Dalvik البرمجي [Resources, 23] أو ملف رمز RenderScript البرمجي بطريقة تمنع تثبيت تلك الملفات وتشغيلها بشكل صحيح على الأجهزة المتوافقة الأخرى.
5. توافق الوسائط المتعددة
5.1. برامج ترميز الوسائط
يجب أن تتوافق عمليات تنفيذ الأجهزة مع تنسيقات الوسائط الأساسية المحدّدة في مستندات IDE لنظام التشغيل Android [Resources, 64] ، باستثناء الحالات التي يُسمح فيها صراحةً بذلك في هذا المستند. وعلى وجه التحديد، يجب أن تتوافق تطبيقات الأجهزة مع تنسيقات الوسائط وبرامج الترميز وفك الترميز وأنواع الملفات وتنسيقات الحاويات المحدّدة في الجداول أدناه والتي يتم الإبلاغ عنها من خلال MediaCodecList [Resources, 65]. يجب أن تكون عمليات تنفيذ الأجهزة قادرة أيضًا على فك ترميز جميع الملفات الشخصية التي تم الإبلاغ عنها في CamcorderProfile [Resources, 66] ويجب أن تكون قادرة على فك ترميز جميع التنسيقات التي يمكنها ترميزها. يتم توفير كل برامج الترميز هذه كبرامج تنفيذ في عملية التنفيذ المفضّلة لنظام Android من "المشروع المفتوح المصدر لنظام Android".
يُرجى العِلم أنّ Google أو تحالف Open Handset Alliance لا يقدّمان أي تأكيد بأنّ برامج الترميز هذه خالية من براءات اختراع تابعة لجهات خارجية. ننصحك بأن يحصل المستخدمون الذين يريدون استخدام رمز المصدر هذا في منتجات الأجهزة أو البرامج على تراخيص براءات اختراع من مالكي براءات الاختراع المعنيين، وذلك لأنّ عمليات تنفيذ هذا الرمز، بما في ذلك في البرامج المفتوحة المصدر أو البرامج المشترَكة.
5.1.1. برامج ترميز الصوت
التنسيق/برنامج الترميز | برنامج الترميز | برنامج فك الترميز | التفاصيل | أنواع الملفات/تنسيقات الحاويات المتوافقة |
---|---|---|---|---|
الملف الشخصي لبرنامج الترميز المتقدّم للصوت (AAC) في MPEG-4 (AAC LC) |
مطلوب1 | مطلوب | إتاحة المحتوى الصوتي الأحادي/الإستيريو/5.0/5.12 بمعدّلات بيانات في الملف الصوتي العادية من 8 إلى 48 كيلوهرتز |
|
الملف الشخصي MPEG-4 HE AAC (AAC+) | مطلوب1 (Android 4.1 والإصدارات الأحدث) |
مطلوب | إتاحة محتوى صوت أحادي/استيريو/5.0/5.12 بمعدّلات بيانات في الملف الصوتي عادية تتراوح بين 16 و48 كيلوهرتز | |
MPEG-4 HE AACv2 الملف الشخصي (الترميز المحسّن للصوت بكفاءة عالية) |
مطلوب | إتاحة محتوى صوت أحادي/استيريو/5.0/5.12 بمعدّلات بيانات في الملف الصوتي عادية تتراوح بين 16 و48 كيلوهرتز | ||
الترميز المتقدّم للصوت بوقت استجابة منخفض (AAC ELD) | مطلوب1 (Android 4.1 والإصدارات الأحدث) |
مطلوب (Android 4.1 والإصدارات الأحدث) |
إتاحة المحتوى الأحادي/الإستيريو بمعدّلات بيانات في الملف الصوتي عادية تتراوح بين 16 و48 كيلوهرتز | |
AMR-NB | مطلوب3 | مطلوب3 | من 4.75 إلى 12.2 كيلوبت في الثانية بمعدل أخذ عينات يبلغ 8 كيلوهرتز | 3GPP (.3gp) |
AMR-WB | مطلوب3 | مطلوب3 | 9 معدّلات تتراوح بين 6.60 كيلوبت في الثانية و23.85 كيلوبت في الثانية بمعدّل أخذ عينات يبلغ 16 كيلوهرتز | |
FLAC | مطلوب (Android 3.1 والإصدارات الأحدث) |
صوت أحادي/صوت استيريو (بدون قنوات متعددة) معدلات أخذ العينات التي تصل إلى 48 كيلوهرتز (ولكن يُنصح باستخدام معدلات تصل إلى 44.1 كيلوهرتز على الأجهزة التي تُخرج 44.1 كيلوهرتز، لأنّ أداة تقليل معدل أخذ العينات من 48 إلى 44.1 كيلوهرتز لا تتضمّن فلترًا منخفض التردد) يُنصح باستخدام 16 بت، ولا يتم تطبيق تقنية التمويه لملف 24 بت. | FLAC (.flac) فقط | |
MP3 | مطلوب | صوت أحادي/صوت استيريو بمعدّل نقل بيانات ثابت من 8 إلى 320 كيلوبت في الثانية (معدل نقل بيانات ثابت) أو بمعدّل نقل بيانات متغيّر (VBR) | MP3 (.mp3) | |
MIDI | مطلوب | نوعا MIDI 0 و1 الإصداران 1 و2 من DLS XMF وMobile XMF إتاحة استخدام تنسيقات نغمات الرنين RTTTL/RTX وOTA وiMelody |
|
|
Vorbis | مطلوب |
|
||
PCM/WAVE | مطلوب4 (Android 4.1 والإصدارات الأحدث) |
مطلوب | تنسيق PCM خطي بترميز 16 بت (بمعدلات تصل إلى الحد الأقصى للأجهزة) يجب أن تتوافق الأجهزة مع معدلات sampling لتسجيل PCM الأوّلي بمعدّلات التردد 8000 و11025 و16000 و44100 هرتز. | WAVE (.wav) |
Opus | مطلوب (الإصدار 5.0 من نظام التشغيل Android والإصدارات الأحدث) |
Matroska (.mkv) |
1 مطلوب لعمليات تنفيذ الأجهزة التي تحدِّد android.hardware.microphone ولكنها اختيارية لعمليات تنفيذ أجهزة Android Watch.
2 لا يُشترط سوى خفض مستوى صوت محتوى 5.0/5.1، وتسجيل أو عرض أكثر من قناتين اختياري.
3 مطلوب لعمليات تنفيذ الأجهزة الجوّالة التي تعمل بنظام التشغيل Android.
4 مطلوب لعمليات تنفيذ الأجهزة التي تحدِّد android.hardware.microphone، بما في ذلك عمليات تنفيذ أجهزة Android Watch.
5.1.2. برامج ترميز الصور
التنسيق/برنامج الترميز | برنامج الترميز | برنامج فك الترميز | التفاصيل | أنواع الملفات/تنسيقات الحاويات المتوافقة |
---|---|---|---|---|
JPEG | مطلوب | مطلوب | قاعدة + رسوم متحركة | JPEG (.jpg) |
ملف GIF | مطلوب | GIF (.gif) | ||
PNG | مطلوب | مطلوب | PNG (.png) | |
BMP | مطلوب | BMP (.bmp) | ||
WebP | مطلوب | مطلوب | WebP (.webp) |
5.1.3. برامج ترميز الفيديو
التنسيق/برنامج الترميز | برنامج الترميز | برنامج فك الترميز | التفاصيل | أنواع الملفات/ تنسيقات الحاويات المتوافقة |
---|---|---|---|---|
H.263 | مطلوب1 | مطلوب2 |
|
|
H.264 AVC | مطلوب2 | مطلوب2 | راجِع الفقرة 5.2 و5.3 للاطّلاع على التفاصيل. |
|
H.265 HEVC | مطلوب5 | راجِع الفقرة 5.3 لمعرفة التفاصيل. | MPEG-4 (.mp4) | |
MPEG-2 | يُنصح بها بشدة6 | الجودة الرئيسية | MPEG2-TS | |
MPEG-4 SP | مطلوب2 | 3GPP (.3gp) | ||
VP83 | مطلوب2 (Android 4.3 والإصدارات الأحدث) |
مطلوب2 (Android 2.3.3 والإصدارات الأحدث) |
راجِع الفقرة 5.2 و5.3 للاطّلاع على التفاصيل. |
|
VP9 | مطلوب2 (Android 4.4 والإصدارات الأحدث) |
راجِع الفقرة 5.3 لمعرفة التفاصيل. |
|
1 مطلوب لعمليات تنفيذ الأجهزة التي تتضمّن أجهزة الكاميرا وتحدِّد android.hardware.camera أو android.hardware.camera.front.
2 مطلوب لعمليات تنفيذ الأجهزة باستثناء أجهزة Android Watch.
3 للحصول على جودة مقبولة لخدمات بث الفيديو على الويب وخدمات الفيديو المباشر، يجب أن تستخدم عمليات تنفيذ الأجهزة برنامج ترميز VP8 للأجهزة الذي يستوفي المتطلبات الواردة في [الموارد، 68].
4 يجب أن تتيح عمليات تنفيذ الأجهزة كتابة ملفات Matroska WebM.
5 ننصح بشدة باستخدامها على نظام التشغيل Android Automotive، وهي اختيارية على ساعة Android Watch، ومطلوبة على جميع أنواع الأجهزة الأخرى.
6 لا ينطبق هذا الإجراء إلا على عمليات تنفيذ أجهزة Android Television.
5.2. ترميز الفيديو
تكون برامج ترميز الفيديو اختيارية لعمليات التنفيذ على أجهزة Android Watch.
يجب أن تكون عمليات تنفيذ أجهزة Android التي تستخدم برامج ترميز H.263 متوافقة مع المستوى 45 من الملف الشخصي الأساسي.
يجب أن تتيح عمليات تنفيذ أجهزة Android المتوافقة مع برنامج ترميز H.264 استخدام المستوى 3 من ملف تعريف Baseline وملفّات تعريف ترميز الفيديو التالية ذات الدقة العادية (SD)، ويجب أن تتيح استخدام المستوى 4 من ملف تعريف Main وملفّات تعريف ترميز الفيديو التالية ذات الدقة العالية (HD). ننصح بشدة باستخدام أجهزة Android Television لترميز الفيديوهات بدقة عالية 1080p بمعدّل 30 لقطة في الثانية.
الدقة العادية (جودة منخفضة) | الدقة العادية (جودة عالية) | دقة عالية 720p1 | دقة عالية 1080p1 | |
---|---|---|---|---|
دقة الفيديو | 320 × 240 بكسل | 720 × 480 بكسل | 1280 × 720 بكسل | 1920 × 1080 بكسل |
عدد اللقطات في الثانية للفيديو | 20 لقطة في الثانية | 30 إطارًا في الثانية | 30 إطارًا في الثانية | 30 إطارًا في الثانية |
معدّل نقل بيانات الفيديو | 384 كيلوبت في الثانية | 2 ميغابت في الثانية | 4 ميغابت في الثانية | 10 ميغابت في الثانية |
1 عند توفّر هذه الميزة في الجهاز، ولكن يُنصح بشدة باستخدامها على أجهزة Android Television.
يجب أن تتيح عمليات تنفيذ أجهزة Android التي تتضمّن برنامج ترميز VP8 ملفات تعريف ترميز الفيديوهات بدقة عادية، ويجب أن تتيح أيضًا ملفات تعريف ترميز الفيديوهات بدقة عالية (HD).
الدقة العادية (جودة منخفضة) | الدقة العادية (جودة عالية) | دقة عالية 720p1 | دقة عالية 1080p1 | |
---|---|---|---|---|
دقة الفيديو | 320 × 180 بكسل | 640 × 360 بكسل | 1280 × 720 بكسل | 1920 × 1080 بكسل |
عدد اللقطات في الثانية للفيديو | 30 إطارًا في الثانية | 30 إطارًا في الثانية | 30 إطارًا في الثانية | 30 إطارًا في الثانية |
معدّل نقل بيانات الفيديو | 800 كيلوبت في الثانية | 2 ميغابت في الثانية | 4 ميغابت في الثانية | 10 ميغابت في الثانية |
1 عندما يكون ذلك متاحًا على الجهاز
5.3. فك ترميز الفيديو
تكون برامج ترميز الفيديو اختيارية لعمليات التنفيذ على أجهزة Android Watch.
يجب أن تتيح عمليات تنفيذ الأجهزة إمكانية تبديل دقة الفيديو الديناميكية ومعدل عرض اللقطات من خلال واجهات برمجة التطبيقات العادية لنظام التشغيل Android ضمن البث نفسه لجميع برامج ترميز VP8 وVP9 وH.264 وH.265 في الوقت الفعلي وبأعلى دقة تتيحها كل أداة ترميز على الجهاز.
يجب أن تتوافق عمليات تنفيذ أجهزة Android التي تتضمّن برامج ترميز H.263 مع Baseline المستوى 30 للملف الشخصي.
يجب أن تتوافق عمليات تنفيذ أجهزة Android التي تتضمّن برامج ترميز MPEG-4 مع المستوى 3 من ملف تعريف Simple.
يجب أن تكون عمليات تنفيذ أجهزة Android التي تتضمّن برامج فك ترميز H.264 متوافقة مع الملف الشخصي "الرئيسي" المستوى 3.1 والملفات الشخصية التالية لفك ترميز الفيديوهات بدقة عادية، ويجب أن تكون متوافقة أيضًا معملفّات فك ترميز الفيديوهات بدقة عالية. يجب أن تتوافق أجهزة Android Television مع High Profile المستوى 4.2 وملف ترميز/فك ترميز HD 1080p.
الدقة العادية (جودة منخفضة) | الدقة العادية (جودة عالية) | دقة عالية 720p1 | دقة عالية 1080p1 | |
---|---|---|---|---|
دقة الفيديو | 320 × 240 بكسل | 720 × 480 بكسل | 1280 × 720 بكسل | 1920 × 1080 بكسل |
عدد اللقطات في الثانية للفيديو | 30 إطارًا في الثانية | 30 إطارًا في الثانية | 60 لقطة في الثانية | 30 لقطة في الثانية / 60 لقطة في الثانية2 |
معدّل نقل بيانات الفيديو | 800 كيلوبت في الثانية | 2 ميغابت في الثانية | 8 ميغابت في الثانية | 20 ميغابت في الثانية |
1 مطلوب عندما يكون الارتفاع كما هو موضّح في الأسلوب Display.getSupportedModes() مساويًا أو أكبر من دقة الفيديو.
2 مطلوبة لعمليات تنفيذ أجهزة Android Television
عند استخدام أجهزة Android التي تتيح ترميز VP8 كما هو موضّح في الفقرة 5.1.3، يجب أن تتيح هذه الأجهزة ملفات تعريف فك ترميز الفيديوهات بدقة عادية التالية، ويجب أن تتيح أيضًا ملفات تعريف فك ترميز الفيديوهات بدقة عالية. يجب أن تتوافق أجهزة Android Television مع ملف ترميز/فك ترميز HD 1080p.
الدقة العادية (جودة منخفضة) | الدقة العادية (جودة عالية) | دقة عالية 720p1 | دقة عالية 1080p1 | |
---|---|---|---|---|
دقة الفيديو | 320 × 180 بكسل | 640 × 360 بكسل | 1280 × 720 بكسل | 1920 × 1080 بكسل |
عدد اللقطات في الثانية للفيديو | 30 إطارًا في الثانية | 30 إطارًا في الثانية | 30 لقطة في الثانية / 60 لقطة في الثانية2 | 30 / 60 لقطة في الثانية2 |
معدّل نقل بيانات الفيديو | 800 كيلوبت في الثانية | 2 ميغابت في الثانية | 8 ميغابت في الثانية | 20 ميغابت في الثانية |
1 مطلوب عندما يكون الارتفاع كما هو موضّح في الأسلوب Display.getSupportedModes() مساويًا أو أكبر من دقة الفيديو.
2 مطلوبة لعمليات تنفيذ أجهزة Android Television
عند استخدام أجهزة Android التي تتيح ترميز VP9 كما هو موضّح في الفقرة 5.1.3، يجب أن تتيح هذه الأجهزة الملفات الشخصية التالية لفك ترميز الفيديوهات بدقة عادية، ويجب أن تتيح ملفّات فك ترميز الفيديوهات بدقة عالية. ننصح بشدة بأن تكون أجهزة Android Television متوافقة مع ملف تعريف فك ترميز الفيديوهات بدقة عالية 1080p، ويجب أن تكون متوافقة مع ملف تعريف فك ترميز الفيديوهات بدقة فائقة. عندما يكون ملف ترميز الفيديو بدقة فائقة متوافقًا، يجب أن يكون متوافقًا مع عمق ألوان 8 بت، ويجب أن يكون متوافقًا مع الملف الشخصي 2 لتنسيق VP9 (10 بت).
الدقة العادية (جودة منخفضة) | الدقة العادية (جودة عالية) | دقة عالية 720p1 | دقة عالية 1080p2 | دقة فائقة2 | |
---|---|---|---|---|---|
دقة الفيديو | 320 × 180 بكسل | 640 × 360 بكسل | 1280 × 720 بكسل | 1920 × 1080 بكسل | 3840 × 2160 بكسل |
عدد اللقطات في الثانية للفيديو | 30 إطارًا في الثانية | 30 إطارًا في الثانية | 30 إطارًا في الثانية | 60 لقطة في الثانية | 60 لقطة في الثانية |
معدّل نقل بيانات الفيديو | 600 كيلوبت في الثانية | 1.6 ميغابت في الثانية | 4 ميغابت في الثانية | 5 ميغابت في الثانية | 20 ميغابت في الثانية |
1 مطلوب لعمليات تنفيذ أجهزة Android Television، ولكن لأنواع الأجهزة الأخرى فقط عندما تكون متوافقة مع الأجهزة.
2 يُنصح بشدة بتنفيذ هذا الإجراء على أجهزة Android Television الحالية عند توفّر الميزة على الأجهزة.
عند استخدام أجهزة Android متوافقة مع برنامج ترميز H.265 كما هو موضّح في الفقرة 5.1.3، يجب أن تكون متوافقة مع الملف الشخصي الرئيسي المستوى 3 من الفئة الرئيسية والملفات الشخصية التالية لفك ترميز الفيديوهات بدقة عادية، ويجب أن تكون متوافقة مع الملفات الشخصية لفك ترميز الفيديوهات بدقة عالية. ننصح بشدة بأن تكون أجهزة Android Television متوافقة مع الملف الشخصي لفك ترميز المحتوى بدقة فائقة HD ومع الملف الشخصي لفك ترميز المحتوى بدقة عالية 1080p. إذا كان ملف ترميز/فك ترميز الفيديو بدقة عالية 1080p متوافقًا، يجب أن يكون متوافقًا مع المستوى الرئيسي للملف الشخصي الرئيسي 4.1. إذا كان فك ترميز المحتوى بدقة فائقة متاحًا، يجب أن يتيح الجهاز استخدام ملف الشخصي Main10 من المستوى 5 في الفئة الرئيسية.
الدقة العادية (جودة منخفضة) | الدقة العادية (جودة عالية) | دقة عالية 720p1 | دقة عالية 1080p2 | دقة فائقة2 | |
---|---|---|---|---|---|
دقة الفيديو | 352 × 288 بكسل | 640 × 360 بكسل | 1280 × 720 بكسل | 1920 × 1080 بكسل | 3840 × 2160 بكسل |
عدد اللقطات في الثانية للفيديو | 30 إطارًا في الثانية | 30 إطارًا في الثانية | 30 إطارًا في الثانية | 60 لقطة في الثانية2 | 60 لقطة في الثانية |
معدّل نقل بيانات الفيديو | 600 كيلوبت في الثانية | 1.6 ميغابت في الثانية | 4 ميغابت في الثانية | 10 ميغابت في الثانية | 20 ميغابت في الثانية |
1 مطلوب لعمليات تنفيذ أجهزة Android Television، ولكن لأنواع الأجهزة الأخرى فقط عندما تكون متوافقة مع الأجهزة.
2 يُنصح بشدة باستخدام هذا الإجراء لعمليات تنفيذ أجهزة Android Television الحالية إذا كانت الأجهزة متوافقة.
5.4. تسجيل الصوت
على الرغم من أنّ بعض المتطلبات الموضّحة في هذا القسم مُدرجة على أنّها مطلوبة منذ Android 4.3، من المخطّط أن يتم تعديل تعريف التوافق في إصدار مستقبلي ليصبح "يجب". ننصح بشدة باستيفاء أجهزة Android الحالية والجديدة لهذه المتطلبات التي يجب استيفاؤها، وإلا لن تتمكّن من التوافق مع Android عند الترقية إلى الإصدار المستقبلي.
5.4.1. تسجيل الصوت بجودة عالية
يجب أن تسمح عمليات تنفيذ الجهاز التي تعلن عن android.hardware.microphone بتسجيل محتوى صوتي خام بالخصائص التالية:
- التنسيق: Linear PCM، بسعة 16 بت
- معدلات أخذ العينات: 8000 و11025 و16000 و44100
- القنوات: صوت أحادي
يجب إجراء عملية الالتقاط بمعدّلات أخذ العينات المذكورة أعلاه بدون زيادة معدل أخذ العينات، ويجب أن يتضمّن أيّ تقليل في معدل أخذ العينات فلترًا مناسبًا لإزالة التمويه.
يجب أن تسمح عمليات تنفيذ الجهاز التي تحدّد android.hardware.microphone بتسجيل محتوى صوتي خام بالخصائص التالية:
- التنسيق: Linear PCM، بسعة 16 بت
- معدّلات أخذ العينات: 22050 و48000
- القنوات: صوت استيريو
إذا كان من الممكن تسجيل الصوت بمعدّلات أخذ العينات المذكورة أعلاه، يجب تسجيل الصوت بدون ترقية العينة بأي نسبة أعلى من 16000:22050 أو 44100:48000. يجب أن يتضمّن أيّ عملية زيادة أو خفض في العينة فلترًا مناسبًا لإزالة التمويه.
5.4.2. تسجيل الصوت للتعرّف عليه
بالإضافة إلى مواصفات التسجيل المذكورة أعلاه، عند بدء أحد التطبيقات في تسجيل بث صوتي باستخدام مصدر الصوت android.media.MediaRecorder.AudioSource.VOICE_RECOGNITION:
- من المفترض أن يُظهر الجهاز خصائص اتّساع تردد تقريبية تقريبًا: على وجه التحديد، ±3 ديسيبل، من 100 هرتز إلى 4000 هرتز.
- يجب ضبط حساسية إدخال الصوت بحيث ينتج مصدر طاقة صوتية (SPL) بمستوى 90 ديسيبل عند 1000 هرتز قيمة طاقة متوسطة متراصة (RMS) تبلغ 2500 لملفات 16 بت.
- يجب أن تتتبّع مستويات شدة الإشارة في PCM التغييرات في مستوى الضغط الصوتي (SPL) للإدخال بشكل خطي على مدى نطاق 30 ديسيبل على الأقل من -18 ديسيبل إلى +12 ديسيبل مقارنةً بمستوى الضغط الصوتي البالغ 90 ديسيبل عند الميكروفون.
- يجب أن يكون إجمالي التشوه التوافقي أقل من% 1 عند تردد 1 كيلوهرتز ومستوى إدخال 90 ديسيبل SPL في الميكروفون.
- يجب إيقاف معالجة تقليل الضوضاء، إن توفّرت.
- يجب إيقاف ميزة "التحكّم التلقائي في الكسب"، في حال توفّرها.
إذا كان النظام الأساسي يتيح استخدام تقنيات الحد من الضوضاء التي تم ضبطها للتعرّف على الكلام، يجب أن يكون بالإمكان التحكّم في التأثير من خلال واجهة برمجة التطبيقات android.media.audiofx.NoiseSuppressor. بالإضافة إلى ذلك، يجب أن يحدِّد حقل UUID لملف وصف تأثير مثبط الضوضاء بشكل فريد كل عملية تنفيذ لتكنولوجيا إزالة الضوضاء.
5.4.3. تسجيل لإعادة توجيه التشغيل
تتضمّن فئة android.media.MediaRecorder.AudioSource مصدر الصوت REMOTE_SUBMIX. على الأجهزة التي تعلن عن android.hardware.audio.output أن تُنفِّذ بشكلٍ سليم مصدر الصوت REMOTE_SUBMIX لكي يتمكّن التطبيق من تسجيل محتوى من مصدر الصوت هذا عند استخدام واجهة برمجة التطبيقات android.media.AudioRecord API، وذلك من خلال تسجيل مزيج من جميع مصادر الصوت باستثناء ما يلي:
- STREAM_RING
- STREAM_ALARM
- STREAM_NOTIFICATION
5.5. تشغيل الصوت
يجب أن تكون عمليات تنفيذ الأجهزة التي تحدّد فئة android.hardware.audio.output متوافقة مع المتطلبات الواردة في هذا القسم.
5.5.1. تشغيل الصوت غير المعالج
يجب أن يسمح الجهاز بتشغيل المحتوى الصوتي الأوّلي بالخصائص التالية:
- التنسيق: Linear PCM، بسعة 16 بت
- معدلات أخذ العينات: 8000 و11025 و16000 و22050 و32000 و44100
- القنوات: صوت أحادي، صوت استيريو
من المفترض أن يسمح الجهاز بتشغيل المحتوى الصوتي الأوّلي بالخصائص التالية:
- معدلات أخذ العينات: 24000 و48000
5.5.2. التأثيرات الصوتية
يقدّم Android واجهة برمجة تطبيقات للتأثيرات الصوتية لعمليات تنفيذ الأجهزة [الموارد، 69]. عمليات تنفيذ الأجهزة التي تحدّد الميزة android.hardware.audio.output:
- يجب أن تتوافق مع نوعَي التنفيذ EFFECT_TYPE_EQUALIZER وEFFECT_TYPE_LOUDNESS_ENHANCER التي يمكن التحكّم فيها من خلال الفئتَين الفرعيتَين AudioEffect Equalizer و LoudnessEnhancer.
- يجب أن تتيح تنفيذ واجهة برمجة التطبيقات الخاصة بتطبيق Visualizer، والذي يمكن التحكّم فيه من خلال فئة Visualizer.
- يجب أن تتيح استخدام تطبيقات EFFECT_TYPE_BASS_BOOST وEFFECT_TYPE_ENV_REVERB وEFFECT_TYPE_PRESET_REVERB وEFFECT_TYPE_VIRTUALIZER التي يمكن التحكّم فيها من خلال الفئات الفرعية AudioEffect BassBoost و EnvironmentalReverb وPresetReverb وVirtualizer.
5.5.3. مستوى صوت إخراج الصوت
يجب أن تتضمّن عمليات تنفيذ أجهزة Android Television ميزة التحكّم في مستوى الصوت المشترَك في النظام وخفض مستوى الصوت في مخرجات الصوت الرقمية على المخرجات المتوافقة، باستثناء مخرجات الصوت المضغوط (التي لا يتم فيها فك ترميز الصوت على الجهاز).
5.6. وقت استجابة الصوت
وقت استجابة الصوت هو الفترة الزمنية التي تستغرقها إشارة الصوت أثناء مرورها عبر النظام. تعتمد العديد من فئات التطبيقات على أوقات استجابة قصيرة لتحقيق تأثيرات صوتية في الوقت الفعلي.
لأغراض هذا القسم، يُرجى استخدام التعريفات التالية:
- وقت استجابة الإخراج الفاصل الزمني بين وقت كتابة التطبيق لإطار من البيانات المُشفَّرة بترميز PCM ووقت سماع المستمع الخارجي للصوت المقابل أو رصده باستخدام محوِّل.
- وقت استجابة الإخراج غير المتوفّر في الذاكرة وقت استجابة الإخراج للإطار الأول، عندما يكون نظام إخراج الصوت في وضع السكون ومطفأً قبل الطلب
- وقت استجابة الإخراج المستمر وقت استجابة الإخراج للّقطات اللاحقة بعد أن يبدأ الجهاز بتشغيل الصوت
- وقت استجابة الإدخال: الفاصل الزمني بين عرض صوت خارجي على الجهاز ووقت قراءة التطبيق للإطار المقابل للبيانات المُشفَّرة بترميز PCM
- وقت استجابة الإدخال من البداية مجموع وقت الإدخال المفقود ووقت استجابة الإدخال للإطار الأول، عندما يكون نظام إدخال الصوت في وضع السكون ومطفأً قبل الطلب
- وقت استجابة إدخال مستمر وقت استجابة الإدخال للإطارات اللاحقة أثناء تسجيل الجهاز للصوت
- التشويش في إخراج الفيديو غير المشغّل التباين بين القياسات المنفصلة لقيم وقت استجابة الإخراج غير المتوفّر بشكل دائم
- التشويش في الإدخال غير المُعدّ مسبقًا التباين بين القياسات المنفصلة لقيم وقت استجابة الإدخال على البارد
- وقت استجابة مستمر للذهاب والعودة مجموع وقت استجابة الإدخال المستمر ووقت استجابة الإخراج المستمر وفترة تخزين مؤقت واحدة تسمح فترة التخزين المؤقت للتطبيق بوقت المعالجة وللتطبيق بالتخفيف من الفرق في الطور بين مصادر الإدخال والإخراج.
- واجهة برمجة التطبيقات لصفيف ذاكرة التخزين المؤقت لـ PCM في OpenSL ES مجموعة واجهات برمجة تطبيقات OpenSL ES ذات الصلة بتنسيق PCM ضمن حزمة Android NDK، اطّلِع على NDK_root/docs/opensles/index.html.
يُنصح بشدة بأن تستوفي تطبيقات الأجهزة التي تعلن عن android.hardware.audio.output أو تتجاوز متطلبات إخراج الصوت التالية:
- وقت استجابة الإخراج على البارد بمقدار 100 ملي ثانية أو أقل
- وقت استجابة مستمر للإخراج يبلغ 45 ملي ثانية أو أقل
- تقليل التقلّبات في إخراج الجهاز في وضع "الاستعداد"
إذا كان تطبيق الجهاز يستوفي متطلبات هذا القسم بعد أي عملية معايرة أولية عند استخدام واجهة برمجة التطبيقات OpenSL ES PCM buffer queue API، لقياس وقت الاستجابة المستمر للإخراج ووقت الاستجابة عند بدء الإخراج على جهاز واحد على الأقل متوافق لإخراج الصوت، يُنصح بشدة بالإبلاغ عن توفُّر ميزة الصوت المنخفض الاستجابة، وذلك من خلال الإبلاغ عن الميزة android.hardware.audio.low_latency عبر فئة android.content.pm.PackageManager [Resources, 70]. في المقابل، إذا لم تستوفِ عملية تنفيذ الجهاز هذه المتطلبات، يجب عدم الإبلاغ عن توفُّر ميزة الصوت بوقت استجابة منخفض.
يُنصح بشدة بأن تستوفي عمليات تنفيذ الأجهزة التي تتضمّن android.hardware.microphone متطلبات الصوت في الإدخال التالية:
- وقت استجابة إدخال على البارد يبلغ 100 ملي ثانية أو أقل
- وقت استجابة إدخال مستمر يبلغ 30 ملي ثانية أو أقل
- وقت استجابة مستمر لإرسال البيانات واستقبالها يبلغ 50 ملي ثانية أو أقل
- تقليل الارتعاش في الإدخال غير المُعدّ مسبقًا
5.7. بروتوكولات الشبكة
يجب أن تكون الأجهزة متوافقة مع بروتوكولات شبكة الوسائط لتشغيل الصوت والفيديو، كما هو محدّد في مستندات حزمة تطوير البرامج (SDK) لنظام التشغيل Android [المراجع، 64]. على وجه التحديد، يجب أن تكون الأجهزة متوافقة مع بروتوكولات شبكة الوسائط التالية:
- بروتوكول RTSP (بروتوكول النقل في الوقت الفعلي وبروتوكول وصف الجلسة)
- البث التدريجي عبر بروتوكول HTTP(S)
- مسودة بروتوكول البث المباشر عبر بروتوكول HTTP(S)، الإصدار 3 [المراجع، 71]
5.8. الوسائط الآمنة
يجب أن تُفصح عمليات تنفيذ الأجهزة التي تتيح إخراج الفيديو الآمن وقادرة على إتاحة مساحات العرض الآمنة عن توفّر Display.FLAG_SECURE. في حال توفّر بروتوكول شاشة لاسلكية، يجب أن تضمن عمليات تنفيذ الأجهزة التي تعلن عن توافقها مع Display.FLAG_SECURE أمان الرابط باستخدام آلية قوية من الناحية التشفيرية، مثل HDCP 2.x أو إصدار أحدث للشاشات اللاسلكية التي تستخدم بروتوكول Miracast. وبالمثل، إذا كانت تتيح استخدام شاشة خارجية سلكية، يجب أن توفّر تطبيقات الأجهزة معيار HDCP 1.2 أو إصدارًا أحدث. يجب أن تكون عمليات تنفيذ أجهزة Android Television متوافقة مع HDCP 2.2 للأجهزة التي تتيح عرض المحتوى بدقة 4K، ويجب أن تكون متوافقة مع HDCP 1.4 أو إصدار أحدث للأجهزة التي تتيح عرض المحتوى بدقة أقل. يتضمّن تطبيق Android المفتوح المصدر في المصدر الأساسي دعمًا للشاشات اللاسلكية (Miracast) والشاشات السلكية (HDMI) التي تستوفي هذا المتطلب.
5.9. الواجهة الرقمية للآلات الموسيقية (MIDI)
إذا كان تطبيق الجهاز يتيح نقل MIDI عبر البرامج بين التطبيقات (أجهزة MIDI الافتراضية)، وكان يتيح نقل MIDI عبر جميع وسائل النقل التالية للأجهزة المتوافقة مع MIDI التي يوفّر لها اتصالاً عامًا غير MIDI، يُنصح بشدة بالإبلاغ عن توفّر ميزة android.software.midi من خلال فئة android.content.pm.PackageManager [Resources, 70].
في ما يلي وسائل نقل البيانات المتوافقة مع MIDI:
- وضع مضيف USB (القسم 7.7 USB)
- وضع جهاز USB الملحق (القسم 7.7 USB)
في المقابل، إذا كان تنفيذ الجهاز يوفر اتصالاً عامًا غير MIDI عبر نقل أجهزة معيّنٍ متوافق مع MIDI مُدرَج أعلاه، ولكنّه لا يتوافق مع MIDI عبر نقل الأجهزة هذا، يجب ألّا يُبلغ عن توافقه مع ميزة android.software.midi.
MIDI عبر Bluetooth LE في دور مركزي (القسم 7.4.3 البلوتوث) في حالة الاستخدام التجريبي يجب أن يتيح تنفيذ الجهاز الذي يُبلغ عن ميزة android.software.midi، والذي يوفر اتصالاً عامًا غير MIDI عبر Bluetooth LE، استخدام MIDI عبر Bluetooth LE.
5.10. الصوت الاحترافي
إذا كان تطبيق الجهاز يستوفي جميع المتطلبات التالية، ننصح بشدة بالإبلاغ عن توفّر ميزة android.hardware.audio.pro من خلال فئة android.content.pm.PackageManager [Resources, 70].
- يجب أن يُبلغ تنفيذ الجهاز عن توفّر الميزة android.hardware.audio.low_latency.
- يجب أن يكون وقت استجابة إرسال البيانات واستقبالها للصوت بشكلٍ مستمر، كما هو محدّد في القسم 5.6 "وقت استجابة الصوت"، 20 ملي ثانية أو أقل، ويجب أن يكون 10 ملي ثانية أو أقل على الأقل في مسار متوافق.
- إذا كان الجهاز يتضمّن مقبس صوت بقطر 3.5 ملم و4 موصلات، يجب أن يكون وقت استجابة إرسال البيانات واستقبالها للصوت بشكل مستمر 20 ملي ثانية أو أقل على مسار مقبس الصوت، ويجب أن يكون 10 ملي ثانية أو أقل على مسار مقبس الصوت.
- يجب أن يتضمّن تنفيذ الجهاز منافذ USB متوافقة مع وضع مضيف USB و وضع الجهاز الملحق USB.
- يجب أن ينفذ وضع مضيف USB فئة الصوت عبر USB.
- إذا كان الجهاز يتضمّن منفذ HDMI، يجب أن يتيح تنفيذ الجهاز مخرجًا بصوت استيريو وثماني قنوات بمعدل بت عميق يبلغ 20 أو 24 بت وتردد 192 كيلوهرتز بدون فقدان معدل البت أو إعادة أخذ العينات.
- يجب أن يُبلغ تطبيق الجهاز عن توافقه مع ميزة android.software.midi.
- إذا كان الجهاز يتضمّن مقبس صوت 3.5 ملم مزوّدًا بأربعة موصلات، ننصح بشدة بتنفيذ الجهاز بما يتوافق مع القسم مواصفات الجهاز الجوّال (مقبس) في مواصفات سماعات الرأس السلكية للصوت (الإصدار 1.1).
6. توافق أدوات المطوّرين وخياراته
6.1. أدوات مطوّري البرامج
يجب أن تكون عمليات تنفيذ الأجهزة متوافقة مع أدوات مطوّري تطبيقات Android المقدَّمة في حزمة تطوير البرامج (SDK) لنظام التشغيل Android. يجب أن تكون الأجهزة المتوافقة مع Android متوافقة مع ما يلي:
- Android Debug Bridge (adb) [الموارد، 72]
يجب أن تتوافق عمليات تنفيذ الأجهزة مع جميع وظائف adb كما هو موضّح في حزمة تطوير البرامج (SDK) لنظام التشغيل Android، بما في ذلك dumpsys [Resources, 73]. يجب أن يكون برنامج adb الخفي غير مفعَّل تلقائيًا على الجهاز، ويجب أن تتوفّر لدينا آلية يمكن للمستخدم الوصول إليها لتفعيل Android Debug Bridge. إذا كان تنفيذ برمجة أحد الأجهزة يحذف وضع الجهاز الطرفي USB، يجب أن ينفِّذ جسر تصحيح أخطاء Android عبر شبكة المنطقة المحلية (مثل إيثرنت أو 802.11).
يتيح نظام التشغيل Android استخدام أداة adb الآمنة. تفعِّل أداة adb الآمنة أداة adb على المضيفين المعروفين المُعتمَدين. يجب أن تتيح عمليات تنفيذ الأجهزة استخدام adb الآمن.
- Dalvik Debug Monitor Service (ddms) [Resources, 74]
يجب أن تتيح عمليات تنفيذ الأجهزة جميع ميزات ddms كما هو موضّح في مستندات حزمة تطوير البرامج (SDK) لنظام التشغيل Android. بما أنّ أداة ddms تستخدم adb، من المفترض أن تكون أداة ddms غير مفعّلة تلقائيًا، ولكن يجب أن تكون مفعّلة عندما يفعّل المستخدم أداة Android Debug Bridge، كما هو موضّح أعلاه.
- Monkey [Resources, 75]
يجب أن تتضمّن عمليات تنفيذ الأجهزة إطار عمل Monkey وأن تتيحه للتطبيقات لاستخدامه.
- SysTrace [Resources, 76]
يجب أن تتيح عمليات التنفيذ على الأجهزة استخدام أداة systrace كما هو موضّح في مستندات Android SDK. يجب أن يكون Systrace غير مفعَّل تلقائيًا، ويجب أن يتوفّر أسلوب يمكن للمستخدم تفعيل Systrace من خلاله.
تتعرّف معظم الأنظمة المستندة إلى Linux وأنظمة Apple Macintosh على أجهزة Android باستخدام أدوات حِزم تطوير البرامج (SDK) العادية لنظام Android، بدون دعم إضافي. ومع ذلك، تحتاج أنظمة Microsoft Windows عادةً إلى برنامج تشغيل لأجهزة Android الجديدة. (على سبيل المثال، تتطلّب معرّفات المورّدين الجديدة ومعرّفات الأجهزة الجديدة أحيانًا برامج تشغيل USB مخصّصة لأنظمة التشغيل Windows). إذا لم تتعرّف أداة adb على عملية تنفيذ جهاز كما هو موضح في حزمة تطوير البرامج (SDK) العادية لنظام التشغيل Android، على منفّذِي الأجهزة توفير برامج تشغيل Windows التي تتيح للمطوّرين الاتصال بالجهاز باستخدام بروتوكول adb. يجب توفير برامج التشغيل هذه لنظام التشغيل Windows XP وWindows Vista وWindows 7 وWindows 8 وWindows 10 بإصدارَي 32 بت و64 بت.
6.2. خيارات المطوّرين
يتيح نظام التشغيل Android للمطوّرين ضبط الإعدادات المتعلقة بتطوير التطبيقات. يجب أن تلتزم عمليات تنفيذ الأجهزة بهدف android.settings.APPLICATION_DEVELOPMENT_SETTINGS لعرض الإعدادات المتعلقة بتطوير التطبيقات [الموارد، 77]. في الإصدارات الأحدث من Android، يتم إخفاء قائمة "خيارات المطوّرين" تلقائيًا، ويتيح للمستخدمين تفعيلها بعد الضغط سبع مرات على الإعدادات > لمحة عن الجهاز > رقم الإصدار. يجب أن تقدّم عمليات تنفيذ الأجهزة تجربة متّسقة لميزة "خيارات المطوّر". على وجه التحديد، يجب أن تخفي عمليات تنفيذ الأجهزة "خيارات المطوّرين" تلقائيًا، ويجب أن توفّر آلية لتفعيل "خيارات المطوّرين" متوافقة مع عملية تنفيذ Android الأساسية.
7. توافق الأجهزة
إذا كان الجهاز يتضمّن مكوّنًا معيّنًا للأجهزة يتضمّن واجهة برمجة تطبيقات مقابلة للمطوّرين الخارجيين، يجب أن ينفذ تنفيذ الجهاز واجهة برمجة التطبيقات هذه كما هو موضّح في مستندات حزمة تطوير البرامج (SDK) لنظام التشغيل Android. إذا كانت واجهة برمجة تطبيقات في حزمة SDK تتفاعل مع مكوّن أجهزة تم تحديده على أنّه اختياري ولم يكن تنفيذ الجهاز يحتوي على هذا المكوّن:
- يجب تقديم تعريفات الفئات الكاملة (على النحو الموضّح في حزمة تطوير البرامج (SDK)) لواجهات برمجة التطبيقات المكوّنة.
- يجب تنفيذ سلوكيات واجهة برمجة التطبيقات كعمليات لا تؤدي إلى أيّ إجراء بطريقة معقولة.
- يجب أن تُرجع طُرق واجهة برمجة التطبيقات قيمًا فارغة حيثما يسمح بذلك مستند حزمة تطوير البرامج (SDK).
- يجب أن تُرجع طُرق واجهة برمجة التطبيقات عمليات تنفيذ لا تؤدي إلى أيّ إجراء للفئات التي لا يسمح مستند حزمة تطوير البرامج (SDK) فيها باستخدام القيم الخالية.
- يجب ألّا تُعرِض طرق واجهة برمجة التطبيقات استثناءات غير مُوثَّقة في مستندات حزمة SDK.
ومن الأمثلة الشائعة على السيناريوهات التي تنطبق فيها هذه المتطلبات واجهة برمجة تطبيقات معالجة المكالمات الهاتفية: حتى على الأجهزة غير الهاتفية، يجب تنفيذ واجهات برمجة التطبيقات هذه على أنّها وظائف مقبولة بلا عمليات.
يجب أن تُبلغ عمليات تنفيذ الأجهزة بشكلٍ منتظم عن معلومات دقيقة عن إعدادات الأجهزة من خلال الطريقتَين getSystemAvailableFeatures() وhasSystemFeature(String) في فئة android.content.pm.PackageManager لعلامة تشكل الإصدار نفسها. [Resources, 70]
7.1. الشاشة والرسومات
يتضمّن نظام التشغيل Android مرافق تعمل تلقائيًا على تعديل مواد عرض التطبيقات وتصاميم واجهة المستخدم بشكل مناسب للجهاز، لضمان عمل التطبيقات التابعة لجهات خارجية بشكل جيد على مجموعة متنوعة من إعدادات الأجهزة [الموارد، 78]. يجب أن تنفِّذ الأجهزة واجهات برمجة التطبيقات هذه والسلوكيات بشكل صحيح، كما هو موضّح بالتفصيل في هذا القسم.
يتم تعريف الوحدات التي تشير إليها المتطلبات في هذا القسم على النحو التالي:
- الحجم المادي القطري المسافة بالأنش بين زاويتَين متقابلتَين من الجزء المضاء من الشاشة
- النقاط لكل بوصة (dpi) عدد وحدات البكسل التي يشملها نطاق أفقي أو عمودي خطي بقياس 1 بوصة. في حال إدراج قيم النقاط لكل بوصة، يجب أن تقع قيم النقاط لكل بوصة الأفقية والعمودية ضمن النطاق.
- نسبة العرض إلى الارتفاع نسبة وحدات البكسل في البُعد الأطول إلى البُعد الأقصر للشاشة على سبيل المثال، شاشة بدقة 480×854 بكسل ستكون 854/480 = 1.779، أو "16:9" تقريبًا.
- وحدة البكسل المستقلة الكثافة (dp): هي وحدة البكسل الافتراضية التي تم تسويتها لشاشة بكثافة 160 نقطة لكل بوصة، ويتم احتسابها على النحو التالي: وحدات البكسل = dps * (الكثافة/160).
7.1.1. إعداد الشاشة
7.1.1.1. حجم الشاشة
قد تكون أحجام شاشات أجهزة Android Watch (الموضَّحة بالتفصيل في القسم 2) أصغر كما هو موضّح في هذا القسم.
يتيح إطار عمل واجهة مستخدم Android مجموعة متنوعة من أحجام الشاشات المختلفة، ويسمح للتطبيقات بالاستعلام عن حجم شاشة الجهاز (المعروف أيضًا باسم "تنسيق الشاشة") من خلال android.content.res.Configuration.screenLayout مع SCREENLAYOUT_SIZE_MASK. يجب أن تُبلغ عمليات تنفيذ الأجهزة عن حجم الشاشة الصحيح كما هو محدّد في مستندات IDE لنظام التشغيل Android [الموارد، 78] والذي يحدّده نظام التشغيل Android الأساسي. وعلى وجه التحديد، يجب أن تُبلغ عمليات تنفيذ التطبيقات على الأجهزة عن حجم الشاشة الصحيح وفقًا لأبعاد الشاشة التالية المنطقية المستندة إلى وحدات البكسل المستقلة عن الكثافة (dp).
- يجب أن تكون أحجام شاشات الأجهزة 426 وحدة بكسل مستقلة الكثافة × 320 وحدة بكسل مستقلة الكثافة على الأقل (شاشة "صغيرة")، ما لم يكن الجهاز هو ساعة Android.
- يجب أن تكون أحجام شاشات الأجهزة التي تُبلغ عن حجم الشاشة "عادي" 480 وحدة بكسل مستقلة الكثافة × 320 وحدة بكسل مستقلة الكثافة على الأقل.
- يجب أن تكون أحجام شاشات الأجهزة التي تُبلغ عن حجم الشاشة على أنّه "كبير" 640 وحدة بكسل مستقلة الكثافة × 480 وحدة بكسل مستقلة الكثافة على الأقل.
- يجب أن تكون أحجام شاشات الأجهزة التي تُبلغ عن حجم الشاشة "كبير جدًا" 960 وحدة بكسل مستقلة الكثافة × 720 وحدة بكسل مستقلة الكثافة على الأقل.
بالإضافة إلى ذلك،
- يجب أن تحتوي أجهزة Android Watch على شاشة أبعادها القطرية في النطاق من 1.1 إلى 2.5 بوصة.
- بالنسبة إلى الأنواع الأخرى من عمليات تنفيذ أجهزة Android التي تتضمّن شاشة مدمجة، يجب أن يكون حجم الشاشة على الأقل 2.5 بوصة (6.35 سم) في الوضع المائل.
يجب ألا تغيّر الأجهزة حجم الشاشة الذي يتم الإبلاغ عنه في أي وقت.
تشير التطبيقات اختياريًا إلى أحجام الشاشة التي تتوافق معها من خلال سمة <supports-screens> في ملف AndroidManifest.xml. يجب أن تتوافق عمليات تنفيذ التطبيقات على الأجهزة مع التوافق المذكور للتطبيقات مع الشاشات الصغيرة والعاديّة والكبيرة والكبيرة جدًا، كما هو موضّح في مستندات Android SDK.
7.1.1.2. نسبة العرض إلى الارتفاع للشاشة
قد تكون نسبة العرض إلى الارتفاع لأجهزة Android Watch 1.0 (1:1).
يجب أن تكون نسبة عرض الشاشة إلى ارتفاعها قيمة تتراوح بين 1.3333 (4:3) و1.86 (16:9 تقريبًا)، ولكن قد تكون نسبة عرض الشاشة إلى ارتفاعها في أجهزة Android Watch 1.0 (1:1) لأنّه عند تنفيذ هذا الجهاز، سيتم استخدام UI_MODE_TYPE_WATCH كقيمة android.content.res.Configuration.uiMode.
7.1.1.3. كثافة الشاشة
يحدِّد إطار عمل واجهة مستخدم Android مجموعة من الكثافات المنطقية العادية لمساعدة مطوّري التطبيقات في استهداف موارد التطبيقات. يجب أن تُبلغ عمليات تنفيذ الأجهزة عن كثافة واحدة فقط من كثافات إطار عمل Android المنطقية التالية من خلال واجهات برمجة التطبيقات android.util.DisplayMetrics، ويجب تنفيذ التطبيقات باستخدام هذه الكثافة العادية ويجب عدم تغيير القيمة في أي وقت للشاشة التلقائية.
- 120 نقطة لكل بوصة (ldpi)
- 160 نقطة لكل بوصة (mdpi)
- 213 نقطة لكل بوصة (tvdpi)
- 240 نقطة لكل بوصة (دقة عالية)
- 280 نقطة لكل بوصة (280dpi)
- 320 نقطة لكل بوصة (xhdpi)
- 360 نقطة في البوصة (360dpi)
- 400 نقطة لكل بوصة (400dpi)
- 420 نقطة لكل بوصة (420dpi)
- 480 نقطة لكل بوصة (xxhdpi)
- 560 نقطة في البوصة (560dpi)
- 640 نقطة لكل بوصة (xxxhdpi)
يجب أن تحدِّد عمليات تنفيذ الأجهزة كثافة إطار عمل Android العادي التي تكون الأقرب رقميًا إلى الكثافة الفعلية للشاشة، ما لم تؤدي كثافة المنطقية إلى خفض حجم الشاشة المسجَّل إلى ما دون الحد الأدنى المسموح به. إذا كانت كثافة إطار عمل Android العادية الأقرب رقميًا إلى الكثافة المادية تؤدي إلى حجم شاشة أصغر من أصغر حجم شاشة متوافق متوافق (320 dp عرضًا)، يجب أن تُبلغ عمليات تنفيذ الأجهزة عن كثافة إطار عمل Android العادية الأقل تاليًا.
7.1.2. مقاييس الشبكة الإعلانية
يجب أن تُبلغ عمليات تنفيذ الأجهزة عن القيم الصحيحة لجميع مقاييس الشاشة المحدّدة في android.util.DisplayMetrics [Resources, 79]، ويجب أن تُبلغ عن القيم نفسها بغض النظر عمّا إذا كانت الشاشة المضمّنة أو الخارجية تُستخدَم كشاشة تلقائية.
7.1.3. اتجاه الشاشة
يجب أن تُبلغ الأجهزة عن أوضاع الشاشة المتوافقة (android.hardware.screen.portrait و/أو android.hardware.screen.landscape) ويجب أن تُبلغ عن وضع واحد متوافق على الأقل. على سبيل المثال، يجب أن يُبلغ الجهاز الذي يحتوي على شاشة أفقية ذات اتجاه ثابت، مثل التلفزيون أو الكمبيوتر المحمول، عن android.hardware.screen.landscape فقط.
يجب أن تتيح الأجهزة التي تُبلغ عن كلا الاتجاهَين للشاشة استخدام التطبيقات لتغيير الاتجاه الديناميكي سواء كان الاتجاه العمودي أو الأفقي للشاشة. وهذا يعني أنّه يجب أن يراعي الجهاز طلب التطبيق بوضع شاشة معيّن. قد تختار عمليات تنفيذ الأجهزة اتجاهًا عموديًا أو أفقيًا كالإعداد التلقائي.
يجب أن تُبلغ الأجهزة عن القيمة الصحيحة للوضع الحالي للجهاز، عند الاستعلام من خلال android.content.res.Configuration.orientation، أو android.view.Display.getOrientation()، أو واجهات برمجة التطبيقات الأخرى.
يجب ألا تغيّر الأجهزة حجم الشاشة أو كثافتها المُبلَّغ عنها عند تغيير اتجاه الشاشة.
7.1.4. تسريع الرسومات ثنائية وثلاثية الأبعاد
يجب أن تكون عمليات تنفيذ الأجهزة متوافقة مع كلّ من OpenGL ES 1.0 و2.0، كما هو موضّح بالتفصيل في مستندات حزمة تطوير البرامج (SDK) لنظام التشغيل Android. يجب أن تكون عمليات تنفيذ الأجهزة متوافقة مع OpenGL ES 3.0 أو 3.1 على الأجهزة التي تتيح ذلك. يجب أن تتوافق أيضًا عمليات تنفيذ التطبيقات على الأجهزة مع Android RenderScript، كما هو موضّح بالتفصيل في مستندات IDE لنظام التشغيل Android [Resources, 80].
يجب أيضًا أن تحدِّد عمليات تنفيذ الأجهزة بشكل صحيح أنّها متوافقة مع OpenGL ES 1.0 أو OpenGL ES 2.0 أو OpenGL ES 3.0 أو OpenGL 3.1. وهذا يعني:
- يجب أن تُبلغ واجهات برمجة التطبيقات المُدارة (مثلاً من خلال الطريقة GLES10.getString()) عن توافقها مع OpenGL ES 1.0 وOpenGL ES 2.0.
- يجب أن تُبلغ واجهات برمجة تطبيقات OpenGL الأصلية المكتوبة بلغة C أو C++ (واجهات برمجة التطبيقات المتاحة للتطبيقات من خلال libGLES_v1CM.so أو libGLES_v2.so أو libEGL.so) عن توافقها مع OpenGL ES 1.0 وOpenGL ES 2.0.
- يجب أن توفّر عمليات تنفيذ الأجهزة التي تعلن عن توافقها مع OpenGL ES 3.0 أو 3.1 دعم واجهات برمجة التطبيقات المُدارة ذات الصلة وأن تتضمّن دعمًا لواجهات برمجة التطبيقات الأصلية لـ C/C++. في عمليات التنفيذ على الأجهزة التي تعلن عن توافقها مع OpenGL ES 3.0 أو 3.1، يجب أن تُصدِر ملف "libGLESv2.so" رموز الدوالّ المقابلة بالإضافة إلى رموز الدوالّ في OpenGL ES 2.0.
بالإضافة إلى OpenGL ES 3.1، يقدّم Android حزمة إضافات تتضمّن واجهات Java [Resources, 81] وتوافقًا أصليًا مع وظائف الرسومات المتقدّمة، مثل التجميع والتصغير وتنسيق ضغط البنية ASTC. يجوز لعمليات تنفيذ أجهزة Android استخدام حزمة الإضافات هذه، ويجب تحديد إمكانية استخدامها من خلال علامة ميزة android.hardware.opengles.aep فقط في حال تنفيذها بالكامل.
وقد تُنفِّذ عمليات تنفيذ الأجهزة أيضًا أيّ إضافات مطلوبة من OpenGL ES. ومع ذلك، يجب أن تُبلغ عمليات تنفيذ الأجهزة عبر واجهات برمجة التطبيقات المُدارة و الأصلية لـ OpenGL ES عن جميع سلاسل الإضافات التي تتوافق معها، وعلى العكس من ذلك، يجب ألا تُبلغ عن سلاسل الإضافات التي لا تتوافق معها.
يُرجى العِلم أنّ نظام التشغيل Android يتيح للتطبيقات تحديد ما إذا كانت تحتاج بشكل اختياري إلى تنسيقات معيّنة لضغط بنية OpenGL. وتكون هذه التنسيقات عادةً مخصّصة للمورّدين. لا يطلب Android من عمليات التنفيذ على الأجهزة تنفيذ أي تنسيق محدّد لضغط النسيج. ومع ذلك، من المفترض أن تذكر هذه الأجهزة بدقّة أي تنسيقات ضغط بنية تتيحها، وذلك من خلال الأسلوب getString() في OpenGL API.
يتضمّن نظام التشغيل Android آلية تتيح للتطبيقات الإفصاح عن رغبتها في تفعيل ميزة "تسريع الأجهزة" للرسومات ثنائية الأبعاد على مستوى التطبيق أو النشاط أو النافذة أو العرض من خلال استخدام علامة البيان android:hardwareAccelerated أو طلبات البيانات المباشرة من واجهة برمجة التطبيقات [المراجع، 82].
يجب أن تفعِّل عمليات تنفيذ الأجهزة ميزة "تسريع الأجهزة" تلقائيًا، ويجب أن تُوقِف هذه العمليات ميزة "تسريع الأجهزة" إذا طلب المطوِّر ذلك من خلال ضبط القيمة android:hardwareAccelerated="false” أو إيقاف ميزة "تسريع الأجهزة" مباشرةً من خلال واجهات برمجة التطبيقات Android View APIs.
بالإضافة إلى ذلك، يجب أن تُظهر عمليات تنفيذ الأجهزة سلوكًا متوافقًا مع مستندات IDE لنظام التشغيل Android حول ميزة "تسريع الأجهزة" [الموارد، 82].
يتضمّن Android عنصر TextureView الذي يتيح للمطوّرين دمج ملمس OpenGL ES المُسرَّع بالأجهزة مباشرةً كأهداف للعرض في التسلسل الهرمي لواجهة المستخدم. يجب أن تكون عمليات تنفيذ الأجهزة متوافقة مع واجهة برمجة التطبيقات TextureView API، ويجب أن تُظهر سلوكًا متسقًا مع عملية التنفيذ في Android.
يتيح نظام التشغيل Android استخدام EGL_ANDROID_RECORDABLE، وهي سمة EGLConfig تشير إلى ما إذا كان EGLConfig يتيح العرض على ANativeWindow الذي يسجّل الصور في فيديو. يجب أن تتوافق عمليات تنفيذ الأجهزة مع إضافة EGL_ANDROID_RECORDABLE [Resources, 83].
7.1.5. وضع التوافق مع التطبيقات القديمة
يحدّد Android "وضع التوافق" الذي يعمل فيه إطار العمل في وضع مكافئ لحجم الشاشة "العادي" (بعرض 320dp) لمنفعة التطبيقات القديمة التي لم يتم تطويرها لإصدارات Android القديمة التي تعود إلى ما قبل استقلالية حجم الشاشة.
- لا يتيح نظام Android Automotive استخدام وضع التوافق مع الإصدارات القديمة.
- يجب أن تتضمّن جميع عمليات تنفيذ الأجهزة الأخرى ميزة "وضع التوافق" للتطبيقات القديمة، كما هو منصوص عليه في الرمز البرمجي المفتوح المصدر لنظام التشغيل Android. وهذا يعني أنّه يجب ألا تؤدي عمليات تنفيذ الأجهزة إلى تغيير عوامل التفعيل أو الحدود الدنيا التي يتم عندها تفعيل "وضع التوافق"، ويجب ألا تؤدي إلى تغيير سلوك "وضع التوافق" نفسه.
7.1.6. تكنولوجيا الشاشة
يتضمّن نظام Android الأساسي واجهات برمجة تطبيقات تتيح للتطبيقات عرض رسومات ثرية على الشاشة. يجب أن تكون الأجهزة متوافقة مع جميع واجهات برمجة التطبيقات هذه على النحو المحدّد في حزمة تطوير البرامج (SDK) لنظام التشغيل Android ما لم يُسمح بذلك تحديدًا في هذا المستند.
- يجب أن تكون الأجهزة متوافقة مع الشاشات القادرة على عرض رسومات ملونة بدقة 16 بت، ويجب أن تكون متوافقة مع الشاشات القادرة على عرض رسومات ملونة بدقة 24 بت.
- يجب أن تكون الأجهزة متوافقة مع شاشات العرض القادرة على عرض الصور المتحركة.
- يجب أن تكون نسبة عرض إلى ارتفاع البكسل (PAR) لتكنولوجيا العرض المستخدَمة بين 0.9 و1.15. وهذا يعني أنّ نسبة عرض البكسل إلى ارتفاعه يجب أن تكون قريبة من نسبة العرض إلى الارتفاع المربّع (1.0) مع السماح بانحراف بنسبة تتراوح بين 10 و 15%.
7.1.7. الشاشات الثانوية
يتيح نظام التشغيل Android استخدام شاشة ثانوية لتفعيل ميزات مشاركة الوسائط وواجهات برمجة التطبيقات المخصّصة للمطوّرين للوصول إلى الشاشات الخارجية. إذا كان الجهاز يتوافق مع شاشة خارجية سواء من خلال اتصال سلكي أو لاسلكي أو شاشة إضافية مضمّنة، يجب أن ينفذ تنفيذ الجهاز واجهة برمجة التطبيقات لمدير الشاشة كما هو موضّح في مستندات حِزم تطوير البرامج (SDK) لنظام التشغيل Android [المراجع، 84].
7.2. أجهزة إدخال بيانات
يجب أن تتضمّن الأجهزة شاشة تعمل باللمس أو تستوفي المتطلبات الواردة في 7.2.2 للتنقّل بدون شاشة تعمل باللمس.
7.2.1. لوحة المفاتيح
قد توفّر عمليات تنفيذ Android Watch وAndroid Automotive ميزة keyboard برمجيًا. يجب أن تتضمّن جميع عمليات تنفيذ الأجهزة الأخرى لوحة مفاتيح برمجية وأن تستوفي الشروط التالية:
عمليات التنفيذ على الأجهزة:
- يجب أن يتضمّن التطبيق إمكانية استخدام "إطار عمل إدارة الإدخال" (الذي يتيح لصنّاع التطبيقات الخارجيين إنشاء "محرّري طرق الإدخال"، أي لوحة المفاتيح الافتراضية) على النحو الموضّح بالتفصيل على الرابط http://developer.android.com.
- يجب توفير تطبيق واحد على الأقل لاستخدام لوحة مفاتيح افتراضية (بغض النظر عمّا إذا كانت هناك لوحة مفاتيح خارجية) باستثناء أجهزة Android Watch التي لا تسمح بتوفير لوحة مفاتيح افتراضية بسبب حجم الشاشة.
- قد تتضمّن عمليات تنفيذ إضافية للوحة المفاتيح الافتراضية.
- قد تتضمّن لوحة مفاتيح جهاز.
- يجب ألّا يتضمّن لوحة مفاتيح أجهزة لا تتطابق مع أحد التنسيقات المحدّدة في android.content.res.Configuration.keyboard [Resources, 85] (QWERTY أو 12 مفتاحًا).
7.2.2. التنقّل بدون لمس الشاشة
يجب أن تتضمّن أجهزة Android TV لوحة ألعاب اتجاهية.
عمليات التنفيذ على الأجهزة:
- يجوز حذف خيار التنقّل غير المستند إلى اللمس (كرة المسار أو لوحة التوجيه أو العجلة) إذا كان تنفيذ الجهاز ليس جهاز Android TV.
- يجب إدخال القيمة الصحيحة لرقم android.content.res.Configuration.navigation [Resources, 85].
- يجب أن توفّر آلية بديلاً معقولاً لواجهة المستخدم لتحديد النص وتعديله، وأن تكون متوافقة مع محرّكات إدارة الإدخال. يتضمّن الإصدار الأحدث من الإصدار المفتوح المصدر من Android آلية اختيار مناسبة للاستخدام مع الأجهزة التي لا تتضمّن مدخلات تنقّل غير تعمل باللمس.
7.2.3. مفاتيح التنقل
يختلف مدى توفّر وظائف "الصفحة الرئيسية" و"التطبيقات المستخدَمة مؤخرًا" و"الرجوع" وظهورها حسب أنواع الأجهزة كما هو موضّح في هذا القسم.
إنّ وظائف "الصفحة الرئيسية" و"التطبيقات المستخدَمة مؤخرًا" و"الرجوع" (المرتبطة بأحداث المفاتيح KEYCODE_HOME وKEYCODE_APP_SWITCH وKEYCODE_BACK على التوالي) ضرورية لمنهجية التنقل في Android، وبالتالي:
- يجب أن توفّر عمليات تنفيذ التطبيقات على أجهزة Android المحمولة وظائف "الصفحة الرئيسية" و"التطبيقات المستخدَمة مؤخرًا" و"الرجوع".
- يجب أن توفّر عمليات تنفيذ أجهزة Android Television وظيفتَي "الرجوع" و"الصفحة الرئيسية".
- يجب أن تتوفّر وظيفة "الصفحة الرئيسية" للمستخدم في عمليات تنفيذ أجهزة Android Watch، ويجب أن تتوفّر وظيفة "رجوع" باستثناء الحالات التي يكون فيها UI_MODE_TYPE_WATCH.
- يجب أن توفّر عمليات تنفيذ Android Automotive ميزة "الصفحة الرئيسية"، وقد تتحدى توفير ميزتَي "الرجوع" و"التطبيقات المستخدَمة مؤخرًا".
- يجب أن توفّر جميع أنواع عمليات تنفيذ الأجهزة الأخرى وظيفتَي Home (الصفحة الرئيسية) وBack (رجوع).
يجوز تنفيذ هذه الوظائف من خلال أزرار خارجية مخصّصة (مثل الأزرار الميكانيكية أو الحساسة لللمس)، أو يجوز تنفيذها باستخدام مفاتيح برمجية مخصّصة في جزء محدد من الشاشة أو الإيماءات أو اللوحة اللمسية أو غير ذلك. يتوافق نظام التشغيل Android مع كلا الطريقتَين. يجب أن تكون جميع هذه الوظائف متاحة من خلال إجراء واحد (مثل النقر أو النقر المزدوج أو الإيماءة) عندما تكون مرئية.
يجب أن تتضمّن وظيفة "العناصر الأخيرة"، في حال توفّرها، زرًا أو رمزًا مرئيًا ما لم يتم إخفاؤهما مع وظائف التنقّل الأخرى في وضع ملء الشاشة. ولا ينطبق ذلك على الأجهزة التي تتم ترقيتها من إصدارات Android السابقة التي تتضمّن أزرارًا فعلية للتنقّل ولا تتضمّن مفتاحًا حديثًا.
يجب أن تتضمّن كل من وظيفتَي "الصفحة الرئيسية" و"الرجوع"، في حال توفّرهما، زرًا أو رمزًا مرئيًا ما لم يتم إخفاؤهما مع وظائف التنقّل الأخرى في وضع ملء الشاشة أو عند ضبط uiMode UI_MODE_TYPE_MASK على UI_MODE_TYPE_WATCH.
تم إيقاف دالة Menu نهائيًا لصالح شريط الإجراءات منذ الإصدار 4.0 من Android. لذلك، يجب ألّا تشمل عمليات تنفيذ الأجهزة الجديدة التي تعمل بنظام التشغيل Android 6.0 والإصدارات الأحدث زرًا ماديًا مخصّصًا لوظيفة القائمة. يجب ألا توفّر عمليات تنفيذ الأجهزة القديمة زرًا ماديًا مخصّصًا لعرض قائمة التطبيقات، ولكن في حال توفّر زر القائمة المادي وكان الجهاز قيد استخدام التطبيقات التي يكون فيها targetSdkVersion أكبر من 10، يجب أن تلتزم عمليات تنفيذ الأجهزة بما يلي:
- يجب عرض زر القائمة المنسدلة للإجراءات في شريط الإجراءات عندما يكون مرئيًا، ويجب ألا تكون القائمة المنسدلة للإجراءات المنبثقة الناتجة فارغة. بالنسبة إلى عملية تنفيذ على جهاز تم إطلاقها قبل الإصدار 4.4 من Android ولكن تم ترقيتها إلى الإصدار 6.0، يُنصح باستخدام هذه الميزة.
- يجب عدم تعديل موضع النافذة المنبثقة الإضافية للإجراءات التي يتم عرضها من خلال اختيار زر القائمة الإضافية في شريط الإجراءات.
- قد يتم عرض النافذة المنبثقة لعرض الإجراءات الإضافية في موضع معدَّل على الشاشة عند عرضها من خلال النقر على زر القائمة.
للتوافق مع الإصدارات القديمة، يجب أن توفّر عمليات تنفيذ الأجهزة دالّة القائمة للتطبيقات عندما يكون targetSdkVersion أقل من 10، إما من خلال زر مادي أو مفتاح برنامج أو إيماءات. يجب عرض وظيفة القائمة هذه ما لم يتم إخفاؤها مع وظائف التنقّل الأخرى.
في عمليات تنفيذ أجهزة Android التي تتيح إجراء "المساعدة" [الموارد، 30]، يجب أن يكون هذا الإجراء متاحًا من خلال إجراء واحد (مثل النقر أو النقر المزدوج أو الإيماءة) عندما تكون مفاتيح التنقّل الأخرى مرئية، ويُنصح بشدة باستخدام الضغط مع الاستمرار على زر الشاشة الرئيسية أو مفتاح البرنامج كإجراء واحد.
يجوز لعمليات تنفيذ التطبيق على الأجهزة استخدام جزء محدد من الشاشة لعرض مفاتيح التنقّل، ولكن في هذه الحالة، يجب أن تستوفي هذه المتطلبات:
- يجب أن تستخدم مفاتيح التنقّل في عملية تنفيذ الجهاز جزءًا محددًا من الشاشة غير متاح للتطبيقات، ويجب ألّا تحجب أو تداخل بطريقة أخرى مع جزء الشاشة المتاح للتطبيقات.
- يجب أن تتيح عمليات تنفيذ الأجهزة جزءًا من الشاشة للتطبيقات التي تستوفي المتطلبات المحدّدة في الفقرة 7.1.1.
- يجب أن تعرض عمليات تنفيذ الأجهزة مفاتيح التنقّل عندما لا تحدّد التطبيقات وضع واجهة مستخدم النظام أو تحدّد SYSTEM_UI_FLAG_VISIBLE.
- يجب أن تعرض عمليات تنفيذ الأجهزة مفاتيح التنقّل في وضع "منخفض المستوى" (مثلاً، خافت) غير المزعِج عندما تحدّد التطبيقات SYSTEM_UI_FLAG_LOW_PROFILE.
- يجب أن تخفي عمليات تنفيذ الأجهزة مفاتيح التنقّل عندما تحدّد التطبيقات SYSTEM_UI_FLAG_HIDE_NAVIGATION.
7.2.4. الإدخال من خلال شاشة تعمل باللمس
يجب أن تتيح أجهزة Android المحمولة وأجهزة الساعة الإدخال باستخدام شاشة تعمل باللمس.
يجب أن تتضمّن عمليات تنفيذ الأجهزة نظام إدخال مؤشر من نوع ما (إما مثل الماوس أو باللمس). ومع ذلك، إذا كان تنفيذ الجهاز لا يتيح استخدام نظام إدخال مؤشر، يجب عدم الإبلاغ عن الثابتة للميزة android.hardware.touchscreen أو android.hardware.faketouch. عمليات تنفيذ الأجهزة التي تشمل نظام إدخال مؤشر:
- يجب أن يتيح استخدام مؤشرات يتم تتبُّعها بشكل مستقل بالكامل، إذا كان نظام إدخال الجهاز يتوافق مع مؤشرات متعددة.
- يجب أن يتم الإبلاغ عن قيمة android.content.res.Configuration.touchscreen [Resources, 85] التي تتوافق مع نوع الشاشة التي تعمل باللمس المحدّدة على الجهاز.
يتيح Android استخدام مجموعة متنوعة من الشاشات التي تعمل باللمس ولوحات اللمس وأجهزة إدخال شاشة التمرير. ترتبط عمليات تنفيذ الأجهزة التي تعمل باللمس بشاشة [Resources, 86] بحيث يشعر المستخدم أنّه يتعامل مباشرةً مع العناصر على الشاشة. بما أنّ المستخدم يلمس الشاشة مباشرةً، لا يحتاج النظام إلى أيّ عناصر تحكم إضافية للإشارة إلى العناصر التي يتم التحكّم فيها. في المقابل، توفّر واجهة اللمس الزائفة نظام إدخال بيانات مستخدِم يقترب من مجموعة فرعية من إمكانات الشاشة التي تعمل باللمس. على سبيل المثال، يشبه الماوس أو جهاز التحكّم عن بُعد الذي يشغِّل مؤشرًا على الشاشة شاشة تعمل باللمس، ولكن يتطلّب من المستخدم أولاً الإشارة أو التركيز ثم النقر. يمكن أن تتيح العديد من أجهزة الإدخال، مثل الماوس ولوحة اللمس والماوس الهوائي المستنِد إلى أداة الاستشعار الدوراني والمؤشر المستنِد إلى أداة الاستشعار الدوراني وعصا التحكم ولوحة اللمس المتعدّدة اللمس، التفاعلات باللمس الزائف. يتضمّن Android الميزة الثابتة android.hardware.faketouch، والتي تتوافق مع جهاز إدخال غير لمسي (يستند إلى مؤشر) عالي الدقة، مثل الماوس أو لوحة اللمس، والذي يمكنه محاكاة الإدخال المستنِد إلى اللمس بشكلٍ مناسب (بما في ذلك إتاحة الإيماءات الأساسية)، ويشير إلى أنّ الجهاز يتيح مجموعة فرعية محاكية من وظائف الشاشة اللمسية. يجب أن تستوفي عمليات تنفيذ الأجهزة التي تعلن عن ميزة اللمس الزائف متطلبات اللمس الزائف الواردة في الفقرة 7.2.5.
يجب أن تُبلغ عمليات تنفيذ الأجهزة عن الميزة الصحيحة التي تتوافق مع نوع الإدخال المستخدَم. يجب أن تُبلغ عمليات تنفيذ الأجهزة التي تتضمّن شاشة تعمل باللمس (شاشة تعمل باللمس بلمسة واحدة أو أفضل) عن ثابت ميزة النظام الأساسي android.hardware.touchscreen. يجب أن تُبلغ عمليات تنفيذ الأجهزة التي تُبلغ عن الثابت platform feature android.hardware.touchscreen أيضًا عن الثابت platform feature android.hardware.faketouch. يجب ألا تُبلغ عمليات تنفيذ الأجهزة التي لا تشمل شاشة تعمل باللمس (وتعتمد على جهاز مؤشر فقط) عن أي ميزة شاشة تعمل باللمس، ويجب ألا تُبلغ إلا عن android.hardware.faketouch إذا كانت تستوفي متطلبات اللمس الزائف في الفقرة 7.2.5.
7.2.5. الإدخال باللمس الزائف
آليات تنفيذ الأجهزة التي تعلن عن توافقها مع android.hardware.faketouch:
- يجب الإبلاغ عن مواضع X وY المطلقة للمؤشر على الشاشة وعرض مؤشر مرئي على الشاشة [الموارد، 87].
- يجب الإبلاغ عن حدث اللمس باستخدام رمز الإجراء الذي يحدّد تغيير الحالة الذي يحدث على المؤشر عند تحرّكه للأسفل أو للأعلى على الشاشة [الموارد، 87].
- يجب أن تتيح هذه الأجهزة تحريك المؤشر للأسفل وللأعلى على عنصر على الشاشة، ما يسمح للمستخدمين بمحاكاة النقر على عنصر على الشاشة.
- يجب أن تتيح الإشارة إلى أسفل ثم الإشارة إلى أعلى ثم الإشارة إلى أسفل ثم الإشارة إلى أعلى في الموقع نفسه على عنصر على الشاشة خلال حد زمني معيّن، ما يسمح للمستخدمين بمحاكاة النقر مرّتين على عنصر على الشاشة [الموارد، 87].
- يجب أن يتيح المؤشر توجيهه للأسفل على نقطة عشوائية على الشاشة، ثم نقله إلى أي نقطة عشوائية أخرى على الشاشة، ثم توجيهه للأعلى، ما يتيح للمستخدمين محاكاة السحب باللمس.
- يجب أن تتيح الإشارة للأسفل للمستخدمين تحريك العنصر بسرعة إلى موضع مختلف على الشاشة ثم الإشارة للأعلى على الشاشة، ما يسمح للمستخدمين برمي عنصر على الشاشة.
يجب أن تستوفي الأجهزة التي تعلن عن توافقها مع android.hardware.faketouch.multitouch.distinct متطلبات واجهة برمجة التطبيقات faketouch المذكورة أعلاه، ويجب أن تتيح أيضًا التتبّع الواضح لإدخال إشارتَين مستقلتَين أو أكثر.
7.2.6. توافق وحدة التحكّم في الألعاب
يجب أن تتيح عمليات تنفيذ أجهزة Android Television ربط الأزرار لوحدات التحكّم في الألعاب كما هو موضّح أدناه. يتضمّن تنفيذ Android من المصدر تنفيذ وحدات تحكّم في الألعاب تستوفي هذا الشرط.
7.2.6.1. عمليات ربط الأزرار
يجب أن تتوافق عمليات تنفيذ أجهزة Android Television مع عمليات ربط مفاتيح الصعوبة التالية:
زرّ | استخدام 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 [Resources, 88]
2 يجب الإفصاح عن استخدامات HID المذكورة أعلاه ضمن شهادة اعتماد لوحة ألعاب (0x01 0x0005).
3 يجب أن يكون الحد الأدنى المنطقي لهذا الاستخدام هو 0 والحد الأقصى المنطقي هو 7، والحد الأدنى المادي هو 0 والحد الأقصى المادي هو 315، والوحدات بالدرجات، ويجب أن يكون حجم التقرير هو 4. يتم تعريف القيمة المنطقية على أنّها الدوران باتجاه عقارب الساعة بعيدًا عن المحور العمودي. على سبيل المثال، تشير القيمة المنطقية 0 إلى عدم الدوران ويتم الضغط على الزر "أعلى"، في حين تشير القيمة المنطقية 1 إلى الدوران بزاوية 45 درجة ويتم الضغط على كل من الزرَّين "أعلى" و"يسار".
4 [Resources, 87]
عناصر التحكّم التناظرية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 |
1 [Resources, 87]
7.2.7. جهاز التحكّم عن بُعد
يجب أن توفّر عمليات تنفيذ أجهزة Android Television وحدة تحكّم عن بُعد لسماح المستخدمين بالوصول إلى واجهة التلفزيون. قد يكون جهاز التحكّم عن بُعد جهاز تحكّم عن بُعد ماديًا أو جهاز تحكّم عن بُعد مستندًا إلى البرامج يمكن الوصول إليه من هاتف جوّال أو جهاز لوحي. يجب أن يستوفي جهاز التحكّم عن بُعد المتطلبات المحدّدة أدناه.
- إمكانية البحث يجب أن تؤدي عمليات تنفيذ الأجهزة إلى تنشيط KEYCODE_SEARCH (أو KEYCODE_ASSIST إذا كان الجهاز متوافقًا مع المساعد) عندما يطلب المستخدم البحث الصوتي على جهاز التحكّم عن بُعد المادي أو المستنِد إلى البرامج.
- التنقّل: يجب أن تتضمّن جميع أجهزة التحكّم عن بُعد في Android Television أزرار "الرجوع" و"الصفحة الرئيسية" و"اختيار"، ويجب أن تكون متوافقة مع أحداث لوحة التوجيه [الموارد، 88].
7.3. أجهزة الاستشعار
يتضمّن Android واجهات برمجة تطبيقات للوصول إلى مجموعة متنوعة من أنواع الحساسات. قد تحذف عمليات تنفيذ التطبيقات على الأجهزة بشكل عام أجهزة الاستشعار هذه، كما هو موضّح في الأقسام الفرعية التالية. إذا كان الجهاز يتضمّن نوعًا معيّنًا من أجهزة الاستشعار يحتوي على IDE مقابل للمطوّرين الخارجيين، يجب أن ينفذ تنفيذ الجهاز IDE هذا على النحو الموضّح في مستندات حزمة تطوير البرامج (SDK) لنظام التشغيل Android ومستندات Android Open Source حول أجهزة الاستشعار [الموارد، 89]. على سبيل المثال، عمليات تنفيذ الأجهزة:
- يجب الإبلاغ بدقة عن توفّر أجهزة الاستشعار أو عدم توفّرها وفقًا لفئة android.content.pm.PackageManager [Resources, 70].
- يجب أن تعرض قائمة دقيقة بأجهزة الاستشعار المتوافقة من خلال (getSensorList()) SensorManager والطرق المشابهة.
- يجب أن تعمل بشكل معقول مع جميع واجهات برمجة التطبيقات الأخرى الخاصة بأجهزة الاستشعار (على سبيل المثال، من خلال عرض قيمة "صحيح" أو "خطأ" حسب الاقتضاء عندما تحاول التطبيقات تسجيل مستمعين، وعدم استدعاء مستمعي أجهزة الاستشعار عندما لا تكون أجهزة الاستشعار المقابلة متوفّرة، وما إلى ذلك).
- يجب الإبلاغ عن جميع قياسات أجهزة الاستشعار باستخدام قيم النظام الدولي المعني للوحدات (المقياس) لكل نوع من أنواع أجهزة الاستشعار على النحو المحدّد في مستندات IDE لنظام التشغيل Android [Resources, 90].
- يجب أن يُبلِغ عن وقت الحدث بالنانوسات كما هو محدّد في مستندات Android SDK، ويمثّل وقت وقوع الحدث ومزامنةً مع مثيل SystemClock.elapsedRealtimeNano(). ننصح بشدة بأن تستوفي أجهزة Android الحالية والجديدة هذه المتطلبات حتى تتمكّن من الترقية إلى إصدارات الإصدارات المستقبلية من الإصدارات التي قد يصبح فيها هذا المكوّن مطلوبًا. يجب أن يكون خطأ المزامنة أقل من 100 ملي ثانية [الموارد، 91].
- يجب الإبلاغ عن بيانات أجهزة الاستشعار بحد أقصى لمُدد الاستجابة يبلغ 100 ملي ثانية + 2 * sample_time في حال بث بيانات جهاز استشعار مع الحد الأدنى لمُدد الاستجابة المطلوبة التي تبلغ 5 ملي ثانية + 2 * sample_time عندما يكون معالج التطبيق نشطًا. ولا يشمل هذا التأخير أي تأخيرات في الفلترة.
- يجب الإبلاغ عن أول عيّنة من المستشعر خلال 400 ملي ثانية + 2 * sample_time من تنشيط المستشعر. من المقبول أن تكون دقة هذه العينة 0.
القائمة أعلاه ليست شاملة، ويجب اعتبار السلوك المُسجَّل لحزمة SDK لنظام التشغيل Android ومستندات Android Open Source حول أجهزة الاستشعار [Resources, 89] مرجعية.
بعض أنواع أجهزة الاستشعار مركبة، ما يعني أنّه يمكن الحصول عليها من بيانات يوفّرها جهاز استشعار واحد أو أكثر. (تشمل الأمثلة أداة استشعار الاتجاه ومقاييس التسارع الخطي). يجب أن توفّر عمليات تنفيذ الأجهزة أنواع أدوات الاستشعار هذه، عندما تتضمّن أدوات الاستشعار المادية المطلوبة كما هو موضّح في [الموارد، 92]. إذا كان تطبيق الجهاز يتضمّن أداة استشعار مركبة، يجب أن ينفِّذ أداة الاستشعار كما هو موضّح في مستندات Android Open Source حول أداتَي الاستشعار المركبتَين [الموارد، 92].
تتيح بعض أدوات استشعار Android وضع تفعيل "متواصل"، ما يؤدي إلى عرض البيانات باستمرار [الموارد، 93]. بالنسبة إلى أي واجهة برمجة تطبيقات يشير مستند حزمة تطوير البرامج (SDK) لنظام التشغيل Android إلى أنّها جهاز استشعار مستمر، يجب أن تقدّم عمليات تنفيذ الأجهزة بشكلٍ مستمر عيّنات بيانات دورية يجب أن يكون لها تشوّش أقل من %3، حيث يتم تعريف التشوّش على أنّه الانحراف المعياري لفرق قيم الطابع الزمني المسجّلة بين الأحداث المتتالية.
يُرجى العلم أنّ عمليات تنفيذ الأجهزة يجب أن تضمن عدم منع بث أحداث الاستشعار من دخول وحدة المعالجة المركزية للجهاز إلى حالة تعليق أو الخروج من حالة تعليق.
أخيرًا، عند تفعيل عدة أدوات استشعار، يجب ألا تتجاوز كمية الطاقة المستخدَمة مجموع كمية الطاقة المستخدَمة التي تم تسجيلها لكل أداة استشعار فردية.
7.3.1. مقياس التسارع
يجب أن تتضمّن عمليات تنفيذ الأجهزة مقياس تسارع ثلاثي المحاور. ننصحك بشدة بتضمين هذا المقسّم في أجهزة Android المزوّدة بشاشة تعمل باللمس وأجهزة Android Watch. إذا كان تطبيق الجهاز يتضمّن مقياس تسارع ثلاثي المحاور، يجب أن يستوفي الشروط التالية:
- يجب تنفيذ أداة الاستشعار TYPE_ACCELEROMETER والإبلاغ عنها [Resources, 94].
- يجب أن يكون بإمكانه تسجيل الأحداث بمعدّل تكرار لا يقل عن 50 هرتز لجهاز Android Watch لأنّ هذه الأجهزة تفرض قيودًا أكثر صرامة على الطاقة، وبمعدّل تكرار 100 هرتز لجميع أنواع الأجهزة الأخرى.
- يجب أن تُبلغ عن الأحداث التي تصل إلى 200 هرتز على الأقل.
- يجب أن تكون متوافقة مع نظام إحداثيات أجهزة استشعار Android كما هو موضّح بالتفصيل في واجهات برمجة تطبيقات Android [Resources, 90].
- يجب أن يكون قادرًا على القياس من السقوط الحر إلى أربع مرات من قوة الجاذبية (4g) أو أكثر على أي محور.
- يجب أن تكون درجة دقتها 12 بت على الأقل، ويجب أن تكون 16 بت على الأقل.
- يجب معايرة هذه الأدوات أثناء الاستخدام إذا تغيّرت الخصائص على مدار دورة الاستخدام، ويجب تعويضها والحفاظ على مَعلمات التعويض بين عمليات إعادة التمهيد للجهاز.
- يجب أن تكون مصحَّحة حسب درجة الحرارة.
- يجب أن يكون الانحراف المعياري لا يزيد عن 0.05 متر في الثانية^، ويجب احتساب الانحراف المعياري لكل محور استنادًا إلى العينات التي تم جمعها على مدار مدة لا تقل عن 3 ثوانٍ بأعلى معدّل تحليل.
- يجب تنفيذ أدوات الاستشعار المركبة TYPE_SIGNIFICANT_MOTION وTYPE_TILT_DETECTOR وTYPE_STEP_DETECTOR وTYPE_STEP_COUNTER كما هو موضّح في مستند IDE لنظام التشغيل Android. ننصح بشدة باستخدام أجهزة Android الحالية والجديدة مع أداة الاستشعار المركبة TYPE_SIGNIFICANT_MOTION. في حال استخدام أيٍّ من هذه الحساسات، يجب أن يكون مجموع استهلاكها للطاقة أقل مما يلي في جميع الأوقات: 4 ملي واط، ويجب أن يكون استهلاك كلّ منها أقل من 2 ملي واط و0.5 ملي واط عندما يكون الجهاز في حالة ديناميكية أو ثابتة.
- في حال تضمين أداة استشعار جيروسكوب، يجب تنفيذ أداة الاستشعار المركبة TYPE_GRAVITY و TYPE_LINEAR_ACCELERATION، ويجب تنفيذ أداة الاستشعار المركبة TYPE_GAME_ROTATION_VECTOR. ننصح بشدة باستخدام أداة استشعار TYPE_GAME_ROTATION_VECTOR على أجهزة Android الحالية والجديدة.
- يجب تنفيذ أداة استشعار مركبة من النوع TYPE_ROTATION_VECTOR، إذا كان هناك أيضًا أداة استشعار جيرسكوب وأداة استشعار مقياس مغناطيسي.
7.3.2. مقياس المغناطيسية
يجب أن تتضمّن عمليات تنفيذ الأجهزة مقياسًا مغناطيسيًا بثلاثة محاور (بوصلة). إذا كان الجهاز يتضمّن مقياس مغناطيسية بثلاثة محاور، يعني ذلك ما يلي:
- يجب تنفيذ أداة الاستشعار TYPE_MAGNETIC_FIELD ويجب أيضًا تنفيذ أداة الاستشعار TYPE_MAGNETIC_FIELD_UNCALIBRATED. بالنسبة إلى أجهزة Android الحالية والجديدة، ننصح بشدة باستخدام أداة الاستشعار TYPE_MAGNETIC_FIELD_UNCALIBRATED.
- يجب أن يكون الجهاز قادرًا على تسجيل الأحداث بمعدّل تكرار لا يقل عن 10 هرتز، ويجب عليه تسجيل الأحداث بمعدّل تكرار لا يقل عن 50 هرتز.
- يجب أن تكون متوافقة مع نظام إحداثيات أجهزة استشعار Android كما هو موضّح بالتفصيل في واجهات برمجة تطبيقات Android [Resources, 90].
- يجب أن يكون قادرًا على قياس القيم بين -900 و+900 ميكرو تسلا على كل محور قبل أن يبدأ بالتشبع.
- يجب أن تكون قيمة إزاحة الحديد الصلب أقل من 700 ميكرو تسلا، ويجب أن تكون القيمة أدنى من 200 ميكرو تسلا، وذلك من خلال وضع مقياس المغناطيسية بعيدًا عن الحقول المغناطيسية الديناميكية (المُنشأة عن التيار) والثابتة (المُنشأة عن المغناطيس).
- يجب أن تكون الدقة مساوية أو أعلى من 0.6 µT، ويجب أن تكون الدقة مساوية أو أعلى من 0.2 µ.
- يجب أن تكون مصحَّحة حسب درجة الحرارة.
- يجب أن تتيح المعايرة على الإنترنت وتعويض الانحياز الحديدي الصلب، والحفاظ على مَعلمات التعويض بين عمليات إعادة تشغيل الجهاز.
- يجب تطبيق التعويض عن الحديد اللين، ويمكن إجراء المعايرة سواء أثناء استخدام الجهاز أو أثناء إنتاجه.
- يجب أن يكون لها انحراف معيّاري، يتم احتسابه لكل محور على أساس عيّنات تم جمعها على مدار فترة لا تقل عن 3 ثوانٍ بأسرع معدّل تحليل، ولا повинна يكون أكبر من 0.5 ميكرو تسلا.
- يجب تنفيذ جهاز استشعار مركّب من النوع TYPE_ROTATION_VECTOR، إذا كان جهاز استشعار قياس السرعة وجهاز استشعار الجيروسكوب مُدرَجين أيضًا.
- يجوز تنفيذ أداة استشعار TYPE_GEOMAGNETIC_ROTATION_VECTOR إذا تم تنفيذ أداة استشعار التسارع أيضًا. ومع ذلك، في حال تنفيذه، يجب أن يستهلك أقل من 10 ملي واط ويجب أن يستهلك أقل من 3 ملي واط عند تسجيل أداة الاستشعار في وضع المعالجة المجمّعة بمعدّل 10 هرتز.
7.3.3. نظام تحديد المواقع العالمي (GPS)
يجب أن تتضمّن عمليات تنفيذ الأجهزة جهاز استقبال نظام تحديد المواقع العالمي (GPS). إذا كان تنفيذ ميزة تحديد الموقع الجغرافي على الجهاز يتضمّن جهاز استقبال لنظام تحديد المواقع العالمي (GPS)، يجب أن يتضمّن شكلاً من أشكال تقنية "تحديد الموقع الجغرافي بمساعدة شبكة الجوّال" لتقليل وقت الربط بنظام تحديد المواقع العالمي (GPS).
7.3.4. الجيروسكوب
يجب أن تتضمّن عمليات تنفيذ الأجهزة أداة جيروسكوب (أداة استشعار التغييرات الزاوية). يجب عدم تضمين أجهزة استشعار جيروسكوب في الأجهزة ما لم يتم تضمين مقياس تسارع ثلاثي المحاور أيضًا. إذا كان تطبيق الجهاز يتضمّن أداة جيروسكوب، يجب أن يستوفي الشروط التالية:
- يجب أن توفّر أداة الاستشعار TYPE_GYROSCOPE، ويجب أيضًا أن توفّر أداة الاستشعار TYPE_GYROSCOPE_UNCALIBRATED. بالنسبة إلى أجهزة Android الحالية والجديدة، ننصح بشدة بتطبيق أداة الاستشعار SENSOR_TYPE_GYROSCOPE_UNCALIBRATED.
- يجب أن يكون قادرًا على قياس تغييرات الاتجاه بما يصل إلى 1,000 درجة في الثانية.
- يجب أن يكون بإمكانه تسجيل الأحداث بمعدّل تكرار لا يقل عن 50 هرتز لأجهزة Android Watch لأنّ هذه الأجهزة تفرض قيودًا أكثر صرامة على الطاقة و 100 هرتز لجميع أنواع الأجهزة الأخرى.
- يجب أن تُبلغ عن الأحداث التي تصل إلى 200 هرتز على الأقل.
- يجب أن تكون درجة دقتها 12 بت أو أكثر، ويجب أن تكون درجة دقتها 16 بت أو أكثر.
- يجب أن يكون مصحوبًا بمُعدِّل حرارة.
- يجب معايرة هذه الأنظمة وتعويضها أثناء الاستخدام، والحفاظ على مَعلمات التعويض بين عمليات إعادة تشغيل الجهاز.
- يجب أن يكون التباين لا يزيد عن 1e-7 rad^2 / s^2 لكل هرتز (التباين لكل هرتز، أو rad^2 / s). يُسمح باختلاف التباين حسب معدّل أخذ العينات، ولكن يجب أن يكون محدودًا بهذه القيمة. بعبارة أخرى، إذا كنت تقيس التباين في الجيروسكوب بمعدّل أخذ عينات يبلغ 1 هرتز، يجب ألا يكون أكبر من 1e-7 rad^2/s^2.
- يجب تنفيذ جهاز استشعار مركب من النوع TYPE_ROTATION_VECTOR، إذا كان جهاز استشعار قياس السرعة ومقياس المغناطيسية مضمّنَين أيضًا.
- في حال تضمين أداة استشعار سرعة التسارع، يجب تنفيذ أداة الاستشعار المركبة TYPE_GRAVITY و TYPE_LINEAR_ACCELERATION، ويجب تنفيذ أداة الاستشعار المركبة TYPE_GAME_ROTATION_VECTOR. ننصح بشدة باستخدام أجهزة Android الحالية والجديدة لإدراج أداة الاستشعار TYPE_GAME_ROTATION_VECTOR.
7.3.5. مقياس الضغط الجوي
يجب أن تتضمّن عمليات تنفيذ الأجهزة مقياس ضغط جوي (جهاز استشعار ضغط الهواء المحيط). إذا كان تطبيق الجهاز يتضمّن مقياس ضغط جوي، يجب أن يستوفي الشروط التالية:
- يجب تنفيذ وتسجيل بيانات استشعار TYPE_PRESSURE.
- يجب أن يكون بإمكانه إرسال الأحداث بمعدّل 5 هرتز أو أكثر.
- يجب أن يكون دقيقًا بما يكفي للسماح بتقدير الارتفاع.
- يجب أن يكون مصحوبًا بمُعدِّل حرارة.
7.3.6. مقياس درجة الحرارة
قد تتضمّن عمليات تنفيذ الأجهزة ميزان حرارة للبيئة المحيطة (أداة استشعار الحرارة). في حال توفّره، يجب تحديده على أنّه SENSOR_TYPE_AMBIENT_TEMPERATURE ويجب قياس درجة الحرارة المحيطة (درجة حرارة الغرفة) بالدرجات المئوية.
قد تتضمّن عمليات تنفيذ الأجهزة جهاز استشعار لدرجة حرارة وحدة المعالجة المركزية، ولكن لا يُنصَح بذلك. إذا كان متوفرًا، يجب تحديده على أنّه SENSOR_TYPE_TEMPERATURE، ويجب أن يقيس درجة حرارة وحدة المعالجة المركزية للجهاز، ويجب ألّا يقيس أي درجة حرارة أخرى. يُرجى العِلم أنّه تم إيقاف نوع أداة الاستشعار SENSOR_TYPE_TEMPERATURE نهائيًا في Android 4.0.
7.3.7. مقياس الإضاءة
قد تتضمّن عمليات تنفيذ الأجهزة مقياسًا للضوء (أداة استشعار الضوء المحيط).
7.3.8. أداة استشعار التقارب
قد تتضمّن عمليات تنفيذ الأجهزة أداة استشعار التقارب. يجب أن تتضمّن الأجهزة التي يمكنها إجراء مكالمة voice صوتية وعرض أي قيمة غير PHONE_TYPE_NONE في getPhoneType أداة استشعار القرب. إذا كان تنفيذ الجهاز يتضمّن أداة استشعار التقارب، يجب أن يستوفي ما يلي:
- يجب قياس مدى قرب الجسم في الاتجاه نفسه الذي تشير إليه الشاشة. وهذا يعني أنّه يجب توجيه أداة استشعار التقارب لرصد الأجسام القريبة من الشاشة، لأنّ الغرض الأساسي من هذا النوع من أجهزة الاستشعار هو رصد هاتف يستخدمه المستخدم. إذا كان تطبيق الجهاز يتضمّن أداة استشعار تقارب بأي اتجاه آخر، يجب ألّا يكون بالإمكان الوصول إليها من خلال واجهة برمجة التطبيقات هذه.
- يجب أن تكون الدقة 1 بت أو أكثر.
7.3.9. أجهزة الاستشعار العالية الدقة
في عمليات تنفيذ الأجهزة التي تتيح استخدام مجموعة من أجهزة الاستشعار ذات الجودة العالية التي يمكنها تلبية جميع
المتطلبات الواردة في هذا القسم، يجب تحديد مدى توفّر هذه الميزة من خلال علامة ميزة
android.hardware.sensor.hifi_sensors
.
يجب أن يتيح الجهاز الذي يعلن عن android.hardware.sensor.hifi_sensors جميع أنواع أجهزة الاستشعار التالية التي تستوفي متطلبات الجودة كما هو موضّح أدناه:
- SENSOR_TYPE_ACCELEROMETER
- يجب أن يكون نطاق القياس بين -8 جرام و8 جرام على الأقل.
- يجب أن يكون دقة القياس 1024 LSB/G على الأقل
- يجب أن يكون الحد الأدنى لعدد مرات القياس 12.5 هرتز أو أقل.
- يجب أن يكون الحد الأقصى لعدد مرات القياس 200 هرتز أو أعلى.
- يجب أن يكون التشويش في القياس أقل من 400uG/√Hz
- يجب تنفيذ شكل غير نشط من أداة الاستشعار هذه مع إمكانية تخزين مؤقت لما لا يقل عن 3000 حدث أداة استشعار.
- يجب أن يكون استهلاك الطاقة في وضع التجميع أقل من 3 ملي واط.
- SENSOR_TYPE_GYROSCOPE
- يجب أن يكون نطاق القياس بين -1000 و1000 دورة في الثانية على الأقل
- يجب أن تكون دقة القياس 16 LSB/dps على الأقل
- يجب أن يكون الحد الأدنى لعدد مرات القياس 12.5 هرتز أو أقل.
- يجب أن يكون الحد الأقصى لعدد مرات القياس 200 هرتز أو أعلى.
- يجب أن يكون التشويش في القياس أقل من 0.014 درجة في الثانية لكل جذر هرتز.
- SENSOR_TYPE_GYROSCOPE_UNCALIBRATED مع متطلبات الجودة نفسها التي تنطبق على SENSOR_TYPE_GYROSCOPE
- SENSOR_TYPE_GEOMAGNETIC_FIELD
- يجب أن يكون نطاق القياس بين -900 و+900 uT على الأقل.
- يجب أن يكون دقة القياس 5 LSB/uT على الأقل
- يجب أن يكون الحد الأدنى لعدد مرات القياس 5 هرتز أو أقل.
- يجب أن يكون الحد الأقصى لعدد مرات القياس 50 هرتز أو أعلى.
- يجب أن يكون التشويش في القياس أقل من 0.5 ميكرو تسلا
- SENSOR_TYPE_MAGNETIC_FIELD_UNCALIBRATED مع متطلبات الجودة نفسها التي تنطبق على
SENSOR_TYPE_GEOMAGNETIC_FIELD بالإضافة إلى ما يلي:
- يجب استخدام شكل غير مُشغِّل لهذا المستشعر مع إمكانية تخزين مؤقت لما لا يقل عن 600 حدث مستشعر.
- SENSOR_TYPE_PRESSURE
- يجب أن يكون نطاق القياس بين 300 و1100 hPa على الأقل
- يجب أن تكون دقة القياس 80 LSB/hPa على الأقل.
- يجب أن يكون الحد الأدنى لمعدّل القياس 1 هرتز أو أقل.
- يجب أن يكون الحد الأقصى لعدد مرات القياس 10 هرتز أو أعلى.
- يجب أن يكون التشويش في القياس أقل من 2 باسكال/√هرتز
- يجب تنفيذ نموذج غير نشط لهذا المستشعر مع إمكانية التخزين المؤقت لما لا يقل عن 300 حدث مستشعر.
- يجب أن يكون استهلاك الطاقة في وضع التجميع أقل من 2 ملي واط.
- TYPE_GAME_ROTATION_VECTOR
- يجب استخدام شكل غير مُشغِّل لهذا المستشعر مع قدرة تخزين مؤقت لا تقل عن 300 حدث مستشعر.
- يجب أن يكون استهلاك الطاقة في وضع "المعالجة المجمّعة" لا يزيد عن 4 ملي واط.
- SENSOR_TYPE_SIGNIFICANT_MOTION
- يجب أن يكون استهلاك الطاقة أقل من 0.5 ملي واط عندما يكون الجهاز ثابتًا و1.5 ملي واط عندما يكون الجهاز متحركًا
- SENSOR_TYPE_STEP_DETECTOR
- يجب تنفيذ شكل غير نشط من أداة الاستشعار هذه مع إمكانية التخزين المؤقت لما لا يقل عن 100 حدث أداة استشعار.
- يجب أن يكون استهلاك الطاقة أقل من 0.5 ملي واط عندما يكون الجهاز ثابتًا و1.5 ملي واط عندما يكون الجهاز متحركًا
- يجب أن يكون استهلاك الطاقة في وضع التجميع أقل من 4 ملي واط.
- SENSOR_TYPE_STEP_COUNTER
- يجب أن يكون استهلاك الطاقة أقل من 0.5 ملي واط عندما يكون الجهاز ثابتًا و1.5 ملي واط عندما يكون الجهاز متحركًا
- SENSOR_TILT_DETECTOR
- يجب أن يكون استهلاك الطاقة أقل من 0.5 ملي واط عندما يكون الجهاز ثابتًا و1.5 ملي واط عندما يكون الجهاز متحركًا
يجب أيضًا أن يستوفي هذا الجهاز متطلبات النظام الفرعي التالي لأجهزة الاستشعار:
- يجب أن يكون الطابع الزمني للحدث المادي نفسه الذي يُبلغ عنه مقياس التسارع ومقياس السرعة الدورانية ومقياس المغناطيسية ضمن 2.5 ملي ثانية من بعضها.
- يجب أن تكون الطوابع الزمنية لأحداث استشعار الجيروسكوب على قاعدة الوقت نفسها المستخدَمة في النظام الفرعي للكاميرا وضمن 1 ملي ثانية من الخطأ.
- يجب أن يكون وقت استجابة إرسال العيّنات إلى HAL أقل من 5 مللي ثانية من اللحظة التي تتوفّر فيها البيانات على جهاز الاستشعار المادي.
- يجب ألا يزيد استهلاك الطاقة عن 0.5 ملي واط عندما يكون الجهاز ثابتًا و2.0 ملي واط
عندما يكون الجهاز متحركًا عند تفعيل أي مجموعة من أجهزة الاستشعار التالية:
- SENSOR_TYPE_SIGNIFICANT_MOTION
- SENSOR_TYPE_STEP_DETECTOR
- SENSOR_TYPE_STEP_COUNTER
- SENSOR_TILT_DETECTORS
يُرجى العلم أنّ جميع متطلبات استهلاك الطاقة الواردة في هذا القسم لا تشمل استهلاك الطاقة في وحدة معالجة التطبيقات. ويشمل ذلك الطاقة المستخدَمة في سلسلة أجهزة الاستشعار بالكامل، أي جهاز الاستشعار وأي دوائر كهربائية داعمة وأي نظام مخصّص لمعالجة بيانات أجهزة الاستشعار وغيرها.
قد تكون أنواع أجهزة الاستشعار التالية متوافقة أيضًا مع عملية تنفيذ الجهاز التي تحدِّد android.hardware.sensor.hifi_sensors، ولكن في حال توفّر أنواع أجهزة الاستشعار هذه، يجب أن تستوفي الحد الأدنى لمتطلبات قدرة التخزين المؤقت التالية:
- SENSOR_TYPE_PROXIMITY: 100 حدث لجهاز الاستشعار
7.3.10. أداة استشعار بصمة الإصبع
يجب أن تتضمّن عمليات تنفيذ الأجهزة التي تتضمّن شاشة قفل آمنة أداة استشعار بصمة الإصبع. إذا كان تنفيذ الجهاز يتضمّن أداة استشعار بصمة الإصبع وكان يحتوي على واجهة برمجة تطبيقات مقابلة لأجل المطوّرين التابعين لجهات خارجية، يجب استيفاء الشروط التالية:
- يجب الإفصاح عن التوافق مع ميزة android.hardware.fingerprint.
- يجب تنفيذ واجهة برمجة التطبيقات المقابلة بالكامل على النحو الموضّح في مستندات حزمة تطوير البرامج (SDK) لنظام التشغيل Android [Resources, 95].
- يجب أن يكون معدّل القبول الخاطئ أقل من 0.002%.
- يُنصح بشدة بأن يكون معدّل الرفض الخاطئ أقل من %10، كما يتم قياسه على الجهاز.
- يُنصح بشدة بخفض وقت الاستجابة إلى أقل من ثانية واحدة، ويتم قياسه من لحظة لمس كاميرا الكشف عن بصمة الإصبع وحتى فتح قفل الشاشة باستخدام إصبع مسجَّل.
- يجب أن يتم تحديد عدد محاولات إثبات الهوية بعد 30 ثانية على الأقل من إجراء خمس محاولات غير صحيحة لإثبات الهوية باستخدام بصمة الإصبع.
- يجب أن يكون هناك تطبيق لملف تخزين مفاتيح مستند إلى الأجهزة، وأن يتم إجراء مطابقة بصمة الإصبع في بيئة تنفيذ موثوقة (TEE) أو على شريحة تتضمّن قناة آمنة تؤدي إلى بيئة التنفيذ الموثوقة.
- يجب أن تكون جميع بيانات البصمة التعريفية مشفّرة ومصادق عليها cryptographically كي لا يمكن الحصول عليها أو قراءتها أو تغييرها خارج بيئة التنفيذ الموثوق بها (TEE) كما هو موضّح في إرشادات التنفيذ على الموقع الإلكتروني لمشروع Android Open Source Project [Resources, 96].
- يجب منع إضافة بصمة إصبع بدون إنشاء سلسلة ثقة أولاً من خلال حصول المستخدم على تأكيد بيانات اعتماد الجهاز الحالية أو إضافة بيانات اعتماد جديدة (رقم تعريف شخصي/نقش/كلمة مرور) يتم تأمينها من خلال TEE، ويوفّر تنفيذ مشروع Android Open Source Framework آلية لإجراء ذلك.
- يجب عدم تفعيل تطبيقات تابعة لجهات خارجية للتمييز بين البصمات الرقمية الفردية.
- يجب أن تلتزم بالعلامة DevicePolicyManager.KEYGUARD_DISABLE_FINGERPRINT.
- عند الترقية من إصدار أقدم من Android 6.0، يجب نقل بيانات بصمة الإصبع بأمان لاستيفاء المتطلبات المذكورة أعلاه أو إزالتها.
- يجب استخدام رمز بصمة الإصبع في Android المتوفّر في "مشروع Android المفتوح المصدر".
7.4. إمكانية اتصال البيانات
7.4.1. الاتصالات الهاتفية
يشير مصطلح "الهاتف" كما تستخدمه واجهات برمجة تطبيقات Android وهذا المستند تحديدًا إلى الأجهزة ذات الصلة بإجراء المكالمات الصوتية وإرسال الرسائل القصيرة عبر شبكة GSM أو CDMA. على الرغم من أنّ هذه المكالمات الصوتية قد تكون أو لا تكون مُدارة عبر تبديل الحِزم، فإنّها لأغراض Android تُعتبر مستقلة عن أي اتصال بالبيانات قد يتم تنفيذه باستخدام الشبكة نفسها. بعبارة أخرى، تشير وظائف "الهاتف" وواجهات برمجة التطبيقات في Android تحديدًا إلى المكالمات التلقائية والرسائل القصيرة. على سبيل المثال، يجب ألا تُبلغ عمليات تنفيذ الأجهزة التي لا يمكنها إجراء مكالمات أو إرسال رسائل SMS أو تلقّيها عن ميزة android.hardware.telephony أو أي ميزات فرعية، بغض النظر عمّا إذا كانت تستخدم شبكة جوّال لاتصال بالبيانات.
يجوز استخدام نظام التشغيل Android على الأجهزة التي لا تتضمّن أجهزة اتصال هاتفي. وهذا يعني أنّه يتوافق Android مع الأجهزة التي ليست هواتف. ومع ذلك، إذا كان تنفيذ الجهاز يتضمّن خدمات هاتفية عبر شبكة GSM أو CDMA، يجب أن يتضمّن دعمًا كاملاً لواجهة برمجة التطبيقات لهذه التكنولوجيا. يجب أن تُطبِّق عمليات تنفيذ الأجهزة التي لا تشمل معدات الهاتف واجهات برمجة التطبيقات الكاملة كعمليات لا تؤدي إلى أيّ إجراء.
7.4.2. معيار IEEE 802.11 (لشبكات Wi-Fi)
يجب أن تتضمّن عمليات تنفيذ أجهزة Android Television إمكانية الاتصال بشبكة Wi-Fi.
يجب أن تتضمّن عمليات تنفيذ أجهزة Android Television إمكانية استخدام شكل واحد أو أكثر من 802.11 (b/g/a/n وما إلى ذلك)، ويجب أن تتضمّن أنواع أخرى من عمليات تنفيذ أجهزة Android إمكانية استخدام شكل واحد أو أكثر من 802.11. إذا كان تنفيذ الجهاز يتضمّن إتاحة استخدام معيار 802.11 وعرض الوظائف لتطبيق تابع لجهة خارجية، يجب أن ينفِّذ واجهة برمجة التطبيقات (API) المقابلة لنظام Android وأن:
- يجب الإبلاغ عن علامة ميزة الجهاز android.hardware.wifi.
- يجب تنفيذ واجهة برمجة التطبيقات للبث المتعدد على النحو الموضّح في مستندات حزمة تطوير البرامج (SDK) [الموارد، 97].
- يجب أن يكون متوافقًا مع نظام أسماء النطاقات ذي البث المتعدد (mDNS) ويجب عدم فلترة حزم mDNS
(224.0.0.251) في أي وقت من التشغيل، بما في ذلك:
- حتى عندما تكون الشاشة غير نشطة
- لعمليات تنفيذ أجهزة Android Television، حتى في حالات الطاقة الاحتياطية
7.4.2.1. اتصال Wi-Fi مباشر
يجب أن تتضمّن عمليات تنفيذ الأجهزة إتاحة استخدام تقنية Wi-Fi Direct (Wi-Fi peer-to-peer). إذا كان تنفيذ الجهاز يتضمّن إتاحة Wi-Fi Direct، يجب أن ينفذ واجهة برمجة التطبيقات المقابلة لنظام التشغيل Android كما هو موضّح في مستندات حزمة تطوير البرامج (SDK) [المراجع، 98]. إذا كان تنفيذ الجهاز يتضمّن إتاحة تقنية Wi-Fi Direct، يعني ذلك أنّه:
- يجب الإبلاغ عن ميزة الجهاز android.hardware.wifi.direct.
- يجب أن يكون الجهاز متوافقًا مع شبكة Wi-Fi العادية.
- يجب أن يكون الجهاز متوافقًا مع شبكة Wi-Fi وWi-Fi Direct في الوقت نفسه.
7.4.2.2. إعداد رابط مباشر عبر نفق Wi-Fi
يجب أن تتضمّن عمليات تنفيذ أجهزة Android Television ميزة Wi-Fi Tunneled Direct Link Setup (TDLS).
يجب أن تتضمّن عمليات تنفيذ أجهزة Android Television ميزة إعداد رابط مباشر عبر النفق (TDLS) في شبكة Wi-Fi، ويجب أن تتضمّن عمليات تنفيذ الأنواع الأخرى من أجهزة Android ميزة إعداد رابط مباشر عبر النفق في شبكة Wi-Fi كما هو موضّح في مستندات حزمة تطوير البرامج (SDK) لنظام التشغيل Android [المراجع، 99]. إذا كان تنفيذ الجهاز يتضمّن إتاحة بروتوكول TDLS وكان هذا البروتوكول مفعّلاً من خلال واجهة برمجة التطبيقات WiFiManager API، ينطبق ما يلي على الجهاز:
- يجب استخدام بروتوكول TDLS فقط عندما يكون ذلك ممكنًا ومفيدًا.
- يجب أن يتضمّن بعض الأساليب الاستقرائية وألا يستخدم بروتوكول TDLS عندما يكون أداؤه أسوأ مقارنةً بالاتصال عبر نقطة وصول Wi-Fi.
7.4.3. البلوتوث
يجب أن تكون عمليات تنفيذ Android Watch وAndroid Automotive متوافقة مع البلوتوث. يجب أن تتيح تطبيقات Android Television استخدام البلوتوث وتقنية Bluetooth LE.
يتضمّن نظام Android تقنية البلوتوث وتقنية "البلوتوث المنخفض الطاقة" [Resources, 100]. يجب أن تُعلن عمليات تنفيذ الأجهزة التي تتضمّن إتاحة البلوتوث والبلوتوث المنخفض الطاقة عن ميزات النظام الأساسي ذات الصلة (android.hardware.bluetooth وandroid.hardware.bluetooth_le على التوالي) وأن تنفِّذ واجهات برمجة التطبيقات للنظام الأساسي. يجب أن توفّر عمليات تنفيذ الأجهزة ملفات تعريف البلوتوث ذات الصلة، مثل A2DP وAVCP وOBEX وما إلى ذلك، حسبما يناسب الجهاز. يجب أن تكون تطبيقات Android Television متوافقة مع البلوتوث وBluetooth LE.
عمليات تنفيذ الأجهزة التي تتضمّن إتاحة تقنية "البلوتوث المنخفض الطاقة":
- يجب الإفصاح عن ميزة الجهاز android.hardware.bluetooth_le.
- يجب تفعيل واجهات برمجة تطبيقات Bluetooth المستندة إلى GATT (ملف الخصائص العام) على النحو описан في مستندات حزمة تطوير البرامج (SDK) و[الموارد، 100].
- ننصح بشدة بتطبيق مهلة عناوين خاصة قابلة للحل (RPA) لا تزيد عن 15 دقيقة وتغيير العنوان عند انتهاء المهلة لحماية خصوصية المستخدم.
- يجب أن تتيح ميزة "التحميل إلى الجهاز" لمعالجة منطق الفلترة في شريحة البلوتوث عند تنفيذ واجهة برمجة التطبيقات ScanFilter API [Resources, 101]، ويجب أن تُبلغ عن القيمة الصحيحة لمكان تنفيذ منطق الفلترة عند الاستعلام من خلال الأسلوب android.bluetooth.BluetoothAdapter.isOffloadedFilteringSupported().
- يجب أن تتيح هذه الواجهة نقل عمليات المسح الضوئي المجمّعة إلى مجموعة شرائح البلوتوث، ولكن إذا لم تكن متاحة، يجب أن تُبلغ عن "خطأ" عند الاستعلام من خلال الأسلوب android.bluetooth.BluetoothAdapater.isOffloadedScanBatchingSupported().
- يجب أن يتيح استخدام إعلانات متعددة مع 4 خانات على الأقل، ولكن إذا لم يكن ذلك ممكنًا، يجب أن يعرض القيمة "false" عند الاستعلام من خلال الأسلوب android.bluetooth.BluetoothAdapter.isMultipleAdvertisementSupported().
7.4.4. تقنية الاتصال القصير المدى
يجب أن تتضمّن عمليات تنفيذ الأجهزة جهاز إرسال واستلام وأجهزة ذات صلة لتكنولوجيا الاتصال القصير المدى (NFC). إذا كان تنفيذ الجهاز يتضمّن تقنية NFC الأجهزة ويخطّط لإتاحتها للتطبيقات التابعة لجهات خارجية، يجب استيفاء الشروط التالية:
- يجب الإبلاغ عن ميزة android.hardware.nfc من الأسلوب android.content.pm.PackageManager.hasSystemFeature() [Resources، 70].
- يجب أن يكون الجهاز قادرًا على قراءة رسائل NDEF وكتابتها من خلال معايير NFC التالية:
- يجب أن يكون الجهاز قادرًا على العمل كقارئ/كاتب في NFC Forum (على النحو المحدّد في المواصفة الفنية لـ NFC Forum NFCForum-TS-DigitalProtocol-1.0) من خلال معايير NFC التالية:
- NfcA (ISO14443-3A)
- NfcB (ISO14443-3B)
- NfcF (JIS X 6319-4)
- IsoDep (ISO 14443-4)
- أنواع علامات NFC Forum 1 و2 و3 و4 (حدّدها NFC Forum)
- يُنصح بشدة بأن يكون الجهاز قادرًا على قراءة رسائل NDEF وكتابتها، بالإضافة إلى قراءة البيانات الأولية من خلال معايير NFC التالية. يُرجى العلم أنّه على الرغم من أنّ معايير NFC
أدناه مُدرجة على أنّها "مُستحسَنة بشدة"، من المخطَّط أن يتم تغيير هذه المعايير إلى "يجب" في تعريف التوافق لإصدار
مستقبلي. هذه المعايير اختيارية
في هذا الإصدار، ولكن ستكون مطلوبة في الإصدارات المستقبلية. ننصح بشدة بتلبية متطلبات التوافق هذه الآن على الأجهزة الحالية والجديدة التي تعمل بإصدار Android هذا، وذلك لكي تتمكّن من الترقية إلى إصدارات المنصة المستقبلية.
- NfcV (المعيار الدولي 15693)
- يجب أن يكون الجهاز قادرًا على قراءة الرمز الشريطي وعنوان URL (إذا كان مُرمّزًا) لمنتجات Thinfilm NFC Barcode [Resources, 102].
- يجب أن يكون الجهاز قادرًا على إرسال البيانات واستلامها من خلال
المعايير والبروتوكولات التالية للاتصال المباشر بين الأجهزة:
- ISO 18092
- LLCP 1.2 (حدّده NFC Forum)
- SDP 1.0 (حدّده NFC Forum)
- بروتوكول إرسال البيانات غير القابلة للتغيير (NDEF) [المَراجع، 103]
- SNEP 1.0 (حدّده NFC Forum)
- يجب أن يتضمّن التطبيق ميزة Android Beam [المَراجع، 104]:
- يجب تنفيذ الخادم التلقائي لبروتوكول SNEP. يجب إرسال رسائل NDEF الصالحة التي يتلقّاها خادم SNEP التلقائي إلى التطبيقات باستخدام النيّة android.nfc.ACTION_NDEF_DISCOVERED. عند إيقاف ميزة Android Beam في الإعدادات، يجب ألّا يتم إيقاف إرسال رسالة NDEF الواردة.
- يجب أن يراعي التطبيق النية android.settings.NFCSHARING_SETTINGS لعرض إعدادات مشاركة NFC [Resources, 105].
- يجب تنفيذ خادم NPP. يجب معالجة الرسائل التي يتلقّاها خادم NPP بالطريقة نفسها التي يعالج بها الخادم التلقائي لبروتوكول SNEP.
- يجب تنفيذ برنامج SNEP ومحاولة إرسال ملف NDEF للاتصال المباشر بين الأجهزة إلى خادم SNEP التلقائي عند تفعيل ميزة Android Beam. إذا لم يتم العثور على خادم SNEP تلقائيًا، يجب أن يحاول العميل الإرسال إلى خادم NPP.
- يجب السماح للأنشطة التي تعمل في المقدّمة بضبط رسالة NDEF للاتصال المباشر بين الأجهزة (P2P) الصادرة باستخدام android.nfc.NfcAdapter.setNdefPushMessage و android.nfc.NfcAdapter.setNdefPushMessageCallback و android.nfc.NfcAdapter.enableForegroundNdefPush.
- يجب استخدام إيماءة أو تأكيد على الشاشة، مثل "اللمس للإرسال"، قبل إرسال رسائل NDEF للاتصال المباشر بين الأجهزة.
- يجب أن يكون مزوّدًا بتقنية Android Beam بشكل تلقائي، ويجب أن يكون قادرًا على الإرسال والاستقبال باستخدام تقنية Android Beam، حتى في حال تفعيل وضع P2p آخر خاص بتقنية NFC.
- يجب أن يتيح الجهاز تسليم اتصال NFC إلى البلوتوث عندما يكون الجهاز متوافقًا مع ملف Bluetooth Object Push Profile. يجب أن تتيح عمليات تنفيذ الأجهزة تسليم اتصال باستخدام البلوتوث عند استخدام android.nfc.NfcAdapter.setBeamPushUris، وذلك من خلال تنفيذ مواصفات "إصدار 1.2 من تسليم الاتصال" [الموارد، 106] و"إصدار 1.0 من الإقران الآمن والبسيط باستخدام البلوتوث عبر NFC" [الموارد، 107] من منتدى NFC. يجب أن ينفِّذ هذا التنفيذ خدمة handover LLCP باسم الخدمة "urn:nfc:sn:handover" لتبادل طلبات/سجلّات اختيار handover عبر NFC، ويجب أن يستخدم ملف تعريف Bluetooth Object Push لنقل البيانات الفعلي عبر البلوتوث. لأسباب قديمة (للبقاء متوافقًا مع أجهزة Android 4.1)، يجب أن يظل التنفيذ يقبل طلبات SNEP GET لتبادل طلب الاستلام أو اختيار السجلّات عبر NFC. ومع ذلك، يجب ألا يُرسِل التنفيذ نفسه طلبات SNEP GET لإجراء عملية تسليم الاتصال.
- يجب إجراء استطلاع لجميع التكنولوجيات المتوافقة أثناء وضع "اكتشاف NFC".
- يجب أن يكون الجهاز في وضع اكتشاف NFC عندما يكون الجهاز مفعّلاً والشاشة نشطة وشاشة القفل مفتوحة.
- يجب أن يكون الجهاز قادرًا على العمل كقارئ/كاتب في NFC Forum (على النحو المحدّد في المواصفة الفنية لـ NFC Forum NFCForum-TS-DigitalProtocol-1.0) من خلال معايير NFC التالية:
(يُرجى العِلم أنّ الروابط المتاحة للجميع غير متاحة لمواصفات JIS وISO وNFC Forum المذكورة أعلاه).
يتيح نظام Android وضع "محاكاة البطاقة المضيفة" (HCE) عبر NFC. إذا كان تنفيذ الجهاز يتضمّن شريحة تحكم NFC قادرة على توجيه HCE و رقم تعريف التطبيق (AID)، يعني ذلك ما يلي:
- يجب الإبلاغ عن ثابت ميزة android.hardware.nfc.hce.
- يجب أن تكون متوافقة مع واجهات برمجة تطبيقات NFC HCE كما هو محدّد في حزمة تطوير البرامج (SDK) لنظام التشغيل Android [الموارد، 108].
بالإضافة إلى ذلك، قد تتضمّن عمليات تنفيذ الأجهزة إمكانات القراءة/الكتابة لتكنولوجيات MIFARE التالية:
- MIFARE Classic
- MIFARE Ultralight
- تنسيق NDEF على MIFARE Classic
يُرجى العِلم أنّ نظام التشغيل Android يتضمّن واجهات برمجة تطبيقات لأنواع شرائح MIFARE هذه. إذا كان تنفيذ الجهاز متوافقًا مع MIFARE في دور القارئ/الكاتب، يعني ذلك ما يلي:
- يجب تنفيذ واجهات برمجة تطبيقات Android المقابلة كما هو موضّح في مستندات حزمة تطوير البرامج (SDK) لنظام التشغيل Android.
- يجب الإبلاغ عن الميزة com.nxp.mifare من الأسلوب android.content.pm.PackageManager.hasSystemFeature() [Resources, 70]. يُرجى العلم أنّ هذه ليست ميزة عادية في Android، وبالتالي لا تظهر كقيمة ثابتة في فئة android.content.pm.PackageManager.
- يجب عدم تنفيذ واجهات برمجة تطبيقات Android المقابلة أو الإبلاغ عن ميزة com.nxp.mifare ما لم يتم أيضًا تنفيذ ميزة NFC العامة كما هو موضّح في هذا القسم.
إذا كان تنفيذ الجهاز لا يتضمّن أجهزة NFC، يجب عدم تحديد ميزة android.hardware.nfc من الأسلوب android.content.pm.PackageManager.hasSystemFeature() [Resources, 70]، ويجب تنفيذ واجهة برمجة التطبيقات Android NFC API كإجراء لا يؤدي إلى أيّ إجراء.
بما أنّ الفئتَين android.nfc.NdefMessage وandroid.nfc.NdefRecord تمثّلان تنسيقًا لتمثيل البيانات لا يعتمد على البروتوكول، يجب أن تُنفِّذ عمليات تنفيذ الأجهزة واجهات برمجة التطبيقات هذه حتى إذا كانت لا تتضمّن إتاحة استخدام NFC أو تُعلِن عن ميزة android.hardware.nfc.
7.4.5. الحد الأدنى من إمكانات الشبكة
يجب أن تتضمّن عمليات تنفيذ الأجهزة إمكانية استخدام شكل واحد أو أكثر من أشكال ربط الشبكات بالبيانات. وعلى وجه التحديد، يجب أن تتضمّن عمليات تنفيذ الأجهزة إمكانية استخدام معيار بيانات واحد على الأقل يمكنه نقل البيانات بسرعة 200 كيلوبت في الثانية أو أكثر. تشمل أمثلة التكنولوجيات التي تستوفي هذا الشرط EDGE وHSPA وEV-DO و802.11g و Ethernet وBluetooth PAN وما إلى ذلك.
في عمليات تنفيذ الأجهزة التي يكون فيها معيار الشبكة المادية (مثل إيثرنت) هو اتصال البيانات الأساسي، يجب أن تتضمّن أيضًا إمكانية استخدام معيار واحد على الأقل لإرسال البيانات اللاسلكي الشائع، مثل 802.11 (Wi-Fi).
يجوز للأجهزة تنفيذ أكثر من شكل واحد للاتصال بالبيانات.
يجب أن تتضمّن الأجهزة حِزمة شبكة IPv6 وأن تتوافق مع اتصالات IPv6
باستخدام واجهات برمجة التطبيقات المُدارة، مثل java.net.Socket
و
java.net.URLConnection
، بالإضافة إلى واجهات برمجة التطبيقات الأصلية، مثل المقبس
AF_INET6
. يعتمد المستوى المطلوب من توافق IPv6 على
نوع الشبكة، على النحو التالي:
- يجب أن تتوافق الأجهزة المتوافقة مع شبكات Wi-Fi مع تقنية الحزمة المزدوجة وIPv6 فقط على Wi-Fi.
- يجب أن تتوافق الأجهزة المتوافقة مع شبكات إيثرنت مع تشغيل الحزمة المزدوجة على إيثرنت.
- من المفترض أن تتوافق الأجهزة التي تتيح استخدام بيانات الجوّال مع بروتوكول IPv6 (IPv6 فقط وربما الحزمة المزدوجة) على بيانات الجوّال.
- عندما يكون الجهاز متصلاً بأكثر من شبكة واحدة في الوقت نفسه (مثل Wi-Fi وبيانات شبكة الجوّال)، يجب أن يستوفي هذه المتطلبات في الوقت نفسه على كل شبكة يتصل بها.
يجب أن يكون بروتوكول IPv6 مفعَّلاً تلقائيًا.
لضمان أن يكون الاتصال عبر IPv6 موثوقًا به مثل IPv4، يجب عدم إسقاط حزم IPv6 المخصّصة لجهاز واحد والتي يتم إرسالها إلى الجهاز، حتى عندما تكون الشاشة غير نشطة. قد يتم فرض حدود على معدل إرسال حزم IPv6 المتعدّدة البث، مثل إعلانات أجهزة التوجيه المتكرّرة المتطابقة، في الأجهزة أو البرامج الثابتة إذا كان ذلك ضروريًا لتوفير الطاقة. وفي مثل هذه الحالات، يجب ألّا يؤدي الحدّ من معدّل الإرسال إلى فقدان الجهاز لإمكانية الاتصال بشبكة IPv6 على أي شبكة متوافقة مع IPv6 تستخدم مدّة صلاحية RA لا تقل عن 180 ثانية.
يجب الحفاظ على إمكانية الاتصال بموجب بروتوكول IPv6 في وضع السكون.
7.4.6. إعدادات المزامنة
يجب أن تكون إعدادات المزامنة التلقائية الرئيسية مفعَّلة تلقائيًا في عمليات تنفيذ الأجهزة لكي تُعرِض الطريقة getMasterSyncAutomatically() القيمة "true" [Resources, 109].
7.5. الكاميرات
يجب أن تتضمّن عمليات تنفيذ الأجهزة كاميرا خلفية، وقد تتضمّن كاميرا أمامية. الكاميرا الخلفية هي كاميرا موجودة على جانب الجهاز المقابل للشاشة، أي أنها تلتقط صورًا للمشاهد على الجانب البعيد من الجهاز، مثل الكاميرا التقليدية. الكاميرا الأمامية هي كاميرا تقع على جانب الجهاز نفسه الذي تقع عليه الشاشة، أي كاميرا تُستخدَم عادةً لتصوير المستخدم، مثل مكالمات الفيديو وغيرها من التطبيقات المشابهة.
إذا كان تطبيق الجهاز يتضمّن كاميرا واحدة على الأقل، يجب أن يكون بإمكان التطبيق تخصيص 3 صور نقطية في الوقت نفسه مساوية لحجم الصور التي تنتجها أداة استشعار الكاميرا ذات الدقة الأعلى على الجهاز.
7.5.1. الكاميرا الخلفية
من المفترض أن تتضمّن عمليات تنفيذ الأجهزة كاميرا خلفية. إذا كان تنفيذ ميزة "التتبّع بالكاميرا" على الجهاز يتضمن كاميرا خلفية واحدة على الأقل، يجب استيفاء الشروط التالية:
- يجب الإبلاغ عن علامة الميزة android.hardware.camera و android.hardware.camera.any.
- يجب أن تكون درجة دقتها 2 ميغابكسل على الأقل.
- يجب أن يتضمّن ميزة ضبط التركيز التلقائي بالأجهزة أو البرامج في برنامج تشغيل الكاميرا (شفّاف لبرنامج التطبيق).
- قد تحتوي على أجهزة ذات تركيز ثابت أو ميزة "عمق مجال ممتد".
- قد تتضمّن وميضًا. إذا كانت الكاميرا تتضمّن فلاشًا، يجب عدم إشعال ضوءه عندما يتم تسجيل مثيل android.hardware.Camera.PreviewCallback على سطح معاينة الكاميرا، ما لم يفعِّل التطبيق ضوء الفلاش صراحةً من خلال تفعيل السمتَين FLASH_MODE_AUTO أو FLASH_MODE_ON لعنصر Camera.Parameters. يُرجى العِلم أنّ هذا القيد لا ينطبق على تطبيق كاميرا النظام المضمّن في الجهاز، بل على التطبيقات التابعة لجهات خارجية فقط التي تستخدِم Camera.PreviewCallback.
7.5.2. الكاميرا الأمامية
قد تتضمّن عمليات تنفيذ الأجهزة كاميرا أمامية. إذا كان تنفيذ ميزة "التقاط الصور أثناء التنقل" على جهاز ما يتضمّن كاميرا أمامية واحدة على الأقل، يجب استيفاء الشروط التالية:
- يجب الإبلاغ عن علامة الميزة android.hardware.camera.any و android.hardware.camera.front.
- يجب أن تكون دقة الشاشة VGA على الأقل (640×480 بكسل).
- يجب عدم استخدام الكاميرا الأمامية كإعداد تلقائي لواجهة برمجة التطبيقات Camera API. توفّر واجهة برمجة التطبيقات Camera API في Android دعمًا محدّدًا للكاميرات الأمامية، ويجب ألا تضبط عمليات تنفيذ التطبيقات على الجهاز واجهة برمجة التطبيقات للتعامل مع الكاميرا الأمامية باعتبارها الكاميرا الخلفية التلقائية، حتى إذا كانت هي الكاميرا الوحيدة على الجهاز.
- قد تتضمّن ميزات (مثل التركيز التلقائي والفلاش وما إلى ذلك) متاحة للكاميرات المزوّدة باتجاه المؤخرة كما هو موضّح في الفقرة 7.5.1.
- يجب أن يعكس التطبيق البث المعروض في ملف برمجي CameraPreview أفقيًا (أي يعكسه) على النحو التالي:
- إذا كان من الممكن للمستخدم تدوير الجهاز (مثل تلقائيًا من خلال مقياس التسارع أو يدويًا من خلال إدخال المستخدم)، يجب أن تكون معاينة الكاميرا معكوسة أفقيًا بالنسبة إلى اتجاه الجهاز الحالي.
- إذا طلب التطبيق الحالي صراحةً تدوير شاشة الكاميرا من خلال طلب الطريقة android.hardware.Camera.setDisplayOrientation()[Resources, 110]، يجب عكس معاينة الكاميرا أفقيًا بالنسبة إلى الاتجاه الذي حدّده التطبيق.
- بخلاف ذلك، يجب أن تكون المعاينة مُعكوسة على طول محوره الأفقي التلقائي للجهاز.
- يجب أن تكون الصورة المعروضة في معاينة المشاركة مطابقة للصورة المعروضة في بث معاينة الكاميرا. إذا كان تنفيذ الجهاز لا يتيح postview، من الواضح أنّ هذا الشرط لا ينطبق.
- يجب عدم عكس الصور الثابتة أو أحداث الفيديو النهائية التي تم التقاطها والتي يتم عرضها في طلبات إعادة الاتصال بالتطبيق أو التي يتم تخزينها في مساحة تخزين الوسائط.
7.5.3. الكاميرا الخارجية
قد تتضمّن عمليات تنفيذ الأجهزة التي تستخدم وضع مضيف USB إمكانية استخدام كاميرا خارجية متصلّة بمنفذ USB. إذا كان الجهاز يتيح استخدام كاميرا خارجية، يعني ذلك ما يلي:
- يجب تقديم بيان عن ميزة النظام الأساسي android.hardware.camera.external و android.hardware camera.any.
- يجب أن يكون متوافقًا مع ميزة "بث الفيديو عبر USB" (UVC 1.0 أو إصدار أحدث).
- قد تتيح استخدام كاميرات متعددة.
يُنصح بتوفير ميزة ضغط الفيديو (مثل MJPEG) لتفعيل نقل مجريات البث بدون ترميز بجودة عالية (أي مجريات بث الصور غير المُعدَّة أو المضغوطة بشكل مستقل). قد يكون ترميز الفيديو المستنِد إلى الكاميرا متوافقًا. إذا كان الأمر كذلك، يجب أن يكون بالإمكان بث محتوى كاميرا أمان مدعوم بتقنية MJPEG أو غير مُشفَّر (بدرجة دقة QVGA أو أعلى) في الوقت نفسه من خلال تنفيذ كاميرا الأمان.
7.5.4. سلوك Camera API
يتضمّن Android حِزمتَي واجهة برمجة تطبيقات للوصول إلى الكاميرا، وتعرض واجهة برمجة التطبيقات الأحدث android.hardware.camera2 للتطبيق عناصر تحكّم من المستوى الأدنى في الكاميرا، بما في ذلك عمليات البث أو اللقطات السريعة الفعّالة بدون نسخ وعناصر التحكّم في كل إطار من ناحية التعريض والزيادة ومكاسب توازن اللون الأبيض وتحويل الألوان وإزالة الضوضاء والتحسين والمزيد.
تم وضع علامة على حزمة واجهة برمجة التطبيقات القديمة، وهي android.hardware.Camera، كحزمة متوقّفة نهائيًا في Android 5.0، ولكن بما أنّه من المفترض أن تظلّ متاحة للتطبيقات لاستخدامها في أجهزة Android، يجب أن تضمن عمليات التنفيذ مواصلة توفّر واجهة برمجة التطبيقات كما هو موضّح في هذا القسم وفي حزمة تطوير البرامج (SDK) لنظام التشغيل Android.
يجب أن تطبِّق عمليات تنفيذ الأجهزة السلوكيات التالية لواجهة برمجة التطبيقات المرتبطة بالكاميرا، وذلك لجميع الكاميرات المتاحة:
- إذا لم يسبق للتطبيق استدعاء varied.hardware.Camera.Parameters.setPreviewFormat(int)، يجب أن يستخدم الجهاز varied.hardware.PixelFormat.YCbCr_420_SP لبيانات المعاينة المقدَّمة إلى varied.application.callbacks.
- إذا سجّل تطبيق مثيلًا من android.hardware.Camera.PreviewCallback وطلب النظام طريقة onPreviewFrame() عندما يكون تنسيق المعاينة هو YCbCr_420_SP، يجب أن تكون البيانات في السلسلة byte[] التي تم تمريرها إلى onPreviewFrame() بتنسيق ترميز NV21. وهذا يعني أنّه يجب أن يكون NV21 هو الإعداد التلقائي.
- بالنسبة إلى android.hardware.Camera، يجب أن تتيح عمليات تنفيذ الأجهزة استخدام تنسيق YV12 (كما هو موضّح في الثابت android.graphics.ImageFormat.YV12) لعرض معاينات الكاميرا لكل من الكاميرا الأمامية والخلفية. (قد يستخدم رمز ترميز الفيديو المُعدَّل بالأجهزة والكاميرا أي تنسيق أصلي للبكسل، ولكن يجب أن يتيح تنفيذ الجهاز تحويله إلى YV12).
- بالنسبة إلى android.hardware.camera2، يجب أن تتيح عمليات تنفيذ الأجهزة استخدام التنسيقين android.hardware.ImageFormat.YUV_420_888 وandroid.hardware.ImageFormat.JPEG كمخرجات من خلال واجهة برمجة التطبيقات android.media.ImageReader.
يجب أن تظل عمليات تنفيذ الأجهزة تُنفِّذ واجهة برمجة تطبيقات Camera API الكاملة المضمّنة في مستندات حزمة تطوير البرامج (SDK) لنظام Android [الموارد، 111]، بغض النظر عمّا إذا كان الجهاز يتضمّن ميزة ضبط التركيز التلقائي للأجهزة أو ميزات أخرى. على سبيل المثال، يجب أن تظل الكاميرات التي لا تتضمّن ميزة التركيز التلقائي تستدعي أي مثيل مُسجَّل من android.hardware.Camera.AutoFocusCallback (على الرغم من أنّ هذا ليس له صلة بالكاميرا التي لا تتضمّن ميزة التركيز التلقائي). يُرجى العِلم أنّ هذا ينطبق على الكاميرات الأمامية. على سبيل المثال، على الرغم من أنّ معظم الكاميرات الأمامية لا توفّر ميزة التركيز التلقائي، يجب أن تظل عمليات استدعاء واجهة برمجة التطبيقات "مزوّرة" كما هو موضّح.
يجب أن تتعرّف عمليات تنفيذ الأجهزة على كل اسم مَعلمة محدّد كقيمة ثابتة في فئة android.hardware.Camera.Parameters، ويجب أن تلتزم بها، إذا كانت الميزة متوافقة مع الأجهزة الأساسية. إذا كانت أجهزة الجهاز لا تتيح استخدام إحدى الميزات، يجب أن تعمل واجهة برمجة التطبيقات على النحو الموضّح في المستندات. في المقابل، يجب ألا تلتزم عمليات تنفيذ الأجهزة بقيم سلاسل ثابتة تم تمريرها إلى الأسلوب android.hardware.Camera.setParameters() أو تتعرّف عليها، باستثناء القيم التي تم توثيقها على أنّها قيم ثابتة في android.hardware.Camera.Parameters. وهذا يعني أنّه يجب أن تتوافق تطبيقات الأجهزة مع جميع مَعلمات الكاميرا العادية إذا كان الجهاز يسمح بذلك، ويجب ألّا تتوافق مع أنواع مَعلمات الكاميرا المخصّصة. على سبيل المثال، يجب أن تتيح عمليات تنفيذ الأجهزة التي تتيح التقاط الصور باستخدام تقنيات التصوير بتقنية النطاق العالي الديناميكية (HDR) استخدام مَعلمة الكاميرا Camera.SCENE_MODE_HDR [Resources, 112].
بما أنّ بعض عمليات تنفيذ الأجهزة لا يمكنها توفير جميع ميزات واجهة برمجة التطبيقات android.hardware.camera2 API بالكامل، يجب أن تُبلغ عمليات تنفيذ الأجهزة عن مستوى التوافق المناسب باستخدام السمة android.info.supportedHardwareLevel كما هو موضّح في حزمة تطوير البرامج (SDK) لنظام التشغيل Android [Resources, 113] وأن تُبلغ عن علامات ميزات إطار العمل المناسبة [Resources, 114].
يجب أن تحدِّد عمليات تنفيذ الأجهزة أيضًا إمكانات الكاميرا الفردية الخاصة بها android.hardware.camera2 من خلال السمة android.request.availableCapabilities وتحدِّد علامات الميزات المناسبة [Resources, 114]، ويجب أن يحدِّد الجهاز علامة الميزة إذا كانت أي من كاميراته المُرفَقة تتيح هذه الميزة.
يجب أن تبث عمليات تنفيذ الأجهزة النية Camera.ACTION_NEW_PICTURE عند التقاط صورة جديدة بالكاميرا وتمت تتم إضافة إدخال الصورة إلى "متجر الوسائط".
يجب أن تبث عمليات تنفيذ الأجهزة هدف Camera.ACTION_NEW_VIDEO عند تسجيل فيديو جديد بواسطة الكاميرا وتمت تتم إضافة إدخال الصورة إلى "متجر الوسائط".
7.5.5. اتجاه الكاميرا
يجب توجيه كل من الكاميرا الأمامية والخلفية، في حال توفّرهما، بحيث تتماشى سمة الطول للكاميرا مع سمة الطول للشاشة. وهذا يعني أنّه عند حمل الجهاز في الوضع الأفقي، يجب أن تلتقط الكاميرات الصور في الوضع الأفقي. وينطبق ذلك بغض النظر عن الوضع الطبيعي للجهاز، أي أنّه ينطبق على الأجهزة التي يكون الوضع الأفقي هو الوضع الأساسي لها وكذلك على الأجهزة التي يكون الوضع العمودي هو الوضع الأساسي لها.
7.6. الذاكرة ومساحة التخزين
7.6.1. الحد الأدنى للذاكرة ومساحة التخزين
يجب أن تتضمّن أجهزة Android Television مساحة تخزين غير متقلبة بسعة 5 غيغابايت على الأقل تتوفّر لبيانات التطبيقات الخاصة.
يجب أن تكون الذاكرة المتاحة للنواة ومساحة المستخدم في عمليات تنفيذ الأجهزة مساوية على الأقل أو أكبر من الحد الأدنى للقيم المحددة في جدول المقارنة التالي. (اطّلِع على الفقرة 7.1.1 للاطّلاع على تعريفات حجم الشاشة وكثافتها).
الكثافة وحجم الشاشة | جهاز 32 بت | جهاز يعمل بنظام 64 بت |
---|---|---|
أجهزة Android Watch (بسبب الشاشات الأصغر حجمًا) | 416 ميغابايت | غير سارٍ |
|
424 ميغابايت | 704 ميغابايت |
|
512 ميغابايت | 832 ميغابايت |
|
896 ميغابايت | 1280 ميغابايت |
|
1344 ميغابايت | 1824 ميغابايت |
يجب أن تكون قيم الحد الأدنى للذاكرة بالإضافة إلى أي مساحة ذاكرة مخصّصة مسبقًا لمكونات الأجهزة، مثل الراديو والفيديو وما إلى ذلك، والتي لا تخضع لسيطرة النواة.
يجب أن تُعرِض عمليات تنفيذ الأجهزة التي تتوفّر فيها ذاكرة أقل من 512 ميغابايت للنواة ومساحة المستخدم، ما لم تكن ساعة Android، القيمة "true" لمحاولة ActivityManager.isLowRamDevice().
يجب أن تتوفّر على أجهزة Android Television مساحة تخزين بسعة 5 غيغابايت على الأقل، ويجب أن تتوفّر على الأجهزة الأخرى التي يتم تثبيت التطبيق عليها مساحة تخزين بسعة 1.5 غيغابايت على الأقل غير قابلة للفقدان لتخزين بيانات التطبيق الخاصة. وهذا يعني أنّه يجب أن يكون حجم قسم /data 5 غيغابايت على الأقل لأجهزة Android Television و1.5 غيغابايت على الأقل لعمليات تثبيت الأجهزة الأخرى. ننصح بشدة بأن تتضمّن عمليات نشر الأجهزة التي تعمل بنظام التشغيل Android مساحة تخزين غير متقلبة بسعة 3 غيغابايت على الأقل للبيانات الخاصة بالتطبيقات، وذلك كي تتمكّن من الترقية إلى إصدارات النظام الأساسي المستقبلية.
تتضمّن واجهات برمجة تطبيقات Android "مدير تنزيل" قد تستخدمه التطبيقات لتحميل ملفات البيانات [الموارد، 115]. يجب أن يكون تطبيق "مدير التنزيل" على الجهاز قادرًا على تنزيل ملفات فردية بحجم 100 ميغابايت على الأقل إلى الموقع التلقائي "للذاكرة المؤقتة" .
7.6.2. مساحة التخزين المشتركة للتطبيق
يجب أن تقدّم عمليات تنفيذ الأجهزة مساحة تخزين مشتركة للتطبيقات التي يُشار إليها أيضًا باسم "مساحة التخزين الخارجية المشتركة".
يجب ضبط عمليات تنفيذ الأجهزة باستخدام مساحة تخزين مشترَكة يتم تركيبها تلقائيًا. إذا لم يتم تركيب مساحة التخزين المشترَكة على مسار Linux /sdcard، يجب أن يتضمّن الجهاز رابطًا رمزيًا لنظام التشغيل Linux من /sdcard إلى نقطة الربط الفعلية.
قد تتضمّن عمليات تنفيذ الأجهزة أجهزة لسعة تخزين قابلة للإزالة يمكن للمستخدم الوصول إليها، مثل فتحة بطاقة Secure Digital (SD). في حال استخدام هذه الفتحة لاستيفاء متطلبات التخزين المشترَك، يجب أن يتّبع تنفيذ الجهاز الخطوات التالية:
- يجب أن توفّر واجهة مستخدم تحذيرية منبثقة أو شاشة منبثقة تحذّر المستخدم في حال عدم توفّر بطاقة SD.
- يجب أن تتضمّن بطاقة SD بتنسيق FAT بسعة 1 غيغابايت أو أكثر أو أن تشير على العلبة والمواد الأخرى المتوفّرة في وقت الشراء إلى أنّه يجب شراء بطاقة SD بشكل منفصل.
- يجب تثبيت بطاقة SD تلقائيًا.
بدلاً من ذلك، يجوز لعمليات تنفيذ الأجهزة تخصيص سعة تخزين داخلية (غير قابلة للإزالة) كسعة تخزين مشترَكة للتطبيقات كما هو مضمّن في مشروع Android Open IDE، ويجب أن تستخدم عمليات تنفيذ الأجهزة هذا الإعداد و تنفيذ البرامج. إذا كان تطبيق معيّن على الجهاز يستخدم مساحة تخزين داخلية (غير قابلة للإزالة) لتلبية متطلبات مساحة التخزين المشتركة، مع أنّه يجوز أن تشترك مساحة التخزين هذه مع البيانات الخاصة بالتطبيق، يجب أن يكون حجمها 1 غيغابايت على الأقل وأن يتم تركيبها على /sdcard (أو يجب أن يكون /sdcard رابطًا رمزيًا للموقع الجغرافي إذا تم تركيبه في مكان آخر).
يجب أن تفرض عمليات تنفيذ التطبيقات على الأجهزة إذن android.permission.WRITE_EXTERNAL_STORAGE على مساحة التخزين المشتركة هذه كما هو موضّح في المستندات. ويجب أن تكون مساحة التخزين المشتركة قابلة للكتابة من قِبل أي تطبيق يحصل على هذا الإذن.
يجب أن تسمح عمليات تنفيذ الأجهزة التي تتضمّن مسارات تخزين مشترَكة متعددة (مثل مثبَّتَي
بطاقة SD ومساحة تخزين داخلية مشترَكة) فقط لتطبيقات Android المثبَّتة مسبقًا والمفوَّضة التي لديها إذن WRITE_EXTERNAL_STORAGE بالكتابة في مساحة التخزين الخارجية الثانوية، باستثناء الحالات التي تتم فيها الكتابة في
الأدلة الخاصة بالحِزم أو ضمن URI
التي يتم إرجاعها عن طريق بدء
النشاط ACTION_OPEN_DOCUMENT_TREE
.
ومع ذلك، من المفترض أن تعرض عمليات تنفيذ الأجهزة المحتوى من كلا مسارَي التخزين بشكل شفاف من خلال خدمة "مسح الوسائط" في Android وandroid.provider.MediaStore.
بغض النظر عن شكل مساحة التخزين المشتركة المستخدَمة، إذا كان تنفيذ الجهاز يحتوي على منفذ USB متوافق مع وضع الأجهزة الطرفية USB، يجب أن يوفّر بعض الآليات للوصول إلى محتوى مساحة التخزين المشتركة من جهاز كمبيوتر مضيف. يجوز لعمليات تنفيذ التطبيقات على الأجهزة استخدام وحدة تخزين USB المجمّعة، ولكن يجب استخدام بروتوكول نقل الوسائط لتلبية هذا الشرط. إذا كان تنفيذ الجهاز متوافقًا مع بروتوكول Media Transfer Protocol، يتم تنفيذ ما يلي:
- يجب أن يكون متوافقًا مع مضيف MTP المرجعي لنظام التشغيل Android، وهو تطبيق "نقل الملفات في Android" [الموارد، 116].
- يجب أن يُبلغ عن فئة جهاز USB 0x00.
- يجب أن يُبلغ عن اسم واجهة USB "MTP".
7.6.3. مساحة تخزين قابلة للاستخدام
يُنصح بشدة بتنفيذ ميزة "تخصيص مساحة تخزين إضافية" في عمليات تنفيذ الأجهزة إذا كان منفذ جهاز التخزين القابل للإزالة في مكان ثابت على المدى الطويل، مثل داخل مقصورة البطارية أو غطاء واقي آخر [الموارد، 117].
قد تتيح عمليات تنفيذ الأجهزة، مثل التلفزيون، استخدام منافذ USB لأنّه من المتوقّع أن يكون الجهاز ثابتًا وليس متحركًا. أمّا بالنسبة إلى عمليات ربط الأجهزة الأخرى التي تكون جوّالة بطبيعتها، فيُنصح بشدة بربط مساحة التخزين القابلة للتخصيص في موقع ثابت على المدى الطويل، لأنّه يمكن أن يؤدي فصلها عن الجهاز عن طريق الخطأ إلى فقدان البيانات أو تلفها.
7.7. USB
يجب أن تتيح عمليات تنفيذ الأجهزة وضع الجهاز الملحق عبر USB ويجب أن تتيح وضع مضيف USB.
إذا كان تنفيذ الجهاز يتضمّن منفذ USB متوافقًا مع وضع الجهاز الملحق:
- يجب أن يكون المنفذ قابلاً للتوصيل بجهاز مضيف USB يحتوي على منفذ USB عادي من النوع A أو النوع -C.
- يجب أن يستخدم المنفذ شكل USB micro-B أو micro-AB أو Type-C. ننصح بشدة باستيفاء أجهزة Android الحالية والجديدة لهذه المتطلبات لكي تتمكّن من الترقية إلى إصدارات المنصة المستقبلية.
- يجب أن يكون المنفذ في أسفل الجهاز (وفقًا للاتجاه الطبيعي ) أو أن يكون دوران الشاشة مفعّلاً في البرامج لجميع التطبيقات (بما في ذلك الشاشة الرئيسية)، حتى يتم عرض الشاشة بشكل صحيح عند توجيه الجهاز مع المنفذ في الأسفل. ننصح بشدة باستيفاء أجهزة Android الحالية والجديدة لهذه المتطلبات حتى تتمكّن من الترقية إلى إصدارات الأنظمة الأساسية القادمة.
- يجب أن ينفذ الجهاز واجهة برمجة التطبيقات وتحديد مواصفات Android Open Accessory (AOA) كما هو موضح في مستندات حزمة تطوير البرامج (SDK) لنظام التشغيل Android، وإذا كان جهاز Android متنقلًا، يجب أن ينفذ واجهة برمجة التطبيقات AOA. عمليات تنفيذ الأجهزة التي تطبّق مواصفات AOA:
- يجب الإفصاح عن توافق التطبيق مع ميزة الجهاز android.hardware.usb.accessory [Resources, 118].
- يجب أن يتيح الجهاز إجراء اتصال مستند إلى بروتوكول AOA عند الاتصال لأول مرة بجهاز مضيف USB يعمل كملحق، بدون الحاجة إلى تغيير وضع USB التلقائي من قِبل المستخدم.
- يجب تنفيذ فئة الصوت عبر USB كما هو موضّح في مستندات حزمة تطوير البرامج (SDK) لنظام Android [الموارد، 119].
- يجب أن تتضمّن أيضًا فئة مساحة التخزين الضخمة عبر USB السلسلة "android"
في نهاية سلسلة وصف الواجهة
iInterface
الخاصة بمساحة التخزين الضخمة عبر USB.
- يجب أن يتيح الجهاز سحب تيار 1.5 أمبير أثناء إشارة HS chirp ووقت الذروة على النحو المحدّد في مواصفات شحن البطارية عبر USB، المراجعة 1.2 [Resources, 120]. ننصح بشدة بتوافق أجهزة Android الحالية والجديدة مع هذه المتطلبات حتى تتمكّن من الترقية إلى إصدارات المنصة المستقبلية. معيار المقاوم الكهربائي من النوع C
- يجب أن تكون قيمة iSerialNumber في وصف جهاز USB العادي مساوية لقيمة android.os.Build.SERIAL.
إذا كان تنفيذ الجهاز يتضمّن منفذ USB متوافقًا مع وضع المضيف، يعني ذلك ما يلي:
- يجب استخدام منفذ USB من النوع C إذا كان تنفيذ الجهاز متوافقًا مع USB 3.1.
- يجوز استخدام شكل غير عادي للمنفذ، ولكن في هذه الحالة يجب أن يتم شحن الجهاز مع كابل أو كابلات لتحويل المنفذ إلى منفذ USB عادي من النوع A أو النوع C.
- يجوز استخدام منفذ USB micro-AB، ولكن في هذه الحالة يجب أن يتم شحن الجهاز مع كابل أو كابلات لتحويل المنفذ إلى منفذ USB عادي من النوع A أو C.
- ننصح بشدة بتنفيذ فئة الصوت عبر USB كما هو موضّح في مستندات Android SDK [Resources, 119].
- يجب تنفيذ واجهة برمجة تطبيقات مضيف USB في Android كما هو موضّح في حزمة تطوير البرامج (SDK) لنظام التشغيل Android، ويجب تحديد توافق الجهاز مع ميزة android.hardware.usb.host [Resources, 121].
- يجب أن يكون متوافقًا مع شحن الجهاز أثناء وضع المضيف، وأن يعرض تيار مصدر لا يقل عن 1.5 أمبير كما هو محدّد في قسم "مَعلمات إنهاء الاتصال" من مواصفات كابل ومنصّة USB من النوع C ، الإصدار 1.2 [] لموصّلات USB من النوع C أو باستخدام نطاق تيار الإخراج لميناء الشحن(CDP) كما هو محدّد في مواصفات شحن البطارية عبر USB، الإصدار 1.2 [Resources, 120] لموصّلات Micro-AB.
7.8. الصوت
7.8.1. الميكروفون
يجب أن تتضمّن عمليات تنفيذ Android Handheld وWatch وAutomotive ملفًا برمجيًا لجهاز الميكروفون.
قد لا تتضمّن عمليات تنفيذ الأجهزة ميكروفونًا. ومع ذلك، إذا حذفت عملية تنفيذ التطبيق على الجهاز الميكروفون، يجب ألّا تُبلغ عن ثابت ميزة android.hardware.microphone، ويجب تنفيذ واجهة برمجة التطبيقات recording API على الأقل كعمليات لا تؤدي إلى أيّ إجراء، وفقًا للفقرة 7. في المقابل، في عمليات تنفيذ الأجهزة التي تتضمّن ميكروفونًا:
- يجب الإبلاغ عن القيمة الثابتة لميزة android.hardware.microphone
- يجب أن تستوفي متطلبات التسجيل الصوتي الواردة في الفقرة 5.4
- يجب استيفاء متطلبات وقت استجابة الصوت الواردة في الفقرة 5.6.
- يُنصح بشدة بتوفير ميزة تسجيل الصوت بالقرب من مستوى الموجات فوق الصوتية كما هو موضّح في الفقرة 7.8.3
7.8.2. إخراج الصوت
قد تتضمّن أجهزة Android Watch مصدرًا لإخراج الصوت.
عمليات تنفيذ الأجهزة التي تتضمّن مكبّر صوت أو مخرج صوت/وسائط متعددة منفذ لجهاز إخراج صوتي خارجي مثل سماعة رأس أو مكبّر صوت خارجي:
- يجب الإبلاغ عن الثابت android.hardware.audio.output.
- يجب أن تستوفي متطلبات تشغيل الصوت الواردة في الفقرة 5.5.
- يجب أن تستوفي متطلبات وقت استجابة الصوت الواردة في الفقرة 5.6.
- يُنصح بشدة بتفعيل ميزة تشغيل المحتوى بالقرب من الحدّ الأقصى لتردد الصوت فوق العالي كما هو موضّح في الفقرة 7.8.3
في المقابل، إذا لم يتضمّن تطبيق الجهاز مكبّر صوت أو منفذ مخرج صوت، يجب ألّا يبلِغ عن ميزة إخراج الصوت android.hardware.audio، ويجب أن ينفذ واجهات برمجة التطبيقات ذات الصلة بإخراج الصوت كعمليات لا تؤدي إلى أيّ إجراء على الأقل.
قد يتضمّن تطبيق Android Watch إخراجًا للصوت، ولكن يجب ألا يتضمّن ذلك، في حين يجب أن تتضمّن الأنواع الأخرى من تطبيقات أجهزة Android إخراجًا للصوت ويجب أن تحدّد android.hardware.audio.output.
7.8.2.1. منافذ الصوت التناظري
لكي يكون الجهاز متوافقًا مع سماعات الرأس وغيرها من ملحقات الصوت التي تستخدم قابس الصوت مقاس 3.5 ملم في منظومة Android المتكاملة [الموارد، 122]، إذا كان تنفيذ الجهاز يتضمّن منفذًا واحدًا أو أكثر للصوت التناظري، يجب أن يكون أحد منافذ الصوت على الأقل مقبس صوت مقاس 3.5 ملم مزوّدًا بأربعة موصلات. إذا كان تنفيذ الجهاز يحتوي على مقبس صوت مقاس 3.5 ملم مزوّد بأربعة موصلات، يجب استيفاء الشروط التالية:
- يجب أن يتيح تشغيل الصوت على سماعات الرأس الاستيريو وسماعات الرأس الاستيريو المزوّدة بأحد الميكروفونات، ويجب أن يتيح تسجيل الصوت من سماعات الرأس الاستيريو المزوّدة بأحد الميكروفونات.
- يجب أن تتيح استخدام مقابس صوت TRRS بترتيب دبوس CTIA، ويجب أن تتيح استخدام مقابس صوت بترتيب دبوس OMTP.
- يجب أن يتيح الجهاز رصد الميكروفون في ملحق الصوت المتصل، إذا كان تنفيذ الجهاز يتيح استخدام الميكروفون، وأن يُرسِل الرسالة android.intent.action.HEADSET_PLUG مع ضبط القيمة الإضافية للميكروفون على 1.
- يجب أن يكون الجهاز متوافقًا مع رصد وربط رموز المفاتيح للثلاثة
نطاقات التالية للمقاومة المكافئة بين الميكروفون وعناصر التوصيل بالأرض في
قابس الصوت:
- 70 أوم أو أقل: KEYCODE_HEADSETHOOK
- 210-290 أوم: KEYCODE_VOLUME_UP
- 360-680 Ohm: KEYCODE_VOLUME_DOWN
- يجب أن يتيح الجهاز رصد المقاومة المكافئة بين الميكروفون وسلكان الأرض في مقبس الصوت وربطهما برمز المفتاح ضمن النطاق التالي:
- 110-180 أوم: KEYCODE_VOICE_ASSIST
- يجب تنشيط ACTION_HEADSET_PLUG عند إدخال القابس، ولكن بعد أن تلمس كل ملامسات القابس الأجزاء ذات الصلة بها في المقبس.
- يجب أن يكون قادرًا على توفير 150 مللي فولت ± 10% من الجهد الكهربائي الخارج على مقاومة مكبّر صوت تبلغ 32 أوم.
- يجب أن يكون جهد الميكروفون المرجعي بين 1.8 فولت و2.9 فولت.
7.8.3. الموجات فوق الصوتية القريبة
يتراوح نطاق الصوت بالقرب من الموجات فوق الصوتية بين 18.5 كيلوهرتز و20 كيلوهرتز. يجب أن تُبلغ عمليات تنفيذ الأجهزة بشكل صحيح عن توفُّر إمكانية استخدام تقنية الصوت بالقرب من الموجات فوق الصوتية من خلال واجهة برمجة التطبيقات AudioManager.getProperty على النحو التالي:
- إذا كانت قيمة
PROPERTY_SUPPORT_MIC_NEAR_ULTRASOUND
هي "true"، ثم
- يجب ألا يزيد متوسط استجابة الطاقة للميكروفون في النطاق من 18.5 كيلوهرتز إلى 20 كيلوهرتز عن 15 ديسيبل أقل من الاستجابة عند 2 كيلوهرتز.
- يجب ألا تقل نسبة الإشارة إلى الضوضاء (SNR) غير المحسوبة للميكروفون عن 50 ديسيبل عند تردد 19 كيلوهرتز ومستوى -26 ديسيبل في النطاق الديناميكي الكامل (dBFS) لأكثر من 18.5 كيلوهرتز إلى 20 كيلوهرتز.
- إذا كان PROPERTY_SUPPORT_SPEAKER_NEAR_ULTRASOUND يساوي "true"، يجب ألا تقلّ قيمة متوسط استجابة مكبّر الصوت في النطاق من 18.5 كيلوهرتز إلى 20 كيلوهرتز عن 40 ديسيبل تحت الاستجابة عند 2 كيلوهرتز.
8. الأداء والقوة
إنّ بعض الحد الأدنى من معايير الأداء والطاقة ضرورية لتجربة المستخدم، وتؤثّر في الافتراضات الأساسية التي يتّبعها المطوّرون عند تطوير التطبيقات. يجب أن تستوفي أجهزة Android Watch وغيرها من أنواع الأجهزة المعايير التالية:
8.1. اتساق تجربة المستخدم
يجب أن توفّر عمليات تنفيذ الأجهزة واجهة مستخدم سلسة من خلال ضمان ثبات عدد اللقطات في الثانية ووقت الاستجابة للتطبيقات والألعاب. يجب أن تستوفي عمليات تنفيذ التطبيقات على الأجهزة المتطلبات التالية:
- وقت استجابة ثابت للإطار: يجب ألا يحدث وقت استجابة غير متّسق للّقطات أو تأخّر في عرض اللقطات أكثر من 5 لقطات في الثانية، ويجب أن يكون أقل من لقطة واحدة في الثانية.
- وقت استجابة واجهة المستخدم: يجب أن تضمن عمليات تنفيذ الأجهزة تجربة استخدام ذات وقت استجابة منخفض من خلال الانتقال في قائمة تتضمّن 10,000 إدخال كما هو محدّد في مجموعة اختبار التوافق (CTS) لنظام التشغيل Android في أقل من 36 ثانية.
- تبديل المهام عند تشغيل تطبيقات متعددة، يجب أن يستغرق إعادة تشغيل تطبيقٍ قيد التشغيل أقل من ثانية واحدة.
8.2. أداء الوصول إلى الإدخال/الإخراج من الملفات
يجب أن تضمن عمليات تنفيذ الأجهزة اتساق أداء الوصول إلى ملفات التخزين الداخلي لعمليات القراءة والكتابة.
- الكتابة التسلسلية: يجب أن تضمن عمليات تنفيذ الأجهزة أداءً متسلسلًا للكتابة يبلغ 5 ميغابايت في الثانية على الأقل لملف بحجم 256 ميغابايت باستخدام ذاكرة تخزين مؤقت للكتابة بسعة 10 ميغابايت.
- الكتابة العشوائية يجب أن تضمن عمليات تنفيذ الأجهزة أداءً عشوائيًا للكتابة يبلغ 0.5 ميغابايت في الثانية على الأقل لملف بسعة 256 ميغابايت باستخدام وحدة تخزين مؤقت للكتابة بسعة 4 كيلوبايت.
- القراءة التسلسلية: يجب أن تضمن عمليات تنفيذ الأجهزة أداء القراءة التسلسلي بمعدّل 15 ميغابايت في الثانية على الأقل لملف حجمه 256 ميغابايت باستخدام ذاكرة تخزين مؤقت للكتابة بسعة 10 ميغابايت.
- القراءة العشوائية يجب أن تضمن عمليات تنفيذ الأجهزة أداء قراءة عشوائيًا لا يقل عن 3.5 ميغابايت في الثانية لملف بسعة 256 ميغابايت باستخدام مخزن كتابة بسعة 4 كيلوبايت.
8.3. أوضاع توفير الطاقة
يجب أن تكون جميع التطبيقات المعفاة من وضع "التطبيقات في وضع الاستعداد" و/أو وضع "الاستراحة الذكية" مرئية للمستخدم النهائي. بالإضافة إلى ذلك، يجب ألا تختلف اتّباع خوارزميات التفعيل والصيانة والتنشيط واستخدام إعدادات النظام الشاملة لهذه الأوضاع المخصّصة لتوفير الطاقة عن تلك الواردة في "مشروع Android المفتوح المصدر".
8.4. احتساب استهلاك الطاقة
إنّ احتساب استهلاك الطاقة وإعداد تقارير أكثر دقة يقدّم لمطوّر التطبيقات كلّ من الحوافز والأدوات لتحسين نمط استخدام الطاقة في التطبيق. لذلك، فإنّ عمليات تنفيذ الأجهزة:
- يجب أن يكون بإمكانه تتبُّع استخدام الطاقة لمكوّنات الأجهزة وتحديد مصدر استخدام
الطاقة هذا إلى تطبيقات معيّنة. وعلى وجه التحديد، عمليات التنفيذ:
- يجب تقديم مخطّط استهلاك الطاقة لكل مكوّن يحدّد قيمة الاستهلاك الحالى لكل مكوّن من مكوّنات الأجهزة ومعدل استنزاف البطارية التقريبي الذي يسببه المكوّنات بمرور الوقت كما هو موضّح في موقع مشروع Android Open Source Project الإلكتروني [الموارد، 123].
- يجب الإبلاغ عن جميع قيم استهلاك الطاقة بوحدة ملي أمبير ساعة (mAh).
- يجب أن يُنسَب إلى مكوّن الجهاز نفسه في حال تعذّر ربط استخدام الطاقة لمكوّن الجهاز بتطبيق معيّن.
- يجب الإبلاغ عن استهلاك طاقة وحدة المعالجة المركزية لكل معرّف مستخدم لكل عملية. يستوفي "مشروع مفتوح المصدر لنظام Android"
المتطلّبات من خلال تنفيذ
uid_cputime
وحدة النواة.
- يجب أن يتيح مطوّر التطبيق استخدام الطاقة هذا من خلال أمر shell
adb shell dumpsys batterystats
[الموارد، 124]. - يجب أن تلتزم بطلب android.intent.action.POWER_USAGE_SUMMARY وأن تعرض قائمة إعدادات تعرض هذا الاستخدام للطاقة [Resources، 125].
9. توافق نموذج الأمان
يجب أن تطبّق عمليات تنفيذ الأجهزة نموذج أمان متوافقًا مع نموذج أمان نظام التشغيل Android كما هو محدّد في مستند مرجعي عن الأمان والأذونات في واجهات برمجة التطبيقات [الموارد، 126] ضمن مستندات مطوّري تطبيقات Android. يجب أن تتيح عمليات تنفيذ الأجهزة تثبيت التطبيقات الموقَّعة ذاتيًا بدون الحاجة إلى أي أذونات أو شهادات إضافية من أي جهات خارجية أو سلطات. وعلى وجه التحديد، يجب أن تتوافق الأجهزة مع آليات الأمان الموضّحة في المقاطع الفرعية التالية.
9.1. الأذونات
يجب أن تتوافق عمليات تنفيذ الأجهزة مع نموذج أذونات Android كما هو محدّد في مستندات مطوّري تطبيقات Android [الموارد، 126]. وعلى وجه التحديد، يجب أن تفرض عمليات التنفيذ كل إذن محدّد كما هو описан في مستندات حزمة تطوير البرامج (SDK)، ولا يجوز حذف أي أذونات أو تغييرها أو تجاهلها. يجوز لعمليات التنفيذ إضافة أذونات إضافية، شرط ألا تكون سلاسل أرقام تعريف الأذونات الجديدة في مساحة الاسم android.*.
إنّ الأذونات التي يكون مستوى حمايتها خطيرًا هي أذونات وقت التشغيل. تطلب التطبيقات التي يكون فيها targetSdkVersion > 22 هذه الأذونات في وقت التشغيل. عمليات التنفيذ على الأجهزة:
- يجب أن تعرض واجهة مخصّصة للمستخدم ليقرر ما إذا كان سيمنح أذونات التشغيل المطلوبة، كما يجب أن توفّر واجهة للمستخدم لإدارة أذونات التشغيل.
- يجب أن يكون هناك عملية تنفيذ واحدة فقط لكلتا واجهتَي المستخدم.
- يجب عدم منح أي أذونات تشغيل للتطبيقات المثبَّتة مسبقًا ما لم يكن:
- يمكن الحصول على موافقة المستخدم قبل أن يستخدمها التطبيق
- أن تكون أذونات التشغيل مرتبطة بنمط نية تم ضبط التطبيق المثبَّت مسبقًا عليه كمعالِج تلقائي
9.2. رقم تعريف المستخدم (UID) وعزل العمليات
يجب أن تكون عمليات تنفيذ الأجهزة متوافقة مع نموذج وضع الحماية لتطبيقات Android، والذي يتم فيه تشغيل كل تطبيق كمعرّف مستخدم فريد على غرار Unix وفي عملية منفصلة. يجب أن تتيح عمليات تنفيذ الأجهزة تشغيل تطبيقات متعددة باستخدام معرّف مستخدم Linux نفسه، شرط أن تكون التطبيقات موقَّعة ومُنشأة بشكل صحيح، كما هو محدّد في مرجع "الأمان والأذونات" [المراجع، 126].
9.3. أذونات نظام الملفات
يجب أن تتوافق عمليات تنفيذ الأجهزة مع نموذج أذونات الوصول إلى الملفات في Android على النحو المحدّد في مرجع "الأمان والأذونات" [الموارد، 126].
9.4. بيئات التنفيذ البديلة
قد تتضمّن عمليات تنفيذ التطبيقات على الأجهزة بيئات تشغيل تنفِّذ التطبيقات باستخدام بعض البرامج أو التكنولوجيات الأخرى غير تنسيق ملف تنفيذ Dalvik أو الرمز البرمجي الأصلي. ومع ذلك، يجب ألا تؤدي بيئات التنفيذ البديلة هذه إلى انتهاك نموذج أمان Android أو أمان تطبيقات Android المثبَّتة، كما هو موضّح في هذا القسم.
يجب أن تكون أوقات التشغيل البديلة هي نفسها تطبيقات Android، وأن تلتزم بنموذج أمان Android العادي، كما هو موضّح في مكان آخر من القسم 9.
يجب عدم منح أوقات التشغيل البديلة إذن الوصول إلى الموارد المحمية باستخدام أذونات لم يتم طلبها في ملف AndroidManifest.xml الخاص بوقت التشغيل من خلال آلية <uses-permission>.
يجب ألا تسمح أوقات التشغيل البديلة للتطبيقات بالاستفادة من الميزات التي تحميها أذونات Android المخصّصة لتطبيقات النظام.
يجب أن تلتزم أوقات التشغيل البديلة بنموذج وضع الحماية في Android. على وجه التحديد، مُدد التشغيل البديلة:
- يجب تثبيت التطبيقات من خلال PackageManager في مساحات حماية Android منفصلة ( معرّفات مستخدمي Linux وما إلى ذلك).
- يجوز توفير مساحة محاكاة واحدة لنظام التشغيل Android تشترك فيها جميع التطبيقات التي تستخدم بيئة التشغيل البديلة.
- والتطبيقات المثبَّتة باستخدام بيئة تشغيل بديلة، يجب عدم إعادة استخدام بيئة الحماية لأي تطبيق آخر مثبَّت على الجهاز، إلا من خلال آليات Android العادية الخاصة بمعرّف المستخدم المشترَك وشهادة التوقيع.
- يجب ألّا يتم تشغيله باستخدام مساحات العزل المتوافقة مع تطبيقات Android الأخرى أو منحها إذن الوصول إليها أو منحها إذن الوصول إليه.
- يجب ألّا يتم تشغيله باستخدام أي امتيازات للمستخدم المتميّز (root) أو أي معرّف مستخدم آخر، أو أن يتم منحه هذه الامتيازات أو منحها للتطبيقات الأخرى.
يجوز تضمين ملفات APK .لأنظمة التشغيل البديلة في صورة النظام لتطبيق على الجهاز، ولكن يجب توقيعها باستخدام مفتاح مختلف عن المفتاح المستخدَم لتوقيع التطبيقات الأخرى المضمّنة في تطبيق الجهاز.
عند تثبيت التطبيقات، يجب أن تحصل أوقات التشغيل البديلة على موافقة المستخدم بشأن أذونات Android التي يستخدمها التطبيق. إذا كان التطبيق يحتاج إلى الاستفادة من مورد جهاز يتوفّر له إذن Android corresponding (مثل الكاميرا ونظام تحديد المواقع العالمي (GPS) وما إلى ذلك)، يجب أن يُعلم وقت التشغيل البديل المستخدم بأنّ التطبيق سيتمكّن من الوصول إلى هذا المورد. إذا كانت بيئة وقت التشغيل لا تسجِّل إمكانات التطبيق بهذه الطريقة، يجب أن تُدرِج بيئة وقت التشغيل جميع الأذونات التي يمتلكها وقت التشغيل نفسه عند تثبيت أي تطبيق يستخدم وقت التشغيل هذا.
9.5. ميزة "الوصول المتعدد"
هذه الميزة اختيارية لجميع أنواع الأجهزة.
يتيح نظام التشغيل Android إمكانية استخدام حسابات متعددة ويوفّر إمكانية عزل ملف تعريف المستخدم بالكامل [الموارد، 127]. قد تتيح عمليات تنفيذ الأجهزة استخدام ميزة "المستخدمون المتعدّدون"، ولكن عند تفعيلها، يجب أن تستوفي المتطلبات التالية المتعلّقة بدعم هذه الميزة [الموارد، 128]:
- يجب أن تتيح عمليات تنفيذ الأجهزة التي لا تحدّد علامة ميزة android.hardware.telephony استخدام الملفات الشخصية المحظورة، وهي ميزة تسمح لأصحاب الأجهزة بإدارة مستخدمين إضافيين وقدراتهم على الجهاز. باستخدام الملفات الشخصية ذات القيود، يمكن لمالكي الأجهزة إعداد بيئات منفصلة بسرعة ليعمل فيها المستخدمون الإضافيون، مع إمكانية إدارة قيود أكثر دقة في التطبيقات المتاحة في تلك البيئات.
- في المقابل، يجب ألّا تتيح عمليات تنفيذ الأجهزة التي تعلن عن علامة ميزة android.hardware.telephony استخدام الملفات الشخصية المحظورة، بل يجب أن تكون متوافقة مع تنفيذ AOSP لعناصر التحكّم في تفعيل /إيقاف إمكانية وصول المستخدمين الآخرين إلى المكالمات المسموعة والرسائل القصيرة.
- يجب أن تُنفِّذ عمليات تنفيذ التطبيقات على الأجهزة، لكل مستخدم، نموذج أمان متوافقًا مع نموذج أمان نظام Android الأساسي كما هو محدّد في مستند مرجعي حول الأمان والأذونات في واجهات برمجة التطبيقات [الموارد، 126].
- يجب أن تتضمّن كل نسخة مستخدم على جهاز Android ملفّات تعريف مستقلة ومفصّلة لمساحة التخزين الخارجية. قد تؤدي عمليات تنفيذ الأجهزة إلى تخزين data لمستخدمين متعدّدين في وحدة التخزين أو نظام الملفات نفسه. ومع ذلك، يجب أن تضمن عملية تنفيذ الجهاز أنّ التطبيقات التي يملكها مستخدم معيّن ويتم تشغيلها نيابةً عنه لا يمكنها إدراج البيانات التي يملكها أي مستخدم آخر أو قراءتها أو الكتابة فيها. يُرجى العِلم أنّه يمكن لوسائل التخزين القابلة للإزالة، مثل فتحات بطاقات SD، السماح لمستخدم بالوصول إلى بيانات مستخدم آخر باستخدام جهاز كمبيوتر مضيف. لهذا السبب، على عمليات تنفيذ الأجهزة التي تستخدم وسائط قابلة للإزالة لواجهة برمجة تطبيقات مساحة التخزين الخارجية الأساسية تشفير محتوى بطاقة SD في حال تفعيل ميزة "الوصول المتعدد للمستخدمين" باستخدام مفتاح يتم تخزينه فقط على وسائط غير قابلة للإزالة يمكن للنظام فقط الوصول إليها. وبما أنّ هذا سيجعل الوسائط غير قابلة للقراءة من خلال جهاز كمبيوتر مضيف، سيُطلب من عمليات تنفيذ الأجهزة التبديل إلى بروتوكول MTP أو نظام مشابه لمنح أجهزة الكمبيوتر المضيف إمكانية الوصول إلى بيانات المستخدم الحالي. وبناءً على ذلك، يجوز لعمليات تنفيذ التطبيقات على الأجهزة تفعيل ميزة "الوصول المتعدّد للمستخدمين"، ولكن لا يُنصَح بذلك إذا كانت تستخدم وسائط قابلة للإزالة [الموارد، 129] لمساحة التخزين الخارجية الأساسية.
9.6 تحذير بشأن الرسائل القصيرة برسوم إضافية
يتيح نظام التشغيل Android تحذير المستخدمين من أي رسالة قصيرة SMS مميزة مُرسَلة [الموارد، 130]. رسائل SMS للخدمات هي رسائل نصية يتم إرسالها إلى خدمة مسجَّلة لدى أحد مشغّلي شبكات الجوّال، وقد يتم تحصيل رسوم من المستخدم مقابل هذه الرسائل. يجب أن تحذر عمليات تنفيذ الأجهزة التي تعلن عن توافقها مع android.hardware.telephony المستخدمين قبل إرسال رسالة قصيرة إلى الأرقام التي تم تحديدها باستخدام التعبيرات العادية المحدّدة في ملف /data/misc/sms/codes.xml على الجهاز. يقدّم "المشروع المفتوح المصدر لنظام Android" تنفيذًا يستوفي هذا الشرط.
9.7. ميزات أمان النواة
يتضمّن "وضع الحماية" في Android ميزات تستخدِم نظام التحكّم الإجباري في الوصول (MAC) لنظام التشغيل Linux المُحسَّن للأمان (SELinux) وميزات أمان أخرى في ملفّ "النواة" لنظام التشغيل Linux. SELinux أو أي ميزات أمان أخرى تم تنفيذها ضمن إطار عمل Android:
- يجب الحفاظ على التوافق مع التطبيقات الحالية.
- يجب ألّا تتضمّن واجهة مستخدم مرئية عند رصد انتهاك للأمان وحظره بنجاح، ولكن يجوز أن تتضمّن واجهة مستخدم مرئية عند حدوث انتهاك للأمان غير المحظور الذي يؤدي إلى استغلال ناجح.
- يجب ألّا يكون بالإمكان ضبطها من قِبل المستخدم أو المطوّر.
إذا تم إتاحة أي واجهة برمجة تطبيقات لضبط السياسة لتطبيق يمكنه التأثير في تطبيق آخر (مثل Device Administration API)، يجب ألا تسمح واجهة برمجة التطبيقات بضبط الإعدادات التي تؤدي إلى إيقاف التوافق.
يجب أن تستخدم الأجهزة نظام SELinux أو نظامًا مماثلاً لنظام التحكّم الإلزامي في الوصول في حال استخدام نواة غير Linux. يجب أن تستوفي الأجهزة أيضًا المتطلبات التالية التي يستوفيها التنفيذ المرجعي في مشروع Android Open Source Project.
عمليات التنفيذ على الأجهزة:
- يجب ضبط SELinux على وضع التنفيذ الشامل.
- يجب ضبط جميع النطاقات في وضع التنفيذ. لا يُسمح باستخدام نطاقات الوضع المرخّص ، بما في ذلك النطاقات الخاصة بجهاز أو موفِّر خدمة.
- يجب عدم تعديل قواعد neverallow أو حذفها أو استبدالها في مجلد external/sepolicy المتوفّر في "المشروع المفتوح المصدر لنظام Android" (AOSP) ويجب compiling السياسة مع جميع قواعد neverallow الحالية، لكل من نطاقات AOSP SELinux بالإضافة إلى النطاقات الخاصة بالجهاز أو المورّد.
يجب أن تحتفظ عمليات تنفيذ الأجهزة بسياسة SELinux التلقائية المقدَّمة في مجلد external/sepolicy ضمن مشروع Android Open Source Project الأساسي، ويجب فقط إضافة المزيد إلى هذه السياسة لإعدادات الجهاز الخاصة بها. يجب أن تكون عمليات تنفيذ التطبيقات على الأجهزة متوافقة مع الإصدار الأصلي من "مشروع Android المفتوح المصدر".
9.8. الخصوصية
إذا كان الجهاز ينفِّذ وظيفة في النظام تلتقط المحتوى المعروض على الشاشة و/أو تسجِّل البث الصوتي الذي يتم تشغيله على الجهاز، يجب أن يُرسِل الجهاز إشعارًا مستمرًا للمستخدم عند تفعيل هذه الوظيفة و/أو عند بدء عملية الالتقاط/التسجيل.
إذا كان تطبيق الجهاز يتضمّن آلية لتوجيه زيارات بيانات الشبكة من خلال خادم وكيل أو بوابة شبكة VPN تلقائيًا (على سبيل المثال، التحميل المُسبَق لخدمة VPN التي تم منحها إذن android.permission.CONTROL_VPN)، يجب أن يطلب تطبيق الجهاز موافقة المستخدم قبل تفعيل هذه الآلية.
إذا كان تنفيذ الجهاز يتضمّن منفذ USB متوافقًا مع وضع الأجهزة الطرفية USB، يجب أن يعرض واجهة مستخدم تطلب موافقة المستخدم قبل السماح بالوصول إلى محتوى مساحة التخزين المشتركة عبر منفذ USB.
9.9. تشفير القرص بالكامل
اختياري لعمليات تنفيذ أجهزة Android غير المزوّدة بشاشة قفل.
إذا كان تنفيذ الجهاز يتيح شاشة قفل آمنة تُبلغ عن "true
"
لطريقة KeyguardManager.isDeviceSecure()
[Resources, 131]
وليس جهازًا بذاكرة محدودة كما هو موضّح من خلال الأسلوب
ActivityManager.isLowRamDevice()، يجب أن يتيح الجهاز تشفير القرص بالكامل
[Resources, 132]
للبيانات الخاصة بالتطبيق (قسم /data)، بالإضافة إلى قسم التخزين المشترَك للتطبيق (قسم /sdcard) إذا كان جزءًا دائمًا وغير قابل للإزالة
من الجهاز.
بالنسبة إلى عمليات تنفيذ الأجهزة التي تتيح تشفير القرص بالكامل ويكون أداء التشفير وفقًا لمعيار التشفير المتقدّم (AES) أعلى من 50 ميغابايت في الثانية، يجب تفعيل تشفير القرص بالكامل تلقائيًا في وقت إكمال المستخدم لتجربة الإعداد بدون تركيب أي برامج إضافية. إذا سبق أن تم تنفيذ عملية تثبيت الجهاز على إصدار أقدم من Android مع إيقاف تشفير القرص بالكامل تلقائيًا، لا يمكن لمثل هذا الجهاز استيفاء الشرط من خلال تحديث برنامج النظام، وبالتالي قد يتم إعفاؤه.
يجب أن يستخدم التشفير معيار AES مع مفتاح 128 بت (أو أكثر) ووضعًا مصمّمًا للتخزين (مثل AES-XTS وAES-CBC-ESSIV). يجب عدم كتابة مفتاح التشفير في مساحة التخزين في أي وقت بدون تشفير. يجب أن يكون مفتاح التشفير مشفَّرًا باستخدام معيار AES مع تمديد رمز مرور شاشة القفل باستخدام خوارزمية تمديد بطيئة (مثل PBKDF2 أو scrypt)، باستثناء الحالات التي يكون فيها قيد استخدامٍ نشِط. إذا لم يحدِّد المستخدم رمز مرور لشاشة القفل أو أوقف استخدام رمز المرور للتشفير، من المفترض أن يستخدم النظام رمز مرور تلقائيًا لتشفير مفتاح التشفير. إذا كان الجهاز يقدّم متجر مفاتيح مستندًا إلى الأجهزة، يجب أن تكون خوارزمية التمديد لكلمات المرور مرتبطة بشكل مشفّر بمتجر المفاتيح هذا. يجب عدم إرسال مفتاح التشفير خارج الجهاز (حتى عند تشفيره باستخدام رمز مرور المستخدم و/أو مفتاح مرتبط بالجهاز). يقدّم مشروع Android Open Source Project طريقة مفضّلة لتنفيذ هذه الميزة استنادًا إلى ميزة dm-crypt في ملف تعريف نظام التشغيل Linux.
9.10. التشغيل المتحقّق منه
"التشغيل المتحقّق منه" هي ميزة تضمن سلامة برنامج الجهاز. إذا كان تنفيذ الجهاز يتيح الميزة، يجب أن يستوفي ما يلي:
- تعريف علامة ميزة النظام الأساسي android.software.verified_boot
- إجراء عملية التحقّق في كل تسلسل تشغيل
- ابدأ عملية التحقّق من مفتاح أجهزة ثابت يمثّل جذر الثقة، وانتقل إلى قسم النظام.
- تنفيذ كل مرحلة من مراحل التحقّق للتحقّق من سلامة وصحة جميع البايتات في المرحلة التالية قبل تنفيذ الرمز في المرحلة التالية
- استخدام خوارزميات التحقّق التي تتوافق مع التوصيات الحالية من معهد تكنولوجيا المعلومات الوطني (NIST) لخوارزميات التجزئة (SHA-256) وأحجام المفاتيح العامة (RSA-2048)
يقدّم "مشروع مفتوح المصدر لنظام Android" الإصدار الأصلي من هذه الميزة استنادًا إلى ميزة dm-verity في نواة Linux.
بدءًا من الإصدار 6.0 من نظام التشغيل Android، يجب أن تتيح عمليات تنفيذ الأجهزة التي توفّر أداء تشفيرًا بمستوى معيار التشفير المتقدّم (AES) فوق 50 ميغابايت في الثانية ميزة "التمهيد التحقق منه" للحفاظ على سلامة الجهاز. إذا سبق أن تم طرح جهاز بدون إتاحة ميزة "التمهيد التحقق منه" على إصدار سابق من Android، لا يمكن لهذا الجهاز إضافة إتاحة هذه الميزة من خلال تحديث برنامج النظام، وبالتالي يتم إعفاؤه من الشرط.
9.11. المفاتيح وبيانات الاعتماد
يتيح نظام "متجر مفاتيح Android" [الموارد، 133] لمطوّري التطبيقات تخزين مفاتيح التشفير في حاوية واستخدامها في عمليات التشفير من خلال KeyChain API [الموارد، 134] أو Keystore API [الموارد، 135].
يجب أن تستوفي جميع عمليات تنفيذ أجهزة Android المتطلبات التالية:
- يجب ألا يحدّ من عدد المفاتيح التي يمكن إنشاؤها، ويجب أن يسمح على الأقل باستيراد أكثر من 8,192 مفتاحًا.
- يجب أن تحدّد مصادقة شاشة القفل عدد المحاولات المسموح به، ويجب أن تتضمّن خوارزمية التوقّف المتصاعد كما هو مُنفَّذ في مشروع Android Open Source Project.
- عندما يتيح تنفيذ الجهاز شاشة قفل آمنة ويحتوي على جهاز خارجي آمن،
مثل عنصر أمان (SE) يمكن تنفيذ بيئة تنفيذ موثوقة (TEE) فيه،
يتم استيفاء الشروط التالية:
- يُنصح بشدة بالاحتفاظ بنسخة احتياطية من عملية تنفيذ ملف تخزين المفاتيح باستخدام الجهاز الآمن. يقدّم مشروع Android Open Source Project (المشروع المصدر المفتوح لنظام التشغيل Android) تنفيذ Keymaster Hardware Abstraction Layer (HAL) الذي يمكن استخدامه لتلبية هذا الشرط.
- يجب تنفيذ مصادقة شاشة القفل في الجهاز الآمن إذا كان الجهاز يحتوي على عملية تنفيذ لمخزن مفاتيح مستندة إلى الأجهزة، ولا يُسمح باستخدام مفاتيح مرتبطة بالمصادقة إلا عند نجاح العملية. يقدّم "المشروع المفتوح المصدر لنظام Android" (AOSP) واجهة برمجة التطبيقات Gatekeeper Hardware Abstraction Layer (HAL) التي يمكن استخدامها لتلبية هذا الشرط [الموارد، 136].
يُرجى العلم أنّه على الرغم من أنّ المتطلبات المذكورة أعلاه المتعلّقة بتقنية TEE مُدرجة على أنّها "مُستحسَنة بشدة"، من المخطّط أن يتم تغيير هذه المتطلبات إلى "مطلوبة" في ملف تعريف التوافق لإصدار واجهة برمجة التطبيقات التالي. إذا سبق أن تم إطلاق عملية تنفيذ على جهاز يعمل بإصدار أقدم من Android ولم يتم تنفيذ نظام تشغيل موثوق به على الجهاز الآمن، قد لا يتمكّن هذا الجهاز من استيفاء متطلبات من خلال تحديث برنامج النظام، وبالتالي ننصح بشدة بتنفيذ TEE.
9.12. حذف البيانات
يجب أن توفّر الأجهزة للمستخدمين آلية لإجراء "إعادة الضبط على الإعدادات الأصلية" التي تسمح بالحذف المنطقي والمادي لجميع البيانات باستثناء صورة النظام والبيانات في الأقسام الأخرى التي يمكن اعتبارها جزءًا من صورة النظام. يجب أن يستوفي هذا الإجراء المعايير المتّبعة في المجال لحذف البيانات، مثل NIST SP800-88. يجب استخدام هذا الإجراء لتنفيذ واجهة برمجة التطبيقات wipeData() (جزء من واجهة برمجة التطبيقات Android Device Administration API) الموضّحة في القسم 3.9 Device Administration.
قد توفّر الأجهزة ميزة محو البيانات سريعًا من خلال إجراء عملية محو منطقي للبيانات.
10. اختبار توافق البرامج
يجب أن تجتاز عمليات تنفيذ الأجهزة جميع الاختبارات الموضّحة في هذا القسم.
ومع ذلك، يُرجى العِلم أنّه لا تتوفّر حزمة اختبار برامج شاملة بالكامل. لهذا السبب،ننصح بشدة جهات تنفيذ الأجهزة بإجراء الحد الأدنى من التغييرات على الإصدار المرجعي والتنفيذ المفضّل لنظام Android المتوفّر من "المشروع المفتوح المصدر لنظام Android". سيؤدي ذلك إلى الحدّ من خطر إدخال أخطاء تؤدي إلى عدم التوافق وتتطلّب إعادة العمل وإجراء تحديثات محتملة على الأجهزة.
10.1. مجموعة أدوات اختبار التوافق
يجب أن تجتاز عمليات تنفيذ الأجهزة مجموعة أدوات اختبار التوافق مع Android (CTS) [Resources, 137] المتوفّرة من "المشروع المفتوح المصدر لنظام Android"، وذلك باستخدام الإصدار النهائي من البرامج المُرسَلة على الجهاز. بالإضافة إلى ذلك، على مطوّري الأجهزة استخدام التطبيق المرجعي في شجرة "المشروع المفتوح المصدر لنظام Android" قدر الإمكان، ويجب أن يضمنوا التوافق في حالات الغموض في CTS وأي عمليات إعادة تنفيذ لأجزاء من رمز المصدر المرجعي.
تم تصميم CTS ليتم تشغيله على جهاز حقيقي. مثل أي برنامج، قد يحتوي CTS نفسه على أخطاء. سيتم إصدار إصدارات من CTS بشكل مستقل عن ملف تعريف التوافق هذا، وقد يتم إصدار عدّة نُسخ من CTS لنظام التشغيل Android 6.0. يجب أن تجتاز عمليات تنفيذ الأجهزة أحدث إصدار متاح من مجموعة أدوات اختبار التوافق (CTS) في وقت اكتمال تثبيت برنامج الجهاز.
10.2. أداة إثبات ملكية CTS
يجب أن تنفِّذ عمليات تنفيذ الأجهزة جميع الحالات السارية في أداة التحقّق من CTS بشكل صحيح. يتم تضمين أداة التحقّق من CTS مع مجموعة اختبار التوافق، ويُفترض أن يشغّلها مشغل بشري لاختبار الوظائف التي لا يمكن لنظام آلي اختبارها، مثل الأداء الصحيح للكاميرا والأجهزة الاستشعارية.
يتضمّن أداة CTS Verifier اختبارات لأنواع كثيرة من الأجهزة، بما في ذلك بعض الأجهزة التي تكون اختيارية. يجب أن تجتاز عمليات تنفيذ الأجهزة جميع اختبارات الأجهزة التي تمتلكها. على سبيل المثال، إذا كان الجهاز يحتوي على مقياس تسارع، يجب أن يؤدي بشكل صحيح حالة اختبار مقياس التسارع في أداة التحقّق من توافق الأجهزة (CTS Verifier). قد يتم تخطّي أو حذف اختبارات ميزات محددة على أنّها اختيارية في "مستند تعريف معايير التوافق".
يجب أن يعمل كل جهاز وكل إصدار بشكل صحيح مع أداة CTS Verifier، كما هو موضّح أعلاه. ومع ذلك، بما أنّ العديد من الإصدارات متشابهة جدًا، ليس من المفترض أن يشغّل مورّدو الأجهزة أداة CTS Verifier صراحةً على الإصدارات التي تختلف فقط بطرق بسيطة. على وجه التحديد، قد يتم حذف اختبار أداة التحقّق من التوافق مع CTS في عمليات تنفيذ الأجهزة التي تختلف عن عملية تنفيذ اجتازت أداة التحقّق من التوافق مع CTS فقط من خلال مجموعة اللغات المضمّنة والعلامات التجارية وما إلى ذلك.
11. البرامج القابلة للتحديث
يجب أن تتضمّن عمليات تنفيذ الأجهزة آلية لاستبدال برنامج النظام بالكامل. لا يلزم أن تُجري الآلية ترقيات "مباشرة"، أي أنّه قد يكون مطلوبًا إعادة تشغيل الجهاز.
يمكن استخدام أي طريقة، شرط أن تكون قادرة على استبدال كل البرامج المثبَّتة مسبقًا على الجهاز. على سبيل المثال، سيستوفي أي من الخطوات التالية هذا الشرط:
- تنزيلات "عبر شبكة غير سلكية (OTA)" مع تحديث بلا إنترنت من خلال إعادة التشغيل
- التحديثات "المرتبطة" عبر USB من جهاز كمبيوتر مضيف
- التحديثات "بلا إنترنت" من خلال إعادة التشغيل والتحديث من ملف على مساحة تخزين قابلة للإزالة
ومع ذلك، إذا كان تنفيذ الجهاز يتضمّن إتاحة اتّصال data غير محدود، مثل ملف 802.11 أو شبكة المنطقة الشخصية (PAN) عبر البلوتوث:
- يجب أن تتيح عمليات تنفيذ Android Automotive عمليات تنزيل التحديثات من خلال شبكة الجوّال (OTA) مع التحديث بلا إنترنت من خلال إعادة التشغيل.
- يجب أن تتيح جميع عمليات تنفيذ الأجهزة الأخرى تنزيل التحديثات عبر الهواء مع التحديث بلا إنترنت من خلال إعادة التشغيل.
يجب أن تتيح آلية التحديث المُستخدَمة إجراء التحديثات بدون محو بيانات المستخدم. وهذا يعني أنّه يجب أن تحافظ آلية التحديث على البيانات الخاصة بالتطبيق والبيانات المشترَكة فيه. يُرجى العلم أنّ برنامج Android الأساسي يتضمّن آلية تحديث تستوفي هذا الشرط.
بالنسبة إلى عمليات تنفيذ الأجهزة التي يتم تشغيلها باستخدام Android 6.0 والإصدارات الأحدث، يجب أن تتيح آلية التحديث التحقّق من أنّ ملف صورة النظام هو ملف ثنائي يتطابق مع النتيجة المتوقّعة بعد تحديث OTA. يلبي هذا الشرط عملية تنفيذ التحديثات عبر الهواء المستندة إلى الحِزم في "المشروع المفتوح المصدر لنظام Android"، والتي تمت إضافتها منذ الإصدار Android 5.1.
إذا تم العثور على خطأ في عملية تنفيذ الجهاز بعد طرحه، ولكن خلال فترة الاستخدام المعقولة للمنتج التي يتم تحديدها بالتشاور مع فريق التوافق في Android للتأثير في توافق التطبيقات التابعة لجهات خارجية، على جهة تنفيذ الجهاز تصحيح الخطأ من خلال تحديث البرامج المتاح الذي يمكن تطبيقه وفقًا للآلية الموضّحة للتو.
يتضمّن نظام Android ميزات تتيح لتطبيق "مالك الجهاز" (في حال توفّره) التحكّم في تثبيت تحديثات النظام. لتسهيل ذلك، يجب أن ينفذ النظام الفرعي لنظام التحديث للأجهزة التي تُبلغ عن android.software.device_admin السلوك описан في فئة SystemUpdatePolicy [ Resources, 138].
12. سجلّ تغييرات المستندات
يحتوي الجدول التالي على ملخّص للتغييرات التي طرأت على تعريف التوافق في هذا الإصدار.
القسم | ملخص التغييرات | |
---|---|---|
متعددة | تم استبدال مواضع ظهور العبارة "مُشجَّع" بـ "مُقترَح". | |
2- أنواع الأجهزة | تعديل على عمليات تنفيذ Android Automotive | |
3.2.2. إنشاء المَعلمات | إضافات للرقم التسلسلي للجهاز ومستوى تصحيح الأمان لإصدار معيّن | |
3.2.3.2. حلّ النية | تمت إعادة تسمية القسم من "إلغاء النية" إلى "تحديد النية"، مع متطلبات جديدة مرتبطة بربط التطبيقات التلقائي الموثوق | |
3.3.1. واجهات التطبيق الثنائية | إضافات لتوفير توافق مع واجهات برمجة التطبيقات لنظام التشغيل Android، وتغيير مرتبط باسم مكتبة Vulkan | |
3.4.1. توافق WebView | تغيير في سلسلة وكيل المستخدم التي أبلغ عنها WebView | |
3.7 التوافق مع بيئة التشغيل | تعديلات على جدول تخصيص الذاكرة | |
3.8.4. البحث | تعديلات بشأن متطلبات "مساعد Google" | |
3.8.6. المظاهر | تمّت إضافة شرط لتوفير رموز نظام سوداء عند طلبها من خلال العلامة SYSTEM_UI_FLAG_LIGHT_STATUS_BAR. | |
3.8.8. التبديل بين الأنشطة | تم تخفيف متطلبات عدد عناوين "نظرة عامة". | |
3.8.10. عناصر التحكّم في الوسائط على شاشة القفل | يرجى الرجوع إلى 3.8.3 بالتفصيل في ما يتعلّق بوحدة تحكّم الوسائط على شاشة القفل. | |
3.9.1. إدارة الجهاز | يحتوي على أقسام جديدة لتوفير مالك الجهاز وتوفير الملف الشخصي المُدار | |
3.9.2. دعم الملف الشخصي المُدار | قسم جديد يتضمّن متطلبات توافق الجهاز مع وظائف الملف الشخصي المُدار | |
3.12.1. تطبيق للبث التلفزيوني | تمت إضافة قسم لتوضيح متطلبات تطبيق التلفزيون لأجهزة Android Television | |
3.12.1.1. دليل البرامج الإلكتروني | تمت إضافة قسم لتوضيح متطلبات EPG لأجهزة Android Television | |
3.12.1.2. التنقّل | تمت إضافة قسم لتوضيح متطلبات التنقّل في تطبيقات التلفزيون لأجهزة Android Television | |
3.12.1.3. ربط تطبيق إدخال التلفزيون | تمت إضافة قسم لتوضيح متطلبات التوافق مع ربط تطبيقات إدخال التلفزيون على أجهزة Android Television | |
5.1. برامج ترميز الوسائط | تعديلات بشأن التوافق مع تنسيقات الوسائط الأساسية وفك ترميزها | |
5.1.3. برامج ترميز الفيديو | التغييرات والإضافات المتعلّقة بأجهزة Android TV | |
5.2. ترميز الفيديو | التغييرات في ما يتعلّق ببرامج الترميز | |
5.3. فك ترميز الفيديو | تغييرات على برامج فك الترميز، بما في ذلك التوافق مع درجة دقة الفيديو الديناميكية وعدد اللقطات في الثانية التبديل والمزيد | |
5.4. تسجيل الصوت | الإضافات المتعلقة بتسجيل الصوت | |
5.6. وقت استجابة الصوت | تعديل بشأن الإبلاغ عن توفّر ميزة الصوت بوقت استجابة منخفض | |
5.10. الصوت الاحترافي | تعديلات عامة على إتاحة الصوت الاحترافي، وتعديلات على مواصفات الجهاز الجوّال (مقبس)، ووضع مضيف الصوت عبر USB، وتعديلات أخرى | |
5.9. الواجهة الرقمية للآلات الموسيقية (MIDI) | تمت إضافة قسم جديد حول إمكانية استخدام "الواجهة الرقمية للآلات الموسيقية" (MIDI) الاختيارية | |
6.1. أدوات مطوّري البرامج | تحديث لبرامج التشغيل المتوافقة مع نظام التشغيل Windows 10 | |
7.1.1.3. كثافة الشاشة | تعديلات على كثافة الشاشة، على سبيل المثال، في ما يتعلق بساعة Android | |
7.2.3. مفاتيح التنقل | متطلبات معدَّلة لعمليات تنفيذ الأجهزة التي تتضمّن إجراء "المساعدة" | |
7.3. أدوات الاستشعار (والأقسام الفرعية) | متطلبات جديدة لبعض أنواع أجهزة الاستشعار | |
7.3.9. أجهزة الاستشعار العالية الدقة | قسم جديد يتضمّن متطلبات الأجهزة المتوافقة مع أدوات الاستشعار العالية الدقة | |
7.3.10. أداة استشعار بصمة الإصبع | قسم جديد حول المتطلبات المتعلقة بأجهزة استشعار بصمات الإصبع | |
7.4.2. معيار IEEE 802.11 (لشبكات Wi-Fi) | تعديلات بشأن إتاحة نظام أسماء النطاقات للبث المتعدد الوجهات (mDNS) | |
7.4.3. البلوتوث | إضافة متعلقة بالعنوان الخاص القابل للحل (RPA) لتقنية "البلوتوث منخفض الطاقة" (BLE) | |
7.4.4. تقنية الاتصال القصير المدى | إضافات إلى متطلبات تقنية الاتصال القصير المدى (NFC) | |
7.4.5. الحد الأدنى من إمكانات الشبكة | متطلبات إضافية لتوفير IPv6 | |
7.6.3. مساحة تخزين قابلة للاستخدام | قسم جديد لتنفيذ ميزة "مساحة تخزين قابلة للاستخدام" | |
7.7. USB | متطلّبات متعلّقة بتنفيذ مواصفات AOA | |
7.8.3. الموجات فوق الصوتية القريبة | الإضافات المتعلقة بتسجيل الصوت وتشغيله وتسجيل الصوت بالقرب من الموجات فوق الصوتية | تخفيف متطلبات نسبة الإشارة إلى الضوضاء في الميكروفونات التي تعمل بالقرب من الموجات فوق الصوتية |
8.3. أوضاع توفير الطاقة | قسم جديد يتضمّن متطلبات متعلقة بوضعَي "تطبيقات وضع الاستعداد" و"وضع قيلولة" | |
8.4. احتساب استهلاك الطاقة | قسم جديد يتضمّن متطلبات تتبُّع استهلاك الطاقة لمكوّنات الأجهزة وتحديد مصدر هذا الاستهلاك في تطبيقات معيّنة | |
9.1. الأذونات | إضافة إلى متطلبات الأذونات | |
9.7. ميزات أمان النواة | تحديثات SE Linux | |
9.8. الخصوصية | إضافة بشأن موافقة المستخدم على الوصول إلى مساحة التخزين المشتركة عبر منفذ USB | |
9.9. تشفير القرص بالكامل | المتطلبات المتعلقة بميزة "تشفير القرص بالكامل" | |
9.10. التشغيل المتحقّق منه | متطلبات إضافية لميزة "التمهيد التحقق منه" | |
9.11. المفاتيح وبيانات الاعتماد | قسم جديد للمتطلبات المتعلقة بالمفاتيح وبيانات الاعتماد | |
9.12. حذف البيانات | قسم جديد لميزة "إعادة الضبط على الإعدادات الأصلية" | |
11. البرامج القابلة للتحديث | شرط متعلق بسياسة تحديثات النظام التي يحدّدها مالك الجهاز |
13. التواصل معنا
يمكنك الانضمام إلى منتدى توافق Android [Resources, 139] وطلب توضيحات أو طرح أي مشاكل تعتقد أنّ المستند لا يتناولها.
14. المراجع
1. مستويات متطلبات RFC2119 من IETF: http://www.ietf.org/rfc/rfc2119.txt
2- مشروع مفتوح المصدر لنظام Android: http://source.android.com/
3- ميزات Android TV: http://developer.android.com/reference/android/content/pm/PackageManager.html#FEATURE_LEANBACK
4- ميزة ساعة Android: http://developer.android.com/reference/android/content/res/Configuration.html#UI_MODE_TYPE_WATCH
5. واجهة برمجة التطبيقات UI_MODE_TYPE_CAR في Android: http://developer.android.com/reference/android/content/res/Configuration.html#UI_MODE_TYPE_CAR
6. تعريفات واجهات برمجة التطبيقات ومستنداتها: http://developer.android.com/reference/packages.html
7. مرجع أذونات Android: http://developer.android.com/reference/android/Manifest.permission.html
8- مراجع android.os.Build: http://developer.android.com/reference/android/os/Build.html
9. سلاسل الإصدارات المسموح بها لنظام التشغيل Android 6.0: http://source.android.com/docs/compatibility/6.0/versions.html
10. إعدادات مطوّري تطبيقات Android: http://developer.android.com/reference/android/provider/Settings.html
11. مقدّم خدمة الاتصال الهاتفي: http://developer.android.com/reference/android/provider/Telephony.html
12. إدارة ABI في Android NDK: https://developer.android.com/ndk/guides/abis.html
13. بنية SIMD المتقدّمة: http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.ddi0388f/Beijfcja.html
14. حزمة إضافات Android: http://developer.android.com/guide/topics/graphics/opengl.html#aep
15. فئة android.webkit.WebView: http://developer.android.com/reference/android/webkit/WebView.html
16. توافق WebView: http://www.chromium.org/
17. HTML5: http://html.spec.whatwg.org/multipage/
18 إمكانات HTML5 بلا إنترنت: http://dev.w3.org/html5/spec/Overview.html#offline
19. علامة فيديو HTML5: http://dev.w3.org/html5/spec/Overview.html#video
20. واجهة برمجة التطبيقات لتحديد الموقع الجغرافي في HTML5/W3C: http://www.w3.org/TR/geolocation-API/
21. واجهة برمجة التطبيقات لميزة webstorage في HTML5/W3C: http://www.w3.org/TR/webstorage/
22. واجهة برمجة التطبيقات IndexedDB في HTML5/W3C: http://www.w3.org/TR/IndexedDB/
23. تنسيق Dalvik القابل للتنفيذ ومواصفات رمز الآلة: متوفّر في رمز مصدر Android، على dalvik/docs
24. التطبيقات المصغّرة: http://developer.android.com/guide/practices/ui_guidelines/widget_design.html
25. الإشعارات: http://developer.android.com/guide/topics/ui/notifiers/notifications.html
26. موارد التطبيق: https://developer.android.com/guide/topics/resources/available-resources.html
27. دليل نمط رموز شريط الحالة: http://developer.android.com/design/style/iconography.html
28. مراجع الإشعارات: https://developer.android.com/design/patterns/notifications.html
29. Search Manager: http://developer.android.com/reference/android/app/SearchManager.html
30. مساعدة في تنفيذ الإجراءات: http://developer.android.com/reference/android/content/Intent.html#ACTION_ASSIST
31. واجهات برمجة تطبيقات Android Assist: https://developer.android.com/reference/android/app/assist/package-summary.html
32. الرسائل المنبثقة: http://developer.android.com/reference/android/widget/Toast.html
33. المظاهر: http://developer.android.com/guide/topics/ui/themes.html
34. فئة R.style: http://developer.android.com/reference/android/R.style.html
35. تصميم متعدد الأبعاد: http://developer.android.com/reference/android/R.style.html#Theme_Material
36. الخلفيات المتحركة: http://developer.android.com/reference/android/service/wallpaper/WallpaperService.html
37. مراجع شاشة "نظرة عامة": http://developer.android.com/guide/components/recents.html
38. تثبيت الشاشة: https://developer.android.com/about/versions/android-5.0.html#ScreenPinning
39. طرق الإدخال: http://developer.android.com/guide/topics/text/creating-input-method.html
40. إشعارات الوسائط: https://developer.android.com/reference/android/app/Notification.MediaStyle.html
41. الشاشة المتحركة: http://developer.android.com/reference/android/service/dreams/DreamService.html
42. Settings.Secure LOCATION_MODE: http://developer.android.com/reference/android/provider/Settings.Secure.html#LOCATION_MODE
43. Unicode 6.1.0: http://www.unicode.org/versions/Unicode6.1.0/
44. إدارة أجهزة Android: http://developer.android.com/guide/topics/admin/device-admin.html
45. مرجع DevicePolicyManager: http://developer.android.com/reference/android/app/admin/DevicePolicyManager.html
46. تطبيق "مالك الجهاز": http://developer.android.com/reference/android/app/admin/DevicePolicyManager.html#isDeviceOwnerApp(java.lang.String)
47. عملية إعداد مالك جهاز Android: http://developer.android.com/reference/android/app/admin/DevicePolicyManager.html#ACTION_PROVISION_MANAGED_DEVICE
48. إعداد مالك الجهاز عبر NFC: /devices/tech/admin/provision.html#device_owner_provisioning_via_nfc
49. تطبيق مالك الملف الشخصي على Android:http://developer.android.com/reference/android/app/admin/DevicePolicyManager.html#isProfileOwnerApp(java.lang.String)
50. عملية توفير الملف الشخصي المُدار على Android: http://developer.android.com/reference/android/app/admin/DevicePolicyManager.html#ACTION_PROVISION_MANAGED_PROFILE
51. واجهات برمجة تطبيقات Android Accessibility Service: http://developer.android.com/reference/android/accessibilityservice/AccessibilityService.html
52. واجهات برمجة تطبيقات Android Accessibility API: http://developer.android.com/reference/android/view/accessibility/package-summary.html
53- مشروع Eyes Free: http://code.google.com/p/eyes-free
54. واجهات برمجة التطبيقات لتحويل النص إلى كلام: http://developer.android.com/reference/android/speech/tts/package-summary.html
55. إطار عمل إدخال التلفزيون: /devices/tv/index.html
56. قنوات تطبيقات التلفزيون: http://developer.android.com/reference/android/media/tv/TvContract.Channels.html
57. إدخالات التلفزيون التابعة لجهات خارجية: /devices/tv/index.html#third-party_input_example
58. إدخالات التلفزيون: /devices/tv/index.html#tv_inputs
59. حقول جدول البرامج الخاص بقنوات التلفزيون: https://developer.android.com/reference/android/media/tv/TvContract.Programs.html
60. ربط تطبيقات إدخال التلفزيون: http://developer.android.com/reference/android/media/tv/TvContract.Channels.html#COLUMN_APP_LINK_INTENT_URI
61. مستندات الأداة المرجعية (لبرنامج adb وaapt وddms وsystrace): http://developer.android.com/tools/help/index.html
62. وصف ملف apk لنظام التشغيل Android: http://developer.android.com/guide/components/fundamentals.html
63. ملفات البيان: http://developer.android.com/guide/topics/manifest/manifest-intro.html
64. تنسيقات الوسائط في Android: http://developer.android.com/guide/appendix/media-formats.html
65. واجهة برمجة التطبيقات MediaCodecList API في Android: http://developer.android.com/reference/android/media/MediaCodecList.html
66. واجهة برمجة تطبيقات Android CamcorderProfile: http://developer.android.com/reference/android/media/CamcorderProfile.html
67. مشروع WebM: http://www.webmproject.org/
68. متطلبات الترميز لأجهزة RTC: http://www.webmproject.org/hardware/rtc-coding-requirements/
69. واجهة برمجة التطبيقات AudioEffect API: http://developer.android.com/reference/android/media/audiofx/AudioEffect.html
70. فئة android.content.pm.PackageManager في Android وقائمة ميزات الأجهزة: http://developer.android.com/reference/android/content/pm/PackageManager.html
71. مسودة بروتوكول البث المباشر عبر بروتوكول HTTP: http://tools.ietf.org/html/draft-pantos-http-live-streaming-03
72. أداة ADB: http://developer.android.com/tools/help/adb.html
73- Dumpsys: /devices/input/diagnostics.html
74. أداة DDMS: http://developer.android.com/tools/debugging/ddms.html
75. أداة اختبار Monkey: http://developer.android.com/tools/help/monkey.html
76. أداة SysyTrace: http://developer.android.com/tools/help/systrace.html
77- الإعدادات ذات الصلة بتطوير تطبيقات Android: http://developer.android.com/reference/android/provider/Settings.html#ACTION_APPLICATION_DEVELOPMENT_SETTINGS
78. التوافق مع شاشات متعددة: http://developer.android.com/guide/practices/screens_support.html
79. android.util.DisplayMetrics: http://developer.android.com/reference/android/util/DisplayMetrics.html
80. RenderScript: http://developer.android.com/guide/topics/renderscript/
81. حزمة إضافات Android لـ OpenGL ES: https://developer.android.com/reference/android/opengl/GLES31Ext.html
82. ميزة "التسريع على الأجهزة": http://developer.android.com/guide/topics/graphics/hardware-accel.html
83. إضافة EGL: EGL_ANDROID_RECORDABLE: http://www.khronos.org/registry/egl/extensions/ANDROID/EGL_ANDROID_recordable.txt
84- Display Manager: http://developer.android.com/reference/android/hardware/display/DisplayManager.html
85. android.content.res.Configuration: http://developer.android.com/reference/android/content/res/Configuration.html
86. ضبط الإدخال باللمس: http://source.android.com/docs/core/interaction/input/touch-devices
87. Motion Event API: http://developer.android.com/reference/android/view/MotionEvent.html
88. Key Event API: http://developer.android.com/reference/android/view/KeyEvent.html
89. أدوات الاستشعار مفتوحة المصدر في Android: http://source.android.com/docs/core/interaction/sensors
90. android.hardware.SensorEvent: http://developer.android.com/reference/android/hardware/SensorEvent.html
91. حدث استشعار الطابع الزمني: http://developer.android.com/reference/android/hardware/SensorEvent.html#timestamp
92. أجهزة الاستشعار المركبة في نظام التشغيل المفتوح المصدر Android: /docs/core/interaction/sensors/sensor-types#composite_sensor_type_summary
93- وضع التفعيل المستمر: http://developer.android.com/reference/android/hardware/Sensor.html#TYPE_ACCELEROMETER
95. واجهة برمجة تطبيقات بصمة الإصبع في Android: https://developer.android.com/reference/android/hardware/fingerprint/package-summary.html
96. Android Fingerprint HAL: /devices/tech/security/authentication/fingerprint-hal.html
97. Wi-Fi Multicast API: http://developer.android.com/reference/android/net/wifi/WifiManager.MulticastLock.html
98. Wi-Fi Direct (Wi-Fi P2P): http://developer.android.com/reference/android/net/wifi/p2p/WifiP2pManager.html
99. واجهة برمجة التطبيقات WifiManager: http://developer.android.com/reference/android/net/wifi/WifiManager.html
100. واجهة برمجة تطبيقات البلوتوث: http://developer.android.com/reference/android/bluetooth/package-summary.html
101. واجهة برمجة التطبيقات Bluetooth ScanFilter API: https://developer.android.com/reference/android/bluetooth/le/ScanFilter.html
102. رمز NFC الشريطي: http://developer.android.com/reference/android/nfc/tech/NfcBarcode.html
103. بروتوكول دفع NDEF: http://source.android.com/docs/compatibility/ndef-push-protocol.pdf
104. شعاع Android: http://developer.android.com/guide/topics/connectivity/nfc/nfc.html
105. إعدادات مشاركة NFC على Android: http://developer.android.com/reference/android/provider/Settings.html#ACTION_NFCSHARING_SETTINGS
106. تسليم الاتصال عبر NFC: http://members.nfc-forum.org/specs/spec_list/#conn_handover
107. الاقتران الآمن والبسيط عبر البلوتوث باستخدام تقنية NFC: http://members.nfc-forum.org/apps/group_public/download.php/18688/NFCForum-AD-BTSSP_1_1.pdf
108. محاكاة البطاقة المستندة إلى المضيف: http://developer.android.com/guide/topics/connectivity/nfc/hce.html
109. Content Resolver: http://developer.android.com/reference/android/content/ContentResolver.html
110. واجهة برمجة التطبيقات لاتجاه الكاميرا: http://developer.android.com/reference/android/hardware/Camera.html#setDisplayOrientation(int)
111. الكاميرا: http://developer.android.com/reference/android/hardware/Camera.html
112. الكاميرا: http://developer.android.com/reference/android/hardware/Camera.Parameters.html
113. مستوى أجهزة الكاميرا: https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#INFO_SUPPORTED_HARDWARE_LEVEL
114. الإصدارات المتوافقة من الكاميرا: http://source.android.com/docs/core/camera/versioning
115. Android DownloadManager: http://developer.android.com/reference/android/app/DownloadManager.html
116. نقل ملفات Android: http://www.android.com/filetransfer
117. وحدة تخزين قابلة للاستخدام: http://source.android.com/docs/core/storage/adoptable
118. ملحقات Android المفتوحة: http://developer.android.com/guide/topics/connectivity/usb/accessory.html
119. مكبّر صوت USB في Android: http://developer.android.com/reference/android/hardware/usb/UsbConstants.html#USB_CLASS_AUDIO
120. مواصفات شحن البطارية عبر USB، الإصدار 1.2: http://www.usb.org/developers/docs/devclass_docs/BCv1.2_070312.zip
121. واجهة برمجة التطبيقات USB Host API: http://developer.android.com/guide/topics/connectivity/usb/host.html
122. سماعة رأس سلكية: http://source.android.com/docs/core/interaction/accessories/headset/plug-headset-spec
123- مكوّنات الملف الشخصي للطاقة: http://source.android.com/docs/core/power/values
124. Batterystats: https://developer.android.com/tools/dumpsys#battery
125. ملخّص استخدام الطاقة: http://developer.android.com/reference/android/content/Intent.html#ACTION_POWER_USAGE_SUMMARY
126. مرجع أمان Android وأذوناته: http://developer.android.com/guide/topics/security/permissions.html
127. مرجع UserManager: http://developer.android.com/reference/android/os/UserManager.html
128. مرجع وحدة التخزين الخارجية: http://source.android.com/docs/core/storage/traditional
129. واجهات برمجة التطبيقات الخاصة بمساحة التخزين الخارجية: http://developer.android.com/reference/android/os/Environment.html
130. الرمز القصير للرسائل القصيرة: http://en.wikipedia.org/wiki/Short_code
131. الإبلاغ عن شاشة القفل الآمنة: http://developer.android.com/reference/android/app/KeyguardManager.html#isDeviceSecure()
132. تشفير Android المفتوح المصدر: http://source.android.com/docs/security/features/encryption
133. نظام "متجر مفاتيح Android": https://developer.android.com/training/articles/keystore.html
134. KeyChain API: https://developer.android.com/reference/android/security/KeyChain.html
135. Keystore API: https://developer.android.com/reference/java/security/KeyStore.html
136. واجهة HAL الخاصة بـ Gatekeeper: http://source.android.com/docs/security/features/authentication/gatekeeper
137. نظرة عامة على "برنامج التوافق مع Android": http://source.android.com/docs/compatibility
138. فئة SystemUpdatePolicy: http://developer.android.com/reference/android/app/admin/SystemUpdatePolicy.html
139. منتدى التوافق مع Android: https://groups.google.com/forum/#!forum/android-compatibility
140. التعامل مع روابط التطبيقات: https://developer.android.com/training/app-links/index.html
141. روابط مواد العرض الرقمية من Google: https://developers.google.com/digital-asset-links
يتم الحصول على العديد من هذه الموارد مباشرةً أو بشكل غير مباشر من حزمة تطوير البرامج (SDK) لنظام Android، وستكون متطابقة من الناحية الوظيفية مع المعلومات الواردة في مستندات حزمة SDK هذه. في أيّ حالات يتعارض فيها تعريف التوافق أو مجموعة اختبار التوافق مع مستندات حزمة SDK، تُعتبر مستندات حزمة SDK مرجعية. إنّ أي تفاصيل فنية مقدَّمة في المراجع المضمّنة أعلاه تُعدّ جزءًا من تعريف التوافق هذا.