<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 بت السفلية الرقم الثانوي. على سبيل المثال، لتحديد إصدار OpenGL ES 2.0، يمكنك ضبط القيمة على "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 وOpenGL ES 2.0، يجب تحديد أنّه يتطلّب استخدام OpenGL ES 2.0.

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

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

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

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

يفرِّط Google Play في التطبيقات التي تظهر للمستخدمين لكي يتمكنوا من الاطّلاع على التطبيقات المتوافقة مع أجهزتهم وتنزيلها فقط. وإحدى طرق فلترة التطبيقات هي من خلال ملاءمة ميزاتها.

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

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

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

عندما يشغّل المستخدم Google Play، يطلب التطبيق من مدير الحِزم قائمة الميزات المتاحة على الجهاز من خلال الاتصال getSystemAvailableFeatures(). بعد ذلك، يُرسِل تطبيق المتجر قائمة الميزات إلى 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"] إذا كنت تتمكّن من compiling مع المستوى 5 من واجهة برمجة التطبيقات أو مستوى أعلى.

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

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

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

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

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

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

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

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

قد يتطلّب التطبيق ميزة معيّنة بدون الإفصاح عنها لأسباب مثل ما يلي:

  • تم تجميع التطبيق باستخدام إصدار قديم من مكتبة Android (Android 1.5 أو إصدار أقدم)، ولا يتوفّر فيه العنصر <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 قواعد مختلفة قليلاً عن تلك الموضّحة في المثال السابق عند تحديد عملية الفلترة لتقنية Bluetooth.

إذا كان التطبيق يعلن عن إذن بلوتوث في عنصر <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>
في المثال الثاني، يعلن التطبيق نفسه أيضًا عن مستوى targeted API‏ "5".
النتيجة: يفترض Google Play الآن أنّ الميزة مطلوبة ويصنّف التطبيق على أنّه غير متوافق مع جميع الأجهزة التي لا تشير إلى توفّر تقنية Bluetooth، ويشمل ذلك الأجهزة التي تعمل بإصدارات قديمة من المنصة.
<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. إذا كنت تستخدم الإصدار r8 من "أدوات حِزم تطوير البرامج (SDK)" أو إصدارًا أحدث، يمكنك العثور على aapt2 في الدليل <SDK>/build-tools/<tools version number>.

    ملاحظة: يجب استخدام إصدار aapt2 المقدَّم لأحدث مكوّن Build-Tools متاح. إذا لم يكن لديك أحدث مكوّن من حزمة Build-Tools، نزِّله باستخدام مدير حزمة تطوير البرامج (SDK) لنظام التشغيل Android.

  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"، سيفلتر Google Play الأجهزة التي لا تحتوي على أمامية (مثل أجهزة Chromebook). إذا كان تطبيقك متوافقًا مع الأجهزة المزوّدة بكاميرات أمامية فقط، أدرِج 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 بدلاً منه.)

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

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

تم تصميم التطبيق لعرض واجهة المستخدم على أجهزة Chromebook. تعمل هذه الميزة على إيقاف ميزة emulatioin لإدخال الماوس ولوحة اللمس، لأنّ أجهزة 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
يستخدم التطبيق مجموعة إضافات OpenGL ES لنظام التشغيل Android المثبَّتة على الجهاز.

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

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".

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

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

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

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

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

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

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

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

تحذير: إذا كان تطبيقك يستهدف الإصدار 5.0 من نظام التشغيل Android (المستوى 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