المراجعة 1
تاريخ آخر تعديل: 12 كانون الثاني (يناير) 2015
حقوق الطبع والنشر © 2015، Google Inc. جميع الحقوق محفوظة.
compatibility@android.com
جدول المحتويات
1. مقدّمة
يسرد هذا المستند المتطلبات التي يجب استيفاؤها لكي تكون الأجهزة متوافقة مع الإصدار 5.0 من نظام التشغيل Android.
يتم استخدام الكلمات "يجب" و"يجب ألّا" و"مطلوب" و"يجب" و"يجب ألّا" و"يُفضَّل" و"يُفضَّل ألّا" و"مُستحسَن" و"يجوز" و "اختياري" وفقًا لمعيار IETF المحدّد في RFC2119 [الموارد، 1].
وفقًا لما هو مُستخدَم في هذا المستند، يشير "منفذ الجهاز" أو "منفذ" إلى شخص أو مؤسسة تطوّر حلًّا للأجهزة أو البرامج يعمل بنظام التشغيل Android 5.0. "تنفيذ الجهاز" أو "التنفيذ" هو حلّ الأجهزة/البرامج الذي تم تطويره.
لكي يُعتبَر الإصدار متوافقًا مع Android 5.0، يجب أن تستوفي عمليات تنفيذ الأجهزة المتطلبات الواردة في تعريف التوافق هذا، بما في ذلك أي مستندات مدمجة من خلال الإشارة إليها.
إذا كان هذا التعريف أو اختبارات البرامج الموضّحة في الفقرة 10 غير واضح أو غير مكتمل، تقع على عاتق مُنفِّذ الجهاز مهمة ضمان التوافق مع عمليات التنفيذ الحالية.
لهذا السبب، يُعدّ "المشروع المفتوح المصدر لنظام Android" [المراجع، 2] هو المرجع والتنفيذ المفضّل لنظام Android. ننصح بشدة مطوّري التطبيقات المتوافقة مع الأجهزة بالاستناد إلى أقصى حد ممكن إلى رمز المصدر "الأساسي" المتاح من "مشروع Android المفتوح المصدر". على الرغم من أنّه يمكن نظريًا استبدال بعض المكوّنات بعمليات تنفيذ بديلة، لا يُنصح بشدة باتّباع هذه الممارسة، لأنّ اجتياز اختبارات البرامج سيصبح أكثر صعوبة. تقع على عاتق العميل مسؤولية ضمان التوافق السلوكي الكامل مع تنفيذ Android العادي، بما في ذلك مجموعة أدوات اختبار التوافق وغيرها. أخيرًا، يُرجى العلم أنّ هذا المستند يحظر صراحةً بعض عمليات استبدال المكوّنات و تعديلاتها.
يتم الحصول على العديد من المراجع المدرَجة في القسم 14 مباشرةً أو بشكل غير مباشر من حزمة تطوير البرامج (SDK) لنظام التشغيل Android، وستكون متطابقة من الناحية الوظيفية مع المعلومات الواردة في مستندات حزمة SDK هذه. في أي حالة اختلاف بين تعريف التوافق أو مجموعة أدوات اختبار التوافق ومستندات حزمة تطوير البرامج (SDK)، يتم اعتبار مستندات حزمة SDK مستندات موثوقة. إنّ أي تفاصيل فنية مقدَّمة في المراجع المضمّنة في القسم 14 تُعدّ جزءًا من تعريف التوافق هذا.
2- أنواع الأجهزة
على الرغم من أنّه تم استخدام "مشروع Android المفتوح المصدر" في تنفيذ مجموعة متنوعة من أنواع الأجهزة وأشكالها، تم تحسين العديد من جوانب البنية ومتطلبات التوافق للأجهزة المحمولة. بدءًا من الإصدار Android 5.0، يهدف مشروع Android Open Source Project إلى توفير مجموعة أكبر من أنواع الأجهزة كما هو موضّح في هذا القسم.
يشير جهاز Android المحمول إلى تنفيذ جهاز Android الذي يتم استخدامه عادةً من خلال مسكه باليد، مثل مشغلات mp3 والهواتف والأجهزة اللوحية. عمليات تنفيذ التطبيقات على الأجهزة المزوّدة بنظام التشغيل Android:
- يجب أن يكون مزوّدًا بشاشة تعمل باللمس مدمجة في الجهاز
- يجب أن يكون مزوّدًا بمصدر طاقة يسمح بالتنقّل، مثل بطارية
يشير جهاز Android Television إلى استخدام جهاز Android كواجهة ترفيه لاستهلاك الوسائط الرقمية والأفلام والألعاب والتطبيقات و/أو البث التلفزيوني المباشر للمستخدمين الذين يجلسون على بُعد حوالي ثلاثة أمتار (واجهة مستخدِم "للاسترخاء" أو "واجهة مستخدِم على بُعد ثلاثة أمتار"). أجهزة Android Television:
- يجب أن يكون مزوّدًا بشاشة مدمجة أو أن يتضمّن منفذ إخراج فيديو، مثل VGA أو HDMI أو منفذ لاسلكي لعرض المحتوى
- يجب الإفصاح عن الميزتَين android.software.leanback و android.hardware.type.television [الموارد، 3]
يشير جهاز ساعة Android إلى تنفيذ جهاز Android مخصّص للارتداء على الجسم، ربما على المعصم، و:
- يجب أن يكون الجهاز مزوّدًا بشاشة يبلغ طولها القطري الفعلي ما بين 1.1 و 2.5 بوصة.
- يجب تقديم بيان عن الميزة android.hardware.type.watch
- يجب أن يكون متوافقًا مع uiMode = UI_MODE_TYPE_WATCH [الموارد، 4]
يجب أن تستوفي جميع عمليات تنفيذ أجهزة Android التي لا تندرج ضمن أي من أنواع الأجهزة المذكورة أعلاه جميع المتطلبات الواردة في هذا المستند لتكون متوافقة مع الإصدار 5.0 من Android، ما لم يتم وصف المتطلّب بوضوح على أنّه لا ينطبق سوى على نوع معيّن من أجهزة Android.
2.1 إعدادات الجهاز
في ما يلي ملخّص للاختلافات الرئيسية في إعدادات الأجهزة حسب نوع الجهاز. (تشير الخلايا الفارغة إلى "يمكن"). لا يتناول هذا الجدول جميع الإعدادات، راجِع أقسام الأجهزة ذات الصلة للحصول على مزيد من التفاصيل.
الفئة |
الميزة |
Section |
الأجهزة المحمولة في اليد |
التلفزيون |
المشاهدة |
غير ذلك |
الإدخال |
لوحة التحكم |
يجب |
||||
الشاشة التي تعمل باللمس |
يجب |
يجب |
يجب |
|||
الميكروفون |
يجب |
يجب |
يجب |
يجب |
||
أجهزة الاستشعار |
مقياس التسارع |
يجب |
يجب |
يجب |
||
نظام تحديد المواقع العالمي (GPS) |
يجب |
|||||
إمكانية الاتصال |
Wi-Fi |
يجب |
يجب |
يجب |
||
اتصال Wi-Fi مباشر |
يجب |
يجب |
يجب |
|||
البلوتوث |
يجب |
يجب |
يجب |
يجب |
||
بلوتوث منخفض الطاقة |
يجب |
يجب |
يجب |
يجب |
||
وضع الجهاز الملحق/ المضيف USB |
يجب |
|
يجب |
|||
الإخراج |
منافذ مكبّر الصوت و/أو إخراج الصوت |
يجب |
يجب |
يجب |
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.0، يجب أن يحتوي هذا الحقل على قيمة تكامل 21. |
VERSION.SDK_INT |
إصدار نظام Android الذي يتم تنفيذه حاليًا بتنسيق يمكن لرمز التطبيق التابع لجهة خارجية الوصول إليه بالنسبة إلى Android 5.0، يجب أن يحتوي هذا الحقل على قيمة تكامل 21. |
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.0/LRWXX/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 للبيانات. على سبيل المثال، فلتر الأهداف الذي يحدّد عنوان URI للبيانات "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.4. توافق الويب
3.4.1. توافق WebView
يجوز توفير التنفيذ الكامل لواجهة برمجة التطبيقات android.webkit.Webview API على أجهزة Android Watch، ولكن يجب توفيره على جميع أنواع التطبيقات المتوافقة مع أنظمة التشغيل الأخرى. |
يجب الإبلاغ عن ميزة النظام الأساسي 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 5.0. يتضمّن هذا الإصدار مجموعة محدّدة من الإصلاحات المتعلقة بالوظائف والأمان في WebView [الموارد، 13].
- يجب أن تكون سلسلة وكيل المستخدم التي يُبلغ عنها WebView بالتنسيق التالي:
Mozilla/5.0 (Linux; Android $(VERSION); $(MODEL) Build/$(BUILD)) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 $(CHROMIUM_VER) Mobile Safari/537.36
- يجب أن تكون قيمة السلسلة $(VERSION) هي نفسها قيمة android.os.Build.VERSION.RELEASE.
- يجب أن تكون قيمة السلسلة $(MODEL) مطابقة لقيمة android.os.Build.MODEL.
- يجب أن تكون قيمة السلسلة $(BUILD) هي نفسها قيمة android.os.Build.ID.
- يجب أن تكون قيمة السلسلة $(CHROMIUM_VER) هي إصدار Chromium في المشروع المفتوح المصدر لنظام التشغيل Android.
- قد تحذف عمليات تنفيذ الأجهزة كلمة Mobile في سلسلة وكيل المستخدم.
يجب أن يتضمّن مكوّن WebView إتاحة أكبر عدد ممكن من ميزات HTML5، وإذا كان يتيح الميزة، يجب أن يكون متوافقًا مع مواصفات HTML5 [الموارد، 14].
3.4.2. توافق المتصفّح
يجوز لأجهزة Android Television وWatch حذف تطبيق المتصفّح، ولكن يجب أن توفّر أنماط النية العامة كما هو موضّح في الفقرة 3.2.3.1. يجب أن تتضمّن جميع أنواع عمليات تنفيذ الأجهزة الأخرى تطبيق متصفح مستقل لتصفّح الويب العام للمستخدمين. |
قد يستند المتصفّح المستقل إلى تكنولوجيا متصفّح أخرى غير WebKit. ومع ذلك، حتى في حال استخدام تطبيق متصفّح بديل، يجب أن يستند العنصر android.webkit.WebView المقدَّم للتطبيقات التابعة لجهات خارجية إلى WebKit، كما هو موضّح في الفقرة 3.4.1.
يجوز لعمليات التنفيذ إرسال سلسلة وكيل مستخدم مخصّصة في تطبيق المتصفّح المستقل.
يجب أن يتضمّن تطبيق المتصفّح المستقل (سواء كان مستندًا إلى تطبيق المتصفّح WebKit المتوافق مع الإصدارات السابقة أو بديلاً تابعًا لجهة خارجية) ميزات تتيح استخدام أكبر عدد ممكن من ميزات HTML5 [Resources, 14]. على الأقل، يجب أن تتوافق عمليات تنفيذ الأجهزة مع كل من منصّات برمجة التطبيقات التالية المرتبطة بـ HTML5:
- ذاكرة التخزين المؤقت للتطبيق/العمل بلا إنترنت [الموارد، 15]
- علامة
- تحديد الموقع الجغرافي [المراجع، 17]
بالإضافة إلى ذلك، يجب أن تتيح عمليات تنفيذ الأجهزة استخدام واجهة برمجة التطبيقات 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 لكي تتأثّر فقط التطبيقات التي تستخدمها صراحةً (من خلال
إذا اقترح أحد مطوّري الأجهزة تحسين إحدى مساحات أسماء الحِزم المذكورة أعلاه، (مثلاً، عن طريق إضافة وظيفة جديدة مفيدة إلى واجهة برمجة تطبيقات حالية أو إضافة واجهة برمجة تطبيقات جديدة)، على المطوّر الانتقال إلى source.android.com وبدء عملية المساهمة بالتغييرات والرموز البرمجية وفقًا لاطلاعه على المعلومات الواردة في ذلك الموقع الإلكتروني.
يُرجى العِلم أنّ القيود المذكورة أعلاه تتوافق مع القواعد العادية لتسمية واجهة برمجة التطبيقات في لغة Java البرمجية، ويهدف هذا القسم ببساطة إلى تعزيز تلك القواعد وجعلها ملزمة من خلال تضمينها في تعريف التوافق هذا.
3.7 التوافق مع بيئة التشغيل
يجب أن تتوافق عمليات تنفيذ التطبيقات على الأجهزة مع تنسيق Dalvik Executable (DEX) الكامل و مواصفات ودلالات رمز Dalvik الثنائي [Resources, 20]. على مطوّري الأجهزة استخدام ART، وهو التنفيذ المرجعي لتنسيق Dalvik القابل للتنفيذ، ونظام إدارة الحِزم المرجعي.
يجب أن تضبط عمليات تنفيذ الأجهزة أوقات تشغيل Dalvik لتخصيص الذاكرة وفقًا لنظام Android الأساسي، وكما هو محدّد في الجدول التالي. (اطّلِع على الفقرة 7.1.1 للاطّلاع على تعريفات حجم الشاشة وكثافة الشاشة).
يُرجى العِلم أنّ قيم الذاكرة المحدّدة أدناه تُعدّ الحدّ الأدنى للقيم، وقد تخصص عمليات تنفيذ الأجهزة مزيدًا من الذاكرة لكل تطبيق.
تنسيق الشاشة |
كثافة الشاشة |
الحد الأدنى لسعة ذاكرة التطبيق |
صغير / عادي |
120 نقطة لكل بوصة (ldpi) |
16 ميغابايت |
160 نقطة لكل بوصة (mdpi) |
||
213 نقطة لكل بوصة (tvdpi) |
32 ميغابايت |
|
240 نقطة لكل بوصة (دقة عالية) |
||
320 نقطة لكل بوصة (xhdpi) |
64 ميغابايت |
|
400 نقطة لكل بوصة (400dpi) |
96 ميغابايت |
|
480 نقطة لكل بوصة (xxhdpi) |
128 ميغابايت |
|
560 نقطة في البوصة (560dpi) |
192 ميغابايت |
|
640 نقطة لكل بوصة (xxxhdpi) |
256 ميغابايت |
|
كبير |
120 نقطة لكل بوصة (ldpi) |
16 ميغابايت |
160 نقطة لكل بوصة (mdpi) |
32 ميغابايت |
|
213 نقطة لكل بوصة (tvdpi) |
64 ميغابايت |
|
240 نقطة لكل بوصة (دقة عالية) |
||
320 نقطة لكل بوصة (xhdpi) |
128 ميغابايت |
|
400 نقطة لكل بوصة (400dpi) |
192 ميغابايت |
|
480 نقطة لكل بوصة (xxhdpi) |
256 ميغابايت |
|
560 نقطة في البوصة (560dpi) |
384 ميغابايت |
|
640 نقطة لكل بوصة (xxxhdpi) |
512 ميغابايت |
|
كبير جدًا |
160 نقطة لكل بوصة (mdpi) |
64 ميغابايت |
213 نقطة لكل بوصة (tvdpi) |
96 ميغابايت |
|
240 نقطة لكل بوصة (دقة عالية) |
||
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.
بالإضافة إلى ذلك، يجب أن يعرض التنفيذ بشكل صحيح جميع الموارد (الرموز وملفات الصوت وما إلى ذلك) المقدَّمة في واجهات برمجة التطبيقات [الموارد، 23] أو في دليل أنماط رموز شريط الحالة/النظام [الموارد، 24]. يجوز لمطوّري الأجهزة توفير تجربة مستخدم بديلة للإشعارات عن تلك التي يوفّرها تنفيذ إشارة مرجعية لنظام Android المفتوح المصدر، ومع ذلك، يجب أن تتوافق أنظمة الإشعارات البديلة مع موارد الإشعارات الحالية، كما هو موضّح أعلاه.
يتيح Android إرسال إشعارات مختلفة، مثل:
- الإشعارات الغنية: عروض تفاعلية للإشعارات الجارية
- الإشعارات التي تُرسَل للمستخدمين لإعلامهم بحدث ما: هي إشعارات يمكن للمستخدمين التفاعل معها أو إغلاقها بدون مغادرة التطبيق الحالي.
- الإشعارات على شاشة القفل: الإشعارات التي تظهر على شاشة القفل مع إمكانية التحكّم بشكل دقيق في مستوى ظهورها
يجب أن تعرض عمليات تنفيذ التطبيقات على الأجهزة هذه الإشعارات وتنفِّذها بشكل صحيح، بما في ذلك العنوان/الاسم والرمز والنص كما هو موضّح في واجهات برمجة التطبيقات لنظام التشغيل Android [Resources, 25].
يتضمّن نظام التشغيل Android واجهات برمجة تطبيقات Notification Listener Service API التي تسمح للتطبيقات (بعد أن يسمح المستخدم بذلك صراحةً) بتلقّي نسخة من جميع الإشعارات عند إرسالها أو تعديلها. يجب أن تُرسِل عمليات تنفيذ الأجهزة إعلامات كاملة بشكل صحيح وسريع إلى جميع خدمات الاستماع المثبَّتة والمفعَّلة من قِبل المستخدمين، بما في ذلك أي بيانات وصفية مرفقة بعنصر الإشعار.
3.8.4. البحث
يتضمّن Android واجهات برمجة تطبيقات [الموارد، 26] تسمح للمطوّرين بدمج ميزة البحث في تطبيقاتهم، وإظهار بيانات تطبيقاتهم في البحث العام على النظام. بشكلٍ عام، تتكون هذه الوظيفة من واجهة مستخدم واحدة على مستوى النظام تسمح للمستخدمين بإدخال طلبات البحث وعرض اقتراحات أثناء كتابتهم وعرض النتائج. تسمح واجهات برمجة التطبيقات لنظام التشغيل Android للمطوّرين بإعادة استخدام هذه الواجهة لتوفير ميزة البحث داخل تطبيقاتهم، كما تسمح لهم بتقديم النتائج إلى واجهة مستخدم البحث الشاملة الشائعة.
يجب أن تتضمّن عمليات تنفيذ أجهزة Android ميزة البحث الشامل، وهي واجهة مستخدم واحدة ومشترَكة لبحث على مستوى النظام يمكنها تقديم اقتراحات في الوقت الفعلي استجابةً لإدخال المستخدم. يجب أن تُنفِّذ عمليات تنفيذ الأجهزة واجهات برمجة التطبيقات التي تسمح للمطوّرين بإعادة استخدام واجهة المستخدم هذه لتوفير ميزة البحث ضمن تطبيقاتهم الخاصة. إنّ عمليات تنفيذ الأجهزة التي تُنفِّذ واجهة البحث الشامل يجب أن تُنفِّذ واجهات برمجة التطبيقات التي تسمح للتطبيقات التابعة لجهات خارجية بإضافة اقتراحات إلى مربّع البحث عند تشغيله في وضع البحث الشامل. في حال عدم تثبيت تطبيقات تابعة لجهات خارجية تستفيد من هذه الوظيفة، من المفترض أن يكون السلوك التلقائي هو عرض نتائج واقتراحات محرّك بحث الويب.
3.8.5. النخب
يمكن للتطبيقات استخدام واجهة برمجة التطبيقات Toast لعرض سلاسل قصيرة غير مشروطة على المستخدم النهائي، والتي تختفي بعد فترة زمنية قصيرة [Resources, 27]. يجب أن تعرِض عمليات تنفيذ الأجهزة إشعارات Toast من التطبيقات للمستخدمين النهائيين بطريقة واضحة جدًا.
3.8.6. المظاهر
يقدّم Android "المظاهر" كآلية للتطبيقات لتطبيق الأنماط على مستوى نشاط أو تطبيق كامل.
يتضمّن Android مجموعة مظاهر "Holo" كمجموعة من الأنماط المحدّدة التي يمكن لمطوّري التطبيقات استخدامها إذا أرادوا مطابقة مظهر وملمس مظهر Holo كما هو محدّد في حزمة تطوير البرامج (SDK) لنظام التشغيل Android [Resources, 28]. يجب ألا تغيّر عمليات تنفيذ الأجهزة أيًا من سمات مظهر Holo المعروضة للتطبيقات [Resources, 29].
يتضمّن نظام التشغيل Android 5.0 مجموعة من مظاهر "المادة" كمجموعة من الأنماط المحدّدة التي يمكن لمطوّري التطبيقات استخدامها إذا أرادوا مطابقة مظهر وملمس مظهر التصميم على مستوى الأنواع المتنوعة من أجهزة 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]. يجب أن تتيح عمليات تنفيذ الأجهزة التي تتيح شاشة القفل في الجهاز استخدام نموذج إشعارات الوسائط مع الإشعارات الأخرى.
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 5.0 استخدام الخط 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]. يجب أن تتيح عمليات تنفيذ الأجهزة التي تتضمّن شاشة قفل الشاشة استخدام مجموعة السياسات الكاملة لإدارة الجهاز المحدّدة في مستندات Android SDK [Resources, 39] والإبلاغ عن ميزة النظام الأساسي android.software.device_admin.
قد تتضمّن عمليات تنفيذ الأجهزة تطبيقًا مثبّتًا مسبقًا يؤدي وظائف إدارة الجهاز، ولكن يجب عدم ضبط هذا التطبيق تلقائيًا على تطبيق "مالك الجهاز" التلقائي [الموارد، 41].
3.10. تسهيل الاستخدام
يقدّم نظام التشغيل Android طبقة تسهيل الاستخدام تساعد المستخدمين الذين يعانون من عجز في التنقّل في أجهزتهم بسهولة أكبر. بالإضافة إلى ذلك، يقدّم Android واجهات برمجة تطبيقات النظام التي تتيح لعمليات تنفيذ خدمات تسهيل الاستخدام تلقّي عمليات استدعاء لأحداث المستخدم والنظام وإنشاء آليات متغيّرة لعرض الملاحظات، مثل تحويل النص إلى كلام والملاحظات اللمسية والتنقّل باستخدام كرة التتبّع أو لوحة التوجيه [المراجع، 42]. يجب أن توفّر عمليات التنفيذ على الأجهزة إطار عمل تسهيل الاستخدام في Android بشكل متوافق مع عملية التنفيذ التلقائية في Android. يجب أن تستوفي عمليات تنفيذ الأجهزة المتطلبات التالية:
- يجب أن تتيح تنفيذ خدمات إمكانية الوصول التابعة لجهات خارجية من خلال واجهات برمجة التطبيقات android.accessibilityservice API [Resources, 43]
- يجب إنشاء AccessibilityEvents وإرسال هذه الأحداث إلى جميع عمليات تنفيذ AccessibilityService المسجّلة بطريقة تتوافق مع التنفيذ التلقائي لنظام التشغيل Android.
- يجب أن يوفّر تنفيذ الأجهزة آلية يمكن للمستخدم الوصول إليها لتفعيل خدمات تسهيل الاستخدام وإيقافها، ويجب أن تعرض هذه الواجهة استجابةً للintent android.provider.Settings.ACTION_ACCESSIBILITY_SETTINGS، ما لم يكن جهاز Android Watch لا يتضمّن مخرجًا صوتيًا.
بالإضافة إلى ذلك، يجب أن توفّر عمليات تنفيذ الأجهزة تنفيذًا للخدمة لتسهيل الاستخدام على الجهاز، ويجب أن توفّر آلية للمستخدمين لتفعيل خدمة تسهيل الاستخدام أثناء إعداد الجهاز. يتوفّر تنفيذ مفتوح المصدر لإحدى خدمات تسهيل الاستخدام من خلال مشروع Eyes Free [الموارد، 44].
3.11. تحويل النص إلى كلام
يتضمّن Android واجهات برمجة تطبيقات تتيح للتطبيقات الاستفادة من خدمات تحويل النص إلى كلام (TTS) وتسمح لمقدّمي الخدمات بتوفير عمليات تنفيذ لخدمات تحويل النص إلى كلام [الموارد، 45]. يجب أن تستوفي عمليات تنفيذ الأجهزة التي تُبلغ عن الميزة android.hardware.audio.output هذه المتطلبات المتعلقة بإطار عمل تحويل النص إلى كلام (TTS) في 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] باستثناء الحالات التي يُسمح فيها صراحةً بذلك في هذا المستند. وعلى وجه التحديد، يجب أن تتوافق تطبيقات الأجهزة مع تنسيقات الوسائط وبرامج الترميز وفك الترميز وأنواع الملفات وتنسيقات الحاويات المحدّدة في الجداول أدناه. يتم توفير كل برامج الترميز هذه كبرامج تنفيذ في عملية التنفيذ المفضّلة لنظام Android من "المشروع المفتوح المصدر لنظام Android".
يُرجى العِلم أنّ Google أو تحالف Open Handset Alliance لا يقدّمان أي تأكيد بأنّ برامج الترميز هذه خالية من براءات اختراع تابعة لجهات خارجية. ننصحك بأن يحصل المستخدمون الذين يريدون استخدام رمز المصدر هذا في منتجات الأجهزة أو البرامج على تراخيص براءات اختراع من مالكي براءات الاختراع المعنيين، وذلك لأنّ عمليات تنفيذ هذا الرمز، بما في ذلك في البرامج المفتوحة المصدر أو البرامج المشترَكة.
5.1.1. برامج ترميز الصوت
التنسيق / برنامج الترميز |
برنامج الترميز |
برنامج فك التشفير |
التفاصيل |
أنواع الملفات / تنسيقات الحِزم المتوافقة |
الملف الشخصي لبرنامج ترميز AAC في MPEG-4 (AAC LC) |
REQUIRED1 |
مطلوب |
إتاحة المحتوى أحادي الصوت/ستيريو/5.0/5.12 بمعدّلات أخذ العينات العادية من 8 إلى 48 كيلوهرتز |
• 3GPP (.3gp) • MPEG-4 (.mp4 و.m4a) • تنسيق ADTS raw AAC (بامتداد .aac، يمكن فك ترميزه في الإصدار 3.1 من نظام التشغيل Android والإصدارات الأحدث، ويمكن ترميزه في الإصدار 4.0 من نظام التشغيل Android والإصدارات الأحدث، ولا يمكن استخدام تنسيق ADIF) • MPEG-TS (بتنسيق .ts، لا يمكن تقديمه أو ترجيعه، Android 3.0 والإصدارات الأحدث) |
الملف الشخصي MPEG-4 HE AAC (AAC+) |
REQUIRED1 (Android 4.1 والإصدارات الأحدث) |
مطلوب |
إتاحة المحتوى الصوتي الأحادي/الإستيريو/5.0/5.12 بمعدّلات بيانات في الملف الصوتي العادية من 16 إلى 48 كيلوهرتز |
|
MPEG-4 HE AACv2 الملف الشخصي (الترميز المتقدّم للصوت المحسّن) |
|
مطلوب |
إتاحة المحتوى الصوتي الأحادي/الإستيريو/5.0/5.12 بمعدّلات بيانات في الملف الصوتي العادية من 16 إلى 48 كيلوهرتز |
|
الترميز المتقدّم للصوت بوقت استجابة منخفض (AAC ELD) |
REQUIRED1 (Android 4.1 والإصدارات الأحدث) |
مطلوب (Android 4.1 والإصدارات الأحدث) |
إتاحة المحتوى الأحادي/الإستيريو بمعدّلات بيانات في الملف الصوتي عادية تتراوح بين 16 و48 كيلوهرتز |
|
AMR-NB |
REQUIRED3 |
REQUIRED3 |
من 4.75 إلى 12.2 كيلوبت في الثانية بمعاينة بمعدل 8 كيلوهرتز |
3GPP (.3gp) |
AMR-WB |
REQUIRED3 |
REQUIRED3 |
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 |
مطلوب (Android 5.0 والإصدارات الأحدث) |
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 |
REQUIRED1 |
REQUIRED2 |
|
• 3GPP (.3gp) • MPEG-4 (.mp4) |
H.264 AVC |
REQUIRED2 |
REQUIRED2 |
راجِع الفقرة 5.2 و5.3 للاطّلاع على التفاصيل. |
• 3GPP (.3gp) • MPEG-4 (.mp4) • MPEG-TS (.ts، صوت بترميز AAC فقط، لا يمكن تقديمه أو ترجيعه، Android 3.0 والإصدارات الأحدث) |
H.265 HEVC |
REQUIRED2 |
راجِع الفقرة 5.3 لمعرفة التفاصيل. |
MPEG-4 (.mp4) |
|
MPEG-4 SP |
|
REQUIRED2 |
|
3GPP (.3gp) |
VP83 |
REQUIRED2 (Android 4.3 والإصدارات الأحدث) |
REQUIRED2 (Android 2.3.3 والإصدارات الأحدث) |
راجِع الفقرة 5.2 و5.3 للاطّلاع على التفاصيل. |
• WebM (.webm) [المصادر، 110] • Matroska (.mkv, Android 4.0 والإصدارات الأحدث)4 |
VP9 |
REQUIRED2 (Android 4.4 والإصدارات الأحدث) |
راجِع الفقرة 5.3 للاطّلاع على التفاصيل. |
• WebM (.webm) [المصادر، 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.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 التي تتضمّن برامج ترميز 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 |
UHD 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 التلفاز مع الملف الشخصي "الرئيسي" من المستوى 4.1 والمستوى الرئيسي وملف ترميز HD 1080p، ويجب أن تتوافق مع الملف الشخصي "الرئيسي 10" من المستوى 5 والمستوى الرئيسي وملف ترميز UHD.
دقة عادية (جودة منخفضة) |
دقة عادية (جودة عالية) |
دقة عالية 720p 1 |
دقة عالية 1080p 1 |
دقة فائقة 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 ضمن حزمة تطوير البرامج (NDK) لنظام التشغيل Android. يُرجى الاطّلاع على ملف: 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 متوافقة مع ما يلي:
- Android Debug Bridge (adb) [الموارد، 55]
يجب أن تتوافق عمليات تنفيذ الأجهزة مع جميع وظائف adb كما هو موضّح في حزمة تطوير البرامج (SDK) لنظام التشغيل Android، بما في ذلك dumpsys [Resources, 56]. يجب أن يكون برنامج adb الخفي غير مفعَّل تلقائيًا على الجهاز، ويجب أن تتوفّر لدينا آلية يمكن للمستخدم الوصول إليها لتفعيل Android Debug Bridge. إذا كان تنفيذ برمجة أحد الأجهزة يحذف وضع الجهاز الطرفي USB، يجب أن ينفِّذ جسر تصحيح أخطاء Android عبر شبكة المنطقة المحلية (مثل إيثرنت أو 802.11).
يتيح نظام التشغيل Android استخدام أداة adb الآمنة. تفعِّل أداة adb الآمنة أداة adb على المضيفين المعروفين المُعتمَدين. يجب أن تتيح عمليات تنفيذ الأجهزة استخدام adb الآمن.
- Dalvik Debug Monitor Service (ddms) [Resources, 57]
يجب أن تتيح عمليات تنفيذ الأجهزة جميع ميزات ddms كما هو موضّح في مستندات حزمة تطوير البرامج (SDK) لنظام التشغيل Android. بما أنّ أداة ddms تستخدم adb، من المفترض أن تكون أداة ddms غير مفعّلة تلقائيًا، ولكن يجب أن تكون مفعّلة عندما يفعّل المستخدم أداة Android Debug Bridge، كما هو موضّح أعلاه.
- Monkey [Resources, 58]
يجب أن تتضمّن عمليات تنفيذ الأجهزة إطار عمل Monkey وأن تتيحه للتطبيقات لاستخدامه.
- SysTrace [Resources, 59]
يجب أن تتيح عمليات التنفيذ على الأجهزة استخدام أداة 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 dp × 320 dp على الأقل (حجم "صغير")، ما لم يكن جهاز Android Watch.
- يجب أن تكون أحجام شاشات الأجهزة التي تُبلغ عن حجم الشاشة "عادي" 480 وحدة بكسل مستقلة الكثافة × 320 وحدة بكسل مستقلة الكثافة على الأقل.
- يجب أن تكون أحجام شاشات الأجهزة التي تُبلغ عن حجم الشاشة "كبير" 640 وحدة بكسل مستقلة الكثافة × 480 وحدة بكسل مستقلة الكثافة على الأقل.
- يجب أن تكون أحجام شاشات الأجهزة التي تُبلغ عن حجم الشاشة "كبير جدًا" 960 وحدة بكسل مستقلة الكثافة × 720 وحدة بكسل مستقلة الكثافة على الأقل.
بالإضافة إلى ذلك،
- يجب أن تتضمّن أجهزة Android Watch شاشة أبعادها القطرية في النطاق من 1.1 إلى 2.5 بوصة.
- بالنسبة إلى الأنواع الأخرى من عمليات تنفيذ أجهزة Android التي تتضمّن شاشة مدمجة، يجب أن يكون حجم الشاشة على الأقل 2.5 بوصة (6.35 سم) في الوضع المائل.
يجب ألا تغيّر الأجهزة حجم الشاشة الذي يتم الإبلاغ عنه في أي وقت.
تشير التطبيقات اختياريًا إلى أحجام الشاشة التي تتوافق معها من خلال سمة
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 نقطة لكل بوصة (دقة عالية)
- 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. وهذا يعني أنّه يجب ألّا تغيّر عمليات تنفيذ الأجهزة عوامل التفعيل أو الحدود الدنيا التي يتم عندها تفعيل وضع التوافق، ويجب ألّا تغيّر سلوك وضع التوافق نفسه.
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.1. لوحة المفاتيح
يجوز لأجهزة Android Watch استخدام لوحة مفاتيح برمجية، ولكن يجب استخدامها في عمليات التنفيذ على أنواع الأجهزة الأخرى. |
عمليات التنفيذ على الأجهزة:
- يجب أن يتضمّن التطبيق إمكانية استخدام "إطار عمل إدارة الإدخال" (الذي يتيح لصنّاع التطبيقات الخارجيين إنشاء "محرّري طرق الإدخال"، أي لوحة المفاتيح الافتراضية) على النحو الموضّح بالتفصيل على 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.
- يجب أن توفّر جميع أنواع عمليات تنفيذ الأجهزة الأخرى وظيفتَي Home (الصفحة الرئيسية) وBack (رجوع).
يجوز تنفيذ هذه الوظائف من خلال أزرار خارجية مخصّصة (مثل الأزرار الميكانيكية أو الحساسة لللمس)، أو يجوز تنفيذها باستخدام مفاتيح برمجية مخصّصة في جزء محدد من الشاشة أو الإيماءات أو اللوحة اللمسية أو غير ذلك. يتوافق نظام التشغيل Android مع كلا الطريقتَين. يجب أن تكون جميع هذه الوظائف متاحة من خلال إجراء واحد (مثل النقر أو النقر المزدوج أو الإيماءة) عندما تكون مرئية.
يجب أن تتضمّن وظيفة "العناصر الأخيرة"، في حال توفّرها، زرًا أو رمزًا مرئيًا ما لم يتم إخفاؤهما مع وظائف التنقّل الأخرى في وضع ملء الشاشة. ولا ينطبق ذلك على الأجهزة التي يتم ترقيتها من إصدارات Android الأقدم والتي تحتوي على buttons مادية للتنقّل ولا تحتوي على مفتاح التطبيقات الحديثة.
يجب أن تتضمّن كل من وظيفتَي "الصفحة الرئيسية" و"الرجوع"، في حال توفّرهما، زرًا أو رمزًا مرئيًا ما لم يتم إخفاؤهما مع وظائف التنقّل الأخرى في وضع ملء الشاشة أو عند ضبط uiMode UI_MODE_TYPE_MASK على UI_MODE_TYPE_WATCH.
تم إيقاف دالة Menu نهائيًا لصالح شريط الإجراءات منذ الإصدار 4.0 من Android. لذلك، يجب عدم استخدام زرّ أجهزة مخصّص لعرض القائمة في عمليات تنفيذ الأجهزة الجديدة التي تعمل بالإصدار 5.0 من Android. يجب ألا توفّر عمليات تنفيذ الأجهزة القديمة زرًا ماديًا مخصّصًا لعرض قائمة التطبيقات، ولكن في حال توفّر زر القائمة المادي وكان الجهاز قيد استخدام التطبيقات التي يكون فيها targetSdkVersion أكبر من 10، يجب أن تلتزم عمليات تنفيذ الأجهزة بما يلي:
- يجب عرض زر القائمة المنسدلة للإجراءات في شريط الإجراءات عندما يكون مرئيًا، ويجب ألا تكون القائمة المنسدلة للإجراءات المنبثقة الناتجة فارغة. بالنسبة إلى عملية تنفيذ على جهاز تم إطلاقها قبل Android 4.4 ولكن تم ترقيتها إلى Android 5.0، يُنصح باستخدام هذا الإجراء.
- يجب عدم تعديل موضع النافذة المنبثقة الإضافية للإجراءات التي يتم عرضها من خلال اختيار زر القائمة الكاملة في شريط الإجراءات.
- قد يتم عرض النافذة المنبثقة لعرض الإجراءات الإضافية في موضع معدَّل على الشاشة عند عرضها من خلال النقر على زر القائمة
لضمان التوافق مع الإصدارات القديمة، يجب أن تتيح عمليات تنفيذ الأجهزة وظائف القائمة للتطبيقات عندما يكون 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] بحيث يشعر المستخدم أنّه يتعامل مباشرةً مع العناصر على الشاشة. بما أنّ المستخدم يلمس الشاشة مباشرةً، لا يحتاج النظام إلى أيّ عناصر تحكم إضافية للإشارة إلى العناصر التي يتم التحكّم فيها. في المقابل، توفّر واجهة اللمس الزائفة نظام إدخال بيانات مستخدِم يقترب من مجموعة فرعية من إمكانات الشاشة التي تعمل باللمس. على سبيل المثال، يشبه الماوس أو جهاز التحكّم عن بُعد الذي يشغِّل مؤشرًا على الشاشة شاشة تعمل باللمس، ولكن يتطلّب من المستخدم أولاً الإشارة أو التركيز ثم النقر. يمكن أن تتيح العديد من أجهزة الإدخال، مثل الماوس ولوحة اللمس والماوس الهوائي المستنِد إلى أداة الاستشعار الدوراني والمؤشر المستنِد إلى أداة الاستشعار الدوراني وعصا التحكم ولوحة اللمس المتعدّدة اللمس، التفاعلات باللمس الزائف. يتضمّن الإصدار 5.0 من 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 مع عمليات ربط مفاتيح الصعوبة التالية:
Button |
استخدام HID2 |
Android Button |
أ1 |
0x09 0x0001 |
KEYCODE_BUTTON_A (96) |
ب1 |
0x09 0x0002 |
KEYCODE_BUTTON_B (97) |
X1 |
0x09 0x0004 |
KEYCODE_BUTTON_X (99) |
0x09 0x0005 |
KEYCODE_BUTTON_Y (100) |
|
0x01 0x00393 |
||
0x01 0x00393 |
||
0x09 0x0007 |
KEYCODE_BUTTON_L1 (102) |
|
0x09 0x0008 |
KEYCODE_BUTTON_R1 (103) |
|
0x09 0x000E |
KEYCODE_BUTTON_THUMBL (106) |
|
0x09 0x000F |
KEYCODE_BUTTON_THUMBR (107) |
|
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 Button |
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 TV أزرار "رجوع" و"الشاشة الرئيسية" و"اختيار"، ويجب أن تتوافق مع أحداث لوحة التوجيه [الموارد، 72].
7.3. أجهزة الاستشعار
يتضمّن Android واجهات برمجة تطبيقات للوصول إلى مجموعة متنوعة من أنواع الحساسات. قد تحذف عمليات تنفيذ التطبيقات على الأجهزة بشكل عام أجهزة الاستشعار هذه، كما هو موضّح في الأقسام الفرعية التالية. إذا كان الجهاز يتضمّن نوعًا معيّنًا من أجهزة الاستشعار يحتوي على واجهة برمجة تطبيقات مقابلة للمطوّرين الخارجيين، يجب أن ينفذ تنفيذ الجهاز هذه الواجهة كما هو موضّح في مستندات حزمة تطوير البرامج (SDK) لنظام التشغيل Android ومستندات Android Open Source حول أجهزة الاستشعار [الموارد، 73]. على سبيل المثال، عمليات تنفيذ الأجهزة:
- يجب الإبلاغ بدقة عن توفّر أدوات الاستشعار أو عدم توفّرها وفقًا لفئة android.content.pm.PackageManager [Resources, 53]
- يجب أن تُرجع قائمة دقيقة بأدوات الاستشعار المتوافقة من خلال (SensorManager.getSensorList()) وطرق مشابهة
- يجب أن تعمل بشكل معقول مع جميع واجهات برمجة التطبيقات الأخرى الخاصة بأجهزة الاستشعار (على سبيل المثال، من خلال عرض قيمة "صحيح" أو "خطأ" حسب الاقتضاء عندما تحاول التطبيقات تسجيل مستمعين، وعدم استدعاء مستمعي أجهزة الاستشعار عندما لا تكون أجهزة الاستشعار المقابلة متوفّرة، وما إلى ذلك).
- يجب الإبلاغ عن جميع قياسات أجهزة الاستشعار باستخدام قيم النظام الدولي المعني للوحدات (المقياس) لكل نوع من أنواع أجهزة الاستشعار على النحو المحدّد في مستندات 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 والإبلاغ عنه [Resources, 78]
- يجب أن يكون الجهاز قادرًا على تسجيل الأحداث بمعدّل تكرار لا يقل عن 100 هرتز، ويجب عليه تسجيل الأحداث بمعدّل تكرار لا يقل عن 200 هرتز.
- يجب أن تكون متوافقة مع نظام إحداثيات أداة استشعار Android كما هو موضّح بالتفصيل في واجهات برمجة تطبيقات Android [Resources, 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 [Resources, 74]
- يجب أن يكون قادرًا على قياس القيم بين -900 و+900 μT على كل محور قبل الاشباع
- يجب أن تكون قيمة إزاحة الحديد الصلب أقل من 700 μT، ويجب أن تكون القيمة أقل من 200 μT، وذلك من خلال وضع مقياس المغناطيسية بعيدًا عن الحقول المغناطيسية الديناميكية (المُنشأة عن التيار) والثابتة (المُنشأة عن المغناطيس).
- يجب أن تكون درجة الدقة مساوية أو أعلى من 0.6 ميكرو تسلا، ويجب أن تكون درجة الدقة مساوية أو أعلى من 0.2 ميكرو تسلا.
- يجب أن يتم تصحيحها حسب درجة الحرارة
- يجب أن تتيح المعايرة على الإنترنت وتعويض الانحياز الحديدي الصلب، والحفاظ على مَعلمات التعويض بين عمليات إعادة تشغيل الجهاز.
- يجب تطبيق التعويض عن الحديد اللين، ويمكن إجراء المعايرة سواء أثناء استخدام الجهاز أو أثناء إنتاجه.
- يجب أن يكون لها انحراف معيّاري، يتم احتسابه لكل محور على أساس عيّنات تم جمعها على مدار فترة لا تقل عن 3 ثوانٍ بأعلى معدّل تحليل، ولا تزيد عن 0.5 μT
- يجب تنفيذ أداة استشعار مركبة من النوع TYPE_ROTATION_VECTOR، إذا كان جهاز قياس السرعة ومستشعر الجيروسكوب مُدرَجين أيضًا.
- يجوز تنفيذ أداة استشعار TYPE_GEOMAGNETIC_ROTATION_VECTOR إذا تم تنفيذ أداة استشعار التسارع أيضًا. ومع ذلك، في حال تنفيذه، يجب أن يستهلك أقل من 10 ملي واط ويجب أن يستهلك أقل من 3 ملي واط عند تسجيل أداة الاستشعار في وضع المعالجة المجمّعة بمعدّل 10 هرتز.
7.3.3. نظام تحديد المواقع العالمي (GPS)
يجب أن تتضمّن عمليات تنفيذ الأجهزة جهاز استقبال نظام تحديد المواقع العالمي (GPS). إذا كان تنفيذ الجهاز يتضمن مستقبل نظام تحديد المواقع العالمي (GPS)، يجب أن يتضمّن شكلاً من أشكال تقنية "نظام تحديد المواقع العالمي (GPS) المساعد" لتقليل وقت قفل نظام تحديد المواقع العالمي (GPS).
7.3.4. الجيروسكوب
يجب أن تتضمّن عمليات تنفيذ الأجهزة أداة جيروسكوب (أداة استشعار التغييرات الزاوية). يجب عدم تضمين أجهزة استشعار جيروسكوب في الأجهزة ما لم يتم تضمين مقياس تسارع ثلاثي المحاور أيضًا. إذا كان تطبيق الجهاز يتضمّن أداة جيروسكوب، يجب أن يستوفي الشروط التالية:
- يجب أن توفّر أداة الاستشعار TYPE_GYROSCOPE، ويجب أيضًا أن توفّر أداة الاستشعار TYPE_GYROSCOPE_UNCALIBRATED. ننصح بشدة باستخدام أداة الاستشعار SENSOR_TYPE_GYROSCOPE_UNCALIBRATED على أجهزة Android الحالية والجديدة.
- يجب أن يكون قادرًا على قياس تغييرات الاتجاه بما يصل إلى 1,000 درجة في الثانية
- يجب أن يكون الجهاز قادرًا على تسجيل الأحداث بمعدّل تكرار لا يقل عن 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
- يجب تنفيذ واجهة برمجة التطبيقات multicast API كما هو موضّح في مستندات حزمة تطوير البرامج (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 في الوقت نفسه.
7.4.2.2. إعداد رابط مباشر عبر نفق Wi-Fi
يجب أن تتضمّن عمليات تنفيذ أجهزة Android Television ميزة Wi-Fi Tunneled Direct Link Setup (TDLS). |
يجب أن تتضمّن عمليات تنفيذ أجهزة Android Television ميزة "إعداد رابط مباشر عبر النفق" (TDLS) في Wi-Fi، ويجب أن تتضمّن عمليات تنفيذ الأنواع الأخرى من أجهزة Android ميزة "إعداد رابط مباشر عبر النفق" في Wi-Fi كما هو موضّح في مستندات حزمة تطوير البرامج (SDK) لنظام التشغيل Android [المراجع، 81]. إذا كان تنفيذ الجهاز يتضمّن إتاحة بروتوكول TDLS وكان هذا البروتوكول مفعّلاً من خلال واجهة برمجة التطبيقات WiFiManager API، ينطبق ما يلي على الجهاز:
- يجب عدم استخدام بروتوكول TDLS إلا عندما يكون ذلك ممكنًا ومفيدًا.
- يجب أن يتضمّن بعض الأساليب الاستقرائية وألا يستخدم بروتوكول TDLS عندما يكون أداؤه أسوأ مقارنةً بالاتصال عبر نقطة وصول Wi-Fi.
7.4.3. البلوتوث
يجب أن تتضمّن عمليات تنفيذ أجهزة Android Television تقنية البلوتوث وتقنية Bluetooth LE، ويجب أن تتضمّن عمليات تنفيذ أجهزة Android Watch تقنية البلوتوث. |
يتضمّن 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 هذا حتى تتمكّن من الترقية إلى إصدارات الإصدارات القادمة من الplatform.
- 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 بين الأجهزة بدون شبكة P2P
- يجب أن يكون مزوّدًا بتقنية 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 Profile لنقل البيانات الفعلي عبر البلوتوث. لأسباب قديمة (للبقاء متوافقًا مع أجهزة Android 4.1)، يجب أن يظل التنفيذ يقبل طلبات SNEP GET لتبادل طلب الاستلام أو اختيار السجلّات عبر NFC. ومع ذلك، يجب ألا يُرسِل التنفيذ نفسه طلبات SNEP GET لإجراء عملية تسليم الاتصال.
- يجب إجراء استطلاع لجميع التقنيات المتوافقة أثناء وضع "اكتشاف NFC".
- يجب أن يكون الجهاز في وضع "اكتشاف NFC" عندما يكون الجهاز مفعّلاً والشاشة نشطة وشاشة القفل مفتوحة.
- يجب أن يكون الجهاز قادرًا على العمل كقارئ/كاتب في NFC Forum (على النحو المحدّد في المواصفة الفنية لـ NFC Forum NFCForum-TS-DigitalProtocol-1.0) من خلال معايير NFC التالية:
(يُرجى العِلم أنّ الروابط المتاحة للجميع غير متاحة لمواصفات JIS وISO وNFC Forum المذكورة أعلاه).
يتيح نظام التشغيل Android 5.0 استخدام وضع "محاكاة البطاقة المضيفة" (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 ميغابكسل على الأقل
- يجب أن تتضمّن ميزة التركيز التلقائي للأجهزة أو التركيز التلقائي للبرامج في برنامج تشغيل الكاميرا (شفّاف لبرنامج التطبيق)
- قد تتضمّن أجهزة ذات تركيز ثابت أو تقنية EDOF (عمق مجال ممتد)
- قد تتضمّن وميضًا. إذا كانت الكاميرا تتضمّن فلاشًا، يجب عدم إشعال ضوءه عندما يتم تسجيل مثيل 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، من الواضح أنّ هذا الشرط لا ينطبق.
- يجب عدم تكرار الصورة الثابتة أو أحداث الفيديو النهائية التي تم التقاطها والتي يتم إرجاعها إلى callbacks في التطبيق أو تخزينها في مساحة تخزين الوسائط.
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 ميغابايت |
غير سارٍ |
xhdpi أو أقل على الشاشات الصغيرة/العادية دقة عالية جدًا أو أقل على الشاشات الكبيرة mdpi أو أقل على الشاشات الكبيرة جدًا |
512 ميغابايت |
832 ميغابايت |
400 نقطة في البوصة أو أعلى على الشاشات الصغيرة/العادية xhdpi أو إصدار أحدث على الشاشات الكبيرة tvdpi أو أعلى على الشاشات الكبيرة جدًا |
896 ميغابايت |
1280 ميغابايت |
560 نقطة في البوصة أو أعلى على الشاشات الصغيرة/العادية 400 نقطة في البوصة أو أعلى على الشاشات الكبيرة xhdpi أو إصدار أحدث على الشاشات الكبيرة جدًا |
1344 ميغابايت |
1824 ميغابايت |
يجب أن تكون قيم الحد الأدنى للذاكرة بالإضافة إلى أي مساحة ذاكرة مخصّصة مسبقًا لمكونات الأجهزة، مثل الراديو والفيديو وما إلى ذلك، والتي لا تخضع لسيطرة النواة.
يجب أن تتوفّر على أجهزة 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 بالكتابة في مساحة التخزين الخارجية الثانوية، باستثناء الدلائل الخاصة بالحزمة على مساحة التخزين الخارجية الثانوية، ولكن يجب أن تعرض المحتوى من كلا مسارات التخزين بشكل شفاف من خلال خدمة "مسحّ الوسائط" في Android وandroid.provider.MediaStore.
بغض النظر عن شكل مساحة التخزين المشتركة المستخدَمة، يجب أن تشمل عمليات تنفيذ الأجهزة آلية للوصول إلى محتوى مساحة التخزين المشتركة من كمبيوتر مضيف، مثل مساحة التخزين المجمّعة عبر USB (UMS) أو بروتوكول نقل الوسائط (MTP). يجوز لعمليات تنفيذ الأجهزة استخدام وحدة تخزين USB كبيرة السعة، ولكن يجب استخدام بروتوكول Media Transfer Protocol. إذا كان تطبيق الجهاز متوافقًا مع بروتوكول نقل الوسائط، يتم تنفيذ ما يلي:
- يجب أن يكون متوافقًا مع مضيف MTP المرجعي لنظام التشغيل Android، وهو تطبيق "نقل ملفات Android" [الموارد، 96]
- يجب الإبلاغ عن فئة جهاز USB 0x00
- يجب أن يُبلغ عن اسم واجهة USB "MTP".
إذا كان تنفيذ الجهاز لا يتضمّن منافذ USB، يجب أن يقدّم جهاز كمبيوتر مضيفًا يمكنه الوصول إلى محتوى مساحة التخزين المشتركة من خلال وسائل أخرى، مثل نظام ملفات الشبكة.
7.7. USB
يجب أن تتيح عمليات تنفيذ الأجهزة وضع الجهاز الملحق عبر USB ويجب أن تتيح وضع مضيف USB.
إذا كان تنفيذ الجهاز يتضمّن منفذ USB متوافقًا مع وضع الجهاز الملحق:
- يجب أن يكون المنفذ قابلاً للتوصيل بجهاز مضيف USB يحتوي على منفذ USB عادي من النوع A أو النوع -C.
- يجب أن يستخدم المنفذ شكل USB micro-B أو micro-AB أو Type-C. ننصح بشدة باستيفاء أجهزة Android الحالية والجديدة لهذه المتطلبات لكي تتمكّن من الترقية إلى إصدارات المنصة المستقبلية.
- يجب أن يكون المنفذ في أسفل الجهاز (وفقًا للاتجاه الطبيعي ) أو أن يكون دوران الشاشة مفعّلاً في البرامج لجميع التطبيقات (بما في ذلك الشاشة الرئيسية)، حتى يتم عرض الشاشة بشكل صحيح عند توجيه الجهاز مع المنفذ في الأسفل. ننصح بشدة باستيفاء أجهزة Android الحالية والجديدة لهذه المتطلبات حتى تتمكّن من الترقية إلى إصدارات الأنظمة الأساسية القادمة.
- يجب أن ينفذ الجهاز واجهة برمجة التطبيقات وتحديد مواصفات Android Open Accessory (AOA) كما هو موضح في مستندات حزمة تطوير البرامج (SDK) لنظام التشغيل Android، وإذا كان جهاز Android متنقلًا، يجب أن ينفذ واجهة برمجة التطبيقات AOA. عمليات تنفيذ الأجهزة التي تطبّق مواصفات AOA:
- يجب الإفصاح عن توافق التطبيق مع ميزة الجهاز android.hardware.usb.accessory [Resources, 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 كما هو موضّح في مستندات IDE لنظام التشغيل 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 المحمولة باليد والساعات الذكية ميكروفونًا. |
قد لا تتضمّن عمليات تنفيذ الأجهزة ميكروفونًا. ومع ذلك، إذا حذفت عملية تنفيذ التطبيق على الجهاز الميكروفون، يجب ألّا تُبلغ عن ثابت ميزة 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 أوم: 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 الخاص بمُشغّل وقت التشغيل من خلال
يجب ألا تسمح أوقات التشغيل البديلة للتطبيقات بالاستفادة من الميزات التي تحميها أذونات 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) لنظام التشغيل Linux المُحسَّن للأمان (SELinux) وميزات أمان أخرى في ملفّ "النواة" لنظام التشغيل Linux. SELinux أو أي ميزات أمان أخرى تم تنفيذها ضمن إطار عمل Android:
- يجب الحفاظ على التوافق مع التطبيقات الحالية.
- يجب ألّا تتضمّن واجهة مستخدم مرئية عند رصد انتهاك للأمان وحظره بنجاح، ولكن يجوز أن تتضمّن واجهة مستخدم مرئية عند حدوث انتهاك للأمان غير المحظور الذي يؤدي إلى استغلال ناجح
- يجب ألا تكون قابلة للضبط من قِبل المستخدم أو المطوّر.
إذا تم إتاحة أي واجهة برمجة تطبيقات لضبط السياسة لتطبيق يمكنه التأثير في تطبيق آخر (مثل Device Administration API)، يجب ألا تسمح واجهة برمجة التطبيقات بضبط الإعدادات التي تؤدي إلى إيقاف التوافق.
يجب أن تستخدم الأجهزة نظام SELinux أو نظامًا مكافئًا لنظام التحكّم الإلزامي في الوصول في حال استخدام نواة غير Linux. يجب أن تستوفي الأجهزة أيضًا المتطلبات التالية التي يتم استيفاؤها من خلال التنفيذ المرجعي في مشروع Android Open sourced upstream.
عمليات التنفيذ على الأجهزة:
- يجب ضبط SELinux على وضع التنفيذ العام.
- يجب ضبط جميع النطاقات في وضع التنفيذ. لا يُسمح باستخدام نطاقات الوضع المرخّص، بما في ذلك النطاقات الخاصة بجهاز أو موفِّر.
- يجب عدم تعديل قواعد neverallow أو حذفها أو استبدالها في مجلد external/sepolicy المتوفّر في "المشروع المفتوح المصدر لنظام Android" (AOSP) ويجب compiling السياسة مع جميع قواعد neverallow الحالية، لكل من نطاقات AOSP SELinux بالإضافة إلى النطاقات الخاصة بالجهاز أو المورّد.
يجب أن تحتفظ عمليات تنفيذ الأجهزة بسياسة SELinux التلقائية المقدَّمة في مجلد external/sepolicy ضمن المشروع المصدر المفتوح لنظام التشغيل Android، ولا يُسمح بإضافة أيّ شيء آخر إلى هذه السياسة إلا لضبط الإعدادات الخاصة بالجهاز. يجب أن تكون عمليات تنفيذ الأجهزة متوافقة مع الإصدار الأصلي من "مشروع مفتوح المصدر لنظام Android".
9.8. الخصوصية
إذا كان الجهاز ينفِّذ وظيفة في النظام تلتقط المحتوى المعروض على الشاشة و/أو تسجِّل البث الصوتي الذي يتم تشغيله على الجهاز، يجب أن يُرسِل الجهاز إشعارًا مستمرًا للمستخدم عند تفعيل هذه الوظيفة و/أو عند بدء عملية الالتقاط/التسجيل.
9.9. تشفير القرص بالكامل
اختياري لعمليات تنفيذ أجهزة Android غير المزوّدة بشاشة قفل. |
إذا كان تطبيق الجهاز يتضمّن شاشة قفل، يجب أن يتيح الجهاز تشفير القرص بالكامل لبيانات التطبيق الخاصة (قسم /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 في حال توفّر الميزة. على الرغم من أنّ هذا الشرط مُدرَج على أنّه شرط "يجب" لتطبيق هذا الإصدار من نظام Android الأساسي، إلا أنّنا ننصح بشدة باستخدامه لأنّنا نتوقع أن يتم تغيير هذا الشرط إلى "يجب" في الإصدارات المستقبلية من Android. يقدّم الإصدار الأحدث من "مشروع مفتوح المصدر لنظام Android" طريقة تنفيذ مفضّلة لهذه الميزة استنادًا إلى ميزة dm-verity في نواة Linux.
10. اختبار توافق البرامج
يجب أن تجتاز عمليات تنفيذ الأجهزة جميع الاختبارات الموضّحة في هذا القسم.
ومع ذلك، يُرجى العِلم أنّه لا تتوفّر حزمة اختبار برامج شاملة بالكامل. لهذا السبب، ننصح بشدة جهات تنفيذ الأجهزة بإجراء الحد الأدنى من التغييرات على الإصدار المرجعي والتنفيذ المفضّل لنظام Android المتاح من "المشروع المفتوح المصدر لنظام Android". سيؤدي ذلك إلى الحدّ من خطر إدخال أخطاء تؤدي إلى عدم التوافق وتتطلّب إعادة العمل وإجراء تحديثات محتملة على الأجهزة.
10.1. مجموعة أدوات اختبار التوافق
يجب أن تجتاز عمليات تنفيذ الأجهزة مجموعة أدوات اختبار التوافق مع Android (CTS) [Resources, 108] المتوفّرة من مشروع Android Open Source Project، وذلك باستخدام الإصدار النهائي من البرامج المُرسَلة على الجهاز. بالإضافة إلى ذلك، على مطوّري الأجهزة استخدام التطبيق المرجعي في شجرة "المشروع المفتوح المصدر لنظام Android" قدر الإمكان، ويجب أن يضمنوا التوافق في حالات الغموض في CTS وأي عمليات إعادة تنفيذ لأجزاء من رمز المصدر المرجعي.
تم تصميم CTS ليتم تشغيله على جهاز حقيقي. مثل أي برنامج، قد يحتوي CTS نفسه على أخطاء. سيتم إصدار إصدارات من CTS بشكل مستقل عن ملف "تعريف التوافق" هذا، وقد يتم إصدار عدّة نُسخ من CTS لنظام التشغيل Android 5.0. يجب أن تجتاز عمليات تنفيذ الأجهزة أحدث إصدار متاح من مجموعة أدوات اختبار التوافق (CTS) في وقت اكتمال تثبيت برنامج الجهاز.
10.2. أداة إثبات ملكية CTS
يجب أن تنفِّذ عمليات تنفيذ الأجهزة جميع الحالات السارية في أداة التحقّق من CTS بشكل صحيح. يتم تضمين أداة التحقّق من CTS مع مجموعة اختبار التوافق، ويُفترض أن يشغّلها مشغل بشري لاختبار الوظائف التي لا يمكن لنظام آلي اختبارها، مثل الأداء الصحيح للكاميرا والأجهزة الاستشعارية.
يتضمّن أداة CTS Verifier اختبارات لأنواع كثيرة من الأجهزة، بما في ذلك بعض الأجهزة التي تكون اختيارية. يجب أن تجتاز عمليات تنفيذ الأجهزة جميع اختبارات الأجهزة التي تمتلكها. على سبيل المثال، إذا كان الجهاز يحتوي على مقياس تسارع، يجب أن يؤدي بشكل صحيح حالة اختبار مقياس التسارع في أداة التحقّق من توافق الأجهزة (CTS Verifier). قد يتم تخطّي أو حذف اختبارات ميزات محددة على أنّها اختيارية في "مستند تعريف معايير التوافق".
يجب أن يعمل كل جهاز وكل إصدار بشكل صحيح مع أداة CTS Verifier، كما هو موضّح أعلاه. ومع ذلك، بما أنّ العديد من الإصدارات متشابهة جدًا، ليس من المفترض أن يشغّل مورّدو الأجهزة أداة CTS Verifier صراحةً على الإصدارات التي تختلف فقط بطرق بسيطة. على وجه التحديد، قد يتم حذف اختبار أداة التحقّق من التوافق مع CTS في عمليات تنفيذ الأجهزة التي تختلف عن عملية تنفيذ اجتازت أداة التحقّق من التوافق مع CTS فقط من خلال مجموعة اللغات المضمّنة والعلامات التجارية وما إلى ذلك.
11. البرامج القابلة للتحديث
يجب أن تتضمّن عمليات تنفيذ الأجهزة آلية لاستبدال برنامج النظام بالكامل. لا يلزم أن تُجري الآلية ترقيات "مباشرة"، أي أنّه قد يلزم إعادة تشغيل الجهاز.
يمكن استخدام أي طريقة، شرط أن تكون قادرة على استبدال كل البرامج المثبَّتة مسبقًا على الجهاز. على سبيل المثال، سيستوفي أي من الخطوات التالية هذا الشرط:
- عمليات التنزيل عبر شبكة غير سلكية (OTA) مع التحديث بلا اتصال بالإنترنت من خلال إعادة التشغيل
- التحديثات "المرتبطة" عبر USB من جهاز كمبيوتر مضيف
- التحديثات "بلا إنترنت" من خلال إعادة التشغيل والتحديث من ملف على وحدة تخزين قابلة للنقل
ومع ذلك، إذا كان تنفيذ الجهاز يتضمّن إتاحة اتّصال بيانات بدون قياس، مثل الملف الشخصي 802.11 أو Bluetooth PAN (شبكة المنطقة الشخصية)، يجب أن يتيح الجهاز التنزيل عبر الهواء مع التحديث بلا إنترنت من خلال إعادة التشغيل.
يجب أن تتيح آلية التحديث المُستخدَمة إجراء التحديثات بدون محو بيانات المستخدم. وهذا يعني أنّه يجب أن تحافظ آلية التحديث على البيانات الخاصة بالتطبيق والبيانات المشترَكة فيه. يُرجى العلم أنّ برنامج Android الأساسي يتضمّن آلية تحديث تستوفي هذا الشرط.
بالنسبة إلى عمليات تثبيت الأجهزة التي يتم تشغيلها باستخدام الإصدار 5.0 من نظام التشغيل Android والإصدارات الأحدث، يجب أن تتيح آلية التحديث التحقّق من أنّ ملف صورة النظام هو ملف ثنائي يتطابق مع النتيجة المتوقّعة بعد تحديث OTA. يلبي هذا الشرط عملية تنفيذ التحديثات عبر الهواء بالاستناد إلى الحِزم في مشروع Android Open Source Project، والتي تمت إضافتها منذ الإصدار Android 5.0.
إذا تم العثور على خطأ في عملية تنفيذ الجهاز بعد طرحه، ولكن خلال فترة الاستخدام المعقولة للمنتج التي يتم تحديدها بالتشاور مع فريق التوافق في Android للتأثير في توافق التطبيقات التابعة لجهات خارجية، على جهة تنفيذ الجهاز تصحيح الخطأ من خلال تحديث البرامج المتاح الذي يمكن تطبيقه وفقًا للآلية الموضّحة للتو.
12. سجلّ تغييرات المستندات
يحتوي الجدول التالي على ملخّص للتغييرات التي طرأت على تعريف التوافق في هذا الإصدار.
الأقسام |
ملخّص التغيير |
1. مقدّمة |
متطلبات معدَّلة للإشارة إلى مستندات حزمة SDK كمصدر موثوق به |
2- أنواع الأجهزة |
تم تضمين تعريفات لأنواع الأجهزة المخصّصة للأجهزة المحمولة والتلفزيون والساعات. |
2.1 إعداد الجهاز |
تمت إضافة قائمة غير شاملة لتوضيح الاختلاف في إعدادات الأجهزة على مستوى الأجهزة. |
3.1. التوافق مع واجهة برمجة التطبيقات المُدارة |
يجب أيضًا توفير عمليات تنفيذ كاملة لواجهات برمجة التطبيقات باستخدام العلامة "@SystemApi" في رمز المصدر الأصلي لنظام Android. |
3.2.2. إنشاء المَعلمات |
تم تضمين المَعلمات SUPPORTED_ABIS وSUPPORTED_32_BIT_ABIS وSUPPORTED_64_BIT_ABIS في القائمة، وتم تعديل PRODUCT لطلب رموز التخزين التعريفية الفريدة للمنتجات، وتعديل علامات TAGS. |
3.2.3.1. أغراض التطبيقات الأساسية |
تم توضيح أنّ متطلبات التوافق تتعلق بشكل أساسي بنمط النوايا. |
3.2.3.5. الإعدادات التلقائية للتطبيقات |
تم تضمين متطلبات جديدة للشاشة الرئيسية وتطبيقات NFC وتطبيقات الرسائل القصيرة التلقائية. |
3.3.1 واجهات التطبيق الثنائية |
تمّت إضافة متطلبات لتتوافق مع ABI المكافئ بإصدار 32 بت في حال توفّر أي ABI بإصدار 64 بت. تم تعديل المَعلمات لتعكس هذا التغيير. |
3.4.1. توافق WebView |
يجب أن يكون Webview متوافقًا مع جميع الأجهزة باستثناء أجهزة Android Watch. تمت إزالة شرط سلسلة اللغة. |
3.4.2. توافق المتصفّح |
قد لا تتضمّن أجهزة Android Television وWatch تطبيق متصفّح، ولكن يجب أن تتضمّن كل أنواع عمليات تنفيذ الأجهزة الأخرى متصفّحًا. |
3.7 التوافق مع بيئة التشغيل |
الحد الأدنى المعدَّل لمتطلبات ذاكرة التطبيق |
3.8.2. التطبيقات المصغَّرة |
إنّ إتاحة التطبيقات المصغّرة اختيارية لجميع أنواع الأجهزة، ولكن ننصح بها في الأجهزة المزوّدة بشاشة تعمل باللمس. |
3.8.3. الإشعارات |
تعريفات موسّعة لأنواع الإشعارات المتوافقة |
3.8.4. البحث |
يجب أن تتضمّن أجهزة Android Television ميزة البحث الشامل. جميع أنواع الأجهزة الأخرى من المفترض أن تفعل ذلك. |
3.8.6. المظاهر |
يجب أن تتوافق الأجهزة مع مظهر Material. |
3.8.7. خلفيات متحركة |
يجب أن تُبلغ الأجهزة التي تتضمّن خلفية حية عن علامة ميزة النظام الأساسي android.software.live_wallpaper. |
3.8.8. التبديل بين الأنشطة |
شرط مقترَح لتتوافق مع واجهة المستخدم الجديدة "التطبيقات المستخدَمة مؤخرًا" يجب أن يعرض عنوان 4 أنشطة على الأقل في المرة الواحدة. |
3.8.10. وحدة التحكّم عن بُعد في الوسائط على شاشة القفل |
إيقاف Remote Control Client API نهائيًا نهائيًا لصالح التنسيق Media Notification Template |
3.8.11. أحلام |
اختياري لأجهزة Android Watch مطلوبة لجميع أنواع الأجهزة الأخرى |
3.8.13 ترميز Unicode والخط |
يجب أن يكون متوافقًا مع Roboto 2 بالإضافة إلى المتطلبات الحالية. |
3.12. إطار عمل إدخال التلفزيون |
يجب أن تتوافق عمليات تنفيذ أجهزة Android Television مع إطار عمل معالجة الإدخال في التلفزيون. |
5.1. برامج ترميز الوسائط |
تمت إضافة 3 أقسام لبرامج ترميز الصوت والصورة والفيديو. |
5.4 التسجيل الصوتي |
مُقسَّمة إلى أقسام فرعية |
5.4.1. تسجيل الصوت الخام |
خصائص محدّدة لتسجيل الصوت الخام على الأجهزة التي تحدّد android.hardware.microphone |
5.5. تشغيل الصوت |
تمت إضافة القسم 5.5. تشغيل الصوت مع قسمَين فرعيَّين: 5.5.1 المؤثرات الصوتية 5.5.2 مستوى صوت إخراج الصوت |
5.6 وقت استجابة الصوت |
تمت إضافة تعريفات ومتطلبات للتشويش في الإخراج في حالة عدم وجود إشارات وتشويش في الإدخال في حالة عدم وجود إشارات ووقت الاستجابة المتواصل للذهاب والعودة. |
5.8 الوسائط الآمنة |
تم تضمين متطلبات الوسائط الآمنة من الإصدار 7.1.8. الشاشات الخارجية ومتطلبات إضافية لأجهزة Android Television |
6.1. أدوات مطوّري البرامج |
الموارد المعدَّلة |
6.2.1. تجريبية |
القسم الذي تمّت إزالته |
7. توافق الأجهزة |
تم تعديل هذا القسم ليوضّح أنّه يجب أن تُبلغ عمليات تنفيذ الأجهزة بشكلٍ منتظم عن إعدادات الأجهزة الدقيقة لعلامة الإصدار نفسها. |
7.1.1.1. حجم الشاشة |
تم تعديلها لتعكس حجم شاشة أجهزة Android Watch وأنّ القيمة لا يمكن تغييرها |
7.1.1.2. نسبة العرض إلى الارتفاع للشاشة |
تم تعديلها لتعكس نسبة العرض إلى الارتفاع لشاشة أجهزة Android Watch (1:1). |
7.1.3. اتجاه الشاشة |
تم تعديلها لتوضيح أنّه على الأجهزة التي تتضمّن شاشة أفقية ثابتة الإبلاغ عن هذا الاتجاه فقط. |
7.1.4. تسريع الرسومات ثنائية وثلاثية الأبعاد |
تمت إضافة أنّه قد تكون أجهزة Android متوافقة مع حزمة إضافات Android. |
(الإصدار القديم) 7.1.6 أنواع الشاشة |
تمّت إزالة القسم |
7.1.6. تكنولوجيا الشاشة |
تعديل نسبة عرض البكسل إلى ارتفاعه (PAR) لتكون بين 0.9 و1.15 (تفاوت بنسبة% 15 تقريبًا) |
7.1.7. الشاشات الخارجية |
تم نقل جزء من القسم إلى القسم 5.8. الوسائط الآمنة |
7.2.2. التنقّل بدون لمس الشاشة |
يجب أن تتضمّن أجهزة Android TV لوحة ألعاب اتجاهية. |
7.2.3. مفاتيح التنقّل |
اللغة المضمّنة لتقديم الدعم على أنواع الأجهزة المختلفة |
7.2.4. الإدخال من خلال شاشة تعمل باللمس |
يجب أن تتيح أجهزة Android Watch الإدخال باستخدام شاشة تعمل باللمس. |
7.2.6. توافق وحدة التحكّم في الألعاب |
تمت إضافة قسم يتضمّن متطلبات Android TV. |
7.2.7. جهاز التحكّم عن بُعد |
تمت إضافة قسم يتضمّن متطلبات Android TV. |
7.3. أجهزة الاستشعار |
تم إعادة تعريف أجهزة الاستشعار الاصطناعيّة على أنّها أجهزة استشعار مركّبة، وأجهزة الاستشعار المباشرة على أنّها أجهزة استشعار مستمرّة. يجب أن تُبلغ أجهزة الاستشعار عن وقت الحدث بالنانو ثانية. |
7.3.1. مقياس التسارع |
تم توضيح أنواع أجهزة الاستشعار المطلوبة وتعديل الحدود الدنيا للمتطلبات. |
7.3.2. مقياس المغناطيسية |
تم توضيح أنواع أجهزة الاستشعار المطلوبة وتعديل الحدود الدنيا للمتطلبات. |
7.3.4. الجيروسكوب |
تم توضيح أنواع أجهزة الاستشعار المطلوبة وتعديل الحدود الدنيا للمتطلبات. |
7.3.5. مقياس الضغط الجوي |
تم تغيير "يمكن" إلى "يجب" تنفيذ مقياس الضغط الجوي. يجب تنفيذ وتسجيل قياسات مستشعر TYPE_PRESSURE. |
7.3.6. مقياس درجة الحرارة |
قد تتضمّن الأجهزة ميزان حرارة للبيئة المحيطة. يمكن أن يتضمّن التطبيق ميزان حرارة CPU، ولكن لا يُفضّل ذلك. |
7.3.8. أداة استشعار التقارب |
يجب أن تتضمّن الأجهزة التي يمكنها إجراء مكالمة صوتية وعرض أي قيمة غير PHONE_TYPE_NONE في getPhoneType أداة استشعار القرب. |
7.4.2. معيار IEEE 802.11 (لشبكات Wi-Fi) |
يجب أن تتضمّن أجهزة Android Television إمكانية الاتصال بشبكة Wi-Fi. يجب أن تُبلغ الأجهزة التي تتيح استخدام WiFi عن android.hardware.wifi. |
7.4.2.1. اتصال Wi-Fi مباشر |
يجب الإبلاغ عن ميزة الجهاز android.hardware.wifi.direct. |
7.4.2.2. إعداد رابط مباشر عبر نفق Wi-Fi |
يجب أن تتضمّن أجهزة Android Television تقنية Wi-Fi TDLS. |
7.5. الكاميرات |
إذا كان تطبيق الجهاز يتضمّن كاميرا واحدة على الأقل، يجب أن يكون بإمكان التطبيق تخصيص 3 صور نقطية في الوقت نفسه مساوية لحجم الصور التي تنتجها أداة استشعار الكاميرا ذات الدقة الأعلى على الجهاز. |
7.5.3. الكاميرات الخارجية |
تمّت إضافة متطلبات مفادها أنّه قد تتضمّن عمليات تنفيذ الأجهزة التي تستخدم وضع مضيف USB إمكانية استخدام كاميرا خارجية. |
7.5.5. ميزات نظام الكاميرا |
تمت إضافة قائمة بميزات الكاميرا وحالات تحديدها. |
7.6.1. الحد الأدنى للذاكرة ومساحة التخزين |
متطلبات معدَّلة للأجهزة التي تعمل بالإصدار 32 بت و64 بت تمت إزالة متطلبات الذاكرة في SVELTE. يجب أن تتوفّر في الأجهزة مساحة تخزين غير متقلبة بسعة 1.5 غيغابايت على الأقل. |
7.6.2. مساحة التخزين المشتركة للتطبيق |
متطلبات مُعدَّلة لوحدات التخزين القابلة للإزالة التي يمكن للمستخدم الوصول إليها |
7.6.2. مساحة التخزين المشتركة للتطبيق | متطلبات معدَّلة تسمح لتطبيقات النظام المثبَّتة مسبقًا بالكتابة في مساحة التخزين الخارجية الثانوية |
7.7. USB |
تمت إزالة متطلبات أن تكون المنافذ غير المخصّصة للشحن على الحافة نفسها التي يقع عليها منفذ USB صغير. متطلبات معدَّلة لوضع Host (المضيف) ووضع Peripheral (الملحق) |
7.7. USB |
إصلاح الأخطاء الإملائية في قسم USB |
7.8.1. الصوت |
تم نقل قسم الميكروفون إلى هنا. تمّت إضافة متطلبات لمنافذ إخراج الصوت ومخرجات الصوت التناظرية. |
8. التوافق مع الأداء |
تمت إضافة متطلبات للحفاظ على اتساق واجهة المستخدم. |
9.5. ميزة "الوصول المتعدد" |
إنّ ميزة إتاحة الجهاز لعدة مستخدمين اختيارية لجميع أنواع الأجهزة. متطلبات detailed حسب نوع الجهاز في القسم |
9.5. ميزة "الوصول المتعدد" |
يجب تشفير بطاقة SD لوحدة التخزين الخارجية الأساسية. |
9.7. ميزات أمان النواة |
قد تتضمّن واجهة مستخدم مرئية عند حدوث انتهاك أمان غير محظور مما يؤدي إلى استغلال ناجح. لا يُسمح باستخدام نطاقات الوضع المرخّص. |
9.9. تشفير القرص بالكامل |
يجب أن تتيح الأجهزة التي تتضمّن شاشة قفل إمكانية تشفير القرص بالكامل. بالنسبة إلى الأجهزة الجديدة، يجب تفعيل ميزة "تشفير القرص بالكامل" تلقائيًا. |
9.10 التشغيل المتحقّق منه |
تمت إضافة قسم لاقتراح أن تتوافق عمليات تنفيذ الأجهزة مع ميزة "التشغيل المتحقَّق منه" للحفاظ على سلامة الجهاز. |
10.3. التطبيقات المرجعية |
تمّت إزالة القسم من CDD. |
11. البرامج القابلة للتحديث |
إذا كان الجهاز متوافقًا مع معيار 802.11 أو مع ملف تعريف شبكة Bluetooth PAN (شبكة المنطقة الشخصية)، يجب أن يكون متوافقًا مع التنزيل عبر الهواء مع التحديث بلا إنترنت من خلال إعادة التشغيل. |
14. المراجع |
تم نقل المراجع من القسم 2 إلى القسم 14 |
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.0: http://source.android.com//docs/compatibility/5.0/versions
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://www.whatwg.org/specs/web-apps/current-work/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":
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/guide/developing/tools/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: https://developer.android.com/studio/command-line/dumpsys.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:
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/docs/core/interaction/input/touch-devices
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/docs/core/interaction/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: http://source.android.com/devices/sensors/composite_sensors.html
77- وضع التشغيل المتواصل: http://source.android.com/devices/sensors/base_triggers.html#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/docs/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 Connection Handover: http://www.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/docs/core/camera/versioning
95. Android DownloadManager: http://developer.android.com/reference/android/app/DownloadManager.html
96. نقل ملفات Android: http://www.android.com/filetransfer
97. واجهة Android Open Accessories: http://developer.android.com/guide/topics/usb/accessory.html
98. مكبّر صوت USB في Android: http://developer.android.com/reference/android/hardware/usb/UsbConstants.html#USB_CLASS_AUDIO
99. مواصفات شحن البطارية عبر USB، الإصدار 1.2: http://www.usb.org/developers/docs/devclass_docs/BCv1.2_070312.zip
100. USB Host API: http://developer.android.com/guide/topics/usb/host.html
101. سماعة رأس سلكية: http://source.android.com/docs/core/interaction/accessories/headset/plug-headset-spec
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/devices/tech/encryption/index.html
108. نظرة عامة على "برنامج التوافق مع Android": http://source.android.com/docs/compatibility
109. منتدى التوافق مع Android: https://groups.google.com/forum/#!forum/android-compatibility
110. مشروع WebM: http://www.webmproject.org/
يتم الحصول على العديد من هذه المراجع مباشرةً أو بشكل غير مباشر من حزمة تطوير البرامج (SDK) لنظام التشغيل Android، وستكون متطابقة من الناحية الوظيفية مع المعلومات الواردة في مستندات حزمة SDK هذه. في أيّ حالات يتعارض فيها تعريف التوافق أو مجموعة اختبار التوافق مع مستندات حزمة SDK، تُعتبر مستندات حزمة SDK مرجعية. إنّ أي تفاصيل فنية مقدَّمة في المراجع المضمّنة أعلاه تُعدّ جزءًا من تعريف التوافق هذا.