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

حقوق الطبع والنشر © 2010، Google Inc. جميع الحقوق محفوظة.
compatibility@android.com

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

1. المقدّمة
2- المراجع
3- البرامج
3.1. توافق واجهات برمجة التطبيقات المُدارة
3.2. التوافق مع واجهة برمجة التطبيقات
3.3. التوافق مع واجهات برمجة التطبيقات الأصلية
3.4. التوافق مع الويب
3.5. التوافق السلوكي لواجهة برمجة التطبيقات
3.6. مساحات أسماء واجهة برمجة التطبيقات
3.7. توافق الأجهزة الافتراضية
3.8. توافق واجهة المستخدم
4. توافق البرامج المرجعية
5- توافق حِزم التطبيقات
6- التوافق مع الوسائط المتعددة
‫7. توافق أدوات المطوّرين
8- التوافق مع الأجهزة
8.1. الشاشة
8.2. لوحة المفاتيح
8.3. التنقّل بدون لمس الشاشة
8.4. اتجاه الشاشة
8.5. الإدخال من خلال الشاشة التي تعمل باللمس
8.6. منفذ USB
8.7. مفاتيح التنقّل
8.8. الشبكات اللاسلكية للبيانات
8.9. الكاميرا
8.10. مقياس التسارع
8.11. البوصلة
8.12. نظام تحديد المواقع العالمي (GPS)
8.13. الاتصالات الهاتفية
8.14. الذاكرة ومساحة التخزين
8.15. مساحة التخزين المشتركة للتطبيقات
8.16. البلوتوث
‫9. التوافق مع الأداء
10. توافق نموذج الأمان
‫11. مجموعة أدوات اختبار التوافق
12. البرامج القابلة للتحديث
13- التواصل معنا
الملحق أ: إجراء اختبار البلوتوث

‫1. مقدّمة

يسرد هذا المستند المتطلبات التي يجب استيفاؤها لكي تكون الهواتف الجوّالة متوافقة مع الإصدار 2.2 من نظام التشغيل Android.

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

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

لكي تُعتبر عمليات تنفيذ الأجهزة متوافقة مع Android 2.2، يجب استيفاء الشروط التالية:

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

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

‫2- المراجع

  1. مستويات متطلبات RFC2119 من IETF: http://www.ietf.org/rfc/rfc2119.txt
  2. نظرة عامة على "برنامج التوافق مع Android": http://source.android.com/docs/compatibility/index.html
  3. مشروع مفتوح المصدر لنظام Android: http://source.android.com/
  4. تعريفات واجهات برمجة التطبيقات ومستنداتها: http://developer.android.com/reference/packages.html
  5. مرجع أذونات Android: http://developer.android.com/reference/android/Manifest.permission.html
  6. مرجع android.os.Build: http://developer.android.com/reference/android/os/Build.html
  7. سلاسل الإصدارات المسموح بها لنظام التشغيل Android 2.2: http://source.android.com/docs/compatibility/2.2/versions.html
  8. فئة android.webkit.WebView: http://developer.android.com/reference/android/webkit/WebView.html
  9. HTML5: http://www.whatwg.org/specs/web-apps/current-work/multipage/
  10. مواصفات جهاز Dalvik الافتراضي: متوفّرة في رمز مصدر Android، على dalvik/docs
  11. التطبيقات المصغّرة: http://developer.android.com/guide/practices/ui_guidelines/widget_design.html
  12. الإشعارات: http://developer.android.com/guide/topics/ui/notifiers/notifications.html
  13. موارد التطبيق: http://code.google.com/android/reference/available-resources.html
  14. دليل أسلوب رموز شريط الحالة: http://developer.android.com/guide/practices/ui_guideline /icon_design.html#statusbarstructure
  15. Search Manager: ‏ http://developer.android.com/reference/android/app/SearchManager.html
  16. الرسائل المنبثقة: http://developer.android.com/reference/android/widget/Toast.html
  17. الخلفيات المتحركة: https://android-developers.googleblog.com/2010/02/live-wallpapers.html
  18. التطبيقات لنظام التشغيل Android: http://code.google.com/p/apps-for-android
  19. مستندات الأداة المرجعية (لبرنامج adb وaapt وddms): http://developer.android.com/guide/developing/tools/index.html
  20. وصف ملف apk لنظام التشغيل Android: http://developer.android.com/guide/topics/fundamentals.html
  21. ملفات البيان: http://developer.android.com/guide/topics/manifest/manifest-intro.html
  22. أداة اختبار Monkey: https://developer.android.com/studio/test/other-testing-tools/monkey
  23. قائمة ميزات أجهزة Android: http://developer.android.com/reference/android/content/pm/PackageManager.html
  24. التوافق مع شاشات متعددة: http://developer.android.com/guide/practices/screens_support.html
  25. ‫android.content.res.Configuration: http://developer.android.com/reference/android/content/res/Configuration.html
  26. ‫android.util.DisplayMetrics: ‏ http://developer.android.com/reference/android/util/DisplayMetrics.html
  27. ‫android.hardware.Camera: http://developer.android.com/reference/android/hardware/Camera.html
  28. مساحة إحداثيات أداة الاستشعار: http://developer.android.com/reference/android/hardware/SensorEvent.html
  29. مرجع أمان Android وأذوناته: http://developer.android.com/guide/topics/security/security.html
  30. واجهة برمجة تطبيقات البلوتوث: http://developer.android.com/reference/android/bluetooth/package-summary.html

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

3- البرامج

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

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

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

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

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

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

3.2.1. الأذونات

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

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

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

المَعلمة التعليقات
android.os.Build.VERSION.RELEASE إصدار نظام Android الذي يتم تنفيذه حاليًا بتنسيق يمكن للمستخدم قراءته يجب أن يحتوي هذا الحقل على إحدى قيم السلاسل المحدّدة في [الموارد، 7].
android.os.Build.VERSION.SDK إصدار نظام Android الذي يتم تنفيذه حاليًا بتنسيق يمكن لرمز التطبيق التابع لجهة خارجية الوصول إليه بالنسبة إلى Android 2.2، يجب أن يحتوي هذا الحقل على القيمة الصحيحة 8.
android.os.Build.VERSION.INCREMENTAL قيمة يختارها مُنفِّذ الجهاز لتحديد الإصدار المحدّد من نظام Android الذي يتم تنفيذه حاليًا، بتنسيق يمكن لشخص عادي قراءته يجب عدم إعادة استخدام هذه القيمة لإصدارات مختلفة يتم توفيرها للمستخدمين النهائيين. من الاستخدامات الشائعة لهذا الحقل الإشارة إلى رقم الإصدار أو معرّف تغيير تحكّم المصدر المستخدَم لإنشاء الإصدار. ما مِن متطلبات تتعلّق بالتنسيق المحدد لهذا الحقل، باستثناء أنّه يجب ألّا يكون فارغًا أو سلسلة ملف فارغة ("").
android.os.Build.BOARD قيمة يختارها منفذ الجهاز لتحديد الجهاز الداخلي المُحدَّد الذي يستخدمه الجهاز، بتنسيق يمكن لشخص عادي قراءته من الاستخدامات المحتملة لهذا الحقل هو الإشارة إلى المراجعة المحدّدة للوحة التي تشغّل الجهاز. ما مِن متطلبات بشأن التنسيق المحدّد لهذا الحقل، باستثناء أنّه يجب ألّا يكون فارغًا أو سلسلة فارغة ("").
android.os.Build.BRAND قيمة يختارها مُنفِّذ الجهاز لتحديد اسم الشركة أو المؤسسة أو الفرد أو غير ذلك الذي أنتج الجهاز، بتنسيق يمكن لشخص عادي قراءته من الاستخدامات المحتملة لهذا الحقل الإشارة إلى المصنّع الأصلي للجهاز و/أو مشغّل شبكة الجوّال الذي باع الجهاز. ما مِن متطلبات بشأن التنسيق المحدد لهذا الحقل، باستثناء أنّه يجب ألّا يكون فارغًا أو سلسلة فارغة ("").
android.os.Build.DEVICE قيمة يختارها منفذ الجهاز لتحديد الإعدادات أو المراجعة المحدّدة للجسم (يُشار إليها أحيانًا باسم "التصميم الصناعي") للجهاز ما مِن متطلبات بشأن التنسيق المحدّد لهذا الحقل، باستثناء أنّه يجب ألّا يكون فارغًا أو سلسلة فارغة ("").
android.os.Build.FINGERPRINT سلسلة تحدّد هذا الإصدار بشكل فريد يجب أن يكون التنسيق سهل القراءة. يجب أن يتّبع هذا النموذج:
$(BRAND)/$(PRODUCT)/$(DEVICE)/$(BOARD):$(VERSION.RELEASE)/$(ID)/$(VERSION.INCREMENTAL):$(TYPE)/$(TAGS)
على سبيل المثال:
acme/mydevice/generic/generic:2.2/ERC77/3359:userdebug/test-keys
يجب ألّا يتضمّن الملف المرجعي أحرف مسافات بيضاء. إذا كانت الحقول الأخرى المضمّنة في النمط أعلاه تحتوي على أحرف مسافات بيضاء، يجب استبدالها في بصمة الإصدار بحرف آخر، مثل الشرطة السفلية ("_").
android.os.Build.HOST سلسلة تحدِّد بشكل فريد المضيف الذي تم إنشاء الإصدار عليه، بتنسيق يمكن لشخص عادي قراءته لا توجد متطلبات بشأن التنسيق المحدّد لهذا الحقل، باستثناء أنّه يجب ألّا يكون فارغًا أو سلسلة فارغة ("").
android.os.Build.ID معرّف يختاره مُنفِّذ الجهاز للإشارة إلى إصدار معيّن، بتنسيق يمكن للمستخدم قراءته يمكن أن يكون هذا الحقل هو نفسه android.os.Build.VERSION.INCREMENTAL، ولكن يجب أن يكون له قيمة مفيدة بما يكفي للمستخدمين النهائيين من أجل التمييز بين إصدارات البرامج. لا تفرض Google متطلبات على التنسيق المحدّد لهذا الحقل، باستثناء أنّه يجب ألا يكون فارغًا أو السلسلة الفارغة ("").
android.os.Build.MODEL قيمة يختارها منفذ الجهاز تحتوي على اسم الجهاز كما يعرفه المستخدم النهائي. يجب أن يكون هذا هو الاسم نفسه الذي يتم بموجبه تسويق الجهاز وبيعه للمستخدمين النهائيين. ما مِن متطلبات بشأن التنسيق المحدد لهذا الحقل، باستثناء أنّه يجب ألّا يكون فارغًا أو سلسلة فارغة ("").
android.os.Build.PRODUCT قيمة يختارها مُنفِّذ الجهاز تحتوي على اسم التطوير أو الاسم الرمزي للجهاز. يجب أن تكون قابلة للقراءة من قِبل البشر، ولكن ليس بالضرورة أن تكون مقصودة لعرضها على المستخدمين النهائيين. ما مِن متطلبات بشأن التنسيق المحدد لهذا الحقل، باستثناء أنّه يجب ألّا يكون فارغًا أو سلسلة فارغة ("").
android.os.Build.TAGS قائمة مفصولة بفواصل بالعلامات التي اختارها مُنفِّذ الجهاز والتي تُميِّز الإصدار بشكلٍ أكبر. على سبيل المثال، "unsigned,debug". يجب أن يكون هذا الحقل غير فارغ أو سلسلة فارغة ("")، ولكن يمكن استخدام علامة واحدة (مثل "release").
android.os.Build.TIME قيمة تمثّل الطابع الزمني لوقت إنشاء الإصدار
android.os.Build.TYPE قيمة يختارها مُنفِّذ الجهاز لتحديد إعدادات وقت التشغيل للإصدار يجب أن يحتوي هذا الحقل على إحدى القيم التالية المتوافقة مع الإعدادات الثلاثة المعتادة لوقت تشغيل Android: "user" أو "userdebug" أو "eng".
android.os.Build.USER اسم أو معرّف مستخدم (أو مستخدم مبرمَج) أنشأ الإصدار ما مِن متطلبات بشأن التنسيق المحدّد لهذا الحقل، باستثناء أنّه يجب ألّا يكون فارغًا أو سلسلة فارغة ("").

3.2.3. توافق الغرض

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

3.2.3.1. أغراض التطبيقات الأساسية

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

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

تُعد التطبيقات التالية من تطبيقات نظام Android الأساسية:

  • ساعة مكتب
  • المتصفح
  • التقويم
  • الآلة الحاسبة
  • الكاميرا
  • جهات الاتصال
  • عنوان البريد الإلكتروني
  • معرض الصور
  • GlobalSearch
  • قاذفة القنابل
  • ‫LivePicker (أي تطبيق اختيار الخلفيات المتحركة، ويمكن حذفه إذا كان الجهاز لا يتيح استخدام الخلفيات المتحركة، وفقًا للفقرة 3.8.5)
  • المراسلة (المعروفة أيضًا باسم "الرسائل القصيرة المتعددة الوسائط")
  • الموسيقى
  • الهاتف
  • الإعدادات
  • مسجِّل الصوت

تتضمّن تطبيقات نظام Android الأساسية مكوّنات مختلفة من النشاط أو الخدمة والتي تُعدّ "عامة". وهذا يعني أنّ السمة "android:exported" قد لا تكون متوفّرة، أو قد تكون قيمتها "true".

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

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

3.2.3.2. عمليات إلغاء النية

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

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

يجب ألا يُدرِج مورّدو الأجهزة أي مكوّن Android يراعي أي تصاميم جديدة لIntent أو Intent البث باستخدام سلسلة مفتاح ACTION أو CATEGORY أو غيرها في مساحة الاسم android.*. يجب ألّا يُدرِج مورّدو الأجهزة أيّ مكوّنات Android تلتزم بأيّ أنماط جديدة لIntent أو Broadcast Intent باستخدام سلسلة مفتاح ACTION أو CATEGORY أو سلسلة مفتاح أخرى في مساحة حزمة تنتمي إلى مؤسسة أخرى. على جهات تنفيذ الأجهزة عدم تغيير أو توسيع أي من أنماط Intent المستخدَمة من قِبل التطبيقات الأساسية المُدرَجة في القسم 3.2.3.1.

يشبه هذا الحظر الحظر المحدّد لفئات لغة Java في القسم 3.6.

3.2.3.4. نوايا البث

تعتمد التطبيقات التابعة لجهات خارجية على المنصة لبثّ نوايا معيّنة لإعلامها بالتغييرات في بيئة الأجهزة أو البرامج. يجب أن تبث الأجهزة المتوافقة مع Android بيانات Intent الخاصة بالبث العلني في استجابة لأحداث النظام المناسبة. يتم وصف "نوايا البث" في مستندات IDE SDK.

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

يمكن للرمز المُدار الذي يعمل في Dalvik طلب رمز أصلي مُقدَّم فيملف APK .‎ application كملف ELF .‎ so تم تجميعه للبنية المتوافقة مع الأجهزة الجهاز. يجب أن تتضمّن عمليات تنفيذ التطبيقات على الأجهزة إمكانية استخدام الرمز البرمجي الذي يتم تشغيله في البيئة المُدارة للاتصال بالرمز البرمجي الأصلي، وذلك باستخدام دلالات واجهة Java Native Interface (JNI) العادية. يجب أن تكون واجهات برمجة التطبيقات التالية متوفرة للكود الأصلي:

  • libc (مكتبة C)
  • libm (مكتبة الرياضيات)
  • واجهة JNI
  • libz (ضغط Zlib)
  • liblog (تسجيل Android)
  • الحد الأدنى من التوافق مع C++
  • توفُّر OpenGL، كما هو موضّح أدناه

يجب أن تكون عمليات تنفيذ الأجهزة متوافقة مع OpenGL ES 1.0. يجب أن تستخدم الأجهزة التي لا تتضمّن ميزة "تسريع الأجهزة" مكتبة OpenGL ES 1.0 باستخدام برنامج لعرض الرسومات. من المفترض أن تُنفِّذ عمليات تنفيذ الأجهزة أكبر قدر ممكن من OpenGL ES 1.1 وفقًا لما يتيحه تجهيزات الجهاز. يجب أن توفّر عمليات تنفيذ الأجهزة تنفيذًا لـ OpenGL ES 2.0، إذا كان الجهاز قادرًا على تحقيق أداء معقول على واجهات برمجة التطبيقات هذه.

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

يجب أن تُبلغ عمليات تنفيذ الأجهزة بدقة عن واجهة برمجة التطبيقات (ABI) لتطبيقات الجهاز الأصلية المتوافقة مع الجهاز، وذلك من خلال واجهة برمجة التطبيقات android.os.Build.CPU_ABI. يجب أن يكون معرّف ABI أحد الإدخالات الموثَّقة في أحدث إصدار من حزمة Android NDK، في الملف docs/CPU-ARCH-ABIS.txt. يُرجى العلم أنّ الإصدارات الإضافية من IDE لنظام Android NDK قد توفّر دعمًا لمزيد من واجهات برمجة التطبيقات (ABI).

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

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

يعتمد العديد من المطوّرين والتطبيقات على سلوك فئة android.webkit.WebView [Resources, 8] لواجهات المستخدم الخاصة بهم، لذا يجب أن يكون تنفيذ WebView متوافقًا مع جميع عمليات تنفيذ Android. وبالمثل، فإنّ تجربة الويب الكاملة مهمة جدًا لمستخدمي Android. يجب أن تتضمّن عمليات تنفيذ التطبيق على الأجهزة إصدارًا من android.webkit.WebView متوافقًا مع الإصدار الأحدث من برنامج Android، ويجب أن تتضمّن متصفّحًا حديثًا متوافقًا مع HTML5، كما هو описан أدناه.

3.4.1. توافق WebView

يستخدم تنفيذ Android Open Source محرك عرض WebKit لتطبيق android.webkit.WebView. بما أنّه ليس من الممكن تطوير حزمة اختبار شاملة لنظام عرض الويب، على مطوّري الأجهزة استخدام الإصدار المحدّد من WebKit في تنفيذ WebView. وعلى وجه التحديد:

  • android.webkit.WebViewيجب أن تستند عمليات تنفيذ android.webkit.WebView الأجهزة إلى الإصدار 533.1 من WebKit من شجرة Android Open Source المتوفّرة في الإصدارات السابقة لنظام التشغيل Android 2.2. يتضمّن هذا الإصدار مجموعة محدّدة من الإصلاحات المتعلقة بالوظائف والأمان في WebView. يجوز لمطوّري الأجهزة تضمين تخصيصات لتنفيذ WebKit، ولكن يجب ألا تؤدي أي من هذه التخصيصات إلى تغيير سلوك WebView، بما في ذلك سلوك المعالجة.
  • يجب أن تكون سلسلة وكيل المستخدم التي يُبلغ عنها WebView بالتنسيق التالي:
    Mozilla/5.0 (Linux; U; Android $(VERSION); $(LOCALE); $(MODEL) Build/$(BUILD)) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1
    • يجب أن تكون قيمة سلسلة $(VERSION) مطابقة لقيمة android.os.Build.VERSION.RELEASE.
    • يجب أن تتّبع قيمة السلسلة $(LOCALE) اصطلاحات ISO الخاصة برمز البلد واللغة، ويجب أن تشير إلى اللغة المُعدّة حاليًا على الجهاز.
    • يجب أن تكون قيمة سلسلة $(MODEL) مطابقة لقيمة android.os.Build.MODEL.
    • يجب أن تكون قيمة السلسلة $(BUILD) هي نفسها قيمة android.os.Build.ID.

يجب أن تتضمّن إعدادات WebView إمكانية استخدام واجهتَي برمجة التطبيقات لقاعدة بيانات HTML5 وذاكرة التخزين المؤقت للتطبيق وبيانات الموقع الجغرافي [الموارد، 9]. يجب أن تتضمّن فئة WebView إمكانية استخدام علامة HTML5 <video>. يجب أن تكون واجهات برمجة تطبيقات HTML5، مثل جميع واجهات برمجة تطبيقات JavaScript، متوقفة تلقائيًا في WebView، ما لم يفعّلها المطوّر صراحةً من خلال واجهات برمجة تطبيقات Android المعتادة.

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

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

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

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

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

يجب أن تكون سلوكيات كل نوع من أنواع واجهات برمجة التطبيقات (المُدارة واللينة والبرامج الأصلية والويب) متسقة مع التنفيذ المفضّل لمشروع Android المفتوح المصدر في المصدر الرئيسي [المراجع، 3]. في ما يلي بعض مجالات التوافق المحدّدة:

  • يجب ألا تغيّر الأجهزة سلوك أو معنى Intent العادي.
  • يجب ألّا تغيّر الأجهزة دورة الحياة أو دلالات دورة الحياة لأحد أنواع مكوّنات النظام المحدّدة (مثل Service وActivity وContentProvider وما إلى ذلك).
  • يجب ألا تغيّر الأجهزة دلالة إذن معيّن.

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

تختبر مجموعة أدوات اختبار التوافق (CTS) أجزاءً مهمة من ال منصّة للتحقّق من التوافق السلوكي، ولكن ليس كلها. تقع على عاتق العميل مسؤولية ضمان التوافق السلوكي مع "مشروع Android المفتوح المصدر".

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

يتّبع Android اصطلاحات مساحة اسم الحزمة والفئة التي تحدّدها لغة البرمجة Java. لضمان التوافق مع التطبيقات التابعة لجهات خارجية، يجب ألا يُجري مورّدو الأجهزة أي تعديلات محظورة (انظر أدناه) على مساحات أسماء الحِزم التالية:

  • java.*
  • javax.*
  • sun.*
  • android.*
  • com.android.*

تشمل التعديلات المحظورة ما يلي:

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

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

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

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

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

3.7 توافق الآلة الافتراضية

يجب أن تتوافق عمليات تنفيذ التطبيقات على الأجهزة مع مواصفات برمجية bytecode الكاملة لملف Dalvik القابل للتنفيذ (DEX) ودلالات Dalvik Virtual Machine [Resources, 10].

في عمليات تنفيذ الأجهزة التي تتضمّن شاشات مصنّفة على أنّها ذات كثافة متوسطة أو منخفضة، يجب إعداد Dalvik لتخصيص 16 ميغابايت على الأقل من الذاكرة لكل تطبيق. يجب أن يتم ضبط بيئة ejecutant‏ (Dalvik) لتوفير 24 ميغابايت على الأقل من الذاكرة لكل تطبيق في عمليات تنفيذ الأجهزة التي تحتوي على شاشات مصنّفة على أنّها ذات كثافة عالية. يُرجى العِلم أنّه قد تخصص عمليات تنفيذ الأجهزة ذاكرة أكبر من هذه الأرقام.

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

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

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

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

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

3.8.2. الإشعارات

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

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

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

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

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

3.8.4. النخب

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

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

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

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

يجب أن تتضمّن عمليات تنفيذ الأجهزة التي يمكنها تشغيل الخلفيات المتحركة بشكل موثوق كما هو описан أعلاه ميزة الخلفيات المتحركة. يجب عدم تنفيذ الخلفيات المتحركة في عمليات تنفيذ الأجهزة التي تم تحديد أنّها لا تعمل بالخلفيات المتحركة بشكل موثوق كما هو موضّح أعلاه.

‫4- توافق البرامج المرجعية

على جهات تنفيذ الأجهزة اختبار توافق التنفيذ باستخدام التطبيقات التالية المفتوح المصدر:

  • الآلة الحاسبة (مضمّنة في حزمة تطوير البرامج (SDK))
  • Lunar Lander (مضمّنة في حزمة SDK)
  • تطبيقات "تطبيقات Android" [الموارد، 18]
  • Replica Island (متاح في Android Market، مطلوب فقط لعمليات تكامل الأجهزة المتوافقة مع OpenGL ES 2.0)

يجب أن يتم تشغيل كل تطبيق من التطبيقات المذكورة أعلاه وأن يعمل بشكل صحيح عند التنفيذ، لكي يتم اعتبار التنفيذ متوافقًا.

بالإضافة إلى ذلك، يجب أن تختبر عمليات تنفيذ الأجهزة كل عنصر من عناصر القائمة (بما في ذلك كل الاقِلِيم الفرعية) لكل تطبيق من تطبيقات اختبار التشغيل الناجح هذه:

  • ApiDemos (مضمّنة في حزمة SDK)
  • ManualSmokeTests (مضمّنة في CTS)

يجب أن يتم تنفيذ كل حالة اختبار في التطبيقات أعلاه بشكل صحيح على الجهاز.

5. توافق حِزم التطبيقات

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

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

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

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

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

يجب أن تكون عمليات تنفيذ الأجهزة متوافقة مع برامج ترميز الوسائط المتعددة التالية. يتم توفير كلّ هذه برامج الترميز كتطبيقات برامج في تطبيق Android المفضّل من "المشروع المفتوح المصدر لنظام Android".

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

الصوت
الاسم برنامج الترميز برنامج فك التشفير التفاصيل تنسيق الملف/الحاوية
‫AAC LC/LTP   X محتوى صوت أحادي/استيريو بأي مجموعة من معدلات نقل البيانات العادية التي تصل إلى 160 كيلوبت في الثانية ومعدّلات أخذ العينات التي تتراوح بين 8 و48 كيلوهرتز ‫3GPP (‎.3gp) وMPEG-4 (‎.mp4 و‎.m4a) لا تتوفّر إمكانية استخدام ملفات AAC غير المُعدَّلة (‎.aac).
‫HE-AACv1 (AAC+)   X
HE-AACv2 (الترميز المتقدّم للصوت المحسّن)   X
AMR-NB X X من 4.75 إلى 12.2 كيلوبت في الثانية بمعاينة بمعدل 8 كيلوهرتز 3GPP (‎.3gp)
AMR-WB   X 9 معدّلات تتراوح بين 6.60 كيلوبت في الثانية و23.85 كيلوبت في الثانية بمعدّل أخذ عينات يبلغ 16 كيلوهرتز 3GPP (‎.3gp)
MP3   X صوت أحادي/صوت استيريو بمعدّل نقل بيانات ثابت من 8 إلى 320 كيلوبت في الثانية (معدل نقل بيانات ثابت) أو بمعدّل نقل بيانات متغيّر (VBR) MP3 ‏(‎.mp3)
MIDI   X نوعا 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).
Ogg Vorbis   X   Ogg (‎.ogg)
إدارة إمكانية وصول الشركاء إلى الأجهزة الذكية (PCM)   X تنسيق PCM الخطي بترميز 8 و16 بت (بمعدلات تصل إلى الحد الأقصى للأجهزة) WAVE (‎.wav)
الصورة
JPEG X X base+progressive  
ملف GIF   X    
PNG X X    
BMP   X    
الفيديو
‫H.263 X X   ملفات 3GPP (‎.3gp)
H.264   X   ملفات 3GPP (‎.3gp) وMPEG-4 (‎.mp4)
الملف الشخصي البسيط لـ MPEG4   X   ملف 3GPP ‏(‎.3gp)

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

6.2. تسجيل الصوت

عندما يستخدم تطبيق واجهة برمجة التطبيقات android.media.AudioRecord لبدء تسجيل بث صوتي، يجب أن تأخذ عمليات تنفيذ الأجهزة عيّنات من الصوت وتسجيله باستخدام كل سلوك من هذه السلوكيات:

  • يجب إيقاف معالجة تقليل الضوضاء، إن توفّرت.
  • يجب إيقاف ميزة "التحكّم التلقائي في الكسب"، في حال توفّرها.
  • من المفترض أن يُظهر الجهاز سمات اتّساع ترددي ثابت تقريبًا، ويُرجى العلم أنّه يجب أن يكون اتّساع التردد ±3 ديسيبل، على وجه التحديد، من 100 هرتز إلى 4000 هرتز.
  • يجب ضبط حساسية إدخال الصوت بحيث ينتج مصدر طاقة صوت بمستوى 90 ديسيبل (SPL) عند 1000 هرتز قيمة متوسطة متراكمة للطاقة تبلغ 5000 لملفات 16 بت.
  • يجب أن تتتبّع مستويات سعة PCM التغييرات في مستوى الضغط الصوتي (SPL) للإدخال بشكل خطي على مدار ‎ نطاق 30 ديسيبل على الأقل من -18 ديسيبل إلى +12 ديسيبل مقارنةً بمستوى الضغط الصوتي البالغ 90 ديسيبل عند الميكروفون.
  • يجب أن يكون التشوّه التوافقي الكلي أقل من% 1 من 100 هرتز إلى 4,000 هرتز عند مستوى إدخال 90 ديسيبل SPL.

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

6.3. وقت استجابة الصوت

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

لأغراض هذا القسم:

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

باستخدام التعريفات أعلاه، من المفترض أن تعرض عمليات تنفيذ الأجهزة كلًا مما يلي:

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

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

7. توافق أدوات المطوّرين

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

  • Android Debug Bridge (المعروف باسم adb) [Resources, 19]
    يجب أن تتوافق عمليات تنفيذ الأجهزة مع جميع وظائف adb كما هو موضح في حزمة تطوير البرامج (SDK) لنظام التشغيل Android. من المفترض أن يكون خادم adb على الجهاز غير نشط تلقائيًا، ولكن يجب أن تتوفّر آلية يمكن للمستخدم من خلالها تفعيل "جسر تصحيح أخطاء Android".
  • خدمة Dalvik Debug Monitor (المعروفة باسم ddms) [الموارد، 19]
    يجب أن تتوافق عمليات تنفيذ الأجهزة مع جميع ميزات ddms كما هو موضّح في مستندات حزمة تطوير البرامج (SDK) لنظام التشغيل Android. بما أنّ ddms يستخدم adb، من المفترض أن يكون استخدام ddms غير مفعّل تلقائيًا، ولكن يجب أن يكون مفعّلاً عندما يفعّل المستخدم "جسر debugging" لنظام Android، كما هو موضّح أعلاه.
  • Monkey [Resources, 22]
    يجب أن تتضمّن عمليات تنفيذ الأجهزة إطار عمل Monkey وأن تجعله متاحًا للتطبيقات لاستخدامه.

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

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

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

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

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

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

8.1. الشاشة

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

في نظام التشغيل Android 2.2، إليك الإعدادات الأكثر شيوعًا للشاشة:

نوع الشاشة العرض (بالبكسل) الارتفاع (بالبكسل) نطاق الطول القطري (بالبوصة) مجموعة أحجام الشاشة مجموعة كثافة الشاشة
QVGA 240 320 ‫2.6 - 3.0 صغير ضعيفة
WQVGA 240 400 ‫3.2 - 3.5 عادي ضعيفة
FWQVGA 240 432 ‫3.5 - 3.8 عادي ضعيفة
HVGA 320 480 ‫3.0 - 3.5 عادي متوسط
WVGA 480 800 ‫3.3 - 4.0 عادي عالية
FWVGA 480 854 ‫3.5 - 4.0 عادي عالية
WVGA 480 800 ‫4.8 - 5.5 كبير متوسط
FWVGA 480 854 ‫5.0 - 5.8 كبير متوسط

يجب ضبط عمليات تنفيذ الأجهزة التي تتوافق مع أحد الإعدادات العادية أعلاه للإبلاغ عن حجم الشاشة المحدَّد للتطبيقات من خلال فئة android.content.res.Configuration [Resources, 24].

تحتوي بعض حِزم ‎ .apk على ملفات بيان لا تحدّد توافقها مع نطاق كثافة معيّن. عند تشغيل هذه التطبيقات، تنطبق المقيّدات التالية:

  • يجب أن تفسِّر عمليات تنفيذ الأجهزة الموارد في ملف apk .الذي لا يحتوي على أحد ملفّات تصفية الكثافة على أنّه الإعداد التلقائي "متوسط" (المعروف باسم "mdpi" في مستندات SDK ).
  • عند التشغيل على شاشة ذات كثافة "منخفضة"، يجب أن تؤدي عمليات تنفيذ الأجهزة إلى تصغير مواد العرض ذات الكثافة المتوسطة/mdpi بمقدار 0.75.
  • عند التشغيل على شاشة ذات كثافة "عالية"، يجب أن تؤدي عمليات تنفيذ الأجهزة إلى تكبير مواد العرض ذات الكثافة المتوسطة/mdpi بمقدار 1.5.
  • يجب ألّا تُحسِّن عمليات التنفيذ على الأجهزة مواد العرض ضمن نطاق كثافة، ويجب أن تحسِّن مواد العرض وفقًا لهذه العوامل بالضبط بين نطاقات الكثافة.

8.1.2. إعدادات العرض غير العادية

إنّ إعدادات العرض التي لا تتطابق مع أحد الإعدادات العادية المُدرَجة في القسم 8.1.1 تتطلّب عناية إضافية وعملًا إضافيًا لتكون متوافقة. على مطوّري الأجهزة التواصل مع فريق التوافق في Android كما هو описан في القسم 13 للحصول على تصنيفات لمجموعة حجم الشاشة وكثافتها وعامل القياس. عند توفّر هذه المعلومات، يجب أن تطبّق تطبيقات الأجهزة هذه المعلومات على النحو المحدّد.

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

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

يجب أن تُبلغ عمليات تنفيذ الأجهزة عن قيم صحيحة لجميع مقاييس العرض المحدّدة في android.util.DisplayMetrics [الموارد، 26].

8.1.4. التوافق مع الشاشة المعلَن عنه

يمكن للتطبيقات الإشارة إلى أحجام الشاشة التي تتوافق معها من خلال سمة <supports-screens> في ملف AndroidManifest.xml. يجب أن تتوافق عمليات تنفيذ الأجهزة بشكل صحيح مع التوافق المذكور للتطبيقات مع الشاشات الصغيرة والمتوسطة والكبيرة، كما هو موضّح في مستندات Android SDK.

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

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

  • يجب أن يتضمّن التطبيق إمكانية استخدام "إطار عمل إدارة الإدخال" (الذي يسمح للمطوّرين التابعين لجهات خارجية بإنشاء محرّكات إدارة الإدخال، أي لوحة المفاتيح المتوفّرة على الشاشة) على النحو الموضّح على developer.android.com.
  • يجب توفير طريقة واحدة على الأقل لاستخدام لوحة المفاتيح الافتراضية (بغض النظر عمّا إذا كانت لوحة المفاتيح الثابتة متوفّرة).
  • قد تتضمّن عمليات تنفيذ إضافية للوحة المفاتيح الافتراضية
  • قد تتضمّن لوحة مفاتيح جهاز
  • يجب عدم تضمين لوحة مفاتيح أجهزة لا تتطابق مع أحد التنسيقات المحدّدة في android.content.res.Configuration.keyboard [الموارد، 25] (أي QWERTY أو 12 مفتاحًا)

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

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

  • يجوز حذف خيارات التنقّل غير المستندة إلى اللمس (أي يجوز حذف كرة المسار أو لوحة التوجيه أو العجلة)
  • يجب إدخال القيمة الصحيحة لسمة android.content.res.Configuration.navigation [المَراجع، 25]

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

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

يجب أن تُبلغ الأجهزة عن القيمة الصحيحة لاتجاه الجهاز الحالي، عند الاستعلام من خلال android.content.res.Configuration.orientation، أو android.view.Display.getOrientation()، أو واجهات برمجة التطبيقات الأخرى.

8.5. الإدخال من خلال شاشة تعمل باللمس

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

  • يجب أن يكون الجهاز مزوّدًا بشاشة تعمل باللمس.
  • قد تحتوي على شاشة تعمل باللمس تستخدم إما أسلوب التكثيف أو المقاومة
  • يجب أن يُبلغ عن قيمة android.content.res.Configuration [Resources, 25] التي تشير إلى نوع الشاشة التي تعمل باللمس المحدّدة على الجهاز.
  • يجب أن يتيح استخدام مؤشرات يتم تتبُّعها بشكل مستقل تمامًا، إذا كانت الشاشة تعمل باللمس تتيح استخدام مؤشرات متعددة.

8.6. USB

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

  • يجب تنفيذ برنامج تشغيل USB لعميل يمكن توصيله بمضيف USB باستخدام منفذ UME-A عادي.
  • يجب تنفيذ أداة Android Debug Bridge عبر USB (كما هو موضّح في القسم 7).
  • يجب تنفيذ مواصفات "التخزين الكبير السعة عبر USB" للسماح للمضيف المتصل بالجهاز بالوصول إلى محتوى وحدة التخزين /sdcard.
  • يجب استخدام شكل موصل USB صغير على جانب الجهاز.
  • يجوز تضمين منفذ غير عادي على جانب الجهاز، ولكن في هذه الحالة يجب أن يتم شحنه مع كابل يمكنه توصيل دبوس الإخراج المخصّص بمنفذ USB-A العادي.
  • يجب أن يتيح الجهاز استخدام مواصفات مساحة التخزين الكبيرة عبر USB (كي تتمكّن من الوصول إلى مساحة التخزين القابلة للإزالة أو الثابتة على الجهاز من جهاز كمبيوتر مضيف).

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

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

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

8.8. الشبكات اللاسلكية للبيانات

يجب أن تتضمّن عمليات تنفيذ الأجهزة إمكانية استخدام شبكة لاسلكية لمشاركة البيانات بسرعة عالية. وعلى وجه التحديد، يجب أن تتضمّن عمليات تنفيذ الأجهزة إمكانية استخدام معيار واحد على الأقل للبيانات اللاسلكية بسرعة 200 كيلوبت في الثانية أو أكثر. تشمل أمثلة التكنولوجيات التي تستوفي هذا الشرط EDGE وHSPA وEV-DO و802.11g وما إلى ذلك.

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

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

8.9. الكاميرا

يجب أن تتضمّن عمليات تنفيذ الأجهزة كاميرا خلفية. عند استخدام الكاميرا الخلفية المضمّنة:

  • يجب أن تكون بدرجة دقة 2 ميغابكسل على الأقل
  • يجب أن تتضمّن ميزة التركيز التلقائي للأجهزة أو التركيز التلقائي للبرامج في برنامج تشغيل الكاميرا (شفّاف لبرنامج التطبيق)
  • قد تتضمّن أجهزة ذات تركيز ثابت أو تقنية EDOF (عمق مجال ممتد)
  • قد تتضمّن وميضًا. إذا كانت الكاميرا تتضمّن فلاشًا، يجب عدم إضاءة مصباح الفلاش أثناء تسجيل مثيل android.hardware.Camera.PreviewCallback على سطح معاينة الكاميرا، ما لم يفعِّل التطبيق FLASH_MODE_AUTO أوFLASH_MODE_ON سمة Camera.Parameters بشكل صريح. يُرجى العِلم أنّ هذا القيد لا ينطبق على تطبيق كاميرا النظام المضمّن في الجهاز، بل على التطبيقات التابعة لجهات خارجية فقط التي تستخدم Camera.PreviewCallback.

يجب أن تطبِّق عمليات تنفيذ الأجهزة السلوكيات التالية لواجهات برمجة التطبيقات المتعلّقة بالكاميرا:

  1. إذا لم يسبق للتطبيق استدعاء ‎varied.hardware.Camera.Parameters.setPreviewFormat(int)، يجب أن يستخدم الجهاز ‎varied.hardware.PixelFormat.YCbCr_420_SP لبيانات المعاينة المقدَّمة إلى ‎varied.application.callbacks.
  2. إذا سجّل تطبيق مثيلًا من android.hardware.Camera.PreviewCallback وطلب النظام طريقة onPreviewFrame() عندما يكون تنسيق المعاينة هو YCbCr_420_SP، يجب أن تكون البيانات في صفيف البايتات التي تم تمريرها إلى onPreviewFrame() بالإضافة إلى ذلك بتنسيق ترميز NV21. (هذا هو التنسيق المستخدَم بشكلٍ أساسي من قِبل عائلة الأجهزة 7k). وهذا يعني أنّه يجب أن يكون NV21 هو الإعداد التلقائي.

يجب أن توفّر عمليات تنفيذ الأجهزة واجهة برمجة التطبيقات Camera API الكاملة المضمّنة في مستندات حزمة SDK لنظام التشغيل Android 2.2 [Resources, 27]، بغض النظر عمّا إذا كان الجهاز يتضمّن ميزة ضبط التركيز التلقائي للأجهزة أو ميزات أخرى. على سبيل المثال، يجب أن تظل الكاميرات التي لا تتضمّن ميزة التركيز التلقائي تستدعي أي مثيلاتandroid.hardware.Camera.AutoFocusCallback مسجّلة (على الرغم من أنّه ليس لها صلة بالكاميرات التي لا تتضمّن ميزة التركيز التلقائي).

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

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

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

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

8.11. البوصلة

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

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

يجب أن تتضمّن عمليات تنفيذ الأجهزة جهاز استقبال لنظام تحديد المواقع العالمي (GPS)، ويجب أن تتضمّن شكلاً من أشكال تقنية "نظام تحديد المواقع العالمي (GPS) المساعد" لتقليل وقت الربط بنظام تحديد المواقع العالمي (GPS).

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

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

راجِع أيضًا القسم 8.8، "الشبكات اللاسلكية للبيانات".

8.14. الذاكرة ومساحة التخزين

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

يجب أن تتضمّن عمليات تنفيذ الأجهزة مساحة تخزين غير متقلبة تبلغ 150 ميغابايت على الأقل تتوفّر لبيانات المستخدمين. وهذا يعني أنّه يجب أن يكون حجم القسم /data 150 ميغابايت على الأقل.

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

8.15. مساحة التخزين المشتركة للتطبيق

يجب أن تقدّم عمليات تنفيذ الأجهزة مساحة تخزين مشتركة للتطبيقات. يجب ألا تقل مساحة التخزين المشترَكة المقدَّمة عن 2 غيغابايت.

يجب ضبط عمليات تنفيذ الأجهزة باستخدام مساحة تخزين مشترَكة تم تركيبها تلقائيًا، "جاهزة للاستخدام". إذا لم يتم تركيب مساحة التخزين المشتركة على /sdcard مسار Linux، يجب أن يتضمّن الجهاز رابطًا رمزيًا لنظام التشغيل Linux من /sdcard إلى نقطة الربط الفعلية.

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

قد تحتوي عمليات تنفيذ الأجهزة على أجهزة لمساحة تخزين قابلة للإزالة يمكن للمستخدم الوصول إليها، مثل بطاقة Secure Digital. بدلاً من ذلك، قد تخصص عمليات تنفيذ الأجهزة مساحة تخزين داخلية (غير قابلة للإزالة) كمساحة تخزين مشتركة للتطبيقات.

بغض النظر عن شكل مساحة التخزين المشتركة المستخدَمة، يجب أن توفّر مساحة التخزين المشتركة إمكانية الوصول إلى مساحة تخزين جماعي عبر USB، كما هو موضّح في القسم 8.6. يجب تركيب مساحة التخزين المشتركة باستخدام نظام الملفات FAT كما هي مُعدَّة عند الشحن.

في ما يلي مثالان شائعان توضحان ذلك. إذا كان تنفيذ الجهاز يتضمن فتحة لبطاقة SD لاستيفاء متطلبات مساحة التخزين المشترَكة، يجب تضمين بطاقة SD بتنسيق FAT بحجم 2 غيغابايت أو أكبر مع الجهاز كما يتم بيعه للمستخدمين، ويجب تثبيتها تلقائيًا. بدلاً من ذلك، إذا كان تنفيذ الجهاز يستخدم مساحة تخزين ثابتة داخلية لتلبية هذا الشرط، يجب أن يكون حجم مساحة التخزين هذه 2 غيغابايت أو أكبر، ويجب أن تكون بتنسيق FAT، وأن يتم تركيبها على /sdcard (أو يجب أن يكون /sdcard رابطًا رمزيًا للموقع الجغرافي إذا تم تركيبه في مكان آخر).

في عمليات تنفيذ الأجهزة التي تتضمّن مسارات تخزين مشترَكة متعددة (مثل كل من فتحة بطاقة SD ومساحة التخزين الداخلية المشترَكة)، يجب تعديل التطبيقات الأساسية مثل أداة فحص الوسائط وContentProvider لتوفير إمكانية استخدام الملفات في كلا الموقعَين بشكل شفاف.

8.16- البلوتوث

يجب أن تتضمّن عمليات تنفيذ الأجهزة جهاز إرسال واستقبال بلوتوث. يجب أن تفعِّل عمليات تنفيذ الأجهزة واجهة برمجة التطبيقات Bluetooth API المستندة إلى RFCOMM على النحو الموضَّح في مستندات حزمة تطوير البرامج (SDK) [الموارد، 30]. يجب أن توفّر عمليات تنفيذ التطبيقات على الأجهزة ملفات تعريف البلوتوث ذات الصلة، مثل A2DP و AVRCP وOBEX وما إلى ذلك، حسب الاقتضاء للجهاز.

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

9. التوافق مع الأداء

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

المقياس الحدّ الأدنى للأداء التعليقات
وقت بدء تشغيل التطبيق من المفترض أن يتم تشغيل التطبيقات التالية في غضون الوقت المحدّد.
  • المتصفّح: أقل من 1300 ملي ثانية
  • رسائل الوسائط المتعددة/الرسائل القصيرة: أقل من 700 مللي ثانية
  • AlarmClock: أقل من 650 ملي ثانية
يتم قياس وقت الإطلاق على أنّه إجمالي الوقت الذي يستغرقه اكتمال تحميل النشاط التلقائي للتطبيق، بما في ذلك الوقت الذي يستغرقه بدء عملية Linux وتحميل حزمة Android في بيئة التشغيل الافتراضية Dalvik وتشغيل onCreate.
التطبيقات المتزامنة عند تشغيل تطبيقات متعددة، يجب أن يستغرق إعادة تشغيل أحد التطبيقات التي كانت تعمل في السابق وقتًا أقل من وقت التشغيل الأصلي.  

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

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

10.1. الأذونات

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

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

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

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

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

10.4. بيئات التنفيذ البديلة

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

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

يجب عدم منح أوقات التشغيل البديلة إذن الوصول إلى الموارد المحمية باستخدام أذونات لم يتم طلبها في ملف AndroidManifest.xml الخاص بوقت التشغيل من خلال <uses-permission>.

يجب ألا تسمح أوقات التشغيل البديلة للتطبيقات باستخدام الميزات المحمية بأذونات Android المخصّصة لتطبيقات النظام.

يجب أن تلتزم أوقات التشغيل البديلة بنموذج وضع الحماية في Android. وعلى وجه التحديد:

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

يجب عدم تشغيل أو منح أو منح التطبيقات الأخرى أي امتيازات للمستخدم المتميّز (root) أو أي معرّف مستخدم آخر في أوقات التشغيل البديلة.

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

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

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

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

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

12. البرامج القابلة للتحديث

يجب أن تتضمّن عمليات تنفيذ الأجهزة آلية لاستبدال برنامج النظام بالكامل. لا يلزم أن تُجري الآلية ترقيات "مباشرة"، أي قد يكون مطلوبًا إعادة تشغيل الجهاز.

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

  • عمليات التنزيل عبر شبكة غير سلكية (OTA) مع التحديث بلا اتصال بالإنترنت من خلال إعادة التشغيل
  • التحديثات "المرتبطة" عبر USB من جهاز كمبيوتر مضيف
  • التحديثات "بلا إنترنت" من خلال إعادة التشغيل والتحديث من ملف على مساحة تخزين قابله للإزالة

يجب أن تتيح آلية التحديث المُستخدَمة إجراء التحديثات بدون محو بيانات المستخدم. يُرجى العلم أنّ برنامج Android الأساسي يتضمّن آلية تحديث تفي بهذه المتطلّبات.

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

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

يمكنك التواصل مع مؤلفي المستند على العنوان compatibility@android.com للحصول على توضيحات وطرح أي مشاكل تعتقد أنّ المستند لا يتناولها.

الملحق أ: إجراء اختبار البلوتوث

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

يستند إجراء الاختبار إلى تطبيق BluetoothChat النموذجي المُدرَج في ملف شجيرة مشروع Android المفتوح المصدر. تتطلّب العملية استخدام جهازَين:

  • عملية تنفيذ جهاز مرشح تعمل بالإصدار البرمجي المطلوب اختباره
  • عملية تنفيذ جهاز منفصلة معروفة بأنّها متوافقة، وتكون من طراز مختلف عن عملية تنفيذ الجهاز التي يتم اختبارها، أي عملية تنفيذ جهاز "معروفة بأنّها جيدة"

يشير إجراء الاختبار أدناه إلى هذين الجهازَين باسمَي "الجهاز المُرشَّح" و "الجهاز المعروف بأنّه يعمل بشكلٍ جيد"، على التوالي.

الإعداد والتركيب

  1. أنشئ حزمة BluetoothChat.apk من خلال "إنشاء عيّنات" من شجرة رمز مصدر Android.
  2. ثبِّت حزمة BluetoothChat.apk على الجهاز الذي يعمل بشكل سليم.
  3. ثبِّت حزمة BluetoothChat.apk على الجهاز المعني.

اختبار ميزة "التحكّم في البلوتوث من خلال التطبيقات"

  1. افتح تطبيق BluetoothChat على الجهاز المعنيّ، مع إيقاف البلوتوث.
  2. تأكَّد من أنّ الجهاز المعنيّ يفعّل البلوتوث أو يطلب من المستخدم تفعيله من خلال مربّع حوار.

اختبار الإقران والاتصال

  1. افتح تطبيق "المحادثة عبر البلوتوث" على كلا الجهازين.
  2. اجعل الجهاز المعروف صالحًا للاكتشاف من داخل BluetoothChat (باستخدام القائمة).
  3. على الجهاز المعني، ابحث عن أجهزة البلوتوث من داخل BluetoothChat (باستخدام القائمة) واقرِن الجهاز بالجهاز الذي يعمل بشكل سليم.
  4. أرسِل 10 رسائل أو أكثر من كل جهاز، وتأكَّد من أنّ الجهاز الآخر يتلقّاها بشكلٍ صحيح.
  5. أغلِق تطبيق BluetoothChat على كلا الجهازَين من خلال الضغط على Home (الصفحة الرئيسية).
  6. أزِل إقران كل جهاز من الآخر باستخدام تطبيق "الإعدادات" على الجهاز.

اختبار الإقران والاتصال في الاتجاه المعاكس

  1. افتح تطبيق "المحادثة عبر البلوتوث" على كلا الجهازين.
  2. اجعل الجهاز المعنيّ قابلاً للاكتشاف من داخل BluetoothChat (باستخدام القائمة).
  3. على الجهاز الذي يعمل بشكل سليم، ابحث عن أجهزة البلوتوث من داخل BluetoothChat (باستخدام القائمة) واقرِن الجهاز المعنيّ.
  4. أرسِل 10 رسائل أو أكثر من كل جهاز، وتأكَّد من أنّ الجهاز الآخر يتلقّاها بشكل صحيح.
  5. أغلِق تطبيق "محادثة عبر البلوتوث" على كلا الجهازَين من خلال الضغط على "رجوع" بشكل متكرّر للوصول إلى مشغّل التطبيقات.

إعادة إطلاق الاختبار

  1. أعِد تشغيل تطبيق "المحادثة عبر البلوتوث" على كلا الجهازين.
  2. أرسِل 10 رسائل أو أكثر من كل جهاز، وتأكَّد من أنّ الجهاز الآخر يتلقّاها بشكل صحيح.

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