تعريف التوافق مع Android 5.1

جدول المحتويات

‫1. المقدمة

2. أنواع الأجهزة

2.1 إعدادات الجهاز

3. البرامج

3.1. توافق واجهات برمجة التطبيقات المُدارة

3.2. التوافق مع واجهة برمجة التطبيقات

3.2.1. الأذونات

3.2.2. مَعلمات الإنشاء

3.2.3. توافق النية

3.2.3.1. نوايا التطبيقات الأساسية

3.2.3.2. إلغاء النية

3.2.3.3. مساحات أسماء الأهداف

3.2.3.4. نوايا البث

3.2.3.5. إعدادات التطبيقات التلقائية

3.3. التوافق مع واجهات برمجة التطبيقات الأصلية

3.3.1. واجهات التطبيق الثنائية

3.3.2. توافق الرمز الأصلي لمعالج ARM‏ 32 بت

3.4. التوافق مع الويب

3.4.1. توافق WebView

3.4.2. توافق المتصفّح

3.5. التوافق السلوكي لواجهات برمجة التطبيقات

3.6. مساحات أسماء واجهة برمجة التطبيقات

3.7. التوافق مع بيئة التشغيل

3.8. توافق واجهة المستخدم

3.8.1. مشغّل التطبيقات (الشاشة الرئيسية)

3.8.2. التطبيقات المصغّرة

3.8.3. الإشعارات

3.8.4. البحث

3.8.5. رسائل Toast

3.8.6. المظاهر

3.8.7. الخلفيات المتحركة

3.8.8. التبديل بين الأنشطة

3.8.9. إدارة الإدخال

3.8.10. وحدة تحكّم الوسائط على شاشة القفل

3.8.11. Dreams

3.8.12. الموقع الجغرافي

3.8.13. الرموز الموحّدة والخط

7.1.2. مقاييس الشبكة الإعلانية

7.1.3. اتجاه الشاشة

7.1.4. ميزة "تسريع الرسومات الثنائية والثلاثية الأبعاد"

7.1.5. وضع التوافق مع التطبيقات القديمة

7.1.6. تكنولوجيا الشاشة

7.1.7. الشاشات الثانوية

7.2. أجهزة الإدخال

7.2.1. لوحة المفاتيح

7.2.2. التنقّل بدون لمس الشاشة

7.2.3. مفاتيح التنقّل

7.2.4. الإدخال باللمس

7.2.5. الإدخال باللمس المزيّف

7.2.6. إتاحة استخدام أجهزة التحكّم في الألعاب

7.2.6.1. عمليات ربط الأزرار

7.2.7. جهاز التحكّم عن بُعد

7.3. أجهزة الاستشعار

7.3.1. مقياس التسارع

7.3.2. مقياس المغناطيسية

7.3.3. نظام تحديد المواقع العالمي (GPS)

7.3.4. الجيروسكوب

7.3.5. مقياس الضغط الجوي

7.3.6. ميزان الحرارة

7.3.7. مقياس الإضاءة

7.3.8. أداة استشعار التقارب

7.4. إمكانية الوصول إلى البيانات

7.4.1. الاتصالات الهاتفية

7.4.2. معيار IEEE 802.11 (لشبكات Wi-Fi)

7.4.2.1. اتصال Wi-Fi المباشر

7.4.2.2. إعداد رابط مباشر عبر نفق Wi-Fi

7.4.3. البلوتوث

7.4.4. تقنية الاتصال القصير المدى

7.4.5. الحد الأدنى لإمكانية الاتصال بالشبكة

7.4.6. إعدادات المزامنة

7.5. الكاميرات

7.5.1. الكاميرا الخلفية

7.5.2. الكاميرا الأمامية

7.5.3. الكاميرا الخارجية

7.5.4. سلوك Camera API

‫1. مقدّمة

يسرد هذا المستند المتطلبات التي يجب استيفاؤها لكي تكون الأجهزة متوافقة مع Android 5.1.

يتم استخدام الكلمات "يجب" و"يجب عدم" و"مطلوب" و"يجب" و"يجب عدم" و"يجب" و"يجب عدم" و"مُستحسَن" و"يجوز" و"اختياري" وفقًا لمعيار مجموعة مهندسي شبكة الإنترنت (IETF) المحدّد في RFC2119 [الموارد، 1].

وفقًا لما هو مُستخدَم في هذا المستند، يشير "منفذ الجهاز" أو "منفذ" إلى شخص أو مؤسسة تطوّر حلًّا للأجهزة/البرامج يعمل بالإصدار 5.1 من نظام التشغيل Android. "تنفيذ الجهاز" أو "التنفيذ هو حلّ الأجهزة/البرامج" الذي تم تطويره.

لكي يتم اعتبار الأجهزة متوافقة مع Android 5.1، يجب أن تستوفي عمليات تنفيذ الأجهزة المتطلبات الواردة في تعريف التوافق هذا، بما في ذلك أي مستندات تم دمجها من خلال الإشارة إليها.

إذا كان هذا التعريف أو اختبارات البرامج الموضّحة في الفقرة 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 مع ‎ uiMode = UI_MODE_TYPE_CAR [Resources, 111].

يجب أن تستوفي جميع عمليات تنفيذ أجهزة Android التي لا تندرج ضمن أي من أنواع الأجهزة المذكورة أعلاه جميع المتطلبات الواردة في هذا المستند لتكون متوافقة مع الإصدار 5.1 من 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 [الموارد، 5] أو أي واجهة برمجة تطبيقات مُزيّنة بعلامة "‎@SystemApi" في رمز المصدر المرتبط بنظام التشغيل Android.

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

يسمح تعريف التوافق هذا ببعض أنواع الأجهزة التي يتضمّن Android واجهات برمجة تطبيقات يمكن أن يتم حذفها من خلال عمليات تنفيذ الأجهزة. وفي هذه الحالات، يجب أن تظل واجهات برمجة التطبيقات متوفرة وأن تعمل بطريقة معقولة. اطّلِع على القسم 7 لمعرفة المتطلبات المحدّدة لهذا السيناريو.

3.2. التوافق مع واجهة برمجة التطبيقات

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

3.2.1. الأذونات

على جهات تنفيذ الأجهزة توفير جميع الثوابت المتعلّقة بالأذونات وفرضها كما هو موضح في صفحة مرجع الأذونات [الموارد، 6]. يُرجى العلم أنّ القسم 9 يسرد متطلبات إضافية متعلقة بنموذج أمان Android.

3.2.2. إنشاء المَعلمات

تتضمّن واجهات برمجة تطبيقات Android عددًا من الثوابت في فئة android.os.Build [Resources, 7] التي تهدف إلى وصف الجهاز الحالي. لتوفير قيم متّسقة ومفيدة في جميع عمليات تنفيذ الأجهزة، يتضمّن الجدول التالي قيودًا إضافية على تنسيقات هذه القيم التي يجب أن تمتثل لها عمليات تنفيذ الأجهزة.

المَعلمة التفاصيل
VERSION.RELEASE إصدار نظام Android الذي يتم تنفيذه حاليًا بتنسيق يمكن للمستخدم قراءته يجب أن يحتوي هذا الحقل على إحدى قيم السلاسل المحدّدة في [الموارد، 8].
VERSION.SDK إصدار نظام Android الذي يتم تنفيذه حاليًا بتنسيق يمكن لرمز التطبيق التابع لجهة خارجية الوصول إليه بالنسبة إلى Android 5.1، يجب أن يحتوي هذا الحقل على القيمة الصحيحة 22.
VERSION.SDK_INT إصدار نظام Android الذي يتم تنفيذه حاليًا بتنسيق يمكن لرمز التطبيق التابع لجهة خارجية الوصول إليه بالنسبة إلى Android 5.1، يجب أن يحتوي هذا الحقل على القيمة الصحيحة 22.
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)/$(DEVICE):$(VERSION.RELEASE)/$(ID)/$(VERSION.INCREMENTAL):$(TYPE)/$(TAGS)

على سبيل المثال: acme/myproduct/mydevice:5.1/LMYXX/3359:userdebug/test-keys

يجب ألّا يتضمّن المرجع البصمة أحرف مسافات بيضاء. إذا كانت الحقول الأخرى المضمّنة في النموذج أعلاه تحتوي على أحرف مسافات بيضاء، يجب استبدالها في بصمة التصميم بحرف آخر، مثل علامة الشرطة المائلة تحتية ("_"). يجب أن تكون قيمة هذا الحقل قابلة للترميز بترميز 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.
المستخدم اسم أو رقم تعريف المستخدم (أو المستخدم المبرمَج) الذي أنشأ الإصدار ما مِن متطلبات بشأن التنسيق المحدّد لهذا الحقل، باستثناء أنّه يجب ألّا يكون فارغًا أو سلسلة فارغة ("").

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 بهذا تلقائيًا، ويجب ألا يربط مورّدو الأجهزة امتيازات خاصة باستخدام تطبيقات النظام لنماذج النية هذه، أو يمنعوا التطبيقات التابعة لجهات خارجية من الربط بهذه نماذج والتحكّم فيها. ويشمل هذا الحظر على وجه التحديد، على سبيل المثال لا الحصر، إيقاف واجهة مستخدم "أداة الاختيار" التي تسمح للمستخدم بالاختيار بين تطبيقات متعددة تعالج جميعها نمط الطلب نفسه.

ومع ذلك، قد تقدّم عمليات تنفيذ الأجهزة أنشطة تلقائية لأنماط معيّنة لعناوين URL (مثل http://play.google.com) إذا كان النشاط التلقائي يوفّر فلترًا أكثر تحديدًا لعنوان URL للبيانات. على سبيل المثال، يكون فلتر الأهداف الذي يحدِّد معرّف الموارد المنتظم للبيانات "http://www.android.com" أكثر تحديدًا من فلتر المتصفّح لـ "http://". ويجب أن توفّر عمليات تنفيذ الأجهزة واجهة مستخدم للمستخدمين كي يتمكّنوا من تعديل النشاط التلقائي للأهداف.

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, 9]
  • يجب أن يحترم التطبيق النية 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 الموثَّقة فقط في أحدث إصدار من Android NDK، "دليل مطوّري برامج NDK | إدارة ABI" في الدليل docs/ .
  • يجب إنشاؤها باستخدام رمز المصدر وملفات الرأس المتاحة في المشروع المصدر لنظام التشغيل 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, 11] على النحو المحدّد في إصدار NDK android-21. على الرغم من أنّه يجب توفُّر كل العلامات، يجب تنفيذ الدوالّ المقابلة لإصدارات OpenGL ES والإضافات المتوافقة مع الجهاز فقط.

إنّ توافق الرموز البرمجية الأصلية يشكّل تحديًا. لهذا السبب، ننصح بشدة جهات تنفيذ الأجهزة باستخدام تطبيقات المكتبات المُدرَجة أعلاه من المصدر الأساسي لمشروع 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‏ [Resources, 12]. بما أنّه من غير الممكن تطوير مجموعة اختبارات شاملة لنظام عرض الويب، على مطوّري الأجهزة استخدام الإصدار المحدّد من Chromium في تنفيذ WebView. وعلى وجه التحديد:

  • يجب أن تستند عمليات تنفيذ android.webkit.WebView على الجهاز إلى الإصدار Chromium من مشروع Android Open Source Project (مشروع Android المفتوح المصدر) لنظام التشغيل Android 5.1. يتضمّن هذا الإصدار مجموعة محدّدة من الإصلاحات المتعلقة بالوظائف والأمان في WebView [الموارد، 13].
  • يجب أن تكون سلسلة وكيل المستخدم التي يُبلغ عنها WebView بالتنسيق التالي:

    Mozilla/5.0 (Linux; Android $(VERSION); $(MODEL) Build/$(BUILD)$(WEBVIEW)) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 $(CHROMIUM_VER) Mobile Safari/537.36

    • يجب أن تكون قيمة السلسلة $(VERSION) هي نفسها قيمة android.os.Build.VERSION.RELEASE.
    • يجوز حذف سلسلة $(WEBVIEW)، ولكن في حال تضمينها، يجب أن تكون "; wv" لتحديد أنّ هذا عنصر webview.
    • يجب أن تكون قيمة السلسلة $(MODEL) مطابقة لقيمة android.os.Build.MODEL.
    • يجب أن تكون قيمة السلسلة $(BUILD) هي نفسها قيمة android.os.Build.ID.
    • يجب أن تكون قيمة السلسلة $(CHROMIUM_VER) هي إصدار Chromium في المشروع المفتوح المصدر لنظام التشغيل Android.
    • قد تحذف عمليات تنفيذ الأجهزة كلمة Mobile في سلسلة وكيل المستخدم.

يجب أن يتضمّن مكوّن WebView إتاحة أكبر عدد ممكن من ميزات HTML5، وإذا كان يتيح الميزة، يجب أن يكون متوافقًا مع مواصفات HTML5 [الموارد، 14].

3.4.2. توافق المتصفّح

يجوز أن تحذف عمليات التنفيذ في Android Television وWatch وAndroid Automotive تطبيق المتصفّح، ولكن يجب أن تكون متوافقة مع أنماط الأهداف العامة كما هو موضّح في الفقرة 3.2.3.1. يجب أن تتضمّن جميع الأنواع الأخرى من عمليات تنفيذ الأجهزة تطبيق متصفّح مستقلًا لأجل تصفّح الويب العام للمستخدمين.

قد يستند المتصفّح المستقل إلى تكنولوجيا متصفّح أخرى غير WebKit. ومع ذلك، حتى في حال استخدام تطبيق متصفّح بديل، يجب أن يستند العنصر android.webkit.WebView المقدَّم للتطبيقات التابعة لجهات خارجية إلى WebKit، كما هو موضّح في الفقرة 3.4.1.

يجوز لعمليات التنفيذ إرسال سلسلة وكيل مستخدم مخصّصة في تطبيق المتصفّح المستقل.

يجب أن يتضمّن تطبيق المتصفّح المستقل (سواء كان مستندًا إلى تطبيق المتصفّح WebKit المتوافق مع الإصدارات السابقة أو بديلاً تابعًا لجهة خارجية) ميزات تتيح استخدام أكبر عدد ممكن من ميزات HTML5 [Resources, 14]. على الأقل، يجب أن تتوافق عمليات تنفيذ الأجهزة مع كل من منصّات برمجة التطبيقات التالية المرتبطة بـ HTML5:

بالإضافة إلى ذلك، يجب أن تتيح عمليات تنفيذ الأجهزة استخدام واجهة برمجة التطبيقات webstorage API‏ (HTML5/W3C) [الموارد، 18]، ويجب أن تتيح استخدام واجهة برمجة التطبيقات IndexedDB API‏ (HTML5/W3C) [الموارد، 19]. يُرجى العلم أنّه مع انتقال الهيئات المسؤولة عن معايير تطوير الويب إلى تفضيل استخدام 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 كي لا تتأثّر سوى التطبيقات التي تستخدمها صراحةً (من خلال آلية <uses-library>) بزيادة استخدام الذاكرة لهذه واجهات برمجة التطبيقات.

إذا اقترح أحد مطوّري الأجهزة تحسين إحدى مساحات أسماء الحِزم المذكورة أعلاه، (مثلاً، عن طريق إضافة وظيفة جديدة مفيدة إلى واجهة برمجة تطبيقات حالية أو إضافة واجهة برمجة تطبيقات جديدة)، على المطوّر الانتقال إلى source.android.com وبدء عملية المساهمة بالتغييرات والرموز البرمجية وفقًا لاطلاعه على المعلومات الواردة في ذلك الموقع الإلكتروني.

يُرجى العِلم أنّ القيود المذكورة أعلاه تتوافق مع القواعد العادية لتسمية واجهة برمجة التطبيقات في لغة Java البرمجية، ويهدف هذا القسم ببساطة إلى تعزيز تلك القواعد وجعلها ملزمة من خلال تضمينها في تعريف التوافق هذا.

3.7 التوافق مع بيئة التشغيل

يجب أن تتوافق عمليات تنفيذ التطبيقات على الأجهزة مع تنسيق Dalvik Executable (DEX) الكامل و مواصفات ودلالات رمز Dalvik الثنائي [Resources, 20]. على مطوّري الأجهزة استخدام ART، وهو التنفيذ المرجعي لتنسيق تنفيذ Dalvik، ونظام إدارة الحِزم المرجعي للتنفيذ.

يجب أن تضبط عمليات تنفيذ الأجهزة أوقات تشغيل Dalvik لتخصيص الذاكرة وفقًا لنظام Android الأساسي، وكما هو محدّد في الجدول التالي. (اطّلِع على الفقرة 7.1.1 للاطّلاع على تعريفات حجم الشاشة وكثافة الشاشة).

يُرجى العِلم أنّ قيم الذاكرة المحدّدة أدناه تُعدّ الحدّ الأدنى للقيم، وقد تخصص عمليات تنفيذ الأجهزة مزيدًا من الذاكرة لكل تطبيق.

تنسيق الشاشة كثافة الشاشة الحد الأدنى لذاكرة التطبيق
صغير/عادي 120 نقطة لكل بوصة (ldpi) ‫32 ميغابايت
160 نقطة لكل بوصة (mdpi)
‫213 نقطة لكل بوصة (tvdpi) ‫48 ميغابايت
240 نقطة لكل بوصة (دقة عالية)
280 نقطة لكل بوصة (280dpi)
320 نقطة لكل بوصة (xhdpi) ‫80 ميغابايت
400 نقطة لكل بوصة (400dpi) ‫96 ميغابايت
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 ميغابايت
400 نقطة لكل بوصة (400dpi) ‫192 ميغابايت
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 ميغابايت
400 نقطة لكل بوصة (400dpi) ‫288 ميغابايت
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 نوع المكوّن وواجهة برمجة التطبيقات ودورة الحياة المقابلة التي تسمح للتطبيقات بعرض "تطبيق مصغّر" للمستخدم النهائي [الموارد، 21]، وهي ميزة يُنصح بشدة بتوفّرها في عمليات تنفيذ التطبيقات على الأجهزة المحمولة. يجب أن تستوفي عمليات تنفيذ الأجهزة التي تتيح تضمين التطبيقات المصغّرة على الشاشة الرئيسية المتطلبات التالية وأن تقرّ بتوافقها مع ميزة النظام الأساسي android.software.app_widgets.

  • يجب أن تتضمّن مشغّلات التطبيقات على الأجهزة ميزات مدمجة تتيح استخدام التطبيقات المصغّرة، وأن توفّر ميزات واجهة مستخدم تتيح إضافة التطبيقات المصغّرة وضبطها وعرضها وإزالتها مباشرةً داخل مشغّل التطبيقات.
  • يجب أن تكون عمليات تنفيذ الأجهزة قادرة على عرض التطبيقات المصغّرة التي تبلغ مساحتها 4 x 4 بحجم الشبكة العادي. اطّلِع على إرشادات تصميم التطبيقات المصغّرة في مستندات حزمة تطوير البرامج (SDK) لنظام التشغيل Android [الموارد، 21] لمعرفة التفاصيل.
  • قد تتيح عمليات تنفيذ الأجهزة التي تتضمّن ميزة قفل الشاشة استخدام التطبيقات المصغّرة على شاشة القفل.

3.8.3. الإشعارات

يتضمّن Android واجهات برمجة تطبيقات تتيح للمطوّرين إرسال إشعارات إلى المستخدمين بشأن الأحداث البارزة [الموارد، 22] باستخدام ميزات الجهاز والبرامج.

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

بالإضافة إلى ذلك، يجب أن يعرض التنفيذ بشكل صحيح جميع الموارد (الرموز وملفات الرسوم المتحركة وغيرها) المتوفّرة في واجهات برمجة التطبيقات [Resources, 23]، أو في دليل أنماط رموز شريط الحالة/النظام [Resources, 24]، والذي يتضمّن في حال استخدام جهاز Android Television إمكانية عدم عرض الإشعارات. يجوز لمطوّري الأجهزة توفير تجربة مستخدم بديلة للإشعارات عن تلك التي يوفّرها تنفيذ إشارة مرجعية لنظام Android المفتوح المصدر، ومع ذلك، يجب أن تتوافق أنظمة الإشعارات البديلة مع موارد الإشعارات الحالية، كما هو موضّح أعلاه.

يتيح Android إرسال إشعارات مختلفة، مثل:

  • الإشعارات الغنية: طرق عرض تفاعلية للإشعارات الجارية
  • الإشعارات المنبثقة: يمكن للمستخدمين التفاعل مع "العروض التفاعُلية" أو إغلاقها بدون مغادرة التطبيق الحالي.
  • الإشعارات على شاشة القفل الإشعارات التي تظهر على شاشة القفل مع إمكانية التحكّم بشكل دقيق في مستوى الرؤية

عند عرض هذه الإشعارات، يجب أن تُنفِّذ عمليات التنفيذ على أجهزة Android الإشعارات الغنية والإشعارات المنبثقة بشكل صحيح وأن تتضمّن العنوان/الاسم والرمز والنص كما هو موضّح في واجهات برمجة التطبيقات Android [Resources, 25].

يتضمّن نظام التشغيل Android واجهات برمجة تطبيقات Notification Listener Service API التي تسمح للتطبيقات (بعد أن يسمح المستخدم بذلك صراحةً) بتلقّي نسخة من جميع الإشعارات عند إرسالها أو تعديلها. يجب أن تُرسِل عمليات تنفيذ الأجهزة إعلامات كاملة بشكل صحيح وسريع إلى جميع خدمات الاستماع المثبَّتة والمفعَّلة من قِبل المستخدمين، بما في ذلك أي بيانات وصفية مرفقة بعنصر الإشعار.

يتضمّن نظام التشغيل Android واجهات برمجة تطبيقات [الموارد، 26] تتيح للمطوّرين دمج ميزة البحث في تطبيقاتهم، وعرض بيانات تطبيقاتهم في ميزة البحث الشاملة على النظام. بشكلٍ عام، تتكون هذه الوظيفة من واجهة مستخدم واحدة على مستوى النظام تسمح للمستخدمين بإدخال طلبات البحث وعرض اقتراحات أثناء كتابتهم وعرض النتائج. تسمح واجهات برمجة التطبيقات لنظام التشغيل Android للمطوّرين بإعادة استخدام هذه الواجهة لتوفير ميزة البحث داخل تطبيقاتهم، كما تسمح لهم بتقديم النتائج إلى واجهة مستخدم البحث الشاملة الشائعة.

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

3.8.5. النخب

يمكن للتطبيقات استخدام واجهة برمجة التطبيقات Toast لعرض سلاسل قصيرة غير مشروطة على العميل المنتهي، والتي تختفي بعد فترة زمنية قصيرة [الموارد، 27]. يجب أن تعرِض عمليات تنفيذ الأجهزة إشعارات Toast من التطبيقات للمستخدمين النهائيين بطريقة واضحة جدًا.

3.8.6. المظاهر

يقدّم Android "المظاهر" كآلية للتطبيقات لتطبيق الأنماط على مستوى نشاط أو تطبيق كامل.

يتضمّن Android مجموعة مظاهر "Holo" كمجموعة من الأنماط المحدّدة التي يمكن لمطوّري التطبيقات استخدامها إذا أرادوا مطابقة مظهر ومُحسِّن مظهر Holo كما هو محدّد في حزمة تطوير البرامج (SDK) لنظام التشغيل Android [Resources, 28]. يجب ألا تغيّر عمليات تنفيذ الأجهزة أيًا من سمات مظهر Holo المعروضة للتطبيقات [Resources, 29].

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

يتضمّن Android أيضًا مجموعة مظاهر "تلقائي على الجهاز" كمجموعة من الأنماط المحدّدة التي يمكن لمطوّري التطبيقات استخدامها إذا أرادوا مطابقة مظهر مظهر الجهاز وأسلوبه كما حدّده مُنفِّذ الجهاز. قد تعدِّل عمليات تنفيذ التطبيقات على الأجهزة سمات المظهر التلقائي للجهاز المعروضة للتطبيقات [الموارد، 29].

يتيح نظام التشغيل Android استخدام مظهر متغير جديد مع أشرطة نظام شفافة، ما يسمح لمطوّري التطبيقات بملء المنطقة خلف شريط الحالة وشريط التنقّل بمحتوى تطبيقاتهم. لتوفير تجربة متّسقة للمطوّرين في هذا الإعداد، من المهم الحفاظ على نمط رمز شريط الحالة على مستوى عمليات التنفيذ المختلفة للأجهزة. لذلك، يجب أن تستخدم عمليات تنفيذ أجهزة Android اللون الأبيض لرموز حالة النظام (مثل قوة الإشارة ومستوى البطارية) والإشعارات الصادرة عن النظام، ما لم يشير الرمز إلى حالة مشكلة [الموارد، 29].

3.8.7. خلفيات متحركة

يحدّد Android نوع المكوّن وواجهة برمجة التطبيقات ودورة الحياة المقابلة التي تسمح للتطبيقات بعرض "خلفية حية" واحدة أو أكثر للمستخدم النهائي [الموارد، 31]. الخلفيات الحية هي صور متحركة أو أنماط أو صور مشابهة تتضمّن إمكانات محدودة لإدخال البيانات، ويتم عرضها كخلفية خلف التطبيقات الأخرى.

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

يجب أن توفّر عمليات تنفيذ الأجهزة التي يمكنها تشغيل الخلفيات الحية بشكل موثوق كما هو موضّح أعلاه الخلفيات الحية، ويجب أن تُبلغ عند التنفيذ عن علامة ميزة النظام الأساسي android.software.live_wallpaper.

3.8.8. التبديل بين الأنشطة

بما أنّ مفتاح التنقّل في وظائف "التطبيقات المستخدَمة مؤخرًا" اختياري، تكون متطلبات تنفيذ شاشة النظرة العامة اختيارية لأجهزة Android Television وأجهزة Android Watch.

يتضمّن رمز المصدر في Android الأصلي شاشة النظرة العامة [Resources, 32]، وهي واجهة مستخدم على مستوى النظام للتبديل بين المهام وعرض الأنشطة والمهام التي تم الوصول إليها مؤخرًا باستخدام صورة مصغّرة لحالة التطبيق الرسومية في اللحظة التي غادر فيها المستخدم التطبيق آخر مرة. القسم 7.2.3: قد تؤدي عمليات تنفيذ التطبيقات على الأجهزة، بما في ذلك مفتاح التنقّل في وظائف التطبيقات الأخيرة كما هو موضّح بالتفصيل في القسم 7.2.3، إلى تغيير الواجهة، ولكن يجب أن تستوفي المتطلبات التالية:

  • يجب عرض المحتوى الأخير المرتبط كمجموعة تتحرك معًا.
  • يجب أن تتيح عرض 20 نشاطًا على الأقل.
  • يجب أن يعرض عنوان 4 أنشطة على الأقل في المرة الواحدة.
  • من المفترض أن يتم عرض لون التمييز والرمز وعنوان الشاشة في قسم "العناصر الأخيرة".
  • يجب تنفيذ سلوك تثبيت الشاشة [الموارد، 33] وتزويد المستخدم بقائمة إعدادات لتفعيل الميزة أو إيقافها.
  • يجب أن تعرض عنصر إتاحة إغلاق ("x")، ولكن قد يتم تأخير ذلك إلى أن يتفاعل المستخدِم مع الشاشات.

ننصحك بشدة باستخدام واجهة مستخدم Android الأحدث (أو واجهة مشابهة تستند إلى الصور المصغّرة) لشاشة النظرة العامة في عمليات التنفيذ على الأجهزة.

3.8.9. إدارة الإدخال

يتيح نظام التشغيل Android إدارة الإدخال واستخدام تطبيقات تابعة لجهات خارجية لتعديل طرق الإدخال [الموارد، 34]. يجب أن تعلن عمليات تنفيذ الأجهزة التي تسمح للمستخدمين باستخدام طرق إدخال تابعة لجهات خارجية على الجهاز عن ميزة النظام الأساسي 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, 35]. يجب أن تعرض عمليات تنفيذ الأجهزة التي تتيح شاشة القفل، ما لم تكن عملية تنفيذ Android Automotive أو Watch ، إشعارات شاشة القفل، بما في ذلك نموذج إشعار الوسائط.

3.8.11. أحلام

يتيح نظام التشغيل Android استخدام شاشات توقف تفاعلية تُعرف باسم "الأحلام" [Resources, 36]. تتيح ميزة "الأحلام" للمستخدمين التفاعل مع التطبيقات عندما يكون الجهاز المتصل بمصدر طاقة في وضع السكون أو في وضع الإرساء في قاعدة شحن مكتبية. يجوز لأجهزة Android Watch استخدام ميزة "الأحلام"، ولكن يجب أن تتضمّن أنواع الأجهزة الأخرى التي تستخدم الميزة دعمًا لها وأن توفّر خيارًا للإعدادات يتيح للمستخدمين ضبط الميزة استجابةً لوحدة android.settings.DREAM_SETTINGS intent.

3.8.12. الموقع الجغرافي

عندما يكون الجهاز مزوّدًا بمستشعر أجهزة (مثل نظام تحديد المواقع العالمي (GPS)) قادر على تقديم إحداثيات الموقع الجغرافي، يجب عرض أوضاع الموقع الجغرافي في قائمة "الموقع الجغرافي" ضمن "الإعدادات" [الموارد، 37].

3.8.13. يونيكود والخط

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

يتيح نظام التشغيل 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 [الموارد، 39]. يجب أن توفّر عمليات تنفيذ الأجهزة تنفيذًا لفئة DevicePolicyManager [Resources, 40]. يجب أن تتيح عمليات تنفيذ الأجهزة التي تتضمّن ميزة قفل الشاشة المستندة إلى رقم التعريف الشخصي (رقمي) أو كلمة المرور (أبجدية رقمية) استخدام المجموعة الكاملة من سياسات إدارة الأجهزة المحدّدة في مستندات حزمة تطوير البرامج (SDK) لنظام التشغيل Android [المراجع، 39] والإبلاغ عن ميزة النظام الأساسي android.software.device_admin.

قد تتضمّن عمليات تنفيذ الأجهزة تطبيقًا مثبّتًا مسبقًا يؤدي وظائف إدارة الجهاز، ولكن يجب عدم ضبط هذا التطبيق تلقائيًا على تطبيق "مالك الجهاز" التلقائي [الموارد، 41].

3.10. تسهيل الاستخدام

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

تشمل عمليات تنفيذ الأجهزة المتطلبات التالية:

  • يجب أن توفّر عمليات تنفيذ Android Automotive تنفيذًا لإطار العمل المتعلّق بتسهيل الاستخدام في Android يكون متوافقًا مع تنفيذ Android التلقائي.
  • يجب أن تقدّم عمليات تنفيذ الأجهزة (باستثناء Android Automotive) تنفيذًا لإطار عمل تسهيل الاستخدام في Android متوافقًا مع تنفيذ Android التلقائي.
  • يجب أن تتيح عمليات تنفيذ الأجهزة (باستثناء Android Automotive) عمليات تنفيذ خدمات تسهيل الاستخدام التابعة لجهات خارجية من خلال واجهتَي برمجة التطبيقات android.accessibilityservice API [الموارد، 43]
  • يجب أن تُنشئ عمليات تنفيذ التطبيق على الأجهزة (باستثناء Android Automotive) أحداث AccessibilityEvents وأن تُرسِل هذه الأحداث إلى جميع عمليات تنفيذ AccessibilityService المسجَّلة بطريقة تتوافق مع عملية تنفيذ Android التلقائية.
  • يجب أن توفّر عمليات تنفيذ الأجهزة (أجهزة Android Automotive وAndroid Watch التي لا تتضمّن مخرجًا صوتيًا) آلية يمكن للمستخدم الوصول إليها لتفعيل خدمات تسهيل الاستخدام وإيقافها، ويجب أن تعرض هذه الواجهة استجابةً لطلب android.provider.Settings.ACTION_ACCESSIBILITY_SETTINGS.

بالإضافة إلى ذلك، يجب أن توفّر عمليات تنفيذ الأجهزة تنفيذًا للخدمة لتسهيل الاستخدام على الجهاز، ويجب أن توفّر آلية للمستخدمين لتفعيل خدمة تسهيل الاستخدام أثناء إعداد الجهاز. يتوفّر تنفيذ مفتوح المصدر لإحدى خدمات تسهيل الاستخدام من خلال مشروع Eyes Free [الموارد، 44].

3.11. تحويل النص إلى كلام

يتضمّن Android واجهات برمجة تطبيقات تتيح للتطبيقات الاستفادة من خدمات تحويل النص إلى كلام (TTS) وتسمح لمقدّمي الخدمات بتوفير عمليات تنفيذ لخدمات تحويل النص إلى كلام [الموارد، 45]. يجب أن تستوفي عمليات تنفيذ الأجهزة التي تُبلغ عن الميزة android.hardware.audio.output هذه المتطلبات المتعلقة بإطار عمل تحويل النص إلى كلام (TTS) في Android.

عمليات تنفيذ Android Automotive:

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

جميع عمليات تنفيذ الأجهزة الأخرى:

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

3.12. إطار عمل إدخال التلفزيون

يعمل إطار عمل إدخال Android Television (TIF) على تبسيط عملية إرسال المحتوى المباشر إلى أجهزة Android Television. توفّر واجهة TIF واجهة برمجة تطبيقات عادية لإنشاء وحدات إدخال تتحكّم في أجهزة Android Television. يجب أن تتوافق عمليات تنفيذ أجهزة Android TV مع إطار عمل إدخال التلفزيون [الموارد، 46].

يجب أن تحدّد عمليات تنفيذ الأجهزة التي تتيح استخدام TIF ميزة المنصة android.software.live_tv.

‫4- توافق حِزم التطبيقات

يجب أن تعمل عمليات تنفيذ الأجهزة على تثبيت ملفات Android بتنسيق ‎.apk وتشغيلها على النحو الذي تم إنشاؤه بواسطة أداة aapt المضمّنة في حزمة تطوير البرامج (SDK) الرسمية لنظام التشغيل Android‏ [المراجع، 47].

يجب ألا تؤدي عمليات تنفيذ الأجهزة إلى توسيع نطاق تنسيقات ملف ‎ .apk [Resources, 48] أو ملف بيان Android [Resources, 49] أو ملف رمز Dalvik البرمجي [Resources, 20] أو ملف رمز RenderScript البرمجي بطريقة تمنع تثبيت تلك الملفات وتشغيلها بشكل صحيح على الأجهزة المتوافقة الأخرى.

5. توافق الوسائط المتعددة

5.1. برامج ترميز الوسائط

يجب أن تتوافق عمليات تنفيذ الأجهزة مع تنسيقات الوسائط الأساسية المحدّدة في مستندات IDE لنظام التشغيل Android [الموارد، 50] باستثناء الحالات التي يُسمح فيها صراحةً بذلك في هذا المستند. على وجه التحديد، يجب أن تتوافق تطبيقات الأجهزة مع تنسيقات الوسائط وبرامج الترميز وفك الترميز وأنواع الملفات وتنسيقات الحاويات المحدّدة في الجداول أدناه والتي يتم الإبلاغ عنها من خلال MediaCodecList [Resources,112]. يجب أن تكون عمليات تنفيذ الأجهزة قادرة أيضًا على فك ترميز جميع الملفات الشخصية التي تم الإبلاغ عنها في CamcorderProfile [الموارد، 113]. يتم توفير كل برامج الترميز هذه كبرامج تنفيذ في عملية التنفيذ المفضّلة لنظام Android من "المشروع المفتوح المصدر لنظام Android".

يُرجى العِلم أنّ Google أو تحالف Open Handset Alliance لا يقدّمان أي تأكيد بأنّ برامج الترميز هذه خالية من براءات اختراع تابعة لجهات خارجية. ننصحك بأن يحصل المستخدمون الذين يريدون استخدام رمز المصدر هذا في منتجات الأجهزة أو البرامج على تراخيص براءات اختراع من مالكي براءات الاختراع المعنيين، وذلك لأنّ عمليات تنفيذ هذا الرمز، بما في ذلك في البرامج المفتوحة المصدر أو البرامج المشترَكة.

5.1.1. برامج ترميز الصوت

التنسيق/برنامج الترميز برنامج الترميز برنامج فك الترميز التفاصيل أنواع الملفات/تنسيقات الحاويات المتوافقة
الملف الشخصي لبرنامج ترميز AAC في MPEG-4

‫(AAC LC)

مطلوب1 مطلوب إتاحة المحتوى الصوتي الأحادي/الإستيريو/5.0/5.12 بمعدّلات بيانات في الملف الصوتي العادية من 8 إلى 48 كيلوهرتز
  • 3GPP (‎.3gp)
  • ‫MPEG-4 (‎.mp4 و‎.m4a)
  • ملفّات AAC غير المُعدَّلة بتنسيق ADTS (بامتداد ‎.aac، يمكن فك ترميزها في الإصدار 3.1 من نظام التشغيل Android والإصدارات الأحدث، ويمكن تشفيرها في الإصدار 4.0 من نظام التشغيل Android والإصدارات الأحدث، ولا يمكن استخدام ملفّات ADIF)
  • ‫MPEG-TS (بتنسيق ‎.ts، لا يمكن تقديمه أو ترجيعه، Android 3.0 والإصدارات الأحدث)
الملف الشخصي 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
  • النوع 0 و1 (‎.mid و‎.xmf و‎.mxmf)
  • RTTTL/RTX ‏(‎.rtttl, .rtx)
  • OTA (‎.ota)
  • iMelody ‏(‎.imy)
Vorbis مطلوب
  • Ogg (‎.ogg)
  • Matroska (‎.mkv, Android 4.0 والإصدارات الأحدث)
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. برامج ترميز الفيديو

تكون برامج ترميز الفيديو اختيارية لعمليات التنفيذ على أجهزة Android Watch.

التنسيق/برنامج الترميز برنامج الترميز برنامج فك الترميز التفاصيل أنواع الملفات/
تنسيقات الحاويات المتوافقة
‫H.263 مطلوب1 مطلوب2
  • 3GPP (‎.3gp)
  • ‫MPEG-4 (‎.mp4)
‫H.264 AVC مطلوب2 مطلوب2 راجِع الفقرة 5.2 و5.3 للاطّلاع على التفاصيل.
  • 3GPP (‎.3gp)
  • ‫MPEG-4 (‎.mp4)
  • ‫MPEG-TS (بتنسيق ‎.ts، صوت بترميز AAC فقط، لا يمكن تقديمه أو ترجيعه، Android 3.0 والإصدارات الأحدث)
‫H.265 HEVC مطلوب5 راجِع الفقرة 5.3 لمعرفة التفاصيل. ‫MPEG-4 (‎.mp4)
MPEG-4 SP مطلوب2 3GPP (‎.3gp)
‫VP83 مطلوب2

(Android 4.3 والإصدارات الأحدث)

مطلوب2

(Android 2.3.3 والإصدارات الأحدث)

راجِع الفقرة 5.2 و5.3 للاطّلاع على التفاصيل.
  • ‫WebM ‏(‎.webm) [المَراجع، 110
  • Matroska (‎.mkv, Android 4.0 والإصدارات الأحدث)4
‫VP9 مطلوب2
(Android 4.4 والإصدارات الأحدث)
راجِع الفقرة 5.3 لمعرفة التفاصيل.
  • ‫WebM (‎.webm) [Resources, 110]
  • Matroska (‎.mkv, Android 4.0 والإصدارات الأحدث)4

1 مطلوب لعمليات تنفيذ الأجهزة التي تتضمّن أجهزة الكاميرا وتحدِّد android.hardware.camera أو android.hardware.camera.front.

2 مطلوب لعمليات تنفيذ الأجهزة باستثناء أجهزة Android Watch.

3 للحصول على جودة مقبولة لخدمات بث الفيديو على الويب ومكالمات الفيديو، يجب أن تستخدم عمليات تنفيذ الأجهزة ترميز VP8 للأجهزة الذي يستوفي المتطلبات الواردة في [الموارد، 51].

4 يجب أن تتيح عمليات تنفيذ الأجهزة كتابة ملفات Matroska WebM.

‫5 يُنصح بشدة باستخدامها على نظام التشغيل Android Automotive، وهي اختيارية على ساعة Android، ومطلوبة على جميع أنواع الأجهزة الأخرى.

5.2. ترميز الفيديو

تكون برامج ترميز الفيديو اختيارية لعمليات التنفيذ على أجهزة Android Watch.

يجب أن تتيح عمليات تنفيذ أجهزة 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.

يجب أن تتيح عمليات تنفيذ الأجهزة إمكانية التبديل الديناميكي لدقة الفيديو ضمن البث نفسه لجميع برامج ترميز VP8 وVP9 وH.264 وH.265 المتاحة للمطوّرين من خلال واجهات برمجة التطبيقات العادية لنظام التشغيل Android.

يجب أن تكون عمليات تنفيذ أجهزة Android التي تتضمّن برامج ترميز H.264 متوافقة مع المستوى 3 من ملف Baseline الشخصية والملفات الشخصية التالية لفك ترميز الفيديوهات بدقة عادية، ويجب أن تكون متوافقة أيضًا مع ملفات فك ترميز الفيديوهات بدقة عالية. يجب أن تتوافق أجهزة Android Television مع High Profile المستوى 4.2 وملف ترميز/فك ترميز HD 1080p.

الدقة العادية (جودة منخفضة) الدقة العادية (جودة عالية) دقة عالية 720p1 دقة عالية 1080p1
دقة الفيديو ‫320 × 240 بكسل ‫720 × 480 بكسل ‫1280 × 720 بكسل ‫‎1920 × 1080 بكسل
عدد اللقطات في الثانية للفيديو 30 إطارًا في الثانية 30 إطارًا في الثانية ‫30 لقطة في الثانية / 60 لقطة في الثانية2 ‫30 لقطة في الثانية / 60 لقطة في الثانية2
معدّل نقل بيانات الفيديو 800 كيلوبت في الثانية ‫2 ميغابت في الثانية ‫8 ميغابت في الثانية 20 ميغابت في الثانية

1 مطلوب لعمليات تنفيذ أجهزة Android Television، ولكن لأنواع الأجهزة الأخرى فقط عندما تكون متوافقة مع الأجهزة.

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 مطلوب لعمليات تنفيذ أجهزة Android Television، ولكن لأنواع الأجهزة الأخرى فقط عندما تكون متوافقة مع الأجهزة.

2 مطلوب لعمليات تنفيذ أجهزة Android Television.

عند استخدام أجهزة Android التي تتيح ترميز VP9 كما هو موضّح في الفقرة 5.1.3، يجب أن تتيح هذه الأجهزة الملفات الشخصية التالية لفك ترميز الفيديوهات بدقة عادية، ويجب أن تتيح ملفّات فك ترميز الفيديوهات بدقة عالية. ننصح بشدة بأن تكون أجهزة Android Television متوافقة مع ملف تعريف فك ترميز الفيديوهات بدقة عالية 1080p، ويجب أن تكون متوافقة مع ملف تعريف فك ترميز الفيديوهات بدقة فائقة. عندما يكون الملف الشخصي لفك ترميز الفيديو بدقة فائقة متوافقًا، يجب أن يكون متوافقًا أيضًا مع عمق الألوان الذي يبلغ 8 بت.

الدقة العادية (جودة منخفضة) الدقة العادية (جودة عالية) دقة عالية 720p 1 دقة عالية 1080p 2 دقة فائقة 2
دقة الفيديو ‫320 × 180 بكسل ‫640 × 360 بكسل ‫1280 × 720 بكسل ‫‎1920 × 1080 بكسل ‎3840 × 2160 بكسل
عدد اللقطات في الثانية للفيديو 30 إطارًا في الثانية 30 إطارًا في الثانية 30 إطارًا في الثانية 30 إطارًا في الثانية 30 إطارًا في الثانية
معدّل نقل بيانات الفيديو 600 كيلوبت في الثانية 1.6 ميغابت في الثانية ‫4 ميغابت في الثانية ‫10 ميغابت في الثانية 20 ميغابت في الثانية

1 مطلوب لعمليات تنفيذ أجهزة Android Television، ولكن لأنواع الأجهزة الأخرى فقط عندما تكون متوافقة مع الأجهزة.

2 يُنصح بشدة بتنفيذ هذا الإجراء على أجهزة Android Television عندما يكون متوافقًا مع الأجهزة.

عند استخدام أجهزة Android التي تتيح برنامج ترميز H.265 كما هو موضّح في الفقرة 5.1.3، يجب أن تتيح هذه الأجهزة المستوى 3 من الفئة الرئيسية لملف التعريف الرئيسي وملفات التعريف التالية لفك ترميز الفيديوهات بدقة عادية، ويجب أن تتيح أيضًا ملفات التعريف لفك ترميز الفيديوهات بدقة عالية. يجب أن تتوافق أجهزة Android التلفاز مع ملف التعريف Main10 Level 5 Main Tier وملف التعريف لفك ترميز المحتوى بدقة فائقة. ننصح بشدة بأن تكون أجهزة Android Television متوافقة مع الملف الشخصي لفك ترميز الفيديوهات بدقة عالية 1080p. إذا كان ملف فك ترميز الفيديو بدقة عالية 1080p متوافقًا، يجب أن يكون متوافقًا مع المستوى الرئيسي لملف فك الترميز 4.1.

الدقة العادية (جودة منخفضة) الدقة العادية (جودة عالية) دقة عالية 720p 1 دقة عالية 1080p 2 دقة فائقة 2
دقة الفيديو ‫352 × 288 بكسل ‫640 × 360 بكسل ‫1280 × 720 بكسل ‫‎1920 × 1080 بكسل ‎3840 × 2160 بكسل
عدد اللقطات في الثانية للفيديو 30 إطارًا في الثانية 30 إطارًا في الثانية 30 إطارًا في الثانية 30 إطارًا في الثانية 30 إطارًا في الثانية
معدّل نقل بيانات الفيديو 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
  • القنوات: صوت استيريو

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 واجهة برمجة تطبيقات للتأثيرات الصوتية لعمليات تنفيذ الأجهزة [الموارد، 52]. عمليات تنفيذ الأجهزة التي تحدّد الميزة 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
  • وقت استجابة الإدخال من البداية مجموع وقت الإدخال المفقود ووقت استجابة الإدخال للإطار الأول، عندما يكون نظام إدخال الصوت في وضع السكون ومطفأً قبل الطلب
  • وقت استجابة إدخال مستمر وقت استجابة الإدخال للإطارات اللاحقة أثناء تسجيل الجهاز للصوت
  • التشويش في إخراج الفيديو غير المشغّل التباين بين القياسات المنفصلة لقيم وقت استجابة الإخراج غير المتوفّر بشكل دائم
  • التشويش في الإدخال غير المُعدّ مسبقًا التباين بين القياسات المنفصلة لقيم وقت استجابة الإدخال على البارد
  • وقت استجابة مستمر للذهاب والعودة مجموع وقت استجابة الإدخال المستمر ووقت استجابة الإخراج المستمر و5 ملي ثانية
  • واجهة برمجة التطبيقات لصفيف ذاكرة التخزين المؤقت لـ 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, 53]. في المقابل، إذا لم تستوفِ عملية تنفيذ الجهاز هذه المتطلبات، يجب عدم الإبلاغ عن توفُّر ميزة الصوت بوقت استجابة منخفض.

يجب أن تستوفي عمليات تنفيذ الأجهزة التي تتضمّن android.hardware.microphone متطلبات إدخال الصوت التالية:

  • وقت استجابة إدخال على البارد يبلغ 100 ملي ثانية أو أقل
  • وقت استجابة إدخال مستمر يبلغ 30 ملي ثانية أو أقل
  • وقت استجابة مستمر لإرسال البيانات واستقبالها يبلغ 50 ملي ثانية أو أقل
  • تقليل الارتعاش في الإدخال غير المُعدّ مسبقًا

5.7. بروتوكولات الشبكة

يجب أن تكون الأجهزة متوافقة مع بروتوكولات شبكة الوسائط لتشغيل الصوت والفيديو، كما هو محدّد في مستندات حزمة تطوير البرامج (SDK) لنظام التشغيل Android‏ [الموارد، 50]. على وجه التحديد، يجب أن تكون الأجهزة متوافقة مع بروتوكولات شبكة الوسائط التالية:

  • بروتوكول RTSP (بروتوكول النقل في الوقت الفعلي وبروتوكول وصف الجلسة)
  • البث التدريجي عبر بروتوكول HTTP(S)
  • مسودة بروتوكول البث المباشر عبر بروتوكول HTTP(S)، الإصدار 3 [المراجع، 54]

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) التي تستوفي هذا المتطلب.

6. توافق أدوات المطوّرين وخياراته

6.1. أدوات مطوّري البرامج

يجب أن تكون عمليات تنفيذ الأجهزة متوافقة مع أدوات مطوّري تطبيقات Android المقدَّمة في حزمة تطوير البرامج (SDK) لنظام التشغيل Android. يجب أن تكون الأجهزة المتوافقة مع Android متوافقة مع ما يلي:

يجب أن تتوافق عمليات تنفيذ الأجهزة مع جميع وظائف adb كما هو موضّح في حزمة تطوير البرامج (SDK) لنظام التشغيل Android، بما في ذلك dumpsys [Resources, 56]. يجب أن يكون برنامج adb الخفي غير مفعَّل تلقائيًا على الجهاز، ويجب أن تتوفّر لدينا آلية يمكن للمستخدم الوصول إليها لتفعيل Android Debug Bridge. إذا كان تنفيذ برمجة أحد الأجهزة يحذف وضع الجهاز الطرفي USB، يجب أن ينفِّذ جسر تصحيح أخطاء Android عبر شبكة المنطقة المحلية (مثل إيثرنت أو 802.11).

يتيح نظام التشغيل Android استخدام أداة adb الآمنة. تفعِّل أداة adb الآمنة أداة adb على المضيفين المعروفين المُعتمَدين. يجب أن تتيح عمليات تنفيذ الأجهزة استخدام adb الآمن.

يجب أن تتيح عمليات تنفيذ الأجهزة جميع ميزات ddms كما هو موضّح في مستندات حزمة تطوير البرامج (SDK) لنظام التشغيل Android. بما أنّ أداة ddms تستخدم adb، من المفترض أن تكون أداة ddms غير مفعّلة تلقائيًا، ولكن يجب أن تكون مفعّلة عندما يفعّل المستخدم أداة Android Debug Bridge، كما هو موضّح أعلاه.

يجب أن تتضمّن عمليات تنفيذ الأجهزة إطار عمل Monkey وأن تتيحه للتطبيقات لاستخدامه.

يجب أن تتيح عمليات التنفيذ على الأجهزة استخدام أداة 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 9 بإصدارَي 32 بت و64 بت.

6.2. خيارات المطوّرين

يتيح نظام التشغيل Android للمطوّرين ضبط الإعدادات المتعلقة بتطوير التطبيقات. يجب أن تلتزم عمليات تنفيذ التطبيقات على الأجهزة بهدف android.settings.APPLICATION_DEVELOPMENT_SETTINGS لعرض الإعدادات المتعلقة بتطوير التطبيقات [Resources, 60]. في الإصدارات الأحدث من Android، يتم إخفاء قائمة "خيارات المطوّرين" تلقائيًا، ويتيح للمستخدمين تفعيلها بعد الضغط سبع مرات على الإعدادات > لمحة عن الجهاز > رقم الإصدار. يجب أن تقدّم عمليات تنفيذ الأجهزة تجربة متّسقة لميزة "خيارات المطوّر". على وجه التحديد، يجب أن تخفي عمليات تنفيذ الأجهزة "خيارات المطوّرين" تلقائيًا، ويجب أن توفّر آلية لتفعيل "خيارات المطوّرين" متوافقة مع عملية تنفيذ Android الأساسية.

7. توافق الأجهزة

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

  • يجب تقديم تعريفات الفئات الكاملة (على النحو الموضّح في حزمة تطوير البرامج (SDK)) لواجهات برمجة التطبيقات المكوّنة.
  • يجب تنفيذ سلوكيات واجهة برمجة التطبيقات كعمليات لا تؤدي إلى أيّ إجراء بطريقة معقولة.
  • يجب أن تُرجع طُرق واجهة برمجة التطبيقات قيمًا فارغة حيثما يسمح بذلك مستند حزمة تطوير البرامج (SDK).
  • يجب أن تُرجع طُرق واجهة برمجة التطبيقات عمليات تنفيذ لا تؤدي إلى أيّ إجراء للفئات التي لا يسمح مستند حزمة تطوير البرامج (SDK) فيها باستخدام القيم الخالية.
  • يجب ألّا تُعرِض طرق واجهة برمجة التطبيقات استثناءات غير مُوثَّقة في مستندات حزمة SDK.

ومن الأمثلة الشائعة على السيناريوهات التي تنطبق فيها هذه المتطلبات واجهة برمجة تطبيقات معالجة المكالمات الهاتفية: حتى على الأجهزة غير الهاتفية، يجب تنفيذ واجهات برمجة التطبيقات هذه على أنّها وظائف مقبولة بلا عمليات.

يجب أن تُبلغ عمليات تنفيذ الأجهزة بشكلٍ منتظم عن معلومات دقيقة عن إعدادات الأجهزة من خلال الطريقتَين getSystemAvailableFeatures()‎ وhasSystemFeature(String) في فئة android.content.pm.PackageManager لعلامة تشكل الإصدار نفسها. [Resources, 53]

7.1. الشاشة والرسومات

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

يتم تعريف الوحدات التي تشير إليها المتطلبات في هذا القسم على النحو التالي:

  • الحجم المادي القطري المسافة بالأنش بين زاويتَين متقابلتَين من الجزء المضاء من الشاشة
  • النقاط لكل بوصة (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 [Resources, 61] والذي يحدّده نظام التشغيل 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)
  • 400 نقطة لكل بوصة (400dpi)
  • 480 نقطة لكل بوصة (xxhdpi)
  • 560 نقطة في البوصة (560dpi)
  • 640 نقطة لكل بوصة (xxxhdpi)

يجب أن تحدِّد عمليات تنفيذ الأجهزة كثافة إطار عمل Android العادي التي تكون الأقرب رقميًا إلى الكثافة الفعلية للشاشة، ما لم تؤدي كثافة المنطقية إلى خفض حجم الشاشة المسجَّل إلى ما دون الحد الأدنى المسموح به. إذا كانت كثافة إطار عمل Android العادية الأقرب رقميًا إلى الكثافة المادية تؤدي إلى حجم شاشة أصغر من أصغر حجم شاشة متوافق متوافق (320 dp عرضًا)، يجب أن تُبلغ عمليات تنفيذ الأجهزة عن كثافة إطار عمل Android العادية الأقل تاليًا.

7.1.2. مقاييس الشبكة الإعلانية

يجب أن تُبلغ عمليات تنفيذ الأجهزة عن القيم الصحيحة لجميع مقاييس الشاشة المحدّدة في android.util.DisplayMetrics [Resources, 62]، ويجب أن تُبلغ عن القيم نفسها بغض النظر عمّا إذا كانت الشاشة المضمّنة أو الخارجية تُستخدَم كشاشة تلقائية.

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 [المراجع، 63].

يجب أيضًا أن تحدِّد عمليات تنفيذ الأجهزة بشكل صحيح أنّها متوافقة مع 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, 64] وتوافقًا أصليًا مع وظائف الرسومات المتقدّمة، مثل التجميع والتصغير وتنسيق ضغط البنية ASTC. يجوز لعمليات تنفيذ أجهزة Android استخدام حزمة الإضافات هذه، ويجب تحديد إمكانية استخدامها من خلال علامة ميزة android.hardware.opengles.aep فقط في حال تنفيذها بالكامل.

وقد تُنفِّذ عمليات تنفيذ الأجهزة أيضًا أيّ إضافات مطلوبة من OpenGL ES. ومع ذلك، يجب أن تُبلغ عمليات تنفيذ الأجهزة عبر واجهات برمجة التطبيقات المُدارة و الأصلية لـ OpenGL ES عن جميع سلاسل الإضافات التي تتوافق معها، وعلى العكس من ذلك، يجب ألا تُبلغ عن سلاسل الإضافات التي لا تتوافق معها.

يُرجى العِلم أنّ نظام التشغيل Android يتيح للتطبيقات تحديد ما إذا كانت تحتاج بشكل اختياري إلى تنسيقات معيّنة لضغط بنية OpenGL. وتكون هذه التنسيقات عادةً مخصّصة للمورّدين. لا يطلب Android من عمليات التنفيذ على الأجهزة تنفيذ أي تنسيق محدّد لضغط النسيج. ومع ذلك، من المفترض أن تذكر هذه الأجهزة بدقّة أي تنسيقات ضغط بنية تتيحها، وذلك من خلال الأسلوب getString()‎ في OpenGL API.

يتضمّن نظام التشغيل Android آلية تتيح للتطبيقات الإفصاح عن رغبتها في تفعيل ميزة "التسريع بالأجهزة" للرسومات ثنائية الأبعاد على مستوى التطبيق أو النشاط أو النافذة أو العرض من خلال استخدام علامة البيان android:hardwareAccelerated أو طلبات البيانات المباشرة من واجهة برمجة التطبيقات [المراجع، 65].

يجب أن تفعِّل عمليات تنفيذ الأجهزة ميزة "تسريع الأجهزة" تلقائيًا، ويجب أن تُوقِف هذه العمليات ميزة "تسريع الأجهزة" إذا طلب المطوِّر ذلك من خلال ضبط القيمة android:hardwareAccelerated="false” أو إيقاف ميزة "تسريع الأجهزة" مباشرةً من خلال واجهات برمجة التطبيقات Android View APIs.

بالإضافة إلى ذلك، يجب أن تُظهر عمليات تنفيذ الأجهزة سلوكًا متوافقًا مع مستندات IDE لنظام التشغيل Android حول تسريع الأجهزة [المراجع، 65].

يتضمّن Android عنصر TextureView الذي يتيح للمطوّرين دمج ملمس OpenGL ES المُسرَّع بالأجهزة مباشرةً كأهداف للعرض في التسلسل الهرمي لواجهة المستخدم. يجب أن تكون عمليات تنفيذ الأجهزة متوافقة مع واجهة برمجة التطبيقات TextureView API، ويجب أن تُظهر سلوكًا متسقًا مع عملية التنفيذ في Android.

يتيح نظام التشغيل Android استخدام EGL_ANDROID_RECORDABLE، وهي سمة EGLConfig تشير إلى ما إذا كان EGLConfig يتيح العرض على ANativeWindow الذي يسجّل الصور في فيديو. يجب أن تتوافق عمليات تنفيذ الأجهزة مع إضافة EGL_ANDROID_RECORDABLE [Resources, 66].

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 استخدام شاشة ثانوية لتفعيل ميزات مشاركة الوسائط وواجهات برمجة التطبيقات المخصّصة للمطوّرين للوصول إلى الشاشات الخارجية. إذا كان الجهاز يتوافق مع شاشة خارجية سواء عبر اتصال سلكي أو لاسلكي أو شاشة إضافية مضمّنة، يجب أن يتضمّن تنفيذ الجهاز واجهة برمجة التطبيقات Display Manager API كما هو موضّح في مستندات حِزم تطوير البرامج (SDK) لنظام التشغيل Android‏ [Resources, 67].

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, 68] (QWERTY أو 12 مفتاحًا).

7.2.2. التنقّل بدون لمس الشاشة

يجب أن تتضمّن أجهزة Android TV لوحة ألعاب اتجاهية.

عمليات التنفيذ على الأجهزة:

  • يجوز حذف خيار التنقّل غير المستند إلى اللمس (كرة المسار أو لوحة التوجيه أو العجلة) إذا كان تنفيذ الجهاز ليس جهاز Android TV.
  • يجب أن يعرض التطبيق القيمة الصحيحة لرقم تعريف android.content.res.Configuration.navigation [Resources, 68].
  • يجب أن توفّر آلية بديلاً معقولاً لواجهة المستخدم لتحديد النص وتعديله، وأن تكون متوافقة مع محرّكات إدارة الإدخال. يتضمّن الإصدار الأحدث من الإصدار المفتوح المصدر من 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 الأقدم والتي تحتوي على buttons مادية للتنقّل ولا تحتوي على مفتاح التطبيقات الحديثة.

يجب أن تتضمّن كل من وظيفتَي "الصفحة الرئيسية" و"الرجوع"، في حال توفّرهما، زرًا أو رمزًا مرئيًا ما لم يتم إخفاؤهما مع وظائف التنقّل الأخرى في وضع ملء الشاشة أو عند ضبط uiMode UI_MODE_TYPE_MASK على UI_MODE_TYPE_WATCH.

تم إيقاف دالة Menu نهائيًا لصالح شريط الإجراءات منذ الإصدار 4.0 من Android. لذلك، يجب ألّا تشمل عمليات تنفيذ الأجهزة الجديدة التي تعمل بنظام التشغيل Android 5.0 والإصدارات الأحدث زرًا أصليًا مخصّصًا لوظيفة القائمة. يجب ألا توفّر عمليات تنفيذ الأجهزة القديمة زرًا ماديًا مخصّصًا لعرض قائمة التطبيقات، ولكن في حال توفّر زر القائمة المادي وكان الجهاز قيد استخدام التطبيقات التي يكون فيها targetSdkVersion أكبر من 10، يجب أن تلتزم عمليات تنفيذ الأجهزة بما يلي:

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

للتوافق مع الإصدارات القديمة، يجب أن توفّر عمليات تنفيذ الأجهزة دالّة القائمة للتطبيقات عندما يكون targetSdkVersion أقل من 10، إما من خلال زر مادي أو مفتاح برنامج أو إيماءات. يجب عرض وظيفة القائمة هذه ما لم يتم إخفاؤها مع وظائف التنقّل الأخرى.

يتوافق Android مع إجراء "المساعدة" [Resources, 69]. يجب أن تتيح عمليات تنفيذ أجهزة Android، باستثناء أجهزة Android Watch، إجراء "المساعدة" للمستخدم في جميع الأوقات عند تشغيل التطبيقات. يجب تنفيذ إجراء "المساعدة" من خلال الضغط مع الاستمرار على زر الشاشة الرئيسية أو باستخدام لفتة التمرير سريعًا للأعلى على مفتاح الشاشة الرئيسية في البرنامج. يجوز تنفيذ هذه الوظيفة من خلال زرّ أو مفتاح برنامج أو إيماءة أخرى، ولكن يجب أن يكون بالإمكان الوصول إليها من خلال إجراء واحد (مثل النقر أو النقر مرّتين أو إيماءة) عندما تكون مفاتيح التنقّل الأخرى مرئية.

يجوز لعمليات تنفيذ التطبيق على الأجهزة استخدام جزء محدد من الشاشة لعرض مفاتيح التنقّل، ولكن في هذه الحالة، يجب أن تستوفي هذه المتطلبات:

  • يجب أن تستخدم مفاتيح التنقّل في عملية تنفيذ الجهاز جزءًا محددًا من الشاشة غير متاح للتطبيقات، ويجب ألّا تحجب أو تداخل بطريقة أخرى مع جزء الشاشة المتاح للتطبيقات.
  • يجب أن تتيح عمليات تنفيذ الأجهزة جزءًا من الشاشة للتطبيقات التي تستوفي المتطلبات المحدّدة في الفقرة 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, 68] التي تتوافق مع نوع شاشة اللمس المحدّدة على الجهاز.

يتيح Android استخدام مجموعة متنوعة من الشاشات التي تعمل باللمس ولوحات اللمس وأجهزة إدخال شاشة التمرير. ترتبط عمليات تنفيذ الأجهزة التي تعمل باللمس بشاشة [Resources, 70] بحيث يشعر المستخدم أنّه يتعامل مباشرةً مع العناصر على الشاشة. بما أنّ المستخدم يلمس الشاشة مباشرةً، لا يحتاج النظام إلى أيّ عناصر تحكم إضافية للإشارة إلى العناصر التي يتم التحكّم فيها. في المقابل، توفّر واجهة اللمس الزائفة نظام إدخال بيانات مستخدِم يقترب من مجموعة فرعية من إمكانات الشاشة التي تعمل باللمس. على سبيل المثال، يشبه الماوس أو جهاز التحكّم عن بُعد الذي يشغِّل مؤشرًا على الشاشة شاشة تعمل باللمس، ولكن يتطلّب من المستخدم أولاً الإشارة أو التركيز ثم النقر. يمكن أن تتيح العديد من أجهزة الإدخال، مثل الماوس ولوحة اللمس والماوس الهوائي المستنِد إلى أداة الاستشعار الدوراني والمؤشر المستنِد إلى أداة الاستشعار الدوراني وعصا التحكم ولوحة اللمس المتعدّدة اللمس، التفاعلات باللمس الزائف. يتضمّن 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 المطلقة على الشاشة لموقع المؤشر وعرض مؤشر مرئي على الشاشة [الموارد، 71].
  • يجب الإبلاغ عن حدث اللمس باستخدام رمز الإجراء الذي يحدّد تغيير الحالة الذي يحدث على المؤشر عند تحرّكه للأسفل أو للأعلى على الشاشة [الموارد، 71].
  • يجب أن تتيح هذه الأجهزة تحريك المؤشر للأسفل وللأعلى على عنصر على الشاشة، ما يسمح للمستخدمين بمحاكاة النقر على عنصر على الشاشة.
  • يجب أن تتيح الإشارة إلى أسفل ثم الإشارة إلى أعلى ثم الإشارة إلى أسفل ثم الإشارة إلى أعلى في المكان نفسه على عنصر على الشاشة خلال حد زمني معيّن، ما يسمح للمستخدمين بمحاكاة النقر مرّتين على عنصر على الشاشة [الموارد، 71].
  • يجب أن يتيح المؤشر توجيهه للأسفل على نقطة عشوائية على الشاشة، ثم نقله إلى أي نقطة عشوائية أخرى على الشاشة، ثم توجيهه للأعلى، ما يتيح للمستخدمين محاكاة السحب باللمس.
  • يجب أن تتيح الإشارة للأسفل للمستخدمين تحريك العنصر بسرعة إلى موضع مختلف على الشاشة ثم الإشارة للأعلى على الشاشة، ما يسمح للمستخدمين برمي عنصر على الشاشة.

يجب أن تستوفي الأجهزة التي تعلن عن توافقها مع 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)
D-pad up (أعلى لوحة التوجيه)1

D-pad down (أداة التوجيه ذات 4 اتجاهات للأسفل)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, 72]

2 يجب الإفصاح عن استخدامات HID المذكورة أعلاه ضمن شهادة اعتماد لوحة ألعاب (0x01 0x0005).

3 يجب أن يكون الحد الأدنى المنطقي لهذا الاستخدام هو 0 والحد الأقصى المنطقي هو 7، والحد الأدنى المادي هو 0 والحد الأقصى المادي هو 315، والوحدات بالدرجات، ويجب أن يكون حجم التقرير هو 4. يتم تعريف القيمة المنطقية على أنّها الدوران باتجاه عقارب الساعة بعيدًا عن المحور العمودي. على سبيل المثال، تشير القيمة المنطقية 0 إلى عدم الدوران ويتم الضغط على الزر "أعلى"، في حين تشير القيمة المنطقية 1 إلى الدوران بزاوية 45 درجة ويتم الضغط على كل من الزرَّين "أعلى" و"يسار".

4 [Resources, 71]

عناصر التحكّم التناظرية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, 71]

7.2.7. جهاز التحكّم عن بُعد

يجب أن توفّر عمليات تنفيذ أجهزة Android Television وحدة تحكّم عن بُعد لسماح المستخدمين بالوصول إلى واجهة التلفزيون. قد يكون جهاز التحكّم عن بُعد جهاز تحكّم عن بُعد ماديًا أو جهاز تحكّم عن بُعد مستندًا إلى البرامج يمكن الوصول إليه من هاتف جوّال أو جهاز لوحي. يجب أن يستوفي جهاز التحكّم عن بُعد المتطلبات المحدّدة أدناه.

  • إمكانية البحث يجب أن تؤدي عمليات تنفيذ الأجهزة إلى تنشيط KEYCODE_SEARCH عندما يطلب المستخدم البحث الصوتي إما على جهاز التحكّم عن بُعد المادي أو المستنِد إلى البرامج.
  • التنقّل: يجب أن تتضمّن جميع أجهزة التحكّم عن بُعد لأجهزة Android Television أزرار "الرجوع" و"الصفحة الرئيسية" و"اختيار"، ويجب أن تكون متوافقة مع أحداث لوحة التوجيه [الموارد، 72].

7.3. أجهزة الاستشعار

يتضمّن Android واجهات برمجة تطبيقات للوصول إلى مجموعة متنوعة من أنواع الحساسات. قد تحذف عمليات تنفيذ التطبيقات على الأجهزة بشكل عام أجهزة الاستشعار هذه، كما هو موضّح في الأقسام الفرعية التالية. إذا كان الجهاز يتضمّن نوعًا معيّنًا من أجهزة الاستشعار يحتوي على واجهة برمجة تطبيقات مقابلة للمطوّرين الخارجيين، يجب أن ينفذ تنفيذ الجهاز هذه الواجهة كما هو موضّح في مستندات حزمة تطوير البرامج (SDK) لنظام التشغيل Android ومستندات Android Open Source حول أجهزة الاستشعار [الموارد، 73]. على سبيل المثال، عمليات تنفيذ الأجهزة:

  • يجب أن يُبلغ التطبيق بدقة عن توفّر أدوات الاستشعار أو عدم توفّرها وفقًا لفئة android.content.pm.PackageManager [Resources, 53].
  • يجب أن تعرض قائمة دقيقة بأجهزة الاستشعار المتوافقة من خلال ‎(getSensorList())‏ SensorManager والطرق المشابهة.
  • يجب أن تعمل بشكل معقول مع جميع واجهات برمجة التطبيقات الأخرى الخاصة بأجهزة الاستشعار (على سبيل المثال، من خلال عرض قيمة "صحيح" أو "خطأ" حسب الاقتضاء عندما تحاول التطبيقات تسجيل مستمعين، وعدم استدعاء مستمعي أجهزة الاستشعار عندما لا تكون أجهزة الاستشعار المقابلة متوفّرة، وما إلى ذلك).
  • يجب الإبلاغ عن جميع قياسات أجهزة الاستشعار باستخدام قيم النظام الدولي المعني للوحدات (المقياس) لكل نوع من أنواع أجهزة الاستشعار على النحو المحدّد في مستندات IDE لنظام التشغيل Android [Resources, 74].
  • يجب أن يُبلِغ عن وقت الحدث بالنانوسات كما هو محدّد في مستندات Android SDK، ويمثّل وقت وقوع الحدث ومزامنةً مع مثيل SystemClock.elapsedRealtimeNano()‎. ننصح بشدة بأن تستوفي أجهزة Android الحالية والجديدة هذه المتطلبات حتى تتمكّن من الترقية إلى إصدارات الإصدارات المستقبلية للنظام الأساسي التي قد يصبح فيها هذا المكوّن مطلوبًا. يجب أن يكون خطأ المزامنة أقل من 100 ملي ثانية [Resources, 75].

القائمة أعلاه ليست شاملة، ويجب اعتبار السلوك المُسجَّل لحِزم SDK لنظام التشغيل Android ومستندات Android Open Source حول أجهزة الاستشعار [Resources, 73] مرجعيًا.

بعض أنواع أجهزة الاستشعار مركبة، ما يعني أنّه يمكن الحصول عليها من بيانات يوفّرها جهاز استشعار واحد أو أكثر. (تشمل الأمثلة أداة استشعار الاتجاه ومقاييس التسارع الخطي). يجب أن تتضمّن عمليات تنفيذ الأجهزة هذين نوعَي أداة الاستشعار، وذلك عندما تتضمّن أدوات الاستشعار المادية المطلوبة كما هو موضّح في [الموارد، 76]. إذا كان تنفيذ الجهاز يتضمّن أداة استشعار مركبة، يجب أن ينفذ أداة قياس الشدّ كما هو موضّح في مستندات Android Open Source حول أدوات قياس الشدّ المركبة [Resources, 76].

تتيح بعض أدوات استشعار Android وضع تفعيل "متواصل"، الذي يعرض البيانات باستمرار [الموارد، 77]. بالنسبة إلى أي واجهة برمجة تطبيقات يشير مستند حزمة تطوير البرامج (SDK) لنظام التشغيل Android إلى أنّها جهاز استشعار مستمر، يجب أن تقدّم عمليات تنفيذ الأجهزة بشكلٍ مستمر عيّنات بيانات دورية يجب أن يكون لها تشوّش أقل من %3، حيث يتم تعريف التشوّش على أنّه الانحراف المعياري لفرق قيم الطابع الزمني المسجّلة بين الأحداث المتتالية.

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

أخيرًا، عند تفعيل عدة أدوات استشعار، يجب ألا تتجاوز كمية الطاقة المستخدَمة مجموع كمية الطاقة المستخدَمة التي تم تسجيلها لكل أداة استشعار فردية.

7.3.1. مقياس التسارع

يجب أن تتضمّن عمليات تنفيذ الأجهزة مقياس تسارع ثلاثي المحاور. ننصح بشدة بتضمين هذا المقياس في أجهزة Android المزوّدة بشاشة تعمل باللمس وأجهزة Android Watch. إذا كان تطبيق الجهاز يتضمّن مقياس تسارع ثلاثي المحاور، يجب أن يستوفي الشروط التالية:

  • يجب تنفيذ أداة الاستشعار TYPE_ACCELEROMETER والإبلاغ عنها [الموارد، 78].
  • يجب أن يكون بإمكانه تسجيل الأحداث بمعدّل تكرار لا يقل عن 50 هرتز لجهاز Android Watch لأنّ هذه الأجهزة تفرض قيودًا أكثر صرامة على الطاقة، وبمعدّل تكرار 100 هرتز لجميع أنواع الأجهزة الأخرى.
  • يجب أن تُبلغ عن الأحداث التي تصل إلى 200 هرتز على الأقل.
  • يجب أن تكون متوافقة مع نظام إحداثيات أجهزة استشعار Android كما هو موضّح بالتفصيل في واجهات برمجة تطبيقات Android [الموارد، 74].
  • يجب أن يكون قادرًا على القياس من السقوط الحر إلى أربع مرات من قوة الجاذبية (4g) أو أكثر على أي محور.
  • يجب أن تكون درجة دقة الصورة 8 بت على الأقل، ويجب أن تكون 16 بت على الأقل.
  • يجب معايرة هذه الأدوات أثناء الاستخدام إذا تغيّرت الخصائص على مدار دورة الاستخدام، ويجب تعويضها والحفاظ على مَعلمات التعويض بين عمليات إعادة التمهيد للجهاز.
  • يجب أن تكون مصحَّحة حسب درجة الحرارة.
  • يجب أن يكون الانحراف المعياري لا يزيد عن 0.05 متر في الثانية^، ويجب احتساب الانحراف المعياري لكل محور استنادًا إلى العينات التي تم جمعها على مدار مدة لا تقل عن 3 ثوانٍ بأعلى معدّل تحليل.
  • يجب تنفيذ أدوات الاستشعار المركبة TYPE_SIGNIFICANT_MOTION وTYPE_TILT_DETECTOR وTYPE_STEP_DETECTOR وTYPE_STEP_COUNTER كما هو موضّح في مستند IDE لنظام التشغيل Android. ننصح بشدة بتضمين أداة الاستشعار المركبة TYPE_SIGNIFICANT_MOTION في أجهزة Android الحالية والجديدة. في حال استخدام أيٍّ من هذه الحساسات، يجب أن يكون مجموع استهلاكها للطاقة أقل مما يلي في جميع الأوقات: 4 ملي واط، ويجب أن يكون استهلاك كلّ منها أقل من 2 ملي واط و0.5 ملي واط عندما يكون الجهاز في حالة ديناميكية أو ثابتة.
  • في حال تضمين أداة استشعار جيروسكوب، يجب تنفيذ أداة الاستشعار المركبة TYPE_GRAVITY و TYPE_LINEAR_ACCELERATION، ويجب تنفيذ أداة الاستشعار المركبة TYPE_GAME_ROTATION_VECTOR. ننصح بشدة باستخدام أجهزة Android الحالية والجديدة لإدراج أداة الاستشعار TYPE_GAME_ROTATION_VECTOR.
  • يجب تنفيذ مستشعر مركب من النوع TYPE_ROTATION_VECTOR، إذا كان هناك مستشعر جيروسكوب ومستشعر مقياس مغناطيسي مضمّنَين أيضًا.

7.3.2. مقياس المغناطيسية

يجب أن تتضمّن عمليات تنفيذ الأجهزة مقياسًا مغناطيسيًا بثلاثة محاور (بوصلة). إذا كان الجهاز يتضمّن مقياس مغناطيسية بثلاثة محاور، يعني ذلك ما يلي:

  • يجب تنفيذ أداة الاستشعار TYPE_MAGNETIC_FIELD ويجب أيضًا تنفيذ أداة الاستشعار TYPE_MAGNETIC_FIELD_UNCALIBRATED. ننصح بشدة باستخدام أداة الاستشعار TYPE_MAGNETIC_FIELD_UNCALIBRATED في أجهزة Android الحالية والجديدة.
  • يجب أن يكون الجهاز قادرًا على تسجيل الأحداث بمعدّل تكرار لا يقل عن 10 هرتز، ويجب عليه تسجيل الأحداث بمعدّل تكرار لا يقل عن 50 هرتز.
  • يجب أن تكون متوافقة مع نظام إحداثيات أجهزة استشعار Android كما هو موضّح بالتفصيل في واجهات برمجة تطبيقات Android [الموارد، 74].
  • يجب أن يكون قادرًا على قياس القيم بين -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. ننصح بشدة باستخدام أداة الاستشعار SENSOR_TYPE_GYROSCOPE_UNCALIBRATED على أجهزة Android الحالية والجديدة.
  • يجب أن يكون قادرًا على قياس تغييرات الاتجاه بما يصل إلى 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.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) [الموارد، 79].
  • يجب أن يكون متوافقًا مع نظام أسماء النطاقات ذي البث المتعدد (mDNS) ويجب عدم فلترة حزم mDNS (224.0.0.251) في أي وقت من التشغيل، بما في ذلك عندما تكون الشاشة في حالة غير نشطة.

7.4.2.1. اتصال Wi-Fi مباشر

يجب أن تتضمّن عمليات تنفيذ الأجهزة إتاحة استخدام تقنية Wi-Fi Direct (Wi-Fi peer-to-peer). إذا كان تنفيذ الجهاز يتضمّن إتاحة Wi-Fi Direct، يجب أن ينفذ واجهة برمجة التطبيقات المقابلة لنظام التشغيل Android كما هو موضّح في مستندات SDK [Resources, 80]. إذا كان تنفيذ الجهاز يتضمّن إتاحة تقنية Wi-Fi Direct، يعني ذلك أنّه:

  • يجب الإبلاغ عن ميزة الجهاز android.hardware.wifi.direct.
  • يجب أن يكون الجهاز متوافقًا مع شبكة Wi-Fi العادية.
  • يجب أن يكون الجهاز متوافقًا مع شبكة Wi-Fi وWi-Fi Direct في الوقت نفسه.

يجب أن تتضمّن عمليات تنفيذ أجهزة Android Television ميزة Wi-Fi Tunneled Direct Link Setup (TDLS).

يجب أن تتضمّن عمليات تنفيذ أجهزة Android Television ميزة "إعداد رابط مباشر عبر النفق" (TDLS) في Wi-Fi، ويجب أن تتضمّن عمليات تنفيذ الأنواع الأخرى من أجهزة Android ميزة "إعداد رابط مباشر عبر النفق" في Wi-Fi كما هو موضّح في مستندات حزمة تطوير البرامج (SDK) لنظام التشغيل Android [المراجع، 81]. إذا كان تنفيذ الجهاز يتضمّن إتاحة بروتوكول TDLS وكان هذا البروتوكول مفعّلاً من خلال واجهة برمجة التطبيقات WiFiManager API، ينطبق ما يلي على الجهاز:

  • يجب استخدام بروتوكول TDLS فقط عندما يكون ذلك ممكنًا ومفيدًا.
  • يجب أن يتضمّن بعض الأساليب الاستقرائية وألا يستخدم بروتوكول TDLS عندما يكون أداؤه أسوأ مقارنةً بالاتصال عبر نقطة وصول Wi-Fi.

7.4.3. البلوتوث

يجب أن تكون عمليات تنفيذ Android Watch وAndroid Automotive متوافقة مع البلوتوث. يجب أن تتيح تطبيقات Android Television استخدام البلوتوث وتقنية Bluetooth LE.

يتضمّن Android تقنية البلوتوث وتقنية "البلوتوث المنخفض الطاقة" [الموارد، 82]. يجب أن تُعلن عمليات تنفيذ الأجهزة التي تتضمّن إتاحة البلوتوث والبلوتوث المنخفض الطاقة عن ميزات النظام الأساسي ذات الصلة (android.hardware.bluetooth وandroid.hardware.bluetooth_le على التوالي) وأن تنفِّذ واجهات برمجة التطبيقات للنظام الأساسي. يجب أن توفّر عمليات تنفيذ الأجهزة ملفات تعريف البلوتوث ذات الصلة، مثل A2DP وAVCP وOBEX وما إلى ذلك، حسبما يناسب الجهاز. يجب أن تكون تطبيقات Android Television متوافقة مع البلوتوث وBluetooth LE.

عمليات تنفيذ الأجهزة التي تتضمّن إتاحة تقنية "البلوتوث المنخفض الطاقة":

  • يجب الإفصاح عن ميزة الجهاز android.hardware.bluetooth_le.
  • يجب تفعيل واجهات برمجة تطبيقات Bluetooth المستندة إلى GATT (ملف الخصائص العام) على النحو описан في مستندات حزمة تطوير البرامج (SDK) و[الموارد، 82].
  • يجب أن تتيح ميزة "إرسال البيانات إلى وحدة معالجة مركزية خارجية" منطق الفلترة إلى مجموعة شرائح البلوتوث عند تنفيذ واجهة برمجة التطبيقات ScanFilter API [Resources, 83]، ويجب أن تُبلغ عن القيمة الصحيحة لمكان تنفيذ منطق الفلترة عند الاستعلام من خلال الأسلوب 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, 53].
  • يجب أن يكون الجهاز قادرًا على قراءة رسائل NDEF وكتابتها من خلال معايير NFC التالية:
    • يجب أن يكون الجهاز قادرًا على العمل كقارئ/كاتب في NFC Forum (على النحو المحدّد في المواصفة الفنية لـ NFC Forum‏ NFCForum-TS-DigitalProtocol-1.0) من خلال معايير NFC التالية:
      • NfcA (ISO14443-3A)
      • NfcB (ISO14443-3B)
      • NfcF (JIS 6319-4)
      • IsoDep (ISO 14443-4)
      • أنواع علامات NFC Forum‏ 1 و2 و3 و4 (حدّدها NFC Forum)
    • يجب أن يكون الجهاز قادرًا على قراءة رسائل NDEF وكتابتها من خلال معايير NFC التالية. يُرجى العلم أنّه على الرغم من أنّ معايير NFC الواردة أدناه مُدرجة على أنّها "يجب"، من المخطّط أن يتم تغيير هذه المعايير إلى "يجب" في تعريف التوافق لإصدار مستقبلي. هذه المعايير اختيارية في هذا الإصدار، ولكنها ستكون مطلوبة في الإصدارات القادمة. ننصح بشدة بتلبية هذه المتطلبات الآن على الأجهزة الحالية والجديدة التي تعمل بهذا الإصدار من Android حتى تتمكّن من الترقية إلى إصدارات النظام الأساسي المستقبلية.
      • NfcV (المعيار الدولي 15693)
    • يجب أن يكون الجهاز قادرًا على إرسال البيانات واستلامها من خلال المعايير والبروتوكولات التالية للاتصال المباشر بين الأجهزة:
      • ISO 18092
      • LLCP 1.0 (حدّده NFC Forum)
      • SDP 1.0 (حدّده NFC Forum)
      • بروتوكول إرسال البيانات غير القابلة للتغيير (NDEF) [الموارد، 84]
      • SNEP 1.0 (حدّده NFC Forum)
    • يجب أن تتضمّن ميزة Android Beam [الموارد، 85]:
      • يجب تنفيذ الخادم التلقائي لبروتوكول SNEP. يجب إرسال رسائل NDEF الصالحة التي يتلقّاها خادم SNEP التلقائي إلى التطبيقات باستخدام النيّة android.nfc.ACTION_NDEF_DISCOVERED. عند إيقاف ميزة Android Beam في الإعدادات، يجب ألّا يتم إيقاف إرسال رسالة NDEF الواردة.
      • يجب أن تلتزم بطلب android.settings.NFCSHARING_SETTINGS لعرض إعدادات مشاركة NFC [Resources, 86].
      • يجب تنفيذ خادم 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 من ميزة نقل الاتصال" [الموارد، 87] و"الإصدار 1.0 من ميزة الإقران البسيط والآمن عبر البلوتوث باستخدام NFC" [الموارد، 88] من منتدى NFC. يجب أن ينفِّذ هذا التنفيذ خدمة handover LLCP باسم الخدمة "urn:nfc:sn:handover" لتبادل طلبات/سجلّات اختيار handover عبر NFC، ويجب أن يستخدم ملف تعريف Bluetooth Object Push لنقل البيانات الفعلي عبر البلوتوث. لأسباب قديمة (للبقاء متوافقًا مع أجهزة Android 4.1)، يجب أن يظل التنفيذ يقبل طلبات SNEP GET لتبادل طلب الاستلام أو اختيار السجلّات عبر NFC. ومع ذلك، يجب ألا يُرسِل التنفيذ نفسه طلبات SNEP GET لإجراء عملية تسليم الاتصال.
    • يجب إجراء استطلاع لجميع التكنولوجيات المتوافقة أثناء وضع "اكتشاف NFC".
    • يجب أن يكون الجهاز في وضع اكتشاف NFC عندما يكون الجهاز مفعّلاً والشاشة نشطة وشاشة القفل مفتوحة.

(يُرجى العِلم أنّ الروابط المتاحة للجميع غير متاحة لمواصفات JIS وISO وNFC Forum المذكورة أعلاه).

يتيح نظام Android وضع "محاكاة البطاقة المضيفة" (HCE) عبر NFC. إذا كان تنفيذ الجهاز يتضمّن شريحة تحكم NFC قادرة على توجيه HCE و رقم تعريف التطبيق (AID)، يعني ذلك ما يلي:

  • يجب الإبلاغ عن ثابت ميزة android.hardware.nfc.hce.
  • يجب أن تكون متوافقة مع واجهات برمجة تطبيقات NFC HCE كما هو محدّد في حزمة تطوير البرامج (SDK) لنظام التشغيل Android [المراجع، 10].

بالإضافة إلى ذلك، قد تتضمّن عمليات تنفيذ الأجهزة إمكانات القراءة/الكتابة لتكنولوجيات MIFARE التالية:

  • MIFARE Classic
  • MIFARE Ultralight
  • تنسيق NDEF على MIFARE Classic

يُرجى العِلم أنّ نظام التشغيل Android يتضمّن واجهات برمجة تطبيقات لأنواع شرائح MIFARE هذه. إذا كان تنفيذ الجهاز متوافقًا مع MIFARE في دور القارئ/الكاتب، يعني ذلك ما يلي:

  • يجب تنفيذ واجهات برمجة تطبيقات Android المقابلة كما هو موضّح في مستندات حزمة تطوير البرامج (SDK) لنظام التشغيل Android.
  • يجب الإبلاغ عن الميزة com.nxp.mifare منطريقة() android.content.pm.PackageManager.hasSystemFeature [Resources، 53]. يُرجى العِلم أنّ هذه ليست ميزة عادية في Android، وبالتالي لا تظهر كقيمة ثابتة في فئة PackageManager.
  • يجب عدم تنفيذ واجهات برمجة تطبيقات Android المقابلة أو الإبلاغ عن ميزة com.nxp.mifare ما لم يتم أيضًا تنفيذ ميزة NFC العامة كما هو موضّح في هذا القسم.

إذا لم يتضمّن تطبيق الجهاز جهاز NFC، يجب عدم تحديد ميزة android.hardware.nfc من الأسلوب android.content.pm.PackageManager.hasSystemFeature()‎ [Resources, 53]، ويجب تنفيذ واجهة برمجة التطبيقات 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).

يجوز للأجهزة تنفيذ أكثر من شكل واحد للاتصال بالبيانات.

7.4.6. إعدادات المزامنة

يجب أن تكون إعدادات المزامنة التلقائية الرئيسية مفعَّلة تلقائيًا في عمليات تنفيذ الأجهزة لكي تُعرِض الطريقة getMasterSyncAutomatically() القيمة "true" [Resources, 89].

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, 90]، يجب عكس معاينة الكاميرا أفقيًا بالنسبة إلى الاتجاه الذي حدّده التطبيق.
    • بخلاف ذلك، يجب أن تكون المعاينة مُعكوسة على طول محوره الأفقي التلقائي للجهاز.
  • يجب أن تكون الصورة المعروضة في معاينة المشاركة مطابقة للصورة المعروضة في بث معاينة الكاميرا. إذا كان تنفيذ الجهاز لا يتيح 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 [الموارد، 91]، بغض النظر عمّا إذا كان الجهاز يتضمّن ميزة ضبط التركيز التلقائي بالأجهزة أو ميزات أخرى. على سبيل المثال، يجب أن تظل الكاميرات التي لا تتضمّن ميزة التركيز التلقائي تستدعي أي مثيل مُسجَّل من android.hardware.Camera.AutoFocusCallback (على الرغم من أنّ هذا ليس له صلة بالكاميرا التي لا تتضمّن ميزة التركيز التلقائي). يُرجى العِلم أنّ هذا ينطبق على الكاميرات الأمامية. على سبيل المثال، على الرغم من أنّ معظم الكاميرات الأمامية لا توفّر ميزة التركيز التلقائي، يجب أن تظل عمليات استدعاء واجهة برمجة التطبيقات "مزوّرة" كما هو موضّح.

يجب أن تتعرّف عمليات تنفيذ الأجهزة على كل اسم مَعلمة محدّد كقيمة ثابتة في فئة android.hardware.Camera.Parameters، ويجب أن تلتزم بها، إذا كانت الميزة متوافقة مع الأجهزة الأساسية. إذا كانت أجهزة الجهاز لا تتيح استخدام إحدى الميزات، يجب أن تعمل واجهة برمجة التطبيقات على النحو الموضّح في المستندات. في المقابل، يجب ألا تلتزم عمليات تنفيذ الأجهزة بقيم سلاسل ثابتة تم تمريرها إلى الأسلوب android.hardware.Camera.setParameters() أو تتعرّف عليها، باستثناء القيم التي تم توثيقها على أنّها قيم ثابتة في android.hardware.Camera.Parameters. وهذا يعني أنّه يجب أن تتوافق تطبيقات الأجهزة مع جميع مَعلمات الكاميرا العادية إذا كان الجهاز يسمح بذلك، ويجب ألّا تتوافق مع أنواع مَعلمات الكاميرا المخصّصة. على سبيل المثال، يجب أن تتيح عمليات تنفيذ الأجهزة التي تتيح التقاط الصور باستخدام تقنيات التصوير بنطاق عالي الديناميكية (HDR) مَعلمة الكاميرا Camera.SCENE_MODE_HDR [Resources, 92].

بما أنّه لا يمكن لجميع عمليات تنفيذ الأجهزة توفير جميع ميزات واجهة برمجة التطبيقات android.hardware.camera2 API بالكامل، يجب أن تُبلغ عمليات تنفيذ الأجهزة عن مستوى التوافق المناسب باستخدام السمة android.info.supportedHardwareLevel كما هو موضّح في حزمة تطوير البرامج (SDK) لنظام التشغيل Android [Resources, 93] والإبلاغ عن علامات ميزات إطار العمل المناسبة [Resources, 94].

يجب أن تحدِّد عمليات تنفيذ الأجهزة أيضًا إمكانات الكاميرا الفردية الخاصة بها android.hardware.camera2 من خلال السمة android.request.availableCapabilities وتحدِّد علامات الميزات المناسبة [Resources, 94]، ويجب أن يحدِّد الجهاز علامة الميزات إذا كانت أي من كاميرات الجهاز المُرفَقة تتيح هذه الميزة.

يجب أن تبث عمليات تنفيذ الأجهزة النية 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 ميغابايت غير سارٍ
  • ‫280 نقطة في البوصة أو أقل على الشاشات الصغيرة/العادية
  • mdpi أو أقل على الشاشات الكبيرة
  • ldpi أو أقل على الشاشات الكبيرة جدًا
‫424 ميغابايت ‫704 ميغابايت
  • ‫xhdpi أو أعلى على الشاشات الصغيرة/العادية
  • دقة عالية جدًا أو أعلى على الشاشات الكبيرة
  • mdpi أو أعلى على الشاشات الكبيرة جدًا
‫512 ميغابايت ‫832 ميغابايت
  • 400 نقطة في البوصة أو أعلى على الشاشات الصغيرة/العادية
  • ‫xhdpi أو إصدار أحدث على الشاشات الكبيرة
  • ‫tvdpi أو أعلى على الشاشات الكبيرة جدًا
896 ميغابايت 1280 ميغابايت
  • 560 نقطة في البوصة أو أعلى على الشاشات الصغيرة/العادية
  • 400 نقطة في البوصة أو أعلى على الشاشات الكبيرة
  • ‫xhdpi أو إصدار أحدث على الشاشات الكبيرة جدًا
1344 ميغابايت 1824 ميغابايت

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

يجب أن تُعرِض عمليات تنفيذ الأجهزة التي تتوفّر فيها ذاكرة أقل من 512 ميغابايت للنواة ومساحة المستخدم، ما لم تكن ساعة Android، القيمة "true" لمحاولة ActivityManager.isLowRamDevice().

يجب أن تتوفّر على أجهزة Android Television مساحة تخزين بسعة 5 غيغابايت على الأقل، ويجب أن تتوفّر على الأجهزة الأخرى التي يتم تثبيت التطبيق عليها مساحة تخزين بسعة 1.5 غيغابايت على الأقل غير قابلة للفقدان لتخزين بيانات التطبيق الخاصة. وهذا يعني أنّه يجب أن يكون حجم قسم ‎ /data 5 غيغابايت على الأقل لأجهزة Android Television و1.5 غيغابايت على الأقل لعمليات تثبيت الأجهزة الأخرى. ننصح بشدّة بتوفير مساحة تخزين غير متقلبة بسعة 3 غيغابايت على الأقل لبيانات التطبيقات الخاصة على الأجهزة التي تعمل بنظام Android، وذلك كي تتمكّن من الترقية إلى إصدارات المنصة المستقبلية.

تتضمّن واجهات برمجة تطبيقات Android أداة إدارة تنزيل قد تستخدمها التطبيقات لتحميل ملفات البيانات [الموارد، 95]. يجب أن يكون تطبيق "مدير التنزيل" على الجهاز قادرًا على تنزيل ملفات فردية بحجم 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" [الموارد، 96].
  • يجب أن يُبلغ عن فئة جهاز USB‏ 0x00.
  • يجب أن يُبلغ عن اسم واجهة USB‏ "MTP".

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, 97].
    • يجب تنفيذ فئة الصوت عبر USB كما هو موضّح في مستندات حزمة تطوير البرامج (SDK) لنظام التشغيل Android [الموارد، 98].
  • يجب أن يتيح الجهاز سحب تيار 1.5 أمبير أثناء إشارة HS chirp ووقت الذروة كما هو محدّد في مواصفات شحن البطارية عبر USB، المراجعة 1.2 [الموارد، 99]. ننصح بشدة بتوافق أجهزة Android الحالية والجديدة مع هذه المتطلبات حتى تتمكّن من الترقية إلى إصدارات المنصة المستقبلية.
  • يجب أن تكون قيمة iSerialNumber في وصف جهاز USB العادي مساوية لقيمة android.os.Build.SERIAL.

إذا كان تنفيذ الجهاز يتضمّن منفذ USB متوافقًا مع وضع المضيف، يعني ذلك ما يلي:

  • يجب استخدام منفذ USB من النوع C إذا كان تنفيذ الجهاز متوافقًا مع USB 3.1.
  • يجوز استخدام شكل غير عادي للمنفذ، ولكن في هذه الحالة يجب أن يتم شحن الجهاز مع كابل أو كابلات لتحويل المنفذ إلى منفذ USB عادي من النوع A أو النوع C.
  • يجوز استخدام منفذ USB micro-AB، ولكن في هذه الحالة يجب أن يتم شحن الجهاز مع كابل أو كابلات لتحويل المنفذ إلى منفذ USB عادي من النوع A أو C.
  • يُنصح بشدة بتنفيذ فئة الصوت عبر USB كما هو موضّح في مستندات حزمة تطوير البرامج (SDK) لنظام التشغيل Android [الموارد، 98].
  • يجب تنفيذ واجهة برمجة تطبيقات مضيف USB في Android كما هو موضّح في حزمة تطوير البرامج (SDK) لنظام التشغيل Android، ويجب تحديد توافق الجهاز مع ميزة android.hardware.usb.host [Resources, 100].
  • يجب أن يكون متوافقًا مع نطاق تيار الإخراج في منفذ الشحن السفلي الذي يتراوح بين 1.5 أمبير و5 أمبير كما هو محدّد في مواصفات شحن البطارية عبر USB، الإصدار 1.2 [الموارد، 99].

7.8. الصوت

7.8.1. الميكروفون

يجب أن تتضمّن عمليات تنفيذ Android Handheld وWatch وAutomotive ملفًا برمجيًا لجهاز الميكروفون.

قد لا تتضمّن عمليات تنفيذ الأجهزة ميكروفونًا. ومع ذلك، إذا حذفت عملية تنفيذ التطبيق على الجهاز الميكروفون، يجب ألّا تُبلغ عن ثابت ميزة android.hardware.microphone، ويجب تنفيذ واجهة برمجة التطبيقات recording API على الأقل كعمليات لا تؤدي إلى أيّ إجراء، وفقًا للفقرة 7. في المقابل، في عمليات تنفيذ الأجهزة التي تتضمّن ميكروفونًا:

  • يجب الإبلاغ عن القيمة الثابتة لميزة android.hardware.microphone
  • يجب أن تستوفي متطلبات التسجيل الصوتي الواردة في الفقرة 5.4
  • يجب استيفاء متطلبات وقت استجابة الصوت الواردة في الفقرة 5.6.

7.8.2. إخراج الصوت

قد تتضمّن أجهزة Android Watch مصدرًا لإخراج الصوت.

عمليات تنفيذ الأجهزة التي تتضمّن مكبّر صوت أو مخرج صوت/وسائط متعددة منفذ لجهاز إخراج صوتي خارجي مثل سماعة رأس أو مكبّر صوت خارجي:

  • يجب الإبلاغ عن الثابت android.hardware.audio.output.
  • يجب أن تستوفي متطلبات تشغيل الصوت الواردة في الفقرة 5.5.
  • يجب أن تستوفي متطلبات وقت استجابة الصوت الواردة في الفقرة 5.6.

في المقابل، إذا لم يتضمّن تطبيق الجهاز مكبّر صوت أو منفذ مخرج صوت، يجب ألّا يبلِغ عن ميزة إخراج الصوت android.hardware.audio، ويجب أن ينفذ واجهات برمجة التطبيقات ذات الصلة بإخراج الصوت كعمليات لا تؤدي إلى أيّ إجراء على الأقل.

قد يتضمّن تطبيق Android Watch إخراجًا للصوت، ولكن يجب ألا يتضمّن ذلك، في حين يجب أن تتضمّن الأنواع الأخرى من تطبيقات أجهزة Android إخراجًا للصوت ويجب أن تحدّد android.hardware.audio.output.

7.8.2.1. منافذ الصوت التناظري

لكي يكون الجهاز متوافقًا مع سماعات الرأس وغيرها من ملحقات الصوت التي تستخدم قابس الصوت مقاس 3.5 ملم في منظومة Android المتكاملة [الموارد، 101]، إذا كان تنفيذ الجهاز يتضمّن منفذًا واحدًا أو أكثر للصوت التناظري، يجب أن يكون أحد منافذ الصوت على الأقل مقبس صوت مقاس 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 فولت.

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 كيلوبايت.

9. توافق نموذج الأمان

يجب أن تطبّق عمليات تنفيذ التطبيقات على الأجهزة نموذج أمان متوافقًا مع نموذج أمان نظام Android الأساسي كما هو محدّد في مستند مرجعي حول الأمان والأذونات في واجهات برمجة التطبيقات [الموارد، 102] ضمن مستندات مطوّري تطبيقات Android. يجب أن تتيح عمليات تنفيذ الأجهزة تثبيت التطبيقات الموقَّعة ذاتيًا بدون الحاجة إلى أي أذونات أو شهادات إضافية من أي جهات خارجية أو سلطات. وعلى وجه التحديد، يجب أن تتوافق الأجهزة مع آليات الأمان الموضّحة في المقاطع الفرعية التالية.

9.1. الأذونات

يجب أن تتوافق عمليات تنفيذ الأجهزة مع نموذج أذونات Android كما هو محدّد في مستندات مطوّري تطبيقات Android [الموارد، 102]. وعلى وجه التحديد، يجب أن تفرض عمليات التنفيذ كل إذن محدّد كما هو описан في مستندات حزمة تطوير البرامج (SDK)، ولا يجوز حذف أي أذونات أو تغييرها أو تجاهلها. يجوز لعمليات التنفيذ إضافة أذونات إضافية، شرط ألا تكون سلاسل أرقام تعريف الأذونات الجديدة في مساحة الاسم android.*.

9.2. رقم تعريف المستخدم (UID) وعزل العمليات

يجب أن تكون عمليات تنفيذ الأجهزة متوافقة مع نموذج وضع الحماية لتطبيقات Android، والذي يتم فيه تشغيل كل تطبيق كمعرّف مستخدم فريد على غرار Unix وفي عملية منفصلة. يجب أن تتيح عمليات تنفيذ الأجهزة تشغيل تطبيقات متعددة باستخدام معرّف مستخدم Linux نفسه، شرط أن تكون التطبيقات موقَّعة ومُنشأة بشكل صحيح، كما هو محدّد في مرجع "الأمان والأذونات" [الموارد، 102].

9.3. أذونات نظام الملفات

يجب أن تتوافق عمليات تنفيذ الأجهزة مع نموذج أذونات الوصول إلى الملفات في Android على النحو المحدّد في مرجع "الأمان والأذونات" [الموارد، 102].

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 إمكانية استخدام حسابات متعددة ويوفّر إمكانية عزل ملف تعريف المستخدم بالكامل [الموارد، 103]. قد تتيح عمليات تنفيذ الأجهزة استخدام ميزة "المستخدمون المتعدّدون"، ولكن عند تفعيلها، يجب أن تستوفي المتطلبات التالية المتعلّقة بدعم ميزة "المستخدمون المتعدّدون" [الموارد، 104]:

  • يجب أن تتيح عمليات تنفيذ الأجهزة التي لا تحدّد علامة ميزة android.hardware.telephony استخدام الملفات الشخصية المحظورة، وهي ميزة تسمح لأصحاب الأجهزة بإدارة مستخدمين إضافيين وقدراتهم على الجهاز. باستخدام الملفات الشخصية ذات القيود، يمكن لمالكي الأجهزة إعداد بيئات منفصلة بسرعة ليعمل فيها المستخدمون الإضافيون، مع إمكانية إدارة قيود أكثر دقة في التطبيقات المتاحة في تلك البيئات.
  • في المقابل، يجب ألّا تتيح عمليات تنفيذ الأجهزة التي تعلن عن علامة ميزة android.hardware.telephony استخدام الملفات الشخصية المحظورة، بل يجب أن تكون متوافقة مع تنفيذ AOSP لعناصر التحكّم في تفعيل /إيقاف إمكانية وصول المستخدمين الآخرين إلى المكالمات المسموعة والرسائل القصيرة.
  • يجب أن توفّر عمليات تنفيذ التطبيقات على الأجهزة لكل مستخدم نموذج أمان متوافقًا مع نموذج أمان نظام Android الأساسي كما هو محدّد في مستند مرجعي حول الأمان والأذونات في واجهات برمجة التطبيقات [المراجع، 102].
  • قد تتيح عمليات تنفيذ التطبيقات على الأجهزة إنشاء مستخدمين وملفات شخصية مُدارة من خلال واجهات برمجة التطبيقات android.app.admin.DevicePolicyManager، ويجب الإفصاح عن علامة ميزة النظام الأساسي android.software.managed_users في حال توفّرها.
  • يجب أن تستخدم عمليات تنفيذ الأجهزة التي تحدّد علامة الخيار android.software.managed_users شارة رمز AOSP الأصلية لتمثيل التطبيقات المُدارة وعناصر واجهة المستخدم الأخرى للشارة، مثل "التطبيقات المستخدَمة مؤخرًا" و"الإشعارات".
  • يجب أن تتضمّن كل نسخة مستخدم على جهاز Android ملفّات تعريف مستقلة ومفصّلة لمساحة التخزين الخارجية. قد تؤدي عمليات تنفيذ الأجهزة إلى تخزين data لمستخدمين متعدّدين في وحدة التخزين أو نظام الملفات نفسه. ومع ذلك، يجب أن تضمن عملية تنفيذ الجهاز أنّ التطبيقات التي يملكها مستخدم معيّن ويتم تشغيلها نيابةً عنه لا يمكنها إدراج البيانات التي يملكها أي مستخدم آخر أو قراءتها أو الكتابة فيها. يُرجى العِلم أنّه يمكن لوسائل التخزين القابلة للإزالة، مثل فتحات بطاقات SD، السماح لمستخدم بالوصول إلى بيانات مستخدم آخر باستخدام جهاز كمبيوتر مضيف. لهذا السبب، على عمليات تنفيذ الأجهزة التي تستخدم وسائط قابلة للإزالة لواجهة برمجة تطبيقات مساحة التخزين الخارجية الأساسية تشفير محتوى بطاقة SD إذا كان استخدام ميزة "الوصول المتعدّد للمستخدِمين" مفعَّلاً باستخدام مفتاح يتم تخزينه فقط على وسائط غير قابلة للإزالة يمكن للنظام فقط الوصول إليها. وبما أنّ هذا سيجعل الوسائط غير قابلة للقراءة من خلال جهاز كمبيوتر مضيف، سيُطلب من عمليات تنفيذ الأجهزة التبديل إلى بروتوكول MTP أو نظام مشابه لمنح أجهزة الكمبيوتر المضيف إمكانية الوصول إلى بيانات المستخدم الحالي. وبناءً على ذلك، يجوز لعمليات تنفيذ الأجهزة تفعيل ميزة "الوصول المتعدّد للمستخدمين"، ولكن لا يُنصَح بذلك إذا كانت تستخدم وسائط قابلة للإزالة [الموارد، 105] لمساحة التخزين الخارجية الأساسية.

9.6 تحذير بشأن الرسائل القصيرة برسوم إضافية

يتيح نظام التشغيل Android تحذير المستخدمين من أي رسالة قصيرة SMS مميزة مُرسَلة [الموارد، 106] . رسائل SMS للخدمات هي رسائل نصية يتم إرسالها إلى خدمة مسجَّلة لدى أحد مشغّلي شبكات الجوّال، وقد يتم تحصيل رسوم من المستخدم مقابل هذه الرسائل. يجب أن تحذر عمليات تنفيذ الأجهزة التي تعلن عن توافقها مع android.hardware.telephony المستخدمين قبل إرسال رسالة قصيرة إلى الأرقام التي تم تحديدها باستخدام التعبيرات العادية المحدّدة في ملف /data/misc/sms/codes.xml على الجهاز. يقدّم "المشروع المفتوح المصدر لنظام Android" تنفيذًا يستوفي هذا الشرط.

9.7. ميزات أمان النواة

يتضمّن "وضع الحماية" في Android ميزات يمكنها استخدام نظام التحكّم الإجباري في الوصول (MAC) لنظام التشغيل Security-Enhanced Linux (SELinux) وميزات أمان أخرى في ملف ‎Linux kernel. ‫SELinux أو أي ميزات أمان أخرى، في حال تنفيذها ضمن الإصدار الأقدم من إطار عمل Android:

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

إذا تم إتاحة أي واجهة برمجة تطبيقات لضبط السياسة لتطبيق يمكنه التأثير في تطبيق آخر (مثل Device Administration API)، يجب ألا تسمح واجهة برمجة التطبيقات بضبط الإعدادات التي تؤدي إلى إيقاف التوافق.

يجب أن تستخدم الأجهزة نظام SELinux أو نظامًا مكافئًا لنظام التحكّم الإلزامي في الوصول في حال استخدام نواة غير Linux، وأن تستوفي المتطلبات التالية التي يتم تلبيتها من خلال التنفيذ المرجعي في مشروع Android Open Source Project.

عمليات التنفيذ على الأجهزة:

  • يجب أن تتوافق مع سياسة SELinux التي تسمح بضبط وضع SELinux على أساس كل نطاق، ويجب ضبط جميع النطاقات في وضع التنفيذ. لا يُسمح باستخدام نطاقات الوضع المرخّص، بما في ذلك النطاقات الخاصة بجهاز أو موفِّر.
  • من المفترض أن يتم تحميل السياسة من ملف ‎ /sepolicy على الجهاز.
  • يجب عدم تعديل قواعد neverallow أو حذفها أو استبدالها فيملف sepolicy المقدَّم في "المشروع المفتوح المصدر لنظام Android" ‏ (AOSP) ويجب compiling the policy with all neverallow present، لكل من نطاقات AOSP SELinux بالإضافة إلى النطاقات الخاصة بالجهاز أو المورّد.
  • يجب أن تتيح التحديثات الديناميكية لملف سياسة SELinux بدون الحاجة إلى تحديث صورة النظام.

يجب أن تحتفظ عمليات تنفيذ الأجهزة بسياسة SELinux التلقائية المقدَّمة في الإصدار الأساسي من "المشروع المفتوح المصدر لنظام Android"، إلى أن يتم أولاً تدقيق الإضافات التي تم إجراؤها على سياسة SELinux. يجب أن تكون عمليات تنفيذ الأجهزة متوافقة مع الإصدار الأصلي من "مشروع مفتوح المصدر لنظام Android".

9.8. الخصوصية

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

إذا كان تطبيق الجهاز يتضمّن آلية لتوجيه زيارات بيانات الشبكة من خلال خادم وكيل أو بوابة شبكة VPN تلقائيًا (على سبيل المثال، التحميل المُسبَق لخدمة VPN التي تم منحها إذن android.permission.CONTROL_VPN)، يجب أن يطلب تطبيق الجهاز موافقة المستخدم قبل تفعيل هذه الآلية.

9.9. تشفير القرص بالكامل

اختياري لعمليات تنفيذ أجهزة Android غير المزوّدة بشاشة قفل.

إذا كان تنفيذ الجهاز يتيح استخدام شاشة قفل تتضمّن رقم التعريف الشخصي (رقمي) أو كلمة المرور (أبجدية رقمية)، يجب أن يتيح الجهاز تشفير القرص بالكامل لملف data الذي يحتوي على data الخاصة بالتطبيق، بالإضافة إلى ملف بطاقة SD إذا كان جزءًا دائمًا وغير قابل للإزالة من الجهاز [Resources, 107]. بالنسبة إلى الأجهزة التي تتيح ميزة "تشفير القرص بالكامل"، يجب تفعيل هذه الميزة باستمرار بعد أن يكمل المستخدم تجربة الاستخدام العادي. على الرغم من أنّ هذا الشرط مُدرَج على أنّه "يجب" في هذا الإصدار من منصة Android ، إلا أنّنا ننصح بشدة باستخدامه لأنّنا نتوقع أن يتم تغييره إلى "يجب" في الإصدارات المستقبلية من 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 الأساسي، ننصح بشدة باستخدامه لأنّنا نتوقع أن يصبح شرطًا أساسيًا في الإصدارات المستقبلية من Android. يقدّم مشروع Android Open Source Project الإصدار الأساسي من الميزة ويقدّم طريقة تنفيذ مفضّلة لهذه الميزة استنادًا إلى ميزة dm-verity في نواة Linux.

10. اختبار توافق البرامج

يجب أن تجتاز عمليات تنفيذ الأجهزة جميع الاختبارات الموضّحة في هذا القسم.

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

10.1. مجموعة أدوات اختبار التوافق

يجب أن تجتاز عمليات تنفيذ الأجهزة مجموعة أدوات اختبار التوافق مع Android (CTS) [Resources, 108] المتوفّرة من مشروع Android Open Source Project، وذلك باستخدام الإصدار النهائي من البرامج المُرسَلة على الجهاز. بالإضافة إلى ذلك، على مطوّري الأجهزة استخدام التطبيق المرجعي في شجرة "المشروع المفتوح المصدر لنظام Android" قدر الإمكان، ويجب أن يضمنوا التوافق في حالات الغموض في CTS وأي عمليات إعادة تنفيذ لأجزاء من رمز المصدر المرجعي.

تم تصميم CTS ليتم تشغيله على جهاز حقيقي. مثل أي برنامج، قد يحتوي CTS نفسه على أخطاء. سيتم إصدار إصدارات من CTS بشكل مستقل عن ملف "تعريف التوافق" هذا، وقد يتم إصدار عدّة نُسخ من CTS لنظام التشغيل Android 5.1. يجب أن تجتاز عمليات تنفيذ الأجهزة أحدث إصدار متاح من مجموعة أدوات اختبار التوافق (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 الأساسي يتضمّن آلية تحديث تستوفي هذا الشرط.

بالنسبة إلى عمليات تثبيت الأجهزة التي يتم تشغيلها باستخدام الإصدار 5.1 من نظام التشغيل Android والإصدارات الأحدث، يجب أن تتيح آلية التحديث التحقّق من أنّ صورة النظام هي ملف ثنائي يتطابق مع النتيجة المتوقّعة بعد إجراء تحديث عبر الهواء. يلبي هذا الشرط عملية تنفيذ التحديثات عبر الهواء المستندة إلى الحِزم في "المشروع المفتوح المصدر لنظام Android"، والتي تمت إضافتها منذ الإصدار Android 5.1.

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

12. سجلّ تغييرات المستندات

يحتوي الجدول التالي على ملخّص للتغييرات التي طرأت على تعريف التوافق في هذا الإصدار.

القسم ملخّص التغيير
‫2- أنواع الأجهزة تمت إضافة تعريف لتنفيذ Android Automotive.
2.1 إعدادات الجهاز تمت إضافة عمود لتنفيذ Android Automotive.
3.3.2. توافق الرمز الأصلي لنظام ARM‏ 32 بت تمت إضافة قسم جديد.
3.4.1. توافق WebView تم تعديل متطلبات سلسلة وكيل مستخدم webview لاستيعاب التغيير في التنفيذ في المصدر.
3.4.2. توافق المتصفّح تمت إضافة عمليات تنفيذ Android Automotive كحالة أخرى قد تحذف تطبيق المتصفّح.
3.7 التوافق مع بيئة التشغيل تم تعديل حجم حزمة الذاكرة المطلوبة أثناء التشغيل للشاشات الأصغر حجمًا وإضافة شرط لحزمة كثافة النقاط الجديدة (280 نقطة في البوصة).
3.8.3. الإشعارات توضيح متطلبات الإشعارات لعمليات التنفيذ على Android Watch وTelevision وAutomotive
3.8.8. التبديل بين الأنشطة تخفيف متطلبات عدد عناوين النظرة العامة
3.8.10. عناصر التحكّم في الوسائط على شاشة القفل تم توضيح متطلبات عمليات التنفيذ في Android Watch وAndroid Automotive.
3.8.13. ترميز Unicode والخط تم تخفيف متطلبات طريقة إدخال رموز الإيموجي.
3.9. إدارة الجهاز تم توضيح الشرط الذي يجب استيفاؤه لكي تكون المنظومة المتكاملة لسياسات إدارة الأجهزة متوافقة.
3.10. تسهيل الاستخدام تمت إضافة متطلبات Android Automotive.
3.11. تحويل النص إلى كلام تمت إضافة متطلبات Android Automotive.
5.1. برامج ترميز الوسائط يجب أن يكون فك ترميز برامج الترميز التي يُبلغ عنها CamcorderProfile متوافقًا.
5.1.3 برامج ترميز الفيديو تمت إضافة متطلبات Android Automotive.
5.4. تسجيل الصوت تم توضيح اللغة في بداية القسم لضمان قراءة متطلبات "يجب" على أنّها "مطلوب".
7.1.1.3. كثافة الشاشة تمت إضافة كثافة بكسل جديدة للشاشة (280 بكسل لكل بوصة).
7.1.5. وضع التوافق مع التطبيقات القديمة تمت إضافة متطلبات Android Automotive.
7.2 أجهزة الإدخال تمت إضافة بيان مقدمة عام.
7.2.1. لوحة المفاتيح تمت إضافة متطلبات Android Automotive.
7.2.3. مفاتيح التنقل تمت إضافة متطلبات Android Automotive.
7.3.1. مقياس التسارع تم تخفيف متطلبات معدّل تكرار إعداد التقارير على ساعة Android.
7.3.4. الجيروسكوب تم تخفيف متطلبات معدّل تكرار إعداد التقارير على ساعة Android.
7.4.3 بلوتوث تمت إضافة متطلبات Android Automotive.
7.4.4. تقنية الاتصال القصير المدى تم توضيح الحالة التي تكون فيها وظيفة "محاكاة البطاقة المُضيفة" مطلوبة.
7.6.1. الحد الأدنى للذاكرة ومساحة التخزين تم تعديل الحد الأدنى لمتطلبات الذاكرة لأجهزة الشاشة ذات الدقة المنخفضة وتم إضافة شرط الحدّ الأقصى isLowRamDevice().
7.6.2. مساحة التخزين المشتركة للتطبيق المتطلبات المعدَّلة عندما يكون توفُّر إمكانية الوصول إلى الجهاز المضيف إلزاميًا
‫7.7 USB إصلاح الأخطاء الإملائية في قسم USB
7.6.2. مساحة التخزين المشتركة للتطبيق متطلبات معدَّلة تسمح لتطبيقات النظام المثبَّتة مسبقًا بالكتابة في مساحة التخزين الخارجية الثانوية
7.6.2. مساحة التخزين المشتركة للتطبيق يمكن للتطبيقات استخدام ACTION_OPEN_DOCUMENT_TREE للكتابة في وحدة تخزين خارجية ثانوية.
7.6.2. مساحة التخزين المشتركة للتطبيق توضيح أنّ ‎ /sdcard يمكنه مشاركة مساحة التخزين مع ‎ /data
‫7.7 USB إزالة شرط مكرّر في UMS/MTP من الإصدار 7.7
7.8.1. الميكروفون تمت إضافة متطلبات Android Automotive.
8.2. أداء الوصول إلى الإدخال/الإخراج من الملفات متطلبات محدّدة بوضوح
9.5. ميزة "الوصول المتعدد" يجب تشفير بطاقة SD لوحدة التخزين الخارجية الأساسية.
9.8. الخصوصية تمّت إضافة متطلبات الخصوصية لشبكات VPN المحمَّلة مسبقًا.
9.9. تشفير القرص بالكامل تم توضيح الحالة التي يكون فيها توفُّر ميزة "تشفير القرص الكامل" إلزاميًا.
9.10. التشغيل المتحقّق منه تم توضيح تعريف "التشغيل المتحقّق منه".
11. البرامج القابلة للتحديث توضيح أنّ متطلبات تنزيل OTA مسموح بها ولكنها ليست إلزامية لعمليات تنفيذ Android Automotive

13. التواصل معنا

يمكنك الانضمام إلى منتدى التوافق مع Android [Resources, 109] وطلب توضيحات أو طرح أي مشاكل تعتقد أنّ المستند لا يتناولها.

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. تعريفات واجهات برمجة التطبيقات ومستنداتها: http://developer.android.com/reference/packages.html

6. مرجع أذونات Android: http://developer.android.com/reference/android/Manifest.permission.html

7- مراجع android.os.Build: http://developer.android.com/reference/android/os/Build.html

8. سلاسل الإصدارات المسموح بها لنظام التشغيل Android 5.1: http://source.android.com/compatibility/5.1/versions.html

9. مقدّم خدمة الاتصال الهاتفي: http://developer.android.com/reference/android/provider/Telephony.html

10. محاكاة البطاقة المستندة إلى المضيف: http://developer.android.com/guide/topics/connectivity/nfc/hce.html

11. حزمة إضافات Android: http://developer.android.com/guide/topics/graphics/opengl.html#aep

12. فئة android.webkit.WebView: http://developer.android.com/reference/android/webkit/WebView.html

13. توافق WebView: http://www.chromium.org/

14. HTML5: http://html.spec.whatwg.org/multipage/

15. إمكانات HTML5 بلا إنترنت: http://dev.w3.org/html5/spec/Overview.html#offline

16. علامة فيديو HTML5: http://dev.w3.org/html5/spec/Overview.html#video

17. واجهة برمجة التطبيقات لتحديد الموقع الجغرافي في HTML5/W3C: http://www.w3.org/TR/geolocation-API/

18 واجهة برمجة التطبيقات لميزة webstorage في HTML5/W3C: http://www.w3.org/TR/webstorage/

19. واجهة برمجة التطبيقات IndexedDB في HTML5/W3C: http://www.w3.org/TR/IndexedDB/

20. تنسيق Dalvik القابل للتنفيذ ومواصفات رمز الآلة: متوفّر في رمز مصدر Android، على dalvik/docs

21. التطبيقات المصغّرة: http://developer.android.com/guide/practices/ui_guidelines/widget_design.html

22. الإشعارات: http://developer.android.com/guide/topics/ui/notifiers/notifications.html

23. موارد التطبيق: https://developer.android.com/guide/topics/resources/available-resources.html

24. دليل نمط رموز شريط الحالة: http://developer.android.com/design/style/iconography.html

25. مراجع الإشعارات: https://developer.android.com/design/patterns/notifications.html

26. Search Manager: ‏ http://developer.android.com/reference/android/app/SearchManager.html

27. الرسائل المنبثقة: http://developer.android.com/reference/android/widget/Toast.html

28. المظاهر: http://developer.android.com/guide/topics/ui/themes.html

29. فئة R.style: http://developer.android.com/reference/android/R.style.html

30. تصميم متعدد الأبعاد: http://developer.android.com/reference/android/R.style.html#Theme_Material

31. الخلفيات المتحركة: http://developer.android.com/reference/android/service/wallpaper/WallpaperService.html

32. مراجع شاشة "نظرة عامة": http://developer.android.com/guide/components/recents.html

33. تثبيت الشاشة: https://developer.android.com/about/versions/android-5.0.html#ScreenPinning

34. طرق الإدخال: http://developer.android.com/guide/topics/text/creating-input-method.html

35. إشعارات الوسائط: https://developer.android.com/reference/android/app/Notification.MediaStyle.html

36. الشاشة المتحركة: http://developer.android.com/reference/android/service/dreams/DreamService.html

37. Settings.Secure LOCATION_MODE:

http://developer.android.com/reference/android/provider/Settings.Secure.html#LOCATION_MODE

38. ‫Unicode 6.1.0: http://www.unicode.org/versions/Unicode6.1.0/

39. إدارة أجهزة Android: http://developer.android.com/guide/topics/admin/device-admin.html

40. مرجع DevicePolicyManager: http://developer.android.com/reference/android/app/admin/DevicePolicyManager.html

41. تطبيق "مالك جهاز Android":

http://developer.android.com/reference/android/app/admin/DevicePolicyManager.html#isDeviceOwnerApp(java.lang.String)

42. واجهات برمجة تطبيقات Android Accessibility Service: http://developer.android.com/reference/android/accessibilityservice/AccessibilityService.html

43. واجهات برمجة تطبيقات Android Accessibility API: http://developer.android.com/reference/android/view/accessibility/package-summary.html

44. مشروع Eyes Free: http://code.google.com/p/eyes-free

45. واجهات برمجة التطبيقات لتحويل النص إلى كلام: http://developer.android.com/reference/android/speech/tts/package-summary.html

46. إطار عمل إدخال التلفزيون: /devices/tv/index.html

47. مستندات الأداة المرجعية (لبرنامج adb وaapt وddms وsystrace): http://developer.android.com/tools/help/index.html

48. وصف ملف apk لنظام التشغيل Android: http://developer.android.com/guide/components/fundamentals.html

49. ملفات البيان: http://developer.android.com/guide/topics/manifest/manifest-intro.html

50. تنسيقات الوسائط في Android: http://developer.android.com/guide/appendix/media-formats.html

51. متطلبات الترميز لأجهزة RTC: http://www.webmproject.org/hardware/rtc-coding-requirements/

52. واجهة برمجة التطبيقات AudioEffect API: ‏ http://developer.android.com/reference/android/media/audiofx/AudioEffect.html

53- فئة android.content.pm.PackageManager في Android وقائمة ميزات الأجهزة:

http://developer.android.com/reference/android/content/pm/PackageManager.html

54. مسودة بروتوكول البث المباشر عبر بروتوكول HTTP: http://tools.ietf.org/html/draft-pantos-http-live-streaming-03

55. أداة ADB: http://developer.android.com/tools/help/adb.html

56. Dumpsys: ‏ /devices/input/diagnostics.html

57. أداة DDMS: http://developer.android.com/tools/debugging/ddms.html

58. أداة اختبار Monkey: http://developer.android.com/tools/help/monkey.html

59. أداة SysyTrace: http://developer.android.com/tools/help/systrace.html

60. الإعدادات ذات الصلة بتطوير تطبيقات Android:

http://developer.android.com/reference/android/provider/Settings.html#ACTION_APPLICATION_DEVELOPMENT_SETTINGS

61. التوافق مع شاشات متعددة: http://developer.android.com/guide/practices/screens_support.html

‫62. android.util.DisplayMetrics: http://developer.android.com/reference/android/util/DisplayMetrics.html

63. RenderScript: ‏ http://developer.android.com/guide/topics/renderscript/

64. حزمة إضافات Android لـ OpenGL ES: https://developer.android.com/reference/android/opengl/GLES31Ext.html

65. ميزة "التسريع على الأجهزة": http://developer.android.com/guide/topics/graphics/hardware-accel.html

66. إضافة EGL‏:‏ EGL_ANDROID_RECORDABLE:

http://www.khronos.org/registry/egl/extensions/ANDROID/EGL_ANDROID_recordable.txt

67. Display Manager: ‏ http://developer.android.com/reference/android/hardware/display/DisplayManager.html

‫68. android.content.res.Configuration: http://developer.android.com/reference/android/content/res/Configuration.html

69. مساعدة في تنفيذ الإجراءات: http://developer.android.com/reference/android/content/Intent.html#ACTION_ASSIST

70. ضبط إدخال اللمس: http://source.android.com/devices/tech/input/touch-devices.html

71. Motion Event API: ‏ http://developer.android.com/reference/android/view/MotionEvent.html

72. Key Event API: ‏ http://developer.android.com/reference/android/view/KeyEvent.html

73- أدوات الاستشعار مفتوحة المصدر لنظام Android: http://source.android.com/devices/sensors

‫74. android.hardware.SensorEvent: http://developer.android.com/reference/android/hardware/SensorEvent.html

75. حدث استشعار الطابع الزمني: http://developer.android.com/reference/android/hardware/SensorEvent.html#timestamp

76. أدوات الاستشعار المركبة مفتوحة المصدر في Android: /devices/sensors/sensor-types.html#composite_sensor_type_summary

77- وضع التشغيل المتواصل: /docs/core/interaction/sensors/report-modes#continuous

78. أداة استشعار التسارع: http://developer.android.com/reference/android/hardware/Sensor.html#TYPE_ACCELEROMETER

79. Wi-Fi Multicast API: ‏ http://developer.android.com/reference/android/net/wifi/WifiManager.MulticastLock.html

80. Wi-Fi Direct (Wi-Fi P2P): http://developer.android.com/reference/android/net/wifi/p2p/WifiP2pManager.html

81. واجهة برمجة التطبيقات WifiManager: http://developer.android.com/reference/android/net/wifi/WifiManager.html

82. واجهة برمجة تطبيقات البلوتوث: http://developer.android.com/reference/android/bluetooth/package-summary.html

83. واجهة برمجة التطبيقات Bluetooth ScanFilter API: https://developer.android.com/reference/android/bluetooth/le/ScanFilter.html

84- بروتوكول دفع NDEF: http://source.android.com/compatibility/ndef-push-protocol.pdf

85. شعاع Android: http://developer.android.com/guide/topics/connectivity/nfc/nfc.html

86. إعدادات مشاركة NFC على Android:

http://developer.android.com/reference/android/provider/Settings.html#ACTION_NFCSHARING_SETTINGS

87. تسليم الاتصال عبر NFC: http://members.nfc-forum.org/specs/spec_list/#conn_handover

88. الاقتران الآمن والبسيط عبر البلوتوث باستخدام تقنية NFC: http://members.nfc-forum.org/apps/group_public/download.php/18688/NFCForum-AD-BTSSP_1_1.pdf

89. Content Resolver: http://developer.android.com/reference/android/content/ContentResolver.html

90. واجهة برمجة التطبيقات لاتجاه الكاميرا: http://developer.android.com/reference/android/hardware/Camera.html#setDisplayOrientation(int)

91. الكاميرا: http://developer.android.com/reference/android/hardware/Camera.html

92. الكاميرا: http://developer.android.com/reference/android/hardware/Camera.Parameters.html

93- مستوى أجهزة الكاميرا: https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#INFO_SUPPORTED_HARDWARE_LEVEL

94. الإصدارات المتوافقة من الكاميرا: http://source.android.com/devices/camera/versioning.html

95. ‫Android DownloadManager: http://developer.android.com/reference/android/app/DownloadManager.html

96. نقل ملفات Android: http://www.android.com/filetransfer

97. ملحقات Android المفتوحة: http://developer.android.com/guide/topics/connectivity/usb/accessory.html

98. مكبّر صوت USB في Android: http://developer.android.com/reference/android/hardware/usb/UsbConstants.html#USB_CLASS_AUDIO

99. مواصفات الشحن عبر USB: http://www.usb.org/developers/docs/devclass_docs/USB_Battery_Charging_1.2.pdf

100. واجهة برمجة التطبيقات USB Host API: http://developer.android.com/guide/topics/connectivity/usb/host.html

101. سماعة رأس سلكية: http://source.android.com//docs/core/interaction/accessories/headset/plug-headset-spec.html

102. مرجع أمان Android وأذوناته: http://developer.android.com/guide/topics/security/permissions.html

103. مرجع UserManager: http://developer.android.com/reference/android/os/UserManager.html

104. مرجع وحدة التخزين الخارجية: http://source.android.com/docs/core/storage

105. واجهات برمجة التطبيقات الخاصة بمساحة التخزين الخارجية: http://developer.android.com/reference/android/os/Environment.html

106. الرمز القصير للرسائل القصيرة: http://en.wikipedia.org/wiki/Short_code

107. تشفير Android المفتوح المصدر: http://source.android.com/docs/security/features/encryption

108. نظرة عامة على "برنامج التوافق مع Android": http://source.android.com//docs/compatibility

109. منتدى التوافق مع Android: https://groups.google.com/forum/#!forum/android-compatibility

110. مشروع WebM: http://www.webmproject.org/

111. واجهة برمجة التطبيقات UI_MODE_TYPE_CAR في Android: http://developer.android.com/reference/android/content/res/Configuration.html#UI_MODE_TYPE_CAR

112. واجهة برمجة التطبيقات MediaCodecList API في Android: http://developer.android.com/reference/android/media/MediaCodecList.html

113. واجهة برمجة تطبيقات Android CamcorderProfile: http://developer.android.com/reference/android/media/CamcorderProfile.html

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