<uses-feature>

يستخدم Google Play عناصر <uses-feature> الواردة في بيان التطبيق لفلترة تطبيقك من الأجهزة التي لا تلبّي متطلّبات ميزات الأجهزة والبرامج.

ومن خلال تحديد الميزات التي يتطلبها تطبيقك، فإنك تسمح لـ Google Play بعرض تطبيقك فقط للمستخدمين الذين تستوفي أجهزتهم متطلبات ميزات التطبيق، بدلاً من عرضه لجميع المستخدمين.

للحصول على معلومات مهمة حول كيفية استخدام Google Play للميزات كأساس للفلترة، يُرجى مراجعة القسم Google Play والفلترة المستندة إلى الميزات.

بناء الجملة:
<uses-feature
  android:name="string"
  android:required=["true" | "false"]
  android:glEsVersion="integer" />
مضمّنة في:
<manifest>
description:

يوضح ميزة واحدة للأجهزة أو البرامج التي يستخدمها التطبيق.

الغرض من بيان <uses-feature> هو إبلاغ أي كيان خارجي بمجموعة ميزات الأجهزة والبرامج التي يعتمد عليها تطبيقك. ويوفّر العنصر السمة required التي تتيح لك تحديد ما إذا كان تطبيقك يتطلّب استخدام الميزة المعلَن عنها ولا يمكنه العمل فيها، أو أنّه يفضّل الحصول عليها ولكن يمكن أن يعمل بدونها.

ولأن دعم الميزات قد يختلف باختلاف أجهزة Android، يؤدي العنصر <uses-feature> دورًا مهمًا في السماح للتطبيق بوصف الميزات المتغيّرة في الجهاز التي يستخدمها.

تتوافق مجموعة الميزات المتاحة التي يُعلن عنها تطبيقك مع مجموعة ثوابت الميزات التي يوفّرها PackageManager لنظام التشغيل Android. يتم إدراج ثوابت الميزات في قسم مرجع الميزات في هذا المستند.

يجب تحديد كل ميزة في عنصر <uses-feature> منفصل، لذلك إذا كان التطبيق يتطلب ميزات متعددة، يشير إلى عناصر <uses-feature> متعددة. على سبيل المثال، يُعلن تطبيق يتطلب ميزات البلوتوث والكاميرا في الجهاز عن هذين العنصرين:

<uses-feature android:name="android.hardware.bluetooth" android:required="true" />
<uses-feature android:name="android.hardware.camera.any" android:required="true" />

بشكل عام، يجب الإفصاح دائمًا عن عناصر <uses-feature> لكل الميزات التي يتطلبها تطبيقك.

إنّ عناصر <uses-feature> التي تم الإعلان عنها هي معلومات فقط، أي أنّ نظام Android نفسه لا يتحقّق من التوافق مع الميزات على الجهاز قبل تثبيت أحد التطبيقات.

ومع ذلك، يمكن لخدمات أخرى، مثل Google Play والتطبيقات، الاطّلاع على بيانات <uses-feature> الخاصة بتطبيقك كجزء من معالجة تطبيقك أو التفاعل معه. لهذا السبب، من المهم للغاية أن تعلن عن جميع الميزات التي يستخدمها تطبيقك.

وبالنسبة إلى بعض الميزات، قد تكون هناك سمة معيّنة تتيح لك تحديد إصدار من الميزة، مثل إصدار Open GL المُستخدَم (المُعلن من خلال glEsVersion). ويتم الإعلان باستخدام سمة name عن ميزات أخرى متوفّرة أو غير متوفّرة على الجهاز، مثل الكاميرا.

على الرغم من أنّه لا يتم تفعيل العنصر <uses-feature> إلا للأجهزة التي تعمل بالمستوى 4 لواجهة برمجة التطبيقات أو الإصدارات الأعلى، يمكنك تضمين هذه العناصر في جميع التطبيقات، حتى إذا كانت قيمة minSdkVersion هي 3 أو أقل. وتتجاهل الأجهزة التي تعمل بإصدارات قديمة من النظام الأساسي العنصر.

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

السمات:
android:name
تحدِّد هذه السمة ميزة أجهزة أو برامج واحدة يستخدمها التطبيق كسلسلة واصفة. يتم إدراج القيم الصالحة للسمات في قسمَي ميزات الأجهزة وميزات البرامج. وتكون قيم السمات هذه حسّاسة لحالة الأحرف.
android:required
قيمة منطقية تحدّد ما إذا كان التطبيق يتطلّب الميزة المحدّدة في android:name.
  • في حال تعريف السمة android:required="true" لإحدى الميزات، يشير ذلك إلى أنّ التطبيق غير قادر على العمل أو غير مصمَّم ليعمل في حال عدم توفّر الميزة المحدّدة على الجهاز.
  • في حال تعريف android:required="false" لإحدى الميزات، يشير ذلك إلى أنّ التطبيق يستخدم الميزة في حال توفّرها على الجهاز، ولكنه مصمم للعمل بدون الميزة المحددة عند الضرورة.

القيمة التلقائية للسمة android:required هي "true".

android:glEsVersion
إصدار OpenGL ES الذي يطلبه التطبيق تمثل 16 بت الأعلى الرقم الرئيسي وتمثل أقل 16 بت أقل الرقم الثانوي. على سبيل المثال، لتحديد الإصدار 2.0 من OpenGL ES، يمكنك ضبط القيمة على "0x00020000"، أو لتحديد OpenGL ES 3.2، عليك ضبط القيمة على "0x00030002".

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

إذا لم يحدِّد التطبيق السمة android:glEsVersion، من المفترض أن يتطلب التطبيق استخدام OpenGL ES 1.0 فقط، المتوافق مع جميع الأجهزة التي تعمل بنظام التشغيل Android.

يمكن أن يفترض التطبيق أنّه إذا كان النظام الأساسي يتوافق مع إصدار OpenGL ES معيّن، سيتوافق أيضًا مع جميع إصدارات OpenGL ES الأقل رقميًا. لذلك، بالنسبة إلى التطبيق الذي يتطلب كلاً من OpenGL ES 1.0 وOpen ES 2.0، يجب تحديد أنه يتطلب OpenGL ES 2.0.

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

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

تم تقديمه في:
المستوى 4 من واجهة برمجة التطبيقات
راجِع أيضًا:

Google Play والفلترة المستندة إلى الميزات

يُجري Google Play فلترة للتطبيقات المرئية للمستخدمين بحيث لا يطّلع المستخدمون إلا على التطبيقات المتوافقة مع أجهزتهم وتنزيلها. تتمثل إحدى طرق تصفية التطبيقات في توافق الميزات.

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

  • الميزات التي يطلبها التطبيق، كما هو موضَّح في عناصر <uses-feature> في ملف بيان التطبيق.
  • يشير ذلك المصطلح إلى الميزات المتوفّرة على الجهاز أو في الأجهزة أو البرامج، كما يتم الإبلاغ عنها باستخدام خصائص النظام للقراءة فقط.

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

عندما يبدأ المستخدم تشغيل Google Play، يطلب التطبيق من مدير الحزم الحصول على قائمة الميزات المتاحة على الجهاز عن طريق استدعاء getSystemAvailableFeatures(). بعد ذلك يمرر تطبيق Store قائمة الميزات إلى Google Play عند إنشاء الجلسة للمستخدم.

في كل مرة تحمّل فيها تطبيقًا إلى Google Play Console، يفحص Google Play ملف بيان التطبيق. تبحث هذه الأداة عن عناصر <uses-feature> وتقيّمها بالاقتران مع عناصر أخرى، في بعض الحالات، مثل <uses-sdk> و<uses-permission>. بعد إنشاء مجموعة من الميزات المطلوبة للتطبيق، فإنه يخزن هذه القائمة داخليًا كبيانات وصفية مرتبطة بحزمة APK للتطبيق وإصدار التطبيق.

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

في حال عدم توافق الجهاز مع أي ميزة مطلوبة، يعمل Google Play على فلترة التطبيق بحيث لا يكون مرئيًا للمستخدم أو متاحًا للتنزيل.

بما أنّ الميزات التي تشير إليها في عناصر <uses-feature> تؤثر بشكل مباشر في كيفية فلترة Google Play لتطبيقك، لذا من المهم فهم طريقة تقييم Google Play لبيان التطبيق وإنشاء مجموعة من الميزات المطلوبة. تقدم الأقسام التالية المزيد من المعلومات

الفلترة استنادًا إلى الميزات المعلَن عنها صراحةً

إحدى الميزات المعلَن عنها صراحةً هي الميزة التي يذكرها تطبيقك في عنصر <uses-feature>. ويمكن أن يتضمّن بيان الميزة سمة android:required=["true" | "false"] إذا كان يتم تجميعها وفقًا لمستوى واجهة برمجة التطبيقات 5 أو مستوى أعلى.

وهذا يتيح لك تحديد ما إذا كان التطبيق يتطلّب الميزة ولا يمكنه العمل بشكلٍ صحيح بدونها ("true") أو يستخدِمها في حال توفّرها، ولكنه مصمم للتشغيل بدونها ("false").

يتعامل Google Play مع الميزات المُعلَن عنها صراحةً على النحو التالي:

  • إذا تم الإعلان صراحةً عن أنّ إحدى الميزات مطلوبة، كما هو موضّح في المثال التالي، سيضيف Google Play الميزة إلى قائمة الميزات المطلوبة للتطبيق. وبعد ذلك، تتم فلترة التطبيق من المستخدمين على الأجهزة التي لا توفّر هذه الميزة.
    <uses-feature android:name="android.hardware.camera.any" android:required="true" />
    
  • إذا تم الإعلان صراحةً عن أنّ ميزة غير مطلوبة، كما هو موضّح في المثال التالي، لا يضيف Google Play الميزة إلى قائمة الميزات المطلوبة. لهذا السبب، لا يتم مطلقًا أخذ ميزة تم الإعلان عنها صراحةً غير مطلوبة عند فلترة التطبيق. حتى إذا لم يوفّر الجهاز الميزة المُعلَن عنها، يواصل Google Play اعتبار التطبيق متوافقًا مع الجهاز ويعرضه للمستخدم، ما لم تطبَّق قواعد فلترة أخرى.
    <uses-feature android:name="android.hardware.camera" android:required="false" />
    
  • إذا تم الإعلان عن إحدى الميزات بشكل صريح، ولكن بدون استخدام السمة android:required، يفترض Google Play أنّ الميزة مطلوبة وتضبط إعدادات الفلترة لها.

بشكل عام، إذا كان تطبيقك مصممًا للتشغيل على الإصدار Android 1.6 والإصدارات الأقدم، لن تكون السمة android:required متاحة في واجهة برمجة التطبيقات، ويفترض Google Play أنّ جميع تعريفات <uses-feature> مطلوبة.

ملاحظة: من خلال تعريف الميزة بشكل صريح وتضمين السمة android:required="false"، يمكنك إيقاف جميع عمليات الفلترة للميزة المحددة على Google Play.

الفلترة استنادًا إلى الميزات الضمنية

الميزات الضمنية هي الميزة التي يتطلبها التطبيق حتى يعمل بشكل صحيح، ولكن هذه الميزة لم يتم تعريفها في عنصر <uses-feature> في ملف البيان. وعلى وجه التحديد، من الأفضل لكل تطبيق أن يعلن دائمًا عن جميع الميزات التي يستخدمها أو يتطلبها، ويمكن اعتبار عدم وجود بيان عن الميزة التي يستخدمها التطبيق خطأً.

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

قد يتطلب التطبيق توفُّر ميزة، ولكن لا يتم الإعلان عنه لأسباب كالتالية:

  • تم تجميع التطبيق من إصدار قديم من مكتبة Android (الإصدار 1.5 أو الإصدارات الأقدم من Android)، والذي لا يتوفّر له العنصر <uses-feature>.
  • يفترض المطوّر بشكل غير صحيح أنّ هذه الميزة متوفّرة على جميع الأجهزة، وبالتالي ليس هناك حاجة إلى بيان الأذونات.
  • يحذف المطوّر بيان الميزة عن طريق الخطأ.
  • يعلن المطوّر عن الميزة صراحةً، لكنّ البيان غير صالح. على سبيل المثال، يؤدي خطأ إملائي في اسم العنصر <uses-feature> أو قيمة سلسلة غير معروفة للسمة android:name إلى إلغاء بيان الميزة.

ولحساب هذه الحالات، يحاول Google Play اكتشاف متطلبات الميزات الضمنية في التطبيق من خلال فحص العناصر الأخرى التي تم تعريفها في ملف البيان، وتحديدًا عناصر <uses-permission>.

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

على سبيل المثال، إذا طلب تطبيق إذن CAMERA، يفترض Google Play أنّ التطبيق يتطلّب كاميرا خلفية (واجهة عالمية) حتى إذا لم يعلن التطبيق عن عنصر <uses-feature> في android.hardware.camera. ونتيجة لذلك، يُجري Google Play فلترة للأجهزة التي لا تحتوي على كاميرا خلفية.

إذا كنت لا تريد من Google Play الفلترة استنادًا إلى ميزة ضمنية معيّنة، عليك الإفصاح عن الميزة صراحةً في عنصر <uses-feature> مع تضمين السمة android:required="false". على سبيل المثال، لإيقاف الفلترة الضمنية في الإذن CAMERA، يُرجى تعريف الميزات التالية:

<uses-feature android:name="android.hardware.camera" android:required="false" />
<uses-feature android:name="android.hardware.camera.autofocus" android:required="false" />

تنبيه: يمكن أن تؤثر الأذونات التي تطلبها في عناصر <uses-permission> بشكل مباشر في كيفية فلترة Google Play لتطبيقك. يسرد قسم الأذونات التي تشير إلى متطلبات الميزة المجموعة الكاملة من الأذونات التي تشير ضمنًا إلى متطلبات الميزة، وبالتالي تؤدي إلى تشغيل التصفية.

معالجة خاصة لميزة البلوتوث

تطبّق Google Play قواعد مختلفة قليلاً عن تلك الموضّحة في المثال السابق عند تحديد فلترة البلوتوث.

إذا أعلن تطبيق عن إذن البلوتوث في عنصر <uses-permission> ولكنّه لم يعلن صراحةً عن ميزة البلوتوث في العنصر <uses-feature>، سيتحقّق Google Play من إصدارات نظام Android الأساسي الذي تم تصميم التطبيق لتشغيله، على النحو المحدّد في العنصر <uses-sdk>.

وكما هو موضّح في الجدول التالي، لا يتيح Google Play الفلترة للوصول إلى ميزة البلوتوث إلا إذا أعلن التطبيق أنّ نظامه الأساسي الأدنى أو المستهدف هو Android 2.0 (المستوى 5 من واجهة برمجة التطبيقات) أو إصدار أحدث. يُرجى العِلم أنّ Google Play يطبّق القواعد العادية للفلترة عندما يعلن التطبيق صراحةً عن ميزة البلوتوث في عنصر <uses-feature>.

الجدول 1. كيفية تحديد Google Play لمتطلبات ميزة البلوتوث في أحد التطبيقات التي تطلب الحصول على إذن الوصول إلى البلوتوث بدون أن يعلن عن ميزة البلوتوث في عنصر <uses-feature>

إذا كان minSdkVersion ... وtargetSdkVersion هي النتيجة
<=4 أو لم يتم الإعلان عن <uses-sdk> 4 أو أقل لا يفلتر Google Play التطبيق من أي أجهزة بناءً على دعمها الذي تم الإبلاغ عنه لميزة android.hardware.bluetooth.
4 أو أقل أكثر من أو يساوي 5 يُفلتِر Google Play التطبيق من أي أجهزة لا تتوافق مع ميزة android.hardware.bluetooth (بما في ذلك الإصدارات القديمة).
أكثر من أو يساوي 5 أكثر من أو يساوي 5

توضّح الأمثلة التالية تأثيرات الفلترة المختلفة استنادًا إلى كيفية تعامل Google Play مع ميزة البلوتوث.

في المثال الأول، يعلن التطبيق المصمّم للعمل على مستويات قديمة من واجهة برمجة التطبيقات عن إذن بلوتوث ولكنه لا يذكر ميزة البلوتوث في عنصر <uses-feature>.
النتيجة: لا يفلتر Google Play التطبيق من أي جهاز.
<manifest ...>
    <uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
    <uses-sdk android:minSdkVersion="3" />
    ...
</manifest>
في المثال الثاني، يعلن التطبيق نفسه أيضًا عن مستوى هدف لواجهة برمجة التطبيقات هو "5".
النتيجة: يفترض Google Play الآن أنّ هذه الميزة مطلوبة ويفلتر التطبيق من جميع الأجهزة التي لا تعرض تقارير بشأن توفُّر البلوتوث، بما في ذلك الأجهزة التي تعمل بإصدارات قديمة من النظام الأساسي.
<manifest ...>
    <uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
    <uses-sdk android:minSdkVersion="3" android:targetSdkVersion="5" />
    ...
</manifest>
في هذا القسم، يعلن التطبيق نفسه الآن عن ميزة البلوتوث على وجه التحديد.
النتيجة: مماثلة للمثال السابق: تم تطبيق الفلترة.
<manifest ...>
    <uses-feature android:name="android.hardware.bluetooth" />
    <uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
    <uses-sdk android:minSdkVersion="3" android:targetSdkVersion="5" />
    ...
</manifest>
أخيرًا، في الحالة التالية، يضيف التطبيق نفسه سمة android:required="false".
النتيجة: يوقف Google Play الفلترة استنادًا إلى إتاحة ميزة البلوتوث لجميع الأجهزة.
<manifest ...>
    <uses-feature android:name="android.hardware.bluetooth" android:required="false" />
    <uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
    <uses-sdk android:minSdkVersion="3" android:targetSdkVersion="5" />
    ...
</manifest>

اختبار الميزات التي يتطلبها تطبيقك

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

لاستخدام الأداة، يُرجى اتباع الخطوات التالية:

  1. يمكنك إنشاء تطبيقك وتصديره كملف APK غير موقَّع. إذا كنت تريد تطوير تطبيقك في "استوديو Android"، عليك إنشاء تطبيقك باستخدام Gradle على النحو التالي:
    1. افتح المشروع واختَر تشغيل > تعديل عمليات الضبط.
    2. اختَر علامة الجمع بالقرب من أعلى يمين نافذة Run/Debug Configurations.
    3. اختَر Gradle.
    4. أدخِل "حزمة APK غير موقَّعة" في حقل الاسم.
    5. اختر وحدتك من قسم مشروع Gradle.
    6. أدخِل "تجميع" في مهام Google.
    7. انقر على حسنًا لإكمال الإعدادات الجديدة.
    8. تأكد من تحديد إعداد تشغيل حزمة APK غير الموقَّعة في شريط الأدوات، ثم اختَر تشغيل > تشغيل 'حزمة APK غير مُوقَّعة'.
    يمكنك العثور على حزمة APK غير الموقَّعة في دليل <ProjectName>/app/build/outputs/apk/.
  2. حدِّد موقع أداة aapt2 إذا لم تكن متضمّنة في المسار PATH. إذا كنت تستخدم الإصدار 8 أو إصدارًا أحدث من "أدوات SDK"، يمكنك العثور على aapt2 في دليل <SDK>/build-tools/<tools version number>.

    ملاحظة: يجب استخدام إصدار aapt2 المتوفّر لأحدث مكوّنات Build-Tools المتاحة. إذا لم يكن لديك أحدث مكوّن من أدوات الإنشاء، يمكنك تنزيله باستخدام Android SDK Manager.

  3. تشغيل aapt2 باستخدام البنية التالية:
$ aapt2 dump badging <path_to_exported_.apk>

إليك مثال على مخرجات الأمر لمثال البلوتوث الثاني الذي تم توضيحه سابقًا:

$ ./aapt2 dump badging BTExample.apk
package: name='com.example.android.btexample' versionCode='' versionName=''
uses-permission:'android.permission.BLUETOOTH_ADMIN'
uses-feature:'android.hardware.bluetooth'
sdkVersion:'3'
targetSdkVersion:'5'
application: label='BT Example' icon='res/drawable/app_bt_ex.png'
launchable activity name='com.example.android.btexample.MyActivity'label='' icon=''
uses-feature:'android.hardware.touchscreen'
main
supports-screens: 'small' 'normal' 'large'
locales: '--_--'
densities: '160'

مرجع الميزات

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

ميزات الأجهزة

يعرض هذا القسم ميزات الأجهزة المتوافقة مع أحدث إصدار من النظام الأساسي. للإشارة إلى أنّ تطبيقك يستخدم ميزات أجهزة أو يتطلّبها، يُرجى تحديد القيمة المناسبة، بدءًا من "android.hardware"، في سمة android:name. في كل مرة تُعلن فيها عن ميزة في الجهاز، استخدِم عنصر <uses-feature> منفصلاً.

ميزات أجهزة الصوت

android.hardware.audio.low_latency
يستخدم التطبيق مسار الاستجابة الصوتية المنخفض الاستجابة في الجهاز، ما يقلّل من مدة التأخير والتأخيرات عند معالجة إدخال الصوت أو إخراجه.
android.hardware.audio.output
ينقل التطبيق الصوت باستخدام مكبرات الصوت أو مقبس الصوت في الجهاز أو إمكانات البث عبر البلوتوث أو آلية مشابهة.
android.hardware.audio.pro
يستخدم التطبيق وظائف الصوت المتطوّرة وإمكانات الأداء المتطورة في الجهاز.
android.hardware.microphone
يسجّل التطبيق الصوت باستخدام ميكروفون الجهاز.

ميزات الأجهزة التي تتضمّن بلوتوث

android.hardware.bluetooth
يستخدم التطبيق ميزات البلوتوث الخاصة بالجهاز، عادةً للتواصل مع الأجهزة الأخرى التي تم تفعيل البلوتوث عليها.
android.hardware.bluetooth_le
يستخدم التطبيق ميزات الراديو التي تعمل بالبلوتوث منخفض الطاقة في الجهاز.

ميزات أجهزة الكاميرا

ملاحظة: لمنع إجراء فلترة غير ضرورية لتطبيقك من خلال Google Play، أضِف السمة android:required="false" إلى أي ميزة من ميزات الكاميرا التي يمكن لتطبيقك أن يعمل بدونها. وبخلاف ذلك، يفترض Google Play أن هذه الميزة مطلوبة ويمنع الأجهزة التي لا تدعمها من الوصول إلى تطبيقك.

دعم الشاشات الكبيرة

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

لتوفير الدعم الأساسي للكاميرا وإتاحة تطبيقك لأكبر عدد ممكن من الأجهزة، أضِف إعدادات ميزات الكاميرا التالية إلى بيان التطبيق:

<uses-feature android:name="android.hardware.camera.any" android:required="false" />
<uses-feature android:name="android.hardware.camera" android:required="false" />
<uses-feature android:name="android.hardware.camera.autofocus" android:required="false" />
<uses-feature android:name="android.hardware.camera.flash" android:required="false" />

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

قائمة الميزات
android.hardware.camera.any

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

يعني الإذن CAMERA أنّ تطبيقك يستخدم أيضًا android.hardware.camera. يجب استخدام الكاميرا الخلفية ما لم يتم تعريف android.hardware.camera من خلال السمة android:required="false".

android.hardware.camera

يستخدم التطبيق كاميرا الجهاز الخلفية (المواجهة للعالم).

تنبيه: لا تتيح الأجهزة مثل أجهزة Chromebook التي تحتوي على كاميرا أمامية (مواجهة المستخدم) فقط هذه الميزة. استخدِم android.hardware.camera.any إذا كان بإمكان تطبيقك استخدام أي كاميرا، بغض النظر عن اتجاه الكاميرا.

ملاحظة: يشير الإذن CAMERA إلى أنّ الكاميرا الخلفية هي ميزة مطلوبة. للمساعدة في ضمان الفلترة المناسبة على Google Play عندما يتضمّن بيان التطبيق الإذن CAMERA، يجب تحديد أنّ تطبيقك يستخدم ميزة camera بشكل صريح وتوضيح ما إذا كانت مطلوبة، مثلاً:
<uses-feature android:name="android.hardware.camera" android:required="false" />

android.hardware.camera.front

يستخدم التطبيق الكاميرا الأمامية للجهاز (المواجهة للمستخدم).

يعني الإذن CAMERA أنّ تطبيقك يستخدم أيضًا android.hardware.camera. يجب استخدام الكاميرا الخلفية ما لم يتم تعريف android.hardware.camera من خلال السمة android:required="false".

تنبيه: إذا كان تطبيقك يستخدم السمة android.hardware.camera.front ولكنّه لم يذكر صراحةً android.hardware.camera مع android.required="false"، تتم فلترة الأجهزة التي لا تحتوي على كاميرا خلفية (مثل أجهزة Chromebook) من خلال Google Play. إذا كان تطبيقك متوافقًا مع الأجهزة المزوّدة بكاميرات أمامية فقط، يجب توضيح السمة android.hardware.camera باستخدام السمة android.required="false" لمنع الفلترة غير الضرورية.

android.hardware.camera.external

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

يعني الإذن CAMERA أنّ تطبيقك يستخدم أيضًا android.hardware.camera. يجب استخدام الكاميرا الخلفية ما لم يتم تعريف android.hardware.camera من خلال السمة android:required="false".

android.hardware.camera.autofocus

يستخدم التطبيق ميزة "التركيز التلقائي" المتوافقة مع كاميرا الجهاز.

ملاحظة: يشير الإذن CAMERA إلى أنّ ميزة "التركيز التلقائي" هي ميزة مطلوبة. للمساعدة في ضمان الفلترة المناسبة على Google Play عندما يتضمّن بيان التطبيق الإذن CAMERA، يجب تحديد ما إذا كان تطبيقك يستخدم ميزة "التركيز التلقائي" بوضوح وتوضيح ما إذا كانت هذه الميزة مطلوبة أم لا، مثلاً:
<uses-feature android:name="android.hardware.camera.autofocus" android:required="false" />.

android.hardware.camera.flash

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

android.hardware.camera.capability.manual_post_processing

يستخدم التطبيق ميزة MANUAL_POST_PROCESSING المتوافقة مع كاميرا الجهاز.

تسمح هذه الميزة لتطبيقك بتجاهل وظيفة موازنة اللون الأبيض التلقائي في الكاميرا. استخدِم android.colorCorrection.transform وandroid.colorCorrection.gains وandroid.colorCorrection.mode من أصل TRANSFORM_MATRIX.

android.hardware.camera.capability.manual_sensor

يستخدم التطبيق ميزة MANUAL_SENSOR المتوافقة مع كاميرا الجهاز.

تشير هذه الميزة إلى توفُّر ميزة "قفل التعرض التلقائي للضوء" (android.control.aeLock)، ما يتيح مواصلة تثبيت وقت التعرّض للضوء وحساسية الكاميرا على قيم معيّنة.

android.hardware.camera.capability.raw

يستخدم التطبيق ميزة RAW المتوافقة مع كاميرا الجهاز.

تشير هذه الميزة إلى أنّ الجهاز يمكنه حفظ ملفات DNG (الأولية). توفّر كاميرا الجهاز البيانات الوصفية ذات الصلة بالاختصار DNG واللازمة لتطبيقك لمعالجة الصور الأولية مباشرةً.

android.hardware.camera.level.full
يستخدم التطبيق مستوى FULL من دعم التقاط الصور الذي توفره كاميرا واحدة على الأقل من كاميرات الجهاز. ويشمل دعم FULL إمكانات التقاط صور متسلسلة، وعناصر تحكّم في كل إطار، وعناصر تحكّم يدوية بعد المعالجة. يمكنك الاطّلاع على INFO_SUPPORTED_HARDWARE_LEVEL_FULL.

ميزات أجهزة واجهة مستخدم الجهاز

android.hardware.type.automotive

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

ملاحظة: بما أنّ المستخدم يقود سيارته أثناء استخدام هذا النوع من واجهة المستخدم الخاصة بالتطبيق، يجب أن يقلّل التطبيق من نسبة تشتيت السائق.

android.hardware.type.television

(تم إيقاف العمل بها، يمكنك استخدام android.software.leanback بدلاً منها.)

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

android.hardware.type.watch
تم تصميم التطبيق لعرض واجهة المستخدم الخاصة به على الساعة. يتم ارتداء الساعة على الجسم، مثل المعصم. يكون المستخدِم على مقربة جدًا من الجهاز أثناء تفاعله معه.
android.hardware.type.pc

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

ملاحظة: يجب ضبط السمة required="false" لهذا العنصر، وإلا سيجعل "متجر Google Play" تطبيقك غير متاح على الأجهزة غير أجهزة Chromebook.

ميزات جهاز بصمة الإصبع

android.hardware.fingerprint
يقرأ التطبيق بصمات الأصابع باستخدام مكونات المقاييس الحيوية للجهاز.

ميزات أجهزة لوحة الألعاب

android.hardware.gamepad
يلتقط التطبيق إدخالات وحدة التحكّم في الألعاب، سواء من الجهاز نفسه أو من لوحة ألعاب متصلة.

ميزات الأجهزة التي تعمل بالأشعة تحت الحمراء

android.hardware.consumerir
يستخدم التطبيق إمكانات الأشعة تحت الحمراء (IR) للجهاز، وعادةً للتواصل مع أجهزة المستهلك الأخرى التي تعمل بالأشعة تحت الحمراء.

ميزات أجهزة الموقع الجغرافي

android.hardware.location
يستخدم التطبيق ميزة واحدة أو أكثر على الجهاز لتحديد الموقع الجغرافي، مثل الموقع الجغرافي باستخدام نظام تحديد المواقع العالمي (GPS) أو الموقع الجغرافي للشبكة أو الموقع الجغرافي لشبكة الجوّال.
android.hardware.location.gps

يستخدم التطبيق إحداثيات الموقع الجغرافي الدقيقة التي يتم الحصول عليها من جهاز استقبال نظام تحديد المواقع العالمي (GPS) على الجهاز.

عند استخدام هذه الميزة، يشير التطبيق إلى أنّه يستخدم أيضًا ميزة android.hardware.location، ما لم يتم تعريف هذه الميزة الرئيسية باستخدام السمة android:required="false".

android.hardware.location.network

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

عند استخدام هذه الميزة، يشير التطبيق إلى أنّه يستخدم أيضًا ميزة android.hardware.location، ما لم يتم تعريف هذه الميزة الرئيسية باستخدام السمة android:required="false".

ميزات أجهزة NFC

android.hardware.nfc
يستخدم التطبيق ميزات الاتصال القصير المدى (NFC) المتوفّرة في الجهاز.
android.hardware.nfc.hce

يستخدم التطبيق محاكاة بطاقة NFC التي تتم استضافتها على الجهاز.

ميزات أجهزة OpenGL ES

android.hardware.opengles.aep
يستخدم التطبيق حزمة إضافة Android بتنسيق OpenGL ES المثبّتة على الجهاز.

ميزات أجهزة الاستشعار

android.hardware.sensor.accelerometer
يستخدم التطبيق قراءات الحركة من مقياس تسارع الجهاز لاكتشاف الاتجاه الحالي للجهاز. على سبيل المثال، قد يستخدم أحد التطبيقات قراءات مقياس التسارع لتحديد وقت التبديل بين الاتجاه العمودي والاتجاه الأفقي.
android.hardware.sensor.ambient_temperature
يستخدم التطبيق أداة استشعار الحرارة المحيطة (البيئة) في الجهاز. على سبيل المثال، يمكن لتطبيق طقس الإبلاغ عن درجة الحرارة الداخلية أو الخارجية.
android.hardware.sensor.barometer
يستخدم التطبيق مقياس الضغط الجوي للجهاز. على سبيل المثال، قد يبلّغ أحد تطبيقات الطقس عن ضغط الهواء.
android.hardware.sensor.compass
يستخدم التطبيق مقياس المغناطيسية الخاص بالجهاز (البوصلة). على سبيل المثال، قد يعرض تطبيق التنقّل الاتجاه الحالي الذي يواجهه المستخدم.
android.hardware.sensor.gyroscope
يستخدم التطبيق جيروسكوب الجهاز لاكتشاف الدوران والالتواءات، ما يؤدي إلى إنشاء نظام اتجاه سداسي المحاور. وباستخدام أداة الاستشعار هذه، يمكن للتطبيق رصد المحتوى بسلاسة أكبر عند الحاجة إلى التبديل بين الاتجاه العمودي والأفقي.
android.hardware.sensor.hifi_sensors
يستخدم التطبيق أدوات الاستشعار العالية الدقة (Hi-Fi) في الجهاز. على سبيل المثال، قد يرصد تطبيق ألعاب الفيديو حركات المستخدم العالية الدقة.
android.hardware.sensor.heartrate
يستخدم التطبيق أداة رصد معدّل نبضات القلب في الجهاز. على سبيل المثال، قد يعرض أحد تطبيقات اللياقة البدنية مؤشرات معدّل نبضات قلب المستخدم بمرور الوقت.
android.hardware.sensor.heartrate.ecg
يستخدم التطبيق أداة استشعار معدّل نبضات القلب لمخطَّط كهربية القلب (ECG) في الجهاز. على سبيل المثال، قد يُبلغ تطبيق اللياقة البدنية عن معلومات أكثر تفصيلاً حول معدّل نبضات قلب المستخدم.
android.hardware.sensor.light
يستخدم التطبيق أداة استشعار الضوء في الجهاز. على سبيل المثال، قد يعرض أحد التطبيقات أحد مخطّطَي الألوان استنادًا إلى ظروف الإضاءة المحيطة.
android.hardware.sensor.proximity
يستخدم التطبيق أداة استشعار التقارب في الجهاز. على سبيل المثال، قد يوقف تطبيق الاتصال الهاتفي شاشة الجهاز عندما يكتشف التطبيق أن المستخدم يحمل الجهاز بالقرب من جسمه.
android.hardware.sensor.relative_humidity
يستخدم التطبيق أداة استشعار الرطوبة النسبية للجهاز. على سبيل المثال، قد يستخدم أحد تطبيقات الطقس نسبة الرطوبة لحساب نقطة الندى الحالية والإبلاغ عنها.
android.hardware.sensor.stepcounter
يستخدم التطبيق عدّاد الخطوات على الجهاز. على سبيل المثال، قد يُبلغ أحد تطبيقات اللياقة البدنية عن عدد الخطوات التي يحتاج المستخدم إلى اتخاذها لتحقيق هدف عدد الخطوات اليومي.
android.hardware.sensor.stepdetector
يستخدم التطبيق أداة رصد الخطوات في الجهاز. على سبيل المثال، قد يستخدم تطبيق لياقة بدنية الفاصل الزمني بين الخطوات لاستنتاج نوع التمرين الذي يمارسه المستخدم.

ميزات أجهزة الشاشة

android.hardware.screen.landscape
android.hardware.screen.portrait

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

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

<uses-feature android:name="android.hardware.screen.portrait" />

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

على سبيل المثال، إذا أعلنت عن السمة android:screenOrientation مع "landscape" أو "reverseLandscape" أو "sensorLandscape"، لن يتوفّر تطبيقك إلا على الأجهزة التي تتوافق مع الاتجاه الأفقي.

وفقًا لأفضل الممارسات، يجب الإعلان عن متطلباتك لهذا التوجيه باستخدام عنصر <uses-feature>. إذا أعلنت عن اتجاه نشاطك باستخدام android:screenOrientation ولكنك لا تطلبه في الواقع، يمكنك إيقاف المتطلبات من خلال تعريف الاتجاه باستخدام عنصر <uses-feature> وتضمين android:required="false".

للتوافق مع الأنظمة القديمة، يتيح أي جهاز يعمل بنظام التشغيل Android 3.1 (المستوى 12 لواجهة برمجة التطبيقات) أو الإصدارات الأقدم استخدام الاتجاهَين الأفقي والرأسي.

ميزات أجهزة الاتصال الهاتفي

android.hardware.telephony
يستخدم التطبيق ميزات الاتصال الهاتفي للجهاز، مثل الاتصال اللاسلكي الهاتفية مع خدمات اتصال البيانات.
android.hardware.telephony.cdma

يستخدم التطبيق النظام اللاسلكي للاتصالات الهاتفية من Code Division للوصول المتعدد (CDMA).

عند استخدام هذه الميزة، يشير التطبيق إلى أنّه يستخدم أيضًا ميزة android.hardware.telephony، ما لم يتم الإعلان عن هذه الميزة الرئيسية في android:required="false".

android.hardware.telephony.gsm

يستخدم التطبيق النظام اللاسلكي العام للاتصالات المتنقلة (GSM).

عند استخدام هذه الميزة، يشير التطبيق إلى أنّه يستخدم أيضًا ميزة android.hardware.telephony، ما لم يتم الإعلان عن هذه الميزة الرئيسية في android:required="false".

ميزات الأجهزة ذات الشاشات التي تعمل باللمس

android.hardware.faketouch

يستخدم التطبيق أحداث تفاعل اللمس الأساسية، مثل النقر والسحب.

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

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

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

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

<uses-feature android:name="android.hardware.touchscreen"
    android:required="true" />

وتعمل جميع التطبيقات التي لا تتطلب android.hardware.touchscreen بشكل صريح، كما هو موضّح في المثال التالي، أيضًا على الأجهزة المزوّدة بـ android.hardware.faketouch.

<uses-feature android:name="android.hardware.touchscreen" android:required="false" />
android.hardware.faketouch.multitouch.distinct

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

على عكس ميزة "اللمس المتعدد" المميّز الذي يحدّده تطبيق android.hardware.touchscreen.multitouch.distinct، لا تتوافق أجهزة الإدخال التي تتيح "اللمس المتعدد" المميّز مع واجهة اللمس المزيفة مع كل الإيماءات بإصبعَين، لأنّه يتم تحويل الإدخال إلى حركة المؤشر على الشاشة. وهذا يعني أنّ الإيماءات بإصبع واحد على هذا الجهاز تؤدي إلى تحريك المؤشر، وتؤدي التمريرات السريعة بإصبعين إلى حدوث أحداث اللمس بإصبع واحد، بينما تؤدي الإيماءات الأخرى بإصبعين إلى أحداث اللمس المقابلة لها.

ويمكن استخدام هذه الميزة على الجهاز الذي يوفر لوحة لمس تعمل باللمس بإصبعين لتحريك المؤشر.

android.hardware.faketouch.multitouch.jazzhand

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

على عكس ميزة "اللمس المتعدد" المميّز الذي يحدّده "android.hardware.touchscreen.multitouch.jazzhand"، لا تتوافق أجهزة الإدخال التي تتيح اللمس المتعدد لموسيقى الجاز مع واجهة لمس مزيفة مع كل الإيماءات التي تتم باستخدام خمسة أصابع، لأنّه يتم تحويل الإدخال إلى حركة المؤشر على الشاشة. وهذا يعني أنّ الإيماءات بإصبع واحد على هذا الجهاز تحرّك المؤشر، وتؤدي الإيماءات بأصابع متعددة إلى حدوث أحداث اللمس بإصبع واحد، بينما تؤدي الإيماءات الأخرى بأصابع متعددة إلى تشغيل أحداث اللمس المقابلة بأصابع متعددة.

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

android.hardware.touchscreen

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

بشكل تلقائي، تتطلّب جميع التطبيقات استخدام هذه الميزة، وبالتالي لا تكون متوفّرة للأجهزة التي توفّر واجهة "اللمس المزيّف" في وضع المحاكاة. ويمكنك إتاحة تطبيقك على الأجهزة التي توفّر واجهة لمس وهمية أو حتى على الأجهزة التي توفّر فقط وحدة تحكّم في لوحة التحكّم، وذلك من خلال الإعلان صراحةً أنّ الشاشة التي تعمل باللمس غير مطلوبة باستخدام android.hardware.touchscreen مع android:required="false". يمكنك إضافة هذا البيان إذا كان تطبيقك يستخدم واجهة حقيقية تعمل باللمس بدون الحاجة إلى ذلك. وتعمل جميع التطبيقات التي لا تتطلّب android.hardware.touchscreen صراحةً على الأجهزة المزوّدة بـ android.hardware.faketouch.

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

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

android.hardware.touchscreen.multitouch

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

عند استخدام هذه الميزة، يشير التطبيق إلى أنّه يستخدم أيضًا ميزة android.hardware.touchscreen، ما لم يتم الإعلان عن هذه الميزة الرئيسية في android:required="false".

android.hardware.touchscreen.multitouch.distinct

يستخدم التطبيق إمكانات اللمس المتعدد المتقدّمة في الجهاز لتتبّع نقطتين أو أكثر بشكل مستقل. هذه الميزة هي مجموعة شاملة لميزة android.hardware.touchscreen.multitouch.

يشير استخدام هذه الميزة إلى أنّ التطبيق يستخدم أيضًا ميزة android.hardware.touchscreen.multitouch، ما لم يتم الإعلان عن هذه الميزة الرئيسية في android:required="false".

android.hardware.touchscreen.multitouch.jazzhand

يستخدم التطبيق إمكانات اللمس المتعدد المتقدّمة في الجهاز لتتبُّع خمس نقاط أو أكثر بشكل مستقل. هذه الميزة هي مجموعة شاملة لميزة android.hardware.touchscreen.multitouch.

يشير استخدام هذه الميزة إلى أنّ التطبيق يستخدم أيضًا ميزة android.hardware.touchscreen.multitouch، ما لم يتم الإعلان عن هذه الميزة الرئيسية في android:required="false".

ميزات أجهزة USB

android.hardware.usb.accessory
يعمل التطبيق كجهاز USB ويتصل بمضيفي USB.
android.hardware.usb.host
يستخدم التطبيق ملحقات USB المتصلة بالجهاز. يعمل الجهاز كمضيف USB.

ميزات أجهزة Vulkan

android.hardware.vulkan.compute
يستخدم التطبيق ميزات الحوسبة Vulkan. تشير هذه الميزة إلى أنّ التطبيق يتطلب تنفيذ Vulkan مع تسريع الأجهزة. يشير إصدار الميزة إلى مستوى ميزات الحوسبة الاختيارية التي يتطلبها التطبيق أكثر من متطلبات Vulkan 1.0. على سبيل المثال، إذا كان تطبيقك يتطلب دعم المستوى 0 من Vulkan للحوسبة، يُرجى توضيح الميزة التالية:
<uses-feature
    android:name="android.hardware.vulkan.compute"
    android:version="0"
    android:required="true" />
للحصول على مزيد من التفاصيل حول إصدار الميزة، يُرجى الاطّلاع على FEATURE_VULKAN_HARDWARE_COMPUTE.
android.hardware.vulkan.level
يستخدم التطبيق ميزات مستوى Vulkan. تشير هذه الميزة إلى أنّ التطبيق يتطلب تنفيذ Vulkan المسرّع بالأجهزة. يشير إصدار الميزة إلى مستوى ميزات الأجهزة الاختيارية التي يتطلبها التطبيق. على سبيل المثال، إذا كان تطبيقك يتطلب دعمًا من المستوى 0 لأجهزة Vulkan، يُرجى توضيح الميزة التالية:
<uses-feature
    android:name="android.hardware.vulkan.level"
    android:version="0"
    android:required="true" />
للحصول على مزيد من المعلومات حول إصدار الميزة، يمكنك الاطّلاع على FEATURE_VULKAN_HARDWARE_LEVEL.
android.hardware.vulkan.version
يستخدم التطبيق Vulkan. تشير هذه الميزة إلى أنّ التطبيق يتطلب تنفيذ Vulkan مع تسريع الأجهزة. يشير إصدار الميزة إلى الحد الأدنى من إصدار Vulkan API الذي يتطلبه التطبيق. على سبيل المثال، إذا كان تطبيقك يتطلّب توفُّر الإصدار 1.0 من Vulkan، يُرجى توضيح الميزات التالية:
<uses-feature
    android:name="android.hardware.vulkan.version"
    android:version="0x400003"
    android:required="true" />
للحصول على مزيد من التفاصيل حول إصدار الميزة، يمكنك الاطّلاع على FEATURE_VULKAN_HARDWARE_VERSION.

ميزات أجهزة Wi-Fi

android.hardware.wifi
يستخدم التطبيق ميزات شبكة 802.11 (Wi-Fi) على الجهاز.
android.hardware.wifi.direct
يستخدم التطبيق ميزات شبكة Wi-Fi المباشرة على الجهاز.

ميزات البرامج

يعرض هذا القسم ميزات البرامج المتوافقة مع أحدث إصدار من النظام الأساسي. للإشارة إلى أنّ تطبيقك يستخدم ميزة برمجية أو يتطلبها، يجب تحديد القيمة المقابلة، بدءًا من "android.software"، في سمة android:name. في كل مرة تعلن فيها عن ميزة برمجية، استخدِم عنصر <uses-feature> منفصلاً.

ميزات برامج الاتصال

android.software.sip
يستخدم التطبيق خدمات بروتوكول بدء الجلسة (SIP). من خلال استخدام SIP، يمكن للتطبيق أن يتوافق مع عمليات الاتصال الهاتفي على الإنترنت، مثل اجتماعات الفيديو والمراسلة الفورية.
android.software.sip.voip

يستخدم التطبيق خدمات بروتوكول الصوت عبر الإنترنت (VoIP) المستنِدة إلى بروتوكول بدء الجلسة (SIP). باستخدام بروتوكول VoIP، يمكن للتطبيق أن يدعم عمليات الاتصال الهاتفي على الإنترنت في الوقت الفعلي، مثل اجتماعات الفيديو الثنائية.

عند استخدام هذه الميزة، يشير التطبيق إلى أنّه يستخدم أيضًا ميزة android.software.sip، ما لم يتم الإعلان عن هذه الميزة الرئيسية من خلال السمة android:required="false".

android.software.webview
يعرض التطبيق محتوى من الإنترنت.

ميزات برنامج الإدخال المخصص

android.software.input_methods
يستخدم التطبيق أسلوب إدخال جديدًا، يعرّفه مطوِّر البرامج في InputMethodService.

ميزات برامج إدارة الأجهزة

android.software.backup
يشتمل التطبيق على أسلوب منطقي للتعامل مع عملية الاحتفاظ بنسخة احتياطية والاستعادة.
android.software.device_admin
يستخدم التطبيق مشرفي الجهاز لفرض سياسة جهاز.
android.software.managed_users
يتوافق التطبيق مع المستخدمين الثانويين والملفات الشخصية المُدارة.
android.software.securely_removes_users
يمكن للتطبيق إزالة المستخدمين والبيانات المرتبطة بهم بشكل نهائي.
android.software.verified_boot
يتضمّن التطبيق أسلوبًا منطقيًا للتعامل مع نتائج ميزة التشغيل المتحقَّق منه للجهاز، والتي ترصد ما إذا كانت إعدادات الجهاز تتغير أثناء عملية إعادة التشغيل.

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

android.software.midi
يتصل التطبيق بالآلات الموسيقية أو يخرج صوتًا باستخدام بروتوكول الواجهة الرقمية للآلات الموسيقية (MIDI).
android.software.print
يتضمن التطبيق أوامر لطباعة المستندات المعروضة على الجهاز.
android.software.leanback
تم تصميم التطبيق للتشغيل على أجهزة Android TV.
android.software.live_tv
يبث التطبيق برامج تلفزيونية مباشرة.

ميزات برنامج واجهة الشاشة

android.software.app_widgets
يستخدم التطبيق "التطبيقات المصغّرة" أو يوفّرها، وهو مخصّص فقط للأجهزة التي تتضمّن شاشة رئيسية أو موقعًا مشابهًا حيث يمكن للمستخدمين تضمين "التطبيقات المصغّرة".
android.software.home_screen
يعمل التطبيق كبديل للشاشة الرئيسية للجهاز.
android.software.live_wallpaper
يستخدم التطبيق أو يوفّر خلفيات تتضمّن صورًا متحركة.

الأذونات التي تشير ضمنًا إلى متطلبات الميزات

تتوفّر بعض الثوابت الخاصة بميزات الأجهزة والبرامج للتطبيقات بعد واجهة برمجة التطبيقات المقابلة لها. ولهذا السبب، قد تستخدم بعض التطبيقات واجهة برمجة التطبيقات قبل أن تعلن عن أنّها تطلب واجهة برمجة التطبيقات باستخدام نظام <uses-feature>.

ولمنع إتاحة هذه التطبيقات عن غير قصد، يفترض Google Play أنّ بعض الأذونات المرتبطة بالأجهزة تشير إلى أنّ ميزات الأجهزة الأساسية مطلوبة تلقائيًا. على سبيل المثال، يجب أن تطلب التطبيقات التي تستخدم البلوتوث إذن BLUETOOTH في عنصر <uses-permission>.

بالنسبة إلى التطبيقات القديمة، يفترض Google Play أنّ بيان الأذونات يعني أنّ التطبيق يطلب ميزة android.hardware.bluetooth الأساسية، ويضبط إعدادات الفلترة استنادًا إلى هذه الميزة. يسرد الجدول 2 الأذونات التي تشير ضمنًا إلى متطلبات ميزات مكافئة للأذونات التي تم تعريفها في عناصر <uses-feature>.

إنّ تصريحات <uses-feature>، بما في ذلك أي سمة android:required معرَّفة، تحظى دائمًا بالأولوية على الميزات التي تتضمّنها الأذونات الواردة في الجدول 2. بالنسبة إلى أي من هذه الأذونات، يمكنك إيقاف الفلترة استنادًا إلى الميزة الضمنية من خلال الإعلان صراحةً عن الميزة في عنصر <uses-feature> مع ضبط السمة required على false.

على سبيل المثال، لإيقاف الفلترة المستندة إلى إذن CAMERA، أضِف تعريفات <uses-feature> التالية إلى ملف البيان:

<uses-feature android:name="android.hardware.camera" android:required="false" />
<uses-feature android:name="android.hardware.camera.autofocus" android:required="false" />

تنبيه: إذا كان تطبيقك يستهدف الإصدار Android 5.0 (المستوى 21 لواجهة برمجة التطبيقات) أو إصدارًا أحدث ويستخدم الإذن ACCESS_COARSE_LOCATION أو ACCESS_FINE_LOCATION لتلقّي تحديثات الموقع الجغرافي من الشبكة أو من نظام تحديد المواقع العالمي (GPS)، على التوالي، عليك الإفصاح صراحةً عن أنّ تطبيقك يستخدم ميزات أجهزة android.hardware.location.network أو android.hardware.location.gps.

الجدول 2. أذونات الأجهزة التي تشير ضمنًا إلى استخدام الأجهزة

الفئة الإذن متطلبات الميزة الضمنية
البلوتوث BLUETOOTH android.hardware.bluetooth

لمزيد من التفاصيل، يمكنك الاطّلاع على التعامل الخاص مع ميزة البلوتوث.

BLUETOOTH_ADMIN android.hardware.bluetooth
الكاميرا CAMERA android.hardware.camera
android.hardware.camera.autofocus
الموقع الجغرافي ACCESS_MOCK_LOCATION android.hardware.location
ACCESS_LOCATION_EXTRA_COMMANDS android.hardware.location
INSTALL_LOCATION_PROVIDER android.hardware.location
ACCESS_COARSE_LOCATION

android.hardware.location

android.hardware.location.network (فقط عندما يكون مستوى واجهة برمجة التطبيقات المستهدَف 20 أو أقل).

ACCESS_FINE_LOCATION

android.hardware.location

android.hardware.location.gps (فقط عندما يكون مستوى واجهة برمجة التطبيقات المستهدَف 20 أو أقل).

الميكروفون RECORD_AUDIO android.hardware.microphone
التلفونية CALL_PHONE android.hardware.telephony
CALL_PRIVILEGED android.hardware.telephony
MODIFY_PHONE_STATE android.hardware.telephony
PROCESS_OUTGOING_CALLS android.hardware.telephony
READ_SMS android.hardware.telephony
RECEIVE_SMS android.hardware.telephony
RECEIVE_MMS android.hardware.telephony
RECEIVE_WAP_PUSH android.hardware.telephony
SEND_SMS android.hardware.telephony
WRITE_APN_SETTINGS android.hardware.telephony
WRITE_SMS android.hardware.telephony
Wi-Fi ACCESS_WIFI_STATE android.hardware.wifi
CHANGE_WIFI_STATE android.hardware.wifi
CHANGE_WIFI_MULTICAST_STATE android.hardware.wifi