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

المراجعة 1
تاريخ آخر تعديل: 23 تموز (يوليو) 2013

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

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

1. المقدّمة
2- المراجع
3- البرامج
3.1. توافق واجهات برمجة التطبيقات المُدارة
3.2. التوافق مع واجهة برمجة التطبيقات
3.3. التوافق مع واجهات برمجة التطبيقات الأصلية
3.4. التوافق مع الويب
3.5. التوافق السلوكي لواجهة برمجة التطبيقات
3.6. مساحات أسماء واجهة برمجة التطبيقات
3.7. توافق الأجهزة الافتراضية
3.8. توافق واجهة المستخدم
3.9 إدارة الجهاز
3.10 تسهيل الاستخدام
3.11 تحويل النص إلى كلام
4. توافق حِزم التطبيقات
5- التوافق مع الوسائط المتعددة
6. توافق أدوات المطوّرين وخياراته
‫7. التوافق مع الأجهزة
7.1. الشاشة والرسومات
7.2. أجهزة الإدخال
7.3. أجهزة الاستشعار
7.4. إمكانية الوصول إلى البيانات
7.5. الكاميرات
7.6. الذاكرة ومساحة التخزين
7.7. USB
‫8. التوافق مع الأداء
9- توافق نموذج الأمان
‫10. اختبار توافق البرامج
‫11. البرامج القابلة للتحديث
12- التواصل معنا

‫1. مقدّمة

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

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

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

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

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

لهذا السبب، يُعدّ "المشروع المفتوح المصدر لنظام Android" [المراجع، 3] هو المرجع وطريقة التنفيذ المفضّلة لنظام Android. ننصح بشدة مطوّري الأجهزة بإنشاء تطبيقاتهم بالاستناد إلى رمز المصدر المتوفّر في "المشروع المفتوح المصدر لنظام Android" إلى أقصى حدّ ممكن. على الرغم من أنّه يمكن افتراضيًا استبدال بعض المكوّنات بعمليات تنفيذ بديلة، يُنصح بشدة بعدم اتّباع هذه الممارسة، لأنّ اجتياز اختبارات البرامج سيصبح أكثر صعوبة. تقع على عاتق الجهة المنفِّذة مسؤولية ضمان التوافق التام السلوكي مع التنفيذ العادي لنظام التشغيل 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 4.3: http://source.android.com/docs/compatibility/4.3/versions.html
  8. Renderscript: http://developer.android.com/guide/topics/graphics/renderscript.html
  9. ميزة "التسريع على الأجهزة": http://developer.android.com/guide/topics/graphics/hardware-accel.html
  10. فئة android.webkit.WebView: http://developer.android.com/reference/android/webkit/WebView.html
  11. HTML5: http://www.whatwg.org/specs/web-apps/current-work/multipage/
  12. إمكانات HTML5 بلا إنترنت: http://dev.w3.org/html5/spec/Overview.html#offline
  13. علامة فيديو HTML5: http://dev.w3.org/html5/spec/Overview.html#video
  14. واجهة برمجة التطبيقات لتحديد الموقع الجغرافي في HTML5/W3C: http://www.w3.org/TR/geolocation-API/
  15. واجهة برمجة التطبيقات لقاعدة بيانات الويب HTML5/W3C: http://www.w3.org/TR/webdatabase/
  16. واجهة برمجة التطبيقات IndexedDB في HTML5/W3C: http://www.w3.org/TR/IndexedDB/
  17. مواصفات جهاز Dalvik الافتراضي: متوفّرة في رمز مصدر Android، على dalvik/docs
  18. التطبيقات المصغّرة: http://developer.android.com/guide/practices/ui_guidelines/widget_design.html
  19. الإشعارات: http://developer.android.com/guide/topics/ui/notifiers/notifications.html
  20. موارد التطبيق: http://code.google.com/android/reference/available-resources.html
  21. دليل أسلوب رموز شريط الحالة: http://developer.android.com/guide/practices/ui_guidelines/icon_design_status_bar.html
  22. Search Manager: ‏ http://developer.android.com/reference/android/app/SearchManager.html
  23. الرسائل المنبثقة: http://developer.android.com/reference/android/widget/Toast.html
  24. المظاهر: http://developer.android.com/guide/topics/ui/themes.html
  25. فئة R.style: http://developer.android.com/reference/android/R.style.html
  26. الخلفيات المتحركة: https://android-developers.googleblog.com/2010/02/live-wallpapers.html
  27. إدارة أجهزة Android: http://developer.android.com/guide/topics/admin/device-admin.html
  28. مرجع DevicePolicyManager: http://developer.android.com/reference/android/app/admin/DevicePolicyManager.html
  29. واجهات برمجة تطبيقات Android Accessibility Service: http://developer.android.com/reference/android/accessibilityservice/package-summary.html
  30. واجهات برمجة تطبيقات Android Accessibility API: http://developer.android.com/reference/android/view/accessibility/package-summary.html
  31. مشروع Eyes Free: http://code.google.com/p/eyes-free
  32. واجهات برمجة التطبيقات لتحويل النص إلى كلام: http://developer.android.com/reference/android/speech/tts/package-summary.html
  33. مستندات الأداة المرجعية (لـ adb وaapt وddms وsystrace): http://developer.android.com/guide/developing/tools/index.html
  34. وصف ملف apk لنظام التشغيل Android: http://developer.android.com/guide/topics/fundamentals.html
  35. ملفات البيان: http://developer.android.com/guide/topics/manifest/manifest-intro.html
  36. أداة اختبار Monkey: https://developer.android.com/studio/test/other-testing-tools/monkey
  37. فئة android.content.pm.PackageManager في Android وقائمة ميزات الأجهزة: http://developer.android.com/reference/android/content/pm/PackageManager.html
  38. التوافق مع شاشات متعددة: http://developer.android.com/guide/practices/screens_support.html
  39. ‫android.util.DisplayMetrics: ‏ http://developer.android.com/reference/android/util/DisplayMetrics.html
  40. ‫android.content.res.Configuration: http://developer.android.com/reference/android/content/res/Configuration.html
  41. ‫android.hardware.SensorEvent: http://developer.android.com/reference/android/hardware/SensorEvent.html
  42. واجهة برمجة تطبيقات البلوتوث: http://developer.android.com/reference/android/bluetooth/package-summary.html
  43. بروتوكول دفع NDEF: http://source.android.com/docs/compatibility/ndef-push-protocol.pdf
  44. شريحة MIFARE MF1S503X: http://www.nxp.com/documents/data_sheet/MF1S503x.pdf
  45. شريحة MIFARE MF1S703X: http://www.nxp.com/documents/data_sheet/MF1S703x.pdf
  46. ‫MIFARE MF0ICU1: http://www.nxp.com/documents/data_sheet/MF0ICU1.pdf
  47. ‫MIFARE MF0ICU2: http://www.nxp.com/documents/short_data_sheet/MF0ICU2_SDS.pdf
  48. MIFARE AN130511: http://www.nxp.com/documents/application_note/AN130511.pdf
  49. MIFARE AN130411: http://www.nxp.com/documents/application_note/AN130411.pdf
  50. واجهة برمجة التطبيقات لاتجاه الكاميرا: http://developer.android.com/reference/android/hardware/Camera.html#setDisplayOrientation(int)
  51. الكاميرا: http://developer.android.com/reference/android/hardware/Camera.html
  52. واجهة Android Open Accessories: http://developer.android.com/guide/topics/usb/accessory.html
  53. USB Host API: ‏ http://developer.android.com/guide/topics/usb/host.html
  54. مرجع أمان Android وأذوناته: http://developer.android.com/guide/topics/security/security.html
  55. التطبيقات لنظام التشغيل Android: http://code.google.com/p/apps-for-android
  56. ‫Android DownloadManager: http://developer.android.com/reference/android/app/DownloadManager.html
  57. نقل ملفات Android: http://www.android.com/filetransfer
  58. تنسيقات الوسائط في Android: http://developer.android.com/guide/appendix/media-formats.html
  59. مسودة بروتوكول البث المباشر عبر بروتوكول HTTP: http://tools.ietf.org/html/draft-pantos-http-live-streaming-03
  60. NFC Connection Handover: http://www.nfc-forum.org/specs/spec_list/#conn_handover
  61. الاقتران الآمن والبسيط عبر البلوتوث باستخدام تقنية NFC: http://www.nfc-forum.org/resources/AppDocs/NFCForum_AD_BTSSP_1_0.pdf
  62. Wifi Multicast API: ‏ http://developer.android.com/reference/android/net/wifi/WifiManager.MulticastLock.html
  63. مساعدة في تنفيذ الإجراءات: http://developer.android.com/reference/android/content/Intent.html#ACTION_ASSIST
  64. مواصفات الشحن عبر USB: http://www.usb.org/developers/devclass_docs/USB_Battery_Charging_1.2.pdf
  65. شعاع Android: http://developer.android.com/guide/topics/nfc/nfc.html
  66. مكبّر صوت USB في Android: http://developer.android.com/reference/android/hardware/usb/UsbConstants.html#USB_CLASS_AUDIO
  67. إعدادات مشاركة NFC على Android: http://developer.android.com/reference/android/provider/Settings.html#ACTION_NFCSHARING_SETTINGS
  68. ‫Wifi Direct (Wifi P2P): http://developer.android.com/reference/android/net/wifi/p2p/WifiP2pManager.html
  69. التطبيقات المصغّرة لشاشة القفل والشاشة الرئيسية: http://developer.android.com/reference/android/appwidget/AppWidgetProviderInfo.html
  70. مرجع UserManager: http://developer.android.com/reference/android/os/UserManager.html
  71. مرجع وحدة التخزين الخارجية: https://source.android.com/docs/core/storage
  72. واجهات برمجة التطبيقات الخاصة بمساحة التخزين الخارجية: http://developer.android.com/reference/android/os/Environment.html
  73. الرمز القصير للرسائل القصيرة: http://en.wikipedia.org/wiki/Short_code
  74. Media Remote Control Client: ‏ http://developer.android.com/reference/android/media/RemoteControlClient.html
  75. Display Manager: ‏ http://developer.android.com/reference/android/hardware/display/DisplayManager.html
  76. الشاشة المتحركة: http://developer.android.com/reference/android/service/dreams/DreamService.html
  77. الإعدادات ذات الصلة بتطوير تطبيقات Android: http://developer.android.com/reference/android/provider/Settings.html#ACTION_APPLICATION_DEVELOPMENT_SETTINGS
  78. الكاميرا: http://developer.android.com/reference/android/hardware/Camera.Parameters.html
  79. إضافة EGL‏:‏ EGL_ANDROID_RECORDABLE:‏ http://www.khronos.org/registry/egl/extensions/ANDROID/EGL_ANDROID_recordable.txt
  80. Motion Event API: ‏ http://developer.android.com/reference/android/view/MotionEvent.html
  81. ضبط الإدخال باللمس: http://source.android.com/docs/core/interaction/input/touch-devices.html

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

3- البرامج

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

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

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

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

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

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

3.2.1. الأذونات

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

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

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

المَعلمة التعليقات
android.os.Build.VERSION.RELEASE إصدار نظام Android الذي يتم تنفيذه حاليًا بتنسيق يمكن للمستخدم قراءته يجب أن يحتوي هذا الحقل على إحدى قيم السلاسل المحدّدة في [الموارد، 7].
android.os.Build.VERSION.SDK إصدار نظام Android الذي يتم تنفيذه حاليًا بتنسيق يمكن لرمز التطبيق التابع لجهة خارجية الوصول إليه بالنسبة إلى الإصدار 4.3 من Android، يجب أن يحتوي هذا الحقل على القيمة الصحيحة 18.
android.os.Build.VERSION.SDK_INT إصدار نظام Android الذي يتم تنفيذه حاليًا بتنسيق يمكن لرمز التطبيق التابع لجهة خارجية الوصول إليه بالنسبة إلى الإصدار 4.3 من Android، يجب أن يحتوي هذا الحقل على القيمة الصحيحة 18.
android.os.Build.VERSION.INCREMENTAL قيمة يختارها مُنفِّذ الجهاز لتحديد الإصدار المحدّد من نظام Android الذي يتم تنفيذه حاليًا، بتنسيق يمكن لشخص عادي قراءته يجب عدم إعادة استخدام هذه القيمة لإصدارات مختلفة يتم توفيرها للمستخدمين النهائيين. من الاستخدامات الشائعة لهذا الحقل الإشارة إلى رقم الإصدار أو معرّف تغيير تحكّم المصدر المستخدَم لإنشاء الإصدار. ما مِن متطلبات تتعلّق بالتنسيق المحدد لهذا الحقل، باستثناء أنّه يجب ألّا يكون فارغًا أو سلسلة ملف فارغة ("").
android.os.Build.BOARD قيمة يختارها منفذ الجهاز لتحديد الجهاز الداخلي المُحدَّد الذي يستخدمه الجهاز، بتنسيق يمكن لشخص عادي قراءته من الاستخدامات المحتملة لهذا الحقل هو الإشارة إلى المراجعة المحدّدة للوحة التي تشغّل الجهاز. يجب أن تكون قيمة هذا الحقل قابلة للترميز بترميز ASCII المكوّن من 7 بتات وأن تتطابق مع التعبير العادي "^[a-zA-Z0-9.,_-]+$".
android.os.Build.BRAND قيمة يختارها مُنفِّذ الجهاز لتحديد اسم الشركة أو المؤسسة أو الفرد أو غير ذلك الذي أنتج الجهاز، بتنسيق يمكن لشخص عادي قراءته من الاستخدامات المحتملة لهذا الحقل الإشارة إلى المصنّع الأصلي للجهاز و/أو مشغّل شبكة الجوّال الذي باع الجهاز. يجب أن تكون قيمة هذا الحقل قابلة للترميز بترميز ASCII المكوّن من 7 بتات وأن تتطابق مع التعبير العادي "^[a-zA-Z0-9.,_-]+$".
android.os.Build.CPU_ABI اسم مجموعة التعليمات (نوع وحدة المعالجة المركزية + اصطلاح ABI) للرمز الأصلي راجِع القسم 3.3: التوافق مع واجهات برمجة التطبيقات الأصلية.
android.os.Build.CPU_ABI2 اسم مجموعة التعليمات الثانية (نوع وحدة المعالجة المركزية + اصطلاح ABI) للرمز البرمجي الأصلي راجِع القسم 3.3: التوافق مع واجهات برمجة التطبيقات الأصلية.
android.os.Build.DEVICE قيمة يختارها منفذ الجهاز لتحديد الإعدادات أو المراجعة المحدّدة للجسم (يُشار إليها أحيانًا باسم "التصميم الصناعي") للجهاز يجب أن تكون قيمة هذا الحقل قابلة للترميز بترميز ASCII المكوّن من 7 بت ويجب أن تتطابق مع التعبير العادي "^[a-zA-Z0-9.,_-]+$".
android.os.Build.FINGERPRINT سلسلة تحدّد هذا الإصدار بشكل فريد يجب أن يكون التنسيق سهل القراءة. يجب أن يتّبع هذا النموذج:
$(BRAND)/$(PRODUCT)/$(DEVICE):$(VERSION.RELEASE)/$(ID)/$(VERSION.INCREMENTAL):$(TYPE)/$(TAGS)
على سبيل المثال:
acme/mydevice/generic:4.3/JRN53/3359:userdebug/test-keys
يجب ألّا يتضمّن الملف المرجعي أحرف مسافات بيضاء. إذا كانت الحقول الأخرى المضمّنة في النمط أعلاه تحتوي على أحرف مسافات بيضاء، يجب استبدالها في بصمة الإصدار بحرف آخر، مثل الشرطة السفلية ("_"). يجب أن تكون قيمة هذا الحقل قابلة للترميز بترميز ASCII المكوّن من 7 بتات.
android.os.Build.HARDWARE اسم الجهاز (من سطر أوامر kernel أو ‎ /proc) يجب أن يكون سهل الفهم بالنسبة إلى المستخدمين. يجب أن تكون قيمة هذا الحقل قابلة للترميز بترميز ASCII المكوّن من 7 بت ويجب أن تتطابق مع التعبير العادي "^[a-zA-Z0-9.,_-]+$".
android.os.Build.HOST سلسلة تحدِّد بشكل فريد المضيف الذي تم إنشاء الإصدار عليه، بتنسيق يمكن لشخص عادي قراءته لا توجد متطلبات بشأن التنسيق المحدّد لهذا الحقل، باستثناء أنّه يجب ألّا يكون فارغًا أو سلسلة فارغة ("").
android.os.Build.ID معرّف يختاره مُنفِّذ الجهاز للإشارة إلى إصدار معيّن، بتنسيق يمكن للمستخدم قراءته يمكن أن يكون هذا الحقل هو نفسه android.os.Build.VERSION.INCREMENTAL، ولكن يجب أن يكون له قيمة مفيدة بما يكفي للمستخدمين النهائيين من أجل التمييز بين إصدارات البرامج. يجب أن تكون قيمة هذا الحقل قابلة للترميز بترميز ASCII المكوّن من 7 بتات وأن تتطابق مع التعبير العادي "^[a-zA-Z0-9.,_-]+$".
android.os.Build.MANUFACTURER الاسم التجاري للمصنّع الأصلي للجهاز (OEM) ما مِن متطلبات بشأن التنسيق المحدّد لهذا الحقل، باستثناء أنّه يجب ألّا يكون فارغًا أو سلسلة فارغة ("").
android.os.Build.MODEL قيمة يختارها منفذ الجهاز تحتوي على اسم الجهاز كما يعرفه المستخدم النهائي. يجب أن يكون هذا هو الاسم نفسه الذي يتم بموجبه تسويق الجهاز وبيعه للمستخدمين النهائيين. ما مِن متطلبات بشأن التنسيق المحدد لهذا الحقل، باستثناء أنّه يجب ألّا يكون فارغًا أو سلسلة فارغة ("").
android.os.Build.PRODUCT قيمة يختارها مُنفِّذ الجهاز تحتوي على اسم التطوير أو الاسم الرمزي للمنتج (رمز التخزين التعريفي). يجب أن تكون قابلة للقراءة من قِبل البشر، ولكن ليس بالضرورة أن تكون مقصودة لعرضها على المستخدمين النهائيين. يجب أن تكون قيمة هذا الحقل قابلة للترميز على أنّها 7 بت ASCII وأن تتطابق مع التعبير العادي "^[a-zA-Z0-9.,_-]+$".
android.os.Build.SERIAL الرقم التسلسلي للجهاز، إن توفّر يجب أن تكون قيمة هذا الحقل قابلة للترميز بترميز ASCII المكوّن من 7 بتات وأن تتطابق مع التعبير العادي "^([a-zA-Z0-9]{0,20})$".
android.os.Build.TAGS قائمة مفصولة بفواصل بالعلامات التي اختارها مُنفِّذ الجهاز والتي تُميِّز الإصدار بشكلٍ أكبر. على سبيل المثال، "unsigned,debug". يجب أن تكون قيمة هذا الحقل قابلة للترميز بترميز ASCII المكوّن من 7 بتات وأن تتطابق مع التعبير العادي "^[a-zA-Z0-9.,_-]+$".
android.os.Build.TIME قيمة تمثّل الطابع الزمني لوقت إنشاء الإصدار
android.os.Build.TYPE قيمة يختارها مُنفِّذ الجهاز لتحديد إعدادات وقت التشغيل للإصدار يجب أن يحتوي هذا الحقل على إحدى القيم التالية المتوافقة مع الإعدادات الثلاثة المعتادة لوقت تشغيل Android: "user" أو "userdebug" أو "eng". يجب أن تكون قيمة هذا الحقل قابلة للترميز بترميز ASCII المكوّن من 7 بتات وأن تتطابق مع التعبير العادي "^[a-zA-Z0-9.,_-]+$".
android.os.Build.USER اسم أو معرّف مستخدم (أو مستخدم مبرمَج) أنشأ الإصدار ما مِن متطلبات بشأن التنسيق المحدّد لهذا الحقل، باستثناء أنّه يجب ألّا يكون فارغًا أو سلسلة فارغة ("").

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

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

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

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

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

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

  • ساعة مكتب
  • المتصفح
  • التقويم
  • جهات الاتصال
  • معرض الصور
  • GlobalSearch
  • قاذفة القنابل
  • الموسيقى
  • الإعدادات

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

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

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

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

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

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

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

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

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

3.2.3.4. نوايا البث

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

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

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

يمكن للرمز المُدار الذي يعمل في Dalvik طلب رمز أصلي مُقدَّم فيملف APK .‎ application كملف ELF .‎ so تم تجميعه للبنية المتوافقة مع الأجهزة الجهاز. بما أنّ الرموز البرمجية الأصلية تعتمد بشكل كبير على تكنولوجيا المعالج الأساسية، يحدِّد نظام Android عددًا من واجهات التطبيق الثنائية (ABI) في حزمة تطوير البرامج (NDK) لنظام Android، في الملف docs/CPU-ARCH-ABIS.html. إذا كان تطبيق الجهاز متوافقًا مع واجهة برمجة تطبيقات واحدة أو أكثر محدّدة، يجب أن يتوافق مع IDE لنظام التشغيل Android NDK، كما هو موضّح أدناه.

إذا كان تطبيق الجهاز يتضمّن توافقًا مع واجهة برمجة تطبيقات Android، يعني ذلك ما يلي:

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

يجب أن تكون واجهات برمجة التطبيقات التالية للرمز البرمجي الأصلي متاحة للتطبيقات التي تتضمّن رمزًا برمجيًا أصليًا:

  • libc (مكتبة C)
  • libm (مكتبة الرياضيات)
  • الحد الأدنى من التوافق مع C++
  • واجهة JNI
  • liblog (تسجيل Android)
  • libz (ضغط Zlib)
  • libdl (الرابط الديناميكي)
  • libGLESv1_CM.so (OpenGL ES 1.0)
  • libGLESv2.so (OpenGL ES 2.0)
  • libGLESv3.so (OpenGL ES 3.0)
  • libEGL.so (إدارة سطح OpenGL الأصلي)
  • libjnigraphics.so
  • libOpenSLES.so (لتشغيل الصوت في OpenSL ES 1.0.1)
  • libOpenMAXAL.so (لتوفير دعم OpenMAX AL 1.0.1)
  • libandroid.so (لتوفير وظائف الأنشطة الأصلية في Android)
  • توفُّر OpenGL، كما هو موضّح أدناه

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

يُرجى العلم أنّه يجب أن تتضمّن عمليات تنفيذ الأجهزة libGLESv3.so، ويجب أن ترتبط برابط رمزي (رمزي) بـ libGLESv2.so. في عمليات تنفيذ الأجهزة التي تعلن عن توافقها مع OpenGL ES 3.0، يجب أن تُصدِر libGLESv2.so رموز دوال OpenGL ES 3.0 بالإضافة إلى رموز دوال OpenGL ES 2.0.

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

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

3.4.1. توافق WebView

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

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

من المفترض أن يتضمّن مكوّن WebView إمكانية استخدام أكبر قدر ممكن من ميزات HTML5 [Resources, 11]. على الأقل، يجب أن تتيح عمليات تنفيذ الأجهزة كل واجهات برمجة التطبيقات التالية المرتبطة بHTML5 في WebView:

بالإضافة إلى ذلك، يجب أن تتيح عمليات تنفيذ الأجهزة استخدام واجهة برمجة التطبيقات webstorage API‏ [الموارد، 15] في HTML5/W3C، ويجب أن تتيح استخدام واجهة برمجة التطبيقات IndexedDB API‏ [الموارد، 16] في HTML5/W3C. ملاحظة: بما أنّ الهيئات المسؤولة عن وضع معايير تطوير الويب تنتقل إلى استخدام IndexedDB بدلاً من webstorage، من المتوقّع أن يصبح IndexedDB مكوّنًا مطلوبًا في إصدار مستقبلي من Android.

يجب إيقاف واجهات برمجة تطبيقات HTML5 تلقائيًا في WebView، مثل جميع واجهات برمجة تطبيقات JavaScript، ما لم يفعّلها المطوّر صراحةً من خلال واجهات برمجة تطبيقات Android المعتادة.

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

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

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

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

بالإضافة إلى ذلك، يجب أن تتيح عمليات تنفيذ الأجهزة استخدام واجهة برمجة التطبيقات webstorage API‏ [الموارد، 15] في HTML5/W3C، ويجب أن تتيح استخدام واجهة برمجة التطبيقات IndexedDB API‏ [الموارد، 16] في HTML5/W3C. ملاحظة: بما أنّ الهيئات المسؤولة عن وضع معايير تطوير الويب تنتقل إلى استخدام IndexedDB بدلاً من webstorage، من المتوقّع أن يصبح IndexedDB مكوّنًا مطلوبًا في إصدار مستقبلي من Android.

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

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

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

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

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

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

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

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

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

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

يجوز لمطوّري الأجهزة إضافة واجهات برمجة تطبيقات مخصّصة، ولكن يجب ألّا تكون أيّ من واجهات برمجة التطبيقات هذه في ملف تعريف اسم يملكه منتظم آخر أو يشير إليه. على سبيل المثال، على مطوّري التطبيقات المخصّصة للأجهزة عدم إضافة واجهات برمجة تطبيقات إلى مساحة الاسم com.google.* أو مساحة اسم مشابهة، بل يمكن لشركة Google فقط إجراء ذلك. وبالمثل، على Google عدم إضافة واجهات برمجة تطبيقات إلى مساحات أسماء الشركات الأخرى. بالإضافة إلى ذلك، إذا كان تطبيق الجهاز يتضمّن واجهات برمجة تطبيقات مخصّصة خارج مساحة اسم Android العادية، يجب تجميع واجهات برمجة التطبيقات هذه في مكتبة مشترَكة لنظام التشغيل Android لكي تتأثّر فقط التطبيقات التي تستخدمها صراحةً (من خلال <uses-library>mechanism) بزيادة استخدام الذاكرة لهذه الواجهات.

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

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

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

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

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

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

حجم الشاشة كثافة الشاشة ذاكرة التطبيق
صغير / عادي / كبير ldpi / mdpi ‫16 ميغابايت
صغير / عادي / كبير tvdpi / hdpi ‫32 ميغابايت
صغير / عادي / كبير xhdpi ‫64 ميغابايت
كبير جدًا mdpi ‫32 ميغابايت
كبير جدًا tvdpi / hdpi ‫64 ميغابايت
كبير جدًا xhdpi ‫128 ميغابايت

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

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

يتضمّن نظام التشغيل Android 4.3 تطبيق مشغّل (الشاشة الرئيسية) وإمكانية استخدام تطبيقات تابعة لجهات خارجية لتحل محل مشغّل الجهاز (الشاشة الرئيسية). إنّ عمليات تنفيذ الأجهزة التي تسمح للتطبيقات التابعة لجهات خارجية باستبدال الشاشة الرئيسية للجهاز يجب أن تذكر ميزة المنصة android.software.home_screen.

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

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

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

3.8.3. الإشعارات

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

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

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

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

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

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

3.8.5. النخب

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

3.8.6. المظاهر

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

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

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

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

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

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

3.8.8. عرض التطبيقات المستخدَمة مؤخرًا

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

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

يتيح نظام التشغيل Android 4.3 إمكانية استخدام ميزة "إدارة الإدخال" واستخدام برامج تحرير طرق الإدخال التابعة لجهات خارجية. يجب أن تُعلن عمليات تنفيذ الأجهزة التي تسمح للمستخدمين باستخدام طرق إدخال تابعة لجهات خارجية على الجهاز عن ميزة النظام الأساسي android.software.input_methods وأن تتيح واجهات برمجة تطبيقات IME كما هو محدّد في مستندات حزمة تطوير البرامج (SDK) لنظام التشغيل Android.

يجب أن توفّر عمليات تنفيذ الأجهزة التي تعلن عن ميزة android.software.input_methods آلية يمكن للمستخدم الوصول إليها لإضافة أساليب إدخال تابعة لجهات خارجية وضبطها. يجب أن تعرض عمليات تنفيذ الأجهزة واجهة الإعدادات استجابةً لطلب android.settings.INPUT_METHOD_SETTINGS.

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

يتيح نظام التشغيل Android 4.3 استخدام Remote Control API الذي يتيح لتطبيقات الوسائط دمج عناصر التحكّم في التشغيل التي يتم عرضها في عرض عن بُعد، مثل شاشة قفل الجهاز [الموارد، 74]. يجب أن تتضمّن عمليات تنفيذ الأجهزة التي تتيح شاشة القفل في الجهاز وتسمح للمستخدمين بإضافة التطبيقات المصغّرة على الشاشة الرئيسية إمكانية تضمين عناصر التحكّم عن بُعد في شاشة القفل على الجهاز [المراجع، 69].

3.8.11. أحلام

يتيح نظام التشغيل Android 4.3 استخدام شاشات توقف تفاعلية تُعرف باسم "الأحلام" [Resources, 76]. تتيح ميزة "الأحلام" للمستخدمين التفاعل مع التطبيقات عندما يكون جهاز الشحن في وضع السكون أو في وضع الإرساء على قاعدة شحن مكتبية. يجب أن تتضمّن عمليات تنفيذ الأجهزة دعمًا لتطبيق "الأحلام" وأن توفّر خيار إعدادات للمستخدمين لضبط "الأحلام".

3.9 إدارة الجهاز

يتضمّن الإصدار 4.3 من نظام التشغيل Android ميزات تتيح للتطبيقات المُدركة للأمان تنفيذ وظائف إدارة الجهاز على مستوى النظام، مثل فرض سياسات كلمات المرور أو تنفيذ ميزة "محو البيانات عن بُعد" من خلال واجهة برمجة التطبيقات لإدارة أجهزة Android‏ [الموارد، 27]. يجب أن توفّر عمليات تنفيذ الأجهزة تنفيذًا DevicePolicyManager للصف [الموارد، 28]. يجب أن تتيح عمليات تنفيذ الأجهزة التي تتضمّن شاشة القفل استخدام المجموعة الكاملة من سياسات إدارة الأجهزة المحدّدة في مستندات IDE لنظام التشغيل Android [المراجع، 27].

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

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

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

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

3.11 ميزة "تحويل النص إلى كلام"

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

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

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

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

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

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

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

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

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

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

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

النوع التنسيق / برنامج الترميز برنامج الترميز برنامج فك الترميز التفاصيل أنواع الملفات / تنسيقات الحاويات
الصوت MPEG-4 AAC Profile (AAC LC) مطلوب لعمليات تنفيذ الأجهزة التي تتضمّن أجهزة ميكروفون وتحديد android.hardware.microphone. مطلوب إتاحة المحتوى أحادي الصوت/ستيريو/5.0/5.1* بمعدّلات بيانات في الملف الصوتي عادية تتراوح بين 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+) مطلوب لعمليات تنفيذ الأجهزة التي تتضمّن أجهزة ميكروفون وتحدِّد android.hardware.microphone مطلوب إتاحة المحتوى الصوتي الأحادي/الإستيريو/5.0/5.1* بمعدّلات بيانات في الملف الصوتي عادية تتراوح بين 16 و48 كيلوهرتز
الملف الشخصي لـ MPEG-4 HE AAC v2 (الترميز المتقدّم للصوت المحسّن)   مطلوب إتاحة المحتوى الصوتي الأحادي/الإستيريو/5.0/5.1* بمعدّلات بيانات في الملف الصوتي عادية تتراوح بين 16 و48 كيلوهرتز
نوع عنصر الصوت في MPEG-4 هو ER AAC ELD (الترميز المتقدّم للصوت بمعدل تأخير منخفض) مطلوب لعمليات تنفيذ الأجهزة التي تتضمّن أجهزة ميكروفون وتحدِّد android.hardware.microphone مطلوب إتاحة المحتوى الصوتي الأحادي/الإستيريو بمعدّلات قياسية لتحليل العينات تتراوح بين 16 و48 كيلوهرتز
AMR-NB مطلوب لعمليات تنفيذ الأجهزة التي تتضمّن أجهزة ميكروفون وتحديد android.hardware.microphone. مطلوب من 4.75 إلى 12.2 كيلوبت في الثانية بمعاينة بمعدل 8 كيلوهرتز 3GPP (‎.3gp)
AMR-WB مطلوب لعمليات تنفيذ الأجهزة التي تتضمّن أجهزة ميكروفون وتحديد android.hardware.microphone. مطلوب 9 معدّلات تتراوح بين 6.60 كيلوبت في الثانية و23.85 كيلوبت في الثانية بمعدّل أخذ عينات يبلغ 16 كيلوهرتز 3GPP (‎.3gp)
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)
PCM/WAVE مطلوب مطلوب تنسيق PCM الخطي بترميز 8 بت و16 بت** (بمعدلات تصل إلى الحد الأقصى للأجهزة).يجب أن تتيح الأجهزة معدلات أخذ العينات لتسجيل تنسيق PCM الأوّلي بمعدّلات تردد 8000 و16000 و44100 هرتز WAVE (‎.wav)
صورة JPEG مطلوب مطلوب قاعدة + رسوم متحركة ‫JPEG (‎.jpg)
ملف GIF   مطلوب   GIF ‏(‎.gif)
PNG مطلوب مطلوب   ‫PNG‏ (‎.png)
BMP   مطلوب   BMP‏ (‎.bmp)
WebP مطلوب مطلوب   WebP ‏(‎.webp)
فيديو ‫H.263 مطلوب لعمليات تنفيذ الأجهزة التي تتضمّن أجهزة الكاميرا وتحديد android.hardware.camera أو android.hardware.camera.front. مطلوب  
  • 3GPP (‎.3gp)
  • ‫MPEG-4 (‎.mp4)
‫H.264 AVC مطلوب لعمليات تنفيذ الأجهزة التي تتضمّن أجهزة الكاميرا وتحديد android.hardware.camera أو android.hardware.camera.front. مطلوب الملف الشخصي الأساسي (BP)
  • 3GPP (‎.3gp)
  • ‫MPEG-4 (‎.mp4)
  • ‫MPEG-TS (بتنسيق ‎.ts، صوت بترميز AAC فقط، لا يمكن تقديمه أو ترجيعه، Android 3.0 والإصدارات الأحدث)
MPEG-4 SP   مطلوب   3GPP (‎.3gp)
VP8 مطلوب
(Android 4.3 والإصدارات الأحدث)
مطلوب
(الإصدار 2.3.3 من نظام التشغيل Android والإصدارات الأحدث)
  WebM (‎.webm) وMatroska (‎.mkv، Android 4.0 والإصدارات الأحدث)***
  • *ملاحظة: يجب تقليل جودة محتوى 5.0/5.1 فقط، وتسجيل أو عرض أكثر من قناتَين اختياري.
  • **ملاحظة: يجب تسجيل الصوت بتنسيق PCM خطي بسعة 16 بت. إنّ تسجيل الصوت بتنسيق PCM خطي بسعة 8 بت ليس إلزاميًا.
  • ***ملاحظة: يجب أن تتيح عمليات تنفيذ الأجهزة كتابة ملفات Matroska WebM.

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

إنّ عمليات تنفيذ أجهزة Android التي تتضمّن كاميرا خلفية وتُعلِن عن android.hardware.camera أنّها متوافقة مع برنامج ترميز الفيديو H.264 يجب أن تتوافق مع الملفات الشخصية التالية.

  الدقة العادية (جودة منخفضة) الدقة العادية (جودة عالية) بدقة عالية (عندما تتوفّر الميزة على الجهاز)
دقة الفيديو ‫176 × 144 بكسل ‫480 × 360 بكسل ‫1280 × 720 بكسل
عدد اللقطات في الثانية للفيديو 12 لقطة في الثانية 30 إطارًا في الثانية 30 إطارًا في الثانية
معدّل نقل بيانات الفيديو 56 كيلوبت في الثانية ‫500 كيلوبت في الثانية أو أكثر ‫2 ميغابت في الثانية أو أكثر
ترميز الصوت AAC-LC AAC-LC AAC-LC
القنوات الصوتية 1 (صوت أحادي) (استريو) (استريو)
معدل نقل بيانات الصوت 24 كيلوبت في الثانية 128 كيلوبت في الثانية 192 كيلوبت في الثانية

إنّ عمليات تنفيذ أجهزة Android التي تتضمّن كاميرا خلفية وتُعلِن عن android.hardware.camera يجب أن تكون متوافقة مع الملفات الشخصية التالية لترميز الفيديو باستخدام VP8.

  الدقة العادية (جودة منخفضة) الدقة العادية (جودة عالية) ‫720p بدقة عالية
(عندما تتوفّر الدقة العالية على الجهاز)
‫1080p بدقة عالية
(عندما تتوفّر الدقة العالية على الجهاز)
دقة الفيديو ‫320 × 180 بكسل ‫640 × 360 بكسل ‫1280 × 720 بكسل ‫‎1920 × 1080 بكسل
عدد اللقطات في الثانية للفيديو 30 إطارًا في الثانية 30 إطارًا في الثانية 30 إطارًا في الثانية 30 إطارًا في الثانية
معدّل نقل بيانات الفيديو 800 كيلوبت في الثانية ‫2 ميغابت في الثانية ‫4 ميغابت في الثانية ‫10 ميغابت في الثانية

5.3 فك ترميز الفيديو

من المفترض أن تتوافق عمليات تنفيذ أجهزة Android مع الملفات الشخصية التالية لفك ترميز الفيديو VP8 وH.264.

  الدقة العادية (جودة منخفضة) الدقة العادية (جودة عالية) ‫720p بدقة عالية
(عندما تتوفّر الدقة العالية على الجهاز)
‫1080p بدقة عالية
(عندما تتوفّر الدقة العالية على الجهاز)
دقة الفيديو ‫320 × 180 بكسل ‫640 × 360 بكسل ‫1280 × 720 بكسل ‫‎1920 × 1080 بكسل
عدد اللقطات في الثانية للفيديو 30 إطارًا في الثانية 30 إطارًا في الثانية 30 إطارًا في الثانية 30 إطارًا في الثانية
معدّل نقل بيانات الفيديو 800 كيلوبت في الثانية ‫2 ميغابت في الثانية ‫8 ميغابت في الثانية 20 ميغابت في الثانية

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

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

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

بالإضافة إلى مواصفات التسجيل المذكورة أعلاه، عند بدء أحد التطبيقات في تسجيل بث صوتي باستخدام مصدر android.media.MediaRecorder.AudioSource.VOICE_RECOGNITION الصوتي:

  • يجب إيقاف معالجة تقليل الضوضاء، إن توفّرت.
  • يجب إيقاف ميزة "التحكّم التلقائي في الكسب"، في حال توفّرها.

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

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

وقت استجابة الصوت هو الفترة الزمنية التي تستغرقها إشارة الصوت أثناء مرورها عبر النظام. تعتمد العديد من فئات التطبيقات على أوقات استجابة قصيرة لتحقيق مؤثرات صوتية في الوقت الفعلي.

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

  • يتم تعريف "وقت استجابة الإخراج" على أنّه الفاصل الزمني بين وقت كتابة تطبيق لإطار من البيانات المُشفَّرة باستخدام الترميز النبضي المرمز (PCM) ووقت سماع الصوت المرتبط بواسطة مستمع خارجي أو رصده بواسطة محوِّل.
  • يتم تعريف "وقت الاستجابة للإخراج بدون محتوى سابق" على أنّه وقت الاستجابة للإخراج للإطار الأول، عندما يكون نظام إخراج الصوت غير نشط ومطفأ قبل الطلب
  • يتم تعريف "وقت الاستجابة المستمر في الإخراج" على أنّه وقت الاستجابة في الإخراج للّقطات اللاحقة، بعد أن يبدأ الجهاز بتشغيل الصوت.
  • "وقت استجابة الإدخال" هو الفاصل الزمني بين وقت عرض صوت خارجي على الجهاز ووقت قراءة التطبيق للإطار المقابل للبيانات المُشفَّرة بترميز PCM.
  • يتم تعريف "وقت استجابة الإدخال البارد" على أنّه مجموع وقت الإدخال المفقود ووقت استجابة الإدخال للإطار الأول، عندما يكون نظام إدخال الصوت غير نشط ومطفأ قبل الطلب.
  • يتم تعريف "وقت استجابة الإدخال المستمر" على أنّه وقت استجابة الإدخال للإطارات اللاحقة، عندما يكون الجهاز يُسجّل الصوت
  • "واجهة برمجة التطبيقات لصفيف وحدات تخزين مؤقت لنظام OpenSL ES للصوت بترميز PCM" هي مجموعة واجهات برمجة التطبيقات لنظام OpenSL ES ذات الصلة بترميز PCM ضمن حزمة تطوير البرامج (NDK) لنظام التشغيل Android. راجِع NDK_root/docs/opensles/index.html

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

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

إذا كان تطبيق الجهاز يستوفي متطلبات هذا القسم بعد أي عملية معايرة أولية عند استخدام واجهة برمجة التطبيقات OpenSL ES PCM buffer queue API، لوقت الاستجابة المستمر للإخراج ووقت الاستجابة للإخراج عند التشغيل للمرة الأولى على جهاز واحد على الأقل متوافق لإخراج الصوت، قد يُبلغ التطبيق عن توفُّر ميزة الصوت المنخفض الاستجابة، وذلك من خلال الإبلاغ عن الميزة "android.hardware.audio.low-latency" عبر فئة android.content.pm.PackageManager. [Resources, 37] في المقابل، إذا لم يستوفِ تنفيذ الجهاز هذه المتطلبات، يجب عدم الإبلاغ عن توفّر ميزة الصوت بوقت استجابة منخفض.

وفقًا للفقرة 7.2.5، قد يتم حذف أجهزة الميكروفون من خلال عمليات تنفيذ الأجهزة.

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

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

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

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

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

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

6.1 أدوات المطوّرين

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

  • Android Debug Bridge (المعروف باسم adb) [الموارد، 33]
    يجب أن تتوافق عمليات تنفيذ الأجهزة مع جميع وظائف adb كما هو موضح في حزمة تطوير البرامج (SDK) لنظام التشغيل Android. يجب أن يكون خادم adb على الجهاز غير نشط تلقائيًا، ويجب أن تتوفّر آلية يمكن للمستخدم الوصول إليها لتفعيل "جسر تصحيح أخطاء Android".
  • يتضمّن الإصدار 4.3 من نظام التشغيل Android واجهة adb آمنة. تفعِّل أداة adb الآمنة أداة adb على المضيفين المعروفين الذين تمّت مصادقتهم. يجب أن تتيح عمليات تنفيذ الأجهزة استخدام adb الآمن.
  • خدمة Dalvik Debug Monitor (المعروفة باسم ddms) [الموارد، 33]
    يجب أن تتوافق عمليات تنفيذ الأجهزة مع جميع ميزات ddms كما هو موضّح في مستندات حزمة تطوير البرامج (SDK) لنظام التشغيل Android. بما أنّ ddms يستخدم adb، من المفترض أن يكون استخدام ddms غير مفعّل تلقائيًا، ولكن يجب أن يكون مفعّلاً عندما يفعّل المستخدم "جسر debugging" لنظام Android، كما هو موضّح أعلاه.
  • Monkey [Resources, 36]
    يجب أن تتضمّن عمليات التنفيذ على الأجهزة إطار عمل Monkey وأن تجعله متاحًا للتطبيقات لاستخدامه.
  • SysTrace [Resources, 33]
    يجب أن تتوافق عمليات تنفيذ الأجهزة مع أداة systrace كما هو موضّح في حزمة تطوير البرامج (SDK) لنظام التشغيل Android. يجب أن يكون 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، بكل من الإصدارَين 32 بت و 64 بت.

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

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

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

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

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

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

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

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

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

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

  • "الحجم الفعلي للشاشة" هو المسافة بالبوصة بين جهتَين متقابلتَين من الجزء المضيء من الشاشة.
  • "النقاط لكل بوصة" (dpi) هي عدد وحدات البكسل التي تتضمنها مساحة قياسها 1 بوصة أفقيًا أو عموديًا. في الأماكن التي يتم فيها إدراج قيم كثافة النقاط لكل بوصة، يجب أن تندرج كل من كثافة النقاط لكل بوصة الأفقية والعمودية ضمن النطاق.
  • "نسبة العرض إلى الارتفاع" هي نسبة البُعد الأطول للشاشة إلى البُعد الأقصر. على سبيل المثال، إذا كانت الشاشة بدقة 480×854 بكسل، ستكون نسبة العرض إلى الارتفاع 854 / 480 = 1.779، أو "16:9" تقريبًا.
  • "وحدة البكسل المستقلة الكثافة" أو ("dp") هي وحدة البكسل الافتراضية التي تم تسويتها لشاشة بكثافة 160 نقطة في البوصة، ويتم احتسابها على النحو التالي: pixels = dps * (density / 160).

7.1.1. إعداد الشاشة

حجم الشاشة

يتيح إطار عمل واجهة مستخدم Android مجموعة متنوعة من أحجام الشاشة المختلفة، ويسمح للتطبيقات بالاستعلام عن حجم شاشة الجهاز (المعروف أيضًا باسم "تنسيق الشاشة") من خلال android.content.res.Configuration.screenLayout باستخدام القيمة SCREENLAYOUT_SIZE_MASK. يجب أن تُبلغ عمليات تنفيذ الأجهزة عن حجم الشاشة الصحيح كما هو محدّد في مستندات حزمة تطوير البرامج (SDK) لنظام التشغيل Android [الموارد، 38] والذي يحدّده نظام Android الأساسي. وعلى وجه التحديد، يجب أن تُبلغ عمليات تنفيذ الأجهزة عن حجم الشاشة الصحيح وفقًا لأبعاد الشاشة المنطقية التالية المستندة إلى وحدات البكسل المستقلة الكثافة (dp).

  • يجب أن تكون أحجام شاشات الأجهزة 426 وحدة بكسل مستقلة الكثافة × 320 وحدة بكسل مستقلة الكثافة على الأقل (شاشة "صغيرة").
  • يجب أن تكون أحجام شاشات الأجهزة التي تُبلغ عن حجم الشاشة "عادي" مساوية على الأقل لـ 480 وحدة بكسل مستقلة الكثافة × 320 وحدة بكسل مستقلة الكثافة.
  • يجب أن تكون أحجام شاشات الأجهزة التي تُبلغ عن حجم الشاشة "كبير" مساوية على الأقل لـ 640 وحدة بكسل مستقلة الكثافة × 480 وحدة بكسل مستقلة الكثافة.
  • يجب أن تكون أحجام شاشات الأجهزة التي تُبلغ عن حجم الشاشة "كبير جدًا" على الأقل 960 وحدة بكسل مستقلة الكثافة × 720 وحدة بكسل مستقلة الكثافة.

بالإضافة إلى ذلك، يجب أن تكون أحجام شاشات الأجهزة 6.35 سم على الأقل في الحجم القطري.

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

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

نسبة العرض إلى الارتفاع للشاشة

يجب أن تتراوح نسبة العرض إلى الارتفاع بين 1.3333 (4:3) و1.85 (16:9).

كثافة الشاشة

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

  • ‫120 نقطة لكل بوصة، والمعروفة باسم "ldpi"
  • ‫160 نقطة لكل بوصة، والمعروفة باسم "mdpi"
  • ‫213 نقطة في البوصة، والمعروفة باسم "tvdpi"
  • 240 نقطة لكل بوصة، ويُعرف هذا باسم "hdpi"
  • ‫320 نقطة لكل بوصة، ويُعرف هذا باسم "xhdpi"
  • ‫480 نقطة في البوصة، والمعروفة باسم "xxhdpi"
  • ‫640 نقطة في البوصة، والمعروفة باسم "xxxhdpi"
يجب أن تحدّد عمليات تنفيذ الأجهزة كثافة إطار عمل Android العادي التي تكون الأقرب رقميًا إلى الكثافة الفعلية للشاشة، ما لم تؤدي كثافة المنطقية إلى خفض حجم الشاشة المسجَّل إلى ما دون الحد الأدنى المسموح به. إذا كانت كثافة إطار عمل Android العادية الأقرب رقميًا إلى الكثافة الفعلية تؤدي إلى حجم شاشة أصغر من أصغر حجم شاشة متوافق متوافق (320 dp عرضًا)، يجب أن تُبلغ عمليات تنفيذ الأجهزة عن كثافة إطار عمل Android العادية التالية الأقل.

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

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

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

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

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

يجب ألا تغيّر الأجهزة حجم الشاشة أو كثافتها المُبلَّغ عنها عند تغيير اتجاه الشاشة.

يجب أن تُبلغ الأجهزة عن أوضاع الشاشة المتوافقة معها ( android.hardware.screen.portrait و/أو android.hardware.screen.landscape)، ويجب أن تُبلغ عن وضع واحد على الأقل متوافق. على سبيل المثال، يجب أن يُبلغ الجهاز الذي يتضمّن شاشة عمودية ثابتة، مثل التلفزيون أو الكمبيوتر المحمول، عن android.hardware.screen.landscape فقط.

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

يجب أن تكون عمليات تنفيذ الأجهزة متوافقة مع كلّ من OpenGL ES 1.0 و2.0، على النحو الموضّح والمفصّل في مستندات حزمة تطوير البرامج (SDK) لنظام التشغيل Android. يجب أن تكون عمليات تنفيذ الأجهزة متوافقة مع OpenGL ES 3.0 على الأجهزة القادرة على استخدام OpenGL ES 3.0. يجب أن تكون عمليات تنفيذ الأجهزة متوافقة أيضًا مع Android Renderscript، كما هو موضّح بالتفصيل في مستندات حزمة تطوير البرامج (SDK) لنظام Android [الموارد، 8].

يجب أيضًا أن تحدِّد عمليات تنفيذ الأجهزة بشكل صحيح أنّها متوافقة مع OpenGL ES 1.0 أو OpenGL ES 2.0 أو OpenGL ES 3.0. وهذا يعني:

  • واجهات برمجة التطبيقات المُدارة (مثلاً من خلال طريقة 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 استخدام واجهات برمجة التطبيقات المُدارة لـ OpenGL ES 3.0 وأن تتضمّن إمكانية استخدام واجهات برمجة التطبيقات الأصلية لـ C/C++. في عمليات التنفيذ التي تعلن عن توافقها مع OpenGL ES 3.0 على الجهاز، يجب أن تُصدِر libGLESv2.so رموز الدوالّ المتعلّقة بـ OpenGL ES 3.0 بالإضافة إلى رموز الدوالّ المتعلّقة بـ OpenGL ES 2.0.

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

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

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

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

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

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

يتضمّن الإصدار 4.3 من Android EGL_ANDROID_RECORDABLE، وهي سمة EGLConfig تشير إلى ما إذا كانت EGLConfig تتيح العرض على ANativeWindow الذي يسجّل الصور في فيديو. يجب أن تتيح عمليات تنفيذ الأجهزة إضافة EGL_ANDROID_RECORDABLE [الموارد، 79].

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

يحدّد Android 4.3 "وضع التوافق" الذي يعمل فيه الإطار الأساسي بوضع يعادل حجم الشاشة "العادي" (بعرض 320dp) لاستفادة التطبيقات القديمة التي لم يتم تطويرها لإصدارات Android القديمة التي تسبق الاستقلالية عن حجم الشاشة. يجب أن تتضمّن عمليات تنفيذ الأجهزة إتاحة "وضع التوافق مع التطبيقات القديمة" كما هو منفذ في رمز المصدر المفتوح لنظام التشغيل Android. وهذا يعني أنّه يجب ألّا تغيّر عمليات تنفيذ الأجهزة عوامل التفعيل أو الحدود الدنيا التي يتم عندها تفعيل "وضع التوافق"، ويجب ألّا تغيّر سلوك "وضع التوافق" نفسه.

7.1.6. أنواع الشاشة

تندرج شاشات تنفيذ الأجهزة ضمن أحد النوعَين التاليَين:

  • عمليات تنفيذ شاشات وحدات البكسل الثابتة: الشاشة عبارة عن لوحة واحدة لا تتيح سوى عرض وارتفاع بكسل واحد. وعادةً ما تكون الشاشة مدمجة بشكلٍ مادي مع الجهاز. وتشمل الأمثلة الهواتف الجوّالة والأجهزة اللوحية وما إلى ذلك.
  • عمليات تنفيذ شاشة بوحدات بكسل متغيّرة: لا يحتوي تنفيذ الجهاز على شاشة مضمّنة ويتضمّن منفذ إخراج فيديو مثل VGA أو HDMI أو منفذ لاسلكي للعرض، أو يحتوي على شاشة مضمّنة يمكنها تغيير أبعاد وحدات البكسل. وتشمل الأمثلة أجهزة التلفزيون وأجهزة الاستقبال الرقمية وما إلى ذلك.

عمليات تنفيذ الأجهزة التي تستخدم وحدات بكسل ثابتة

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

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

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

على سبيل المثال، يُعدّ الجهاز اللوحي الذي يبلغ حجمه 17.78 سم (7 بوصة) قطريًا ودرجة دقته 1024 × 600 بكسل شاشة كبيرة بكثافة بكسل منخفضة (mdpi) تستخدم وحدات بكسل ثابتة. إذا كان يحتوي على منفذ مخرج فيديو يعرض بدقة 720p أو 1080p، يجب أن يُوسّع تطبيق الجهاز مخرجات الفيديو كي تتم تنفيذ التطبيقات في نافذة mdpi كبيرة فقط، بغض النظر عمّا إذا كان يتم استخدام شاشة بكسل ثابت أو منفذ إخراج الفيديو.

عمليات تنفيذ الأجهزة التي تتضمّن وحدات بكسل متغيّرة

يجب أن تتيح عمليات تنفيذ الأجهزة التي تتضمّن كثافة متغيرة للبكسل دقة 1280×720 أو 1920×1080 أو كليهما (أي 720p أو 1080p). يجب ألا تتيح عمليات تنفيذ الأجهزة التي تحتوي على شاشات بوحدات بكسل متغيّرة أي إعدادات أو وضع آخر للشاشة. قد تؤدي عمليات تنفيذ الأجهزة التي تتضمّن شاشات بكثافة بكسل متغيّرة إلى تغيير إعدادات الشاشة أو وضعها أثناء التشغيل أو وقت التمهيد. على سبيل المثال، قد يستبدل مستخدم وحدة تحكّم رقمية شاشة بدقة 720p بشاشة بدقة 1080p، وقد يتم تعديل تنفيذ الجهاز وفقًا لذلك.

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

  • ‫‎1280×720 (المعروفة أيضًا باسم 720p): حجم الشاشة "كبير"، كثافة "tvdpi" (213 نقطة لكل بوصة)
  • ‫‎1920×1080 (المعروفة أيضًا باسم 1080p): حجم شاشة "كبير"، كثافة ‎xhdpi (320 نقطة لكل بوصة)

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

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

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

  • يجب أن تكون الأجهزة متوافقة مع الشاشات القادرة على عرض رسومات ملونة بدقة 16 بت، ويجب أن تكون متوافقة مع الشاشات القادرة على عرض رسومات ملونة بدقة 24 بت.
  • يجب أن تكون الأجهزة متوافقة مع شاشات العرض القادرة على عرض الصور المتحركة.
  • يجب أن تكون نسبة العرض إلى الارتفاع للبكسل (PAR) في تكنولوجيا العرض المستخدَمة بين 0.9 و1.1. وهذا يعني أنّ نسبة العرض إلى الارتفاع لوحدة البكسل يجب أن تكون قريبة من نسبة العرض إلى الارتفاع المربّع (1.0) مع السماح بانحراف بنسبة% 10.

7.1.8. الشاشات الخارجية

يتيح نظام التشغيل Android 4.3 استخدام شاشة ثانوية لتفعيل إمكانات مشاركة الوسائط و واجهات برمجة التطبيقات للمطوّرين للوصول إلى الشاشات الخارجية. إذا كان الجهاز يتيح استخدام شاشة خارجية إما من خلال اتصال سلكي أو لاسلكي أو اتصال بشاشة إضافية مدمجة، يجب أن ينفذ تنفيذ الجهاز واجهة برمجة تطبيقات "مدير الشاشة" كما هو موضّح في مستندات حزمة تطوير البرامج (SDK) لنظام التشغيل Android [المراجع، 75]. يجب أن تعلن عمليات تنفيذ الأجهزة التي تتيح إخراج الفيديو الآمن وتتوافق مع مساحات العرض الآمنة عن توافقها مع Display.FLAG_SECURE. وعلى وجه التحديد، يجب أن تكون عمليات تنفيذ الأجهزة التي تعلن عن توافقها مع Display.FLAG_SECURE متوافقة مع HDCP 2.x أو إصدار أحدث للشاشات اللاسلكية التي تستخدم تقنية Miracast أو HDCP 1.2 أو إصدار أحدث للشاشات السلكية. يتضمّن الإصدار الأحدث من الإصدار المفتوح المصدر لنظام التشغيل Android ميزة التوافق مع الشاشات اللاسلكية (Miracast) والسلكية (HDMI) التي تستوفي هذا الشرط.

7.2. أجهزة إدخال بيانات

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

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

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

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

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

  • يجوز حذف خيار التنقّل غير المستند إلى اللمس (أي يجوز حذف كرة المسار أو لوحة التوجيه أو العجلة)
  • يجب إدخال القيمة الصحيحة لسمة android.content.res.Configuration.navigation [Resources, 40]
  • يجب أن توفّر آلية بديلاً معقولاً لواجهة المستخدم لتحديد النص وتعديله، وأن تكون متوافقة مع محرّكات إدارة الإدخال. يتضمّن التنفيذ المفتوح المصدر لنظام التشغيل Android آلية اختيار مناسبة للاستخدام مع الأجهزة التي لا تتضمّن مدخلات تنقّل غير تعمل باللمس.

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

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

يتيح نظام التشغيل Android 4.3 استخدام ميزة "المساعدة" [الموارد، 63]. يجب أن تتيح عمليات تنفيذ الأجهزة للمستخدم إجراء المساعدة في جميع الأوقات عند تشغيل التطبيقات. يجوز تنفيذ هذه الوظيفة من خلال مفاتيح الأجهزة أو البرامج.

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

  • يجب أن تستخدم مفاتيح التنقّل في عملية تنفيذ الجهاز جزءًا محددًا من الشاشة غير متاح للتطبيقات، ويجب ألا تحجب أو تؤثر بطريقة أخرى في جزء الشاشة المتاح للتطبيقات.
  • يجب أن تتيح عمليات تنفيذ الأجهزة جزءًا من الشاشة للتطبيقات التي تستوفي المتطلبات المحدّدة في الفقرة 7.1.1.
  • يجب أن تعرض عمليات تنفيذ الأجهزة مفاتيح التنقّل عندما لا تحدّد التطبيقات وضع واجهة مستخدم النظام، أو تحدّد SYSTEM_UI_FLAG_VISIBLE.
  • يجب أن تعرِض عمليات تنفيذ الأجهزة مفاتيح التنقّل في وضع "منخفض المستوى" (مثلاً، خافت) غير مزعج عندما تحدّد التطبيقات SYSTEM_UI_FLAG_LOW_PROFILE.
  • يجب أن تخفي عمليات تنفيذ الأجهزة مفاتيح التنقّل عندما تحدّد التطبيقاتSYSTEM_UI_FLAG_HIDE_NAVIGATION.
  • يجب أن يقدّم تطبيق الجهاز مفتاح قائمة للتطبيقات عندما يكون targetSdkVersion <= 10، ويجب ألّا يقدّم مفتاح قائمة عندما يكون targetSdkVersion > 10.

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

يجب أن تتضمّن عمليات تنفيذ الأجهزة نظام إدخال مؤشر من نوع ما (إما مثل الماوس أو باللمس). ومع ذلك، إذا كان تنفيذ الجهاز لا يتيح استخدام نظام إدخال مؤشر، يجب ألّا يُبلغ عن ثابت الميزة android.hardware.touchscreen أو android.hardware.faketouch. عمليات تنفيذ الأجهزة التي تتضمّن نظام إدخال مؤشر:

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

يتيح نظام التشغيل Android 4.3 استخدام مجموعة متنوعة من الشاشات التي تعمل باللمس ولوحات اللمس وأجهزة الإدخال التي تعمل باللمس الاصطناعي. ترتبط عمليات تنفيذ الأجهزة المستندة إلى الشاشة التي تعمل باللمس بشاشة عرض [Resources, 81] بحيث يشعر المستخدم أنّه يتعامل مباشرةً مع العناصر على الشاشة. بما أنّ المستخدم يلمس الشاشة مباشرةً، لا يتطلّب النظام أيّ عناصر تحكم إضافية للإشارة إلى العناصر التي يتم التلاعب بها. في المقابل، توفّر واجهة اللمس الزائفة نظام إدخال بيانات للمستخدم يشبه مجموعة فرعية من إمكانات الشاشة التي تعمل باللمس. على سبيل المثال، يُعدّ الماوس أو جهاز التحكّم عن بُعد الذي يشغّل مؤشرًا على الشاشة مشابهًا لللمس، ولكنّه يتطلّب من المستخدم أولاً الإشارة أو التركيز ثم النقر. يمكن أن تتيح العديد من أجهزة الإدخال، مثل الماوس ولوحة اللمس والماوس الهوائي المستنِد إلى أداة الاستشعار الدوراني والمؤشر المستنِد إلى أداة الاستشعار الدوراني وعصا التحكم ولوحة اللمس المتعدّدة اللمس، التفاعلات باللمس الزائف. يتضمّن نظام التشغيل Android 4.0 الثابتة android.hardware.faketouch، التي تتوافق مع جهاز إدخال عالي الدقة غير مستنِد إلى اللمس (أي مستنِد إلى المؤشر)، مثل الماوس أو لوحة اللمس، والذي يمكنه محاكاة إدخال المستنِد إلى اللمس بشكلٍ كافٍ (بما في ذلك إتاحة الإيماءات الأساسية)، ويشير إلى أنّ الجهاز متوافق مع مجموعة فرعية مُحاكاة من وظائف الشاشة اللمسية. يجب أن تستوفي عمليات تنفيذ الأجهزة التي تحدّد ميزة اللمس الزائف متطلبات اللمس الزائف الواردة في الفقرة 7.2.5.

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

7.2.5. إدخال لمس زائف

آليات تنفيذ الأجهزة التي تعلن عن توافقها مع android.hardware.faketouch

  • يجب الإبلاغ عن مواضع X وY المطلقة على الشاشة لموقع المؤشر وعرض مؤشر مرئي على الشاشة [الموارد، 80]
  • يجب الإبلاغ عن حدث اللمس باستخدام رمز الإجراء [Resources, 80] الذي يحدّد تغيير الحالة الذي يحدث على المؤشر عند الانتقال إلى down أو up على الشاشة [Resources, 80]
  • يجب أن تتيح استخدام المؤشّرَين down وup على عنصر على الشاشة، ما يسمح للمستخدمين بمحاكاة النقر على عنصر على الشاشة.
  • يجب أن يتيح استخدام المؤشر down ثم المؤشر up ثم المؤشر down ثم المؤشر up في المكان نفسه على عنصر على الشاشة خلال حد زمني معيّن، ما يسمح للمستخدمين بمحاكاة النقر مرّتين على عنصر على الشاشة [Resources, 80]
  • يجب أن يتيح استخدام المؤشر down في أي نقطة عشوائية على الشاشة، ونقل المؤشر إلى أي نقطة عشوائية أخرى على الشاشة، followed by a pointer up، ما يسمح للمستخدمين بمحاكاة السحب باللمس
  • يجب أن تتيح استخدام المؤشر down ثم السماح للمستخدمين بنقل العنصر بسرعة إلى موضع مختلف على الشاشة ثم استخدام المؤشر up على الشاشة، ما يسمح للمستخدمين برمي عنصر على الشاشة.

يجب أن تستوفي الأجهزة التي تعلن عن توافقها مع android.hardware.faketouch.multitouch.distinct متطلبات faketouch المذكورة أعلاه، ويجب أن تتيح أيضًا تتبُّعًا متميزًا لمدخلات مؤشرَين مستقلَّين أو أكثر.

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

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

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

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

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

  • يجب الإبلاغ بدقة عن توفّر أدوات الاستشعار أو عدم توفّرها وفقًا لفئة android.content.pm.PackageManager. [Resources, 37]
  • يجب أن يعرض التطبيق قائمة دقيقة بأجهزة الاستشعار المتوافقة من خلال ‎ SensorManager.getSensorList() وطرق مشابهة.
  • يجب أن تعمل بشكل معقول مع جميع واجهات برمجة التطبيقات الأخرى لأدوات الاستشعار (على سبيل المثال، من خلال عرض true أو false حسب الاقتضاء عندما تحاول التطبيقات تسجيل المستمعين، وعدم استدعاء مستمعي أدوات الاستشعار عندما لا تكون أدوات الاستشعار المقابلة متوفّرة، وما إلى ذلك)
  • يجب الإبلاغ عن جميع قياسات أجهزة الاستشعار باستخدام قيم النظام الدولي الملائم للوحدات (أي المقياس) لكل نوع من أجهزة الاستشعار على النحو المحدّد في مستندات Android SDK [Resources, 41]

القائمة أعلاه ليست شاملة، ويجب اعتبار السلوك الموثَّق لحزمة SDK لنظام التشغيل Android مستندًا موثوقًا به.

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

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

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

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

  • يجب أن يكون بإمكانه عرض الأحداث بمعدّل 120 هرتز أو أكثر. يُرجى العلم أنّه على الرغم من أنّه تم تحديد معدل تكرار قياس التسارع أعلاه على أنّه "يجب" لنظام التشغيل Android 4.3، من المخطّط أن يتم تغيير ذلك إلى "يجب" في تعريف التوافق لإصدار مستقبلي. وهذا يعني أنّ هذه المعايير اختيارية في Android 4.3، ولكن ستكون مطلوبة في الإصدارات المستقبلية. ننصح بشدة باستيفاء هذه المتطلبات في Android 4.3 على الأجهزة الحالية والجديدة التي تعمل بالإصدار 4.3 من نظام التشغيل Android حتى تتمكّن من الترقية إلى إصدارات النظام الأساسية المستقبلية.
  • يجب أن تكون متوافقة مع نظام إحداثيات أجهزة استشعار Android كما هو موضّح بالتفصيل في واجهات برمجة تطبيقات Android (راجِع [الموارد، 41])
  • يجب أن يكون قادرًا على القياس من السقوط الحر إلى ضعف قوة الجاذبية (2g) أو أكثر على أيّ خطّ متّجه ثلاثي الأبعاد.
  • يجب أن تكون دقة القياس 8 بت أو أكثر.
  • يجب أن يكون الانحراف المعياري لا يزيد عن 0.05 متر/ثانية^2

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

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

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

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

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

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

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

  • يجب أن تكون مزوّدة بمُعدِّل حرارة
  • يجب أن يكون الجهاز قادرًا على قياس تغييرات الاتجاه بما يصل إلى 5.5*Pi راديان في الثانية (أي 1,000 درجة في الثانية تقريبًا).
  • يجب أن يكون بإمكانه إرسال الأحداث بمعدّل 200 هرتز أو أكثر. يُرجى العلم أنّه على الرغم من أنّه تم تحديد معدل تكرار الدوران أعلاه على أنّه "يجب" لنظام التشغيل Android 4.3، من المخطّط أن يتم تغيير ذلك إلى "يجب" في تعريف التوافق لإصدار مستقبلي. وهذا يعني أنّ هذه المعايير اختيارية في Android 4.3، ولكن ستكون مطلوبة في الإصدارات المستقبلية. ننصح بشدة باستيفاء هذه المتطلبات في Android 4.3 على الأجهزة الحالية والجديدة التي تعمل بالإصدار 4.3 من نظام التشغيل Android حتى تتمكّن من الترقية إلى إصدارات النظام الأساسية المستقبلية.
  • يجب أن تكون دقتها 12 بت أو أكثر
  • يجب ألا يزيد التباين عن 1e-7 rad^2 / s^2 لكل هرتز (التباين لكل هرتز أو rad^2 / s). يُسمح باختلاف التباين حسب معدّل أخذ العينات، ولكن يجب أن يكون مقيّدًا بهذه القيمة. بعبارة أخرى، إذا كنت تقيس التباين في أداة الاستشعار الدوراني بمعدّل أخذ عينات يبلغ 1 هرتز، يجب ألا يتجاوز هذا التباين 1e-7 rad^2/s^2.
  • يجب أن تحتوي على طوابع زمنية قريبة قدر الإمكان من وقت وقوع حدث الأجهزة. يجب إزالة وقت الاستجابة الثابت.

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

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

  • يجب أن يكون بإمكانه إرسال الأحداث بمعدّل 5 هرتز أو أكثر.
  • يجب أن يكون دقيقًا بما يكفي للسماح بتقدير الارتفاع
  • يجب أن تكون مزوّدة بمُعدِّل حرارة

7.3.6. مقياس درجة الحرارة

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

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

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

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

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

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

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

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

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

7.4.2. IEEE 802.11 (WiFi)

يجب أن تتضمّن عمليات تنفيذ أجهزة Android 4.3 إمكانية استخدام شكل واحد أو أكثر من 802.11 (b/g/a/n وما إلى ذلك). إذا كان تنفيذ الجهاز يتضمّن توافقًا مع 802.11، يجب أن ينفِّذ واجهة برمجة التطبيقات Android API المقابلة.

يجب أن تُنفِّذ عمليات تنفيذ الأجهزة واجهة برمجة التطبيقات للبث المتعدد على النحو الموضّح في مستندات حزمة تطوير البرامج (SDK) [الموارد، 62]. يجب أن تتضمّن عمليات تنفيذ الأجهزة التي تتيح الاتصال بشبكة Wi-Fi نظام أسماء النطاقات المتعدد البث (mDNS). يجب ألّا تفلتر عمليات تنفيذ الأجهزة حزم mDNS (224.0.0.251) في أي وقت من التشغيل، بما في ذلك عندما لا تكون الشاشة في حالة نشطة.

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

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

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

7.4.3. البلوتوث

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

في عمليات تنفيذ الأجهزة التي تتضمّن إمكانات استخدام Bluetooth GATT (ملف الخصائص العامة) لتفعيل الاتصال بالأجهزة المزوّدة بتقنية Bluetooth Smart أو Smart Ready، يجب تفعيل واجهة برمجة التطبيقات Bluetooth API المستندة إلى GATT كما هو موضّح في مستندات حِزم تطوير البرامج (SDK) والإبلاغ عن ميزة الأجهزة android.hardware.bluetooth_le [Resources, 42].

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

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

  • يجب الإبلاغ عن ميزة android.hardware.nfc من الطريقة android.content.pm.PackageManager.hasSystemFeature(). [Resources, 37]
  • يجب أن يكون الجهاز قادرًا على قراءة رسائل 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 4.3، من المخطّط أن يتم تغيير هذه المعايير إلى "يجب" في تعريف التوافق لإصدار مستقبلي. وهذا يعني أنّ هذه المعايير اختيارية في Android 4.3، ولكن ستكون مطلوبة في الإصدارات المستقبلية. ننصح بشدة باستيفاء هذه المتطلبات في الإصدار 4.3 من Android على الأجهزة الحالية والجديدة التي تعمل بالإصدار 4.3 من Android حتى تتمكّن من الترقية إلى إصدارات النظام الأساسي المستقبلية.
    • NfcV (المعيار الدولي 15693)
  • يجب أن يكون الجهاز قادرًا على إرسال البيانات واستلامها من خلال يلي: بروتوكولات ومعايير الاتصال من نظير إلى نظير:
    • ISO 18092
    • LLCP 1.0 (حدّده NFC Forum)
    • SDP 1.0 (حدّده NFC Forum)
    • بروتوكول دفع NDEF [الموارد، 43]
    • SNEP 1.0 (حدّده NFC Forum)
  • يجب أن تتضمّن ميزة Android Beam [Resources, 65]:
    • يجب تنفيذ الخادم التلقائي لبروتوكول SNEP. يجب إرسال رسائل NDEF الصالحة التي تلقّاها خادم SNEP التلقائي إلى التطبيقات التي تستخدم النيّة android.nfc.ACTION_NDEF_DISCOVERED. يجب ألّا يؤدي إيقاف ميزة Android Beam في الإعدادات إلى إيقاف إرسال رسالة NDEF الواردة.
    • يجب أن تلتزم عمليات تنفيذ الأجهزة بالintent android.settings.NFCSHARING_SETTINGS لعرض إعدادات مشاركة NFC [Resources, 67].
    • يجب تنفيذ خادم NPP. يجب أن تتم معالجة الرسائل التي يتلقّاها خادم NPP بالطريقة نفسها التي يعالج بها الخادم التلقائي لبروتوكول SNEP.
    • يجب تنفيذ برنامج SNEP ومحاولة إرسال ملف NDEF للاتصال المباشر بين الأجهزة إلى خادم SNEP التلقائي عند تفعيل ميزة Android Beam. إذا لم يتم العثور على خادم SNEP تلقائي، على العميل محاولة الإرسال إلى خادم NPP.
    • يجب السماح للأنشطة التي تعمل في المقدّمة بضبط رسالة NDEF للاتصال المباشر بين الأجهزة باستخدام android.nfc.NfcAdapter.setNdefPushMessage، و android.nfc.NfcAdapter.setNdefPushMessageCallback، و android.nfc.NfcAdapter.enableForegroundNdefPush.
    • يجب استخدام إيماءة أو تأكيد على الشاشة، مثل "اللمس للإرسال"، قبل إرسال رسائل NDEF للاتصال المباشر بين الأجهزة.
    • من المفترض أن يكون تطبيق Android Beam مفعَّلاً تلقائيًا.
    • يجب أن يتيح الجهاز تسليم اتصال NFC إلى البلوتوث عندما يكون متوافقًا مع ملف Bluetooth Object Push Profile. يجب أن تتيح عمليات تنفيذ الأجهزة تسليم الاتصال إلى البلوتوث عند استخدام android.nfc.NfcAdapter.setBeamPushUris، من خلال تنفيذ مواصفات "إصدار 1.2 من تسليم الاتصال" [الموارد، 60] و "إصدار 1.0 من الإقران البسيط والآمن باستخدام البلوتوث عبر NFC" [الموارد، 61] من منتدى NFC. يجب أن يستخدم هذا التنفيذ طلبات SNEP GET لتبادل طلب الاستلام / اختيار السجلات عبر NFC، ويجب أن يستخدم ملف تعريف Bluetooth Object Push لعمليات نقل البيانات الفعلية عبر البلوتوث.
  • يجب إجراء استطلاع لجميع التكنولوجيات المتوافقة أثناء وضع "اكتشاف NFC".
  • يجب أن يكون الجهاز في وضع اكتشاف NFC عندما يكون مفعَّلاً وشاشة القفل غير مقفلة.

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

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

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

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

إذا كان تنفيذ الجهاز لا يتضمّن أجهزة NFC، يجب عدم الإعلان عن ميزة android.hardware.nfc من android.content.pm.PackageManager.hasSystemFeature()method [Resources, 37]، ويجب تنفيذ واجهة برمجة التطبيقات NFC في Android 4.3 كإجراء لا يؤدي إلى أيّ إجراء.

بما أنّ الفئتَين android.nfc.NdefMessage و android.nfc.NdefRecord تمثّلان تنسيق تمثيل بيانات مستقل عن البروتوكول، يجب أن تُنفِّذ عمليات تنفيذ الأجهزة واجهات برمجة التطبيقات هذه حتى إذا كانت لا تتضمّن إتاحة استخدام NFC أو تُعلِن عن ميزة android.hardware.nfc.

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

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

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

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

7.5. الكاميرات

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

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

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

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

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

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

  • يجب أن تكون دقة الشاشة VGA على الأقل (أي 640×480 بكسل).
  • يجب عدم استخدام الكاميرا الأمامية كإعداد تلقائي لواجهة برمجة التطبيقات Camera API. وهذا يعني أنّ واجهة برمجة تطبيقات الكاميرا في Android 4.3 تتيح استخدام كاميرات أمامية معيّنة، ويجب ألا تضبط عمليات تنفيذ الأجهزة واجهة برمجة التطبيقات لمعالجة كاميرا أمامية على أنّها الكاميرا الخلفية التلقائية، حتى إذا كانت هي كاميرا الجهاز الوحيدة.
  • قد تتضمّن ميزات (مثل التركيز التلقائي والفلاش وما إلى ذلك) متوفّرة للكاميرات الخلفية كما هو موضّح في القسم 7.5.1.
  • يجب أن يعكس التطبيق البث المعروض في ملف CameraPreview أفقيًا (أي يعكسه) على النحو التالي:
    • إذا كان من الممكن أن يغيّر المستخدم اتجاه الجهاز (مثل تلقائيًا من خلال مقياس التسارع أو يدويًا من خلال إدخال المستخدم)، يجب أن تتم عكس معاينة الكاميرا أفقيًا بالنسبة إلى اتجاه الجهاز الحالي.
    • إذا طلب التطبيق الحالي صراحةً تدوير شاشة الكاميرا من خلال طلب android.hardware.Camera.setDisplayOrientation() [Resources, 50]، يجب أن تتم إمالة معاينة الكاميرا أفقيًا بالنسبة إلى الاتجاه الذي حدّده التطبيق.
    • بخلاف ذلك، يجب أن تكون المعاينة مُعكوسة على طول المحور الأفقي التلقائي للجهاز.
  • يجب أن تكون الصورة المعروضة في معاينة المشاركة مطابقة للصورة المعروضة في خلاصة معاينة الكاميرا. (إذا كان تنفيذ الجهاز لا يسمح باستخدام ميزة "المشاهدة البعيدة"، لن ينطبق هذا الشرط بوضوح).
  • يجب ألّا تعكس بثّات الفيديو أو الصور الثابتة النهائية التي تم التقاطها والتي يتم عرضها في عمليات استدعاء التطبيقات أو التي يتم تخزينها في مساحة تخزين الوسائط.

7.5.3. سلوك Camera API

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

  1. إذا لم يسبق لتطبيقٍ استدعاء android.hardware.Camera.Parameters.setPreviewFormat(int)، يجب أن يستخدم الجهاز android.hardware.PixelFormat.YCbCr_420_SP ل preview data التي يتم تقديمها إلى وظائف الاستدعاء في التطبيق.
  2. إذا سجّل تطبيق مثيل android.hardware.Camera.PreviewCallback واستدعى النظام طريقة onPreviewFrame() عندما يكون تنسيق المعاينة هو YCbCr_420_SP، يجب أن تكون البيانات في byte[] المُرسَلة إلى onPreviewFrame() في تنسيق ترميز NV21. وهذا يعني أنّه يجب أن يكون NV21 هو الإعداد التلقائي.
  3. يجب أن تتيح عمليات تنفيذ الأجهزة استخدام تنسيق YV12 (كما هو موضّح في الثابت android.graphics.ImageFormat.YV12) لمعاينات الكاميرا للكاميرات الأمامية والخلفية. (قد يستخدم برنامج ترميز الفيديو والكاميرا المضمّنان في الجهاز أي تنسيق أصلي للبكسل، ولكن يجب أن يتيح تنفيذ الجهاز تحويله إلى YV12).

يجب أن توفّر عمليات تنفيذ الأجهزة واجهة برمجة تطبيقات Camera API الكاملة المضمّنة في مستندات حزمة تطوير البرامج (SDK) لنظام التشغيل Android 4.3 [Resources, 51]، بغض النظر عمّا إذا كان الجهاز يتضمّن ميزة ضبط التركيز التلقائي بالأجهزة أو ميزات أخرى. على سبيل المثال، يجب أن تظل الكاميرات التي لا تتضمّن ميزة التركيز التلقائي تستدعي أي مثيلاتandroid.hardware.Camera.AutoFocusCallback مسجّلة (على الرغم من أنّه ليس لها صلة بالكاميرات التي لا تتضمّن ميزة التركيز التلقائي). يُرجى العِلم أنّ ذلك ينطبق على الكاميرات الأمامية. على سبيل المثال، على الرغم من أنّ معظم الكاميرات الأمامية لا توفّر ميزة التركيز التلقائي، يجب أن تظل عمليات استدعاء واجهة برمجة التطبيقات "مزوّرة" كما هو описан.

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

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

يجب أن تبث عمليات تنفيذ الأجهزة Camera.ACTION_NEW_VIDEO intent عند تسجيل فيديو جديد بواسطة الكاميرا وتمت إضافة إدخال الصورة إلى "متجر الوسائط".

7.5.4. اتجاه الكاميرا

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

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

7.6.1. الحد الأدنى للذاكرة ومساحة التخزين

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

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

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

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

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

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

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

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

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

  • يجب أن يكون تنفيذ الجهاز متوافقًا مع مضيف MTP المرجعي لنظام التشغيل Android، وهو "نقل ملفات Android" [الموارد، 57].
  • من المفترض أن يُبلغ تنفيذ الجهاز عن فئة جهاز USB‏ 0x00.
  • من المفترض أن يُبلغ تنفيذ الجهاز عن اسم واجهة USB‏ "MTP".

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

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

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

7.7. USB

يجب أن تتضمّن عمليات تنفيذ الأجهزة منفذًا لجهاز USB، ويجب أن تتضمّن منفذًا لمضيف USB.

إذا كان تنفيذ الجهاز يتضمّن منفذًا لبرنامج العميل USB:

  • يجب أن يكون المنفذ قابلاً للتوصيل بمضيف USB من خلال منفذ USB-A عادي.
  • يجب أن يستخدم المنفذ شكل موصل USB صغير الحجم على جانب الجهاز. ننصح بشدة باستيفاء هذه المتطلبات في Android 4.3 على الأجهزة الحالية والجديدة التي تعمل بالإصدار 4.3 من نظام التشغيل Android حتى تتمكّن من الترقية إلى إصدارات النظام الأساسية المستقبلية.
  • يجب أن يكون المنفذ في منتصف الحافة. يجب أن تضع عمليات تنفيذ الأجهزة منفذ الشحن في أسفل الجهاز (وفقًا للاتجاه الطبيعي) أو أن تفعِّل ميزة تدوير الشاشة من خلال البرامج لجميع التطبيقات (بما في ذلك الشاشة الرئيسية)، وذلك لكي يتم عرض المحتوى على الشاشة بشكل صحيح عند توجيه الجهاز مع وضع المنفذ في الأسفل. ننصح بشدة باستيفاء هذه المتطلبات في Android 4.3 على الأجهزة الحالية والجديدة التي تعمل بالإصدار Android 4.3 حتى تتمكّن من الترقية إلى إصدارات النظام الأساسية المستقبلية.
  • إذا كان الجهاز يحتوي على منافذ أخرى (مثل منفذ شحن غير USB)، يجب أن يكون على الحافة نفسها التي يقع فيها منفذ micro-USB.
  • يجب أن يسمح الجهاز للمضيف المتصل به بالوصول إلى محتوى ملف التخزين المشترَك باستخدام إما وحدة تخزين USB كبيرة السعة أو بروتوكول نقل الوسائط.
  • يجب أن تُنفِّذ واجهة برمجة التطبيقات وتحديد Android Open Accessory API كما هو موضّح في مستندات حزمة تطوير البرامج (SDK) لنظام التشغيل Android، ويجب أن تقرّ بتوافقها مع ميزة android.hardware.usb.accessory للأجهزة [الموارد، 52]
  • يجب أن توفّر فئة الصوت عبر USB كما هو موضّح في مستندات حزمة تطوير البرامج (SDK) لنظام التشغيل Android‏ [الموارد، 66]
  • يجب أن يتيح استخدام مواصفات شحن البطارية عبر USB [Resources, 64] ننصح بشدة باستيفاء هذه المتطلبات في الإصدار 4.3 من Android على الأجهزة الحالية والجديدة التي تعمل بالإصدار 4.3 من Android حتى تتمكّن من الترقية إلى إصدارات النظام الأساسي المستقبلية.

إذا كان تنفيذ الجهاز يتضمّن منفذ مضيف USB:

  • يجوز استخدام شكل غير عادي للمنفذ، ولكن في هذه الحالة يجب أن يتم شحن الجهاز مع كابل أو كابلات لتحويل المنفذ إلى منفذ USB-A عادي.
  • يجب أن ينفذ واجهة برمجة التطبيقات Android USB host API كما هو موضّح في مستندات حزمة تطوير البرامج (SDK) لنظام التشغيل Android، ويجب أن يعلن عن توافقه مع ميزة الجهاز android.hardware.usb.host [الموارد، 53]

يجب أن تُنفِّذ عمليات تنفيذ الأجهزة أداة Android Debug Bridge. إذا كان تنفيذ الجهاز يحذف منفذ برنامج تشغيل USB، يجب أن ينفِّذ "جسر تصحيح أخطاء Android" عبر شبكة المنطقة المحلية (مثل إيثرنت أو 802.11).

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

يجب أن تستوفي عمليات تنفيذ الأجهزة مقاييس الأداء الرئيسية لجهاز متوافق مع Android 4.3 والمُحدَّدة في الجدول أدناه:

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

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

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

9.1. الأذونات

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

9.5. ميزة "الوصول المتعدد"

يتيح نظام التشغيل Android 4.3 إمكانية استخدام عدّة حسابات مستخدمين، كما يتيح عزل حساب كل مستخدم بشكل كامل. [الموارد، 70]

يجب أن تستوفي عمليات تنفيذ الأجهزة هذه المتطلبات المتعلقة بدعم ميزة "الوصول المتعدّد للمستخدمين" [الموارد، 71]:

  • بما أنّ سلوك واجهات برمجة تطبيقات الهاتف على الأجهزة التي تتيح استخدامها لعدة مستخدمين غير محدّد حاليًا، يجب ألا تفعّل عمليات تنفيذ الأجهزة التي تفترض استخدام android.hardware.telephony ميزة استخدام الجهاز لعدة مستخدمين.
  • يجب أن توفّر عمليات تنفيذ التطبيقات على الأجهزة لكل مستخدم نموذج أمان متوافقًا مع نموذج أمان نظام Android الأساسي، كما هو محدّد في مستند مرجعي حول الأمان والأذونات في واجهات برمجة التطبيقات [المراجع، 54].
  • يتيح نظام التشغيل Android 4.3 استخدام الملفات الشخصية المحظورة، وهي ميزة تسمح لمالكي الأجهزة بإدارة مستخدمين إضافيين وقدراتهم على الجهاز. باستخدام الملفات الشخصية المحظورة، يمكن لمالكي الأجهزة إعداد بيئات منفصلة بسرعة ليستخدمها مستخدمون إضافيون، مع إمكانية إدارة قيود أكثر دقة في التطبيقات المتاحة في تلك البيئات. يجب أن تتضمّن عمليات تنفيذ الأجهزة التي تتيح استخدامها لعدة مستخدمين إتاحة استخدام الملفات الشخصية المحظورة. يتضمّن مشروع Android Open Source Project الأصلي عملية تنفيذ تستوفي هذا الشرط.

يجب أن تتضمّن كل نسخة مستخدم على جهاز Android أدلة تخزين خارجية منفصلة ومعزولة. قد تؤدي عمليات تنفيذ الأجهزة إلى تخزين بيانات مستخدمين متعدّدين في وحدة التخزين أو نظام الملفات نفسه. ومع ذلك، يجب أن يضمن تنفيذ الجهاز أنّ التطبيقات التي يملكها مستخدم معيّن ويتم تشغيلها نيابةً عنه لا يمكنها إدراج البيانات التي يملكها أي مستخدم آخر أو قراءتها أو الكتابة فيها. تجدر الإشارة إلى أنّ الوسائط القابلة للإزالة، مثل فتحات بطاقات SD، يمكن أن تسمح لمستخدم بالوصول إلى بيانات مستخدم آخر من خلال جهاز كمبيوتر مضيف. لهذا السبب، على عمليات تنفيذ الأجهزة التي تستخدم وسائط قابلة للإزالة لواجهة برمجة التطبيقات لمساحة التخزين الخارجية تشفير محتوى بطاقة SD في حال تفعيل ميزة "الوصول المتعدد للمستخدمين" باستخدام مفتاح يتم تخزينه فقط على وسائط غير قابلة للإزالة لا يمكن للنظام الوصول إليها إلا. وبما أنّ هذا سيجعل ملفّات الوسائط غير قابلة للقراءة من قِبل جهاز كمبيوتر مضيف، سيُطلب من عمليات تنفيذ الأجهزة التبديل إلى بروتوكول MTP أو نظام مشابه لمنح أجهزة الكمبيوتر المضيف إمكانية الوصول إلى بيانات المستخدم الحالي. وبناءً على ذلك، يجوز لعمليات تنفيذ الأجهزة تفعيل ميزة "الوصول المتعدّد للمستخدمين"، ولكن لا يُنصَح بذلك إذا كانت تستخدم وسائط قابلة للإزالة [الموارد، 72] لمساحة التخزين الخارجية الأساسية. يتضمّن مشروع Android Open Source الإصدار الأحدث من الإصدار العلني لتنفيذًا يستخدم مساحة التخزين الداخلية للجهاز لواجهات برمجة تطبيقات مساحة التخزين الخارجية للتطبيقات، ويجب أن تستخدم عمليات تنفيذ التطبيقات على الأجهزة هذا الإعداد وتنفيذ البرامج. يجب ألا تسمح عمليات تنفيذ الأجهزة التي تتضمّن مسارات متعددة للتخزين الخارجي لتطبيقات Android بالكتابة في وحدة التخزين الخارجية الثانوية.

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

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

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

يتضمّن نظام Android Sandbox في الإصدار 4.3 من Android ميزات يمكنها استخدام نظام التحكّم الإجباري في الوصول (MAC) في SELinux وغيرها من ميزات الأمان في نواة Linux. يجب أن تتيح عمليات تنفيذ الأجهزة ميزة "التحكّم في الوصول إلى نظام التشغيل باستخدام أمان نظام التشغيل Linux (SELinux)". يُرجى العلم أنّ مشروع Android Open Source التابع لجهة خارجية يقدّم عملية تنفيذ تستوفي هذا الشرط.

يجب أن تحافظ آلية SELinux أو أي ميزات أمان يتم تنفيذها ضمن إطار عمل Android أدنى من الإصدار المتوافق مع التطبيقات الحالية. من المفترض ألا تظهر هذه الميزات للمستخدمين والمطوّرين. يجب ألّا تكون هذه الميزات قابلة للضبط من قِبل المستخدم أو المطوّر. إذا تم الكشف عن أي واجهة برمجة تطبيقات لضبط السياسة لتطبيق يمكن أن يؤثر في تطبيق آخر (مثل Device Administration API)، يجب ألا تسمح واجهة برمجة التطبيقات بضبط الإعدادات التي تؤدي إلى إيقاف التوافق. لضمان استمرار التوافق، يسمح التنفيذ المرجعي باستخدام SELinux في وضع مسموح به ويتوافق مع تعديلات السياسة الديناميكية بدون الحاجة إلى تعديل صورة النظام. يجب أن تتيح عمليات تنفيذ الأجهزة التي تستخدم SELinux هذا الوضع المرخّص ، وأن تتيح تعديلات السياسة الديناميكية وتسجيل أي انتهاكات للسياسة بدون إيقاف التطبيقات أو التأثير في سلوك النظام. من المفترض أن تحمِّل عمليات التنفيذ التي تستخدم SELinux السياسة من ملف /sepolicy على الجهاز. يقدّم مشروع Android Open Source Project الإصدار الأصلي الذي يستوفي هذا الشرط. يجب أن تستخدم عمليات تنفيذ الأجهزة التنفيذ المرجعي في "المشروع المفتوح المصدر لنظام Android"، ويجب أن تكون متوافقة مع "المشروع المفتوح المصدر لنظام Android".

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

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

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

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

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

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

10.2. أداة إثبات ملكية CTS

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

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

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

10.3. التطبيقات المرجعية

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

  • تطبيقات "تطبيقات Android" [الموارد، 55]
  • Replica Island (متاح في "متجر Google Play")

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

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

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

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

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

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

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

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

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