يستخدم 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>
.
minSdkVersion ... |
targetSdkVersion هي |
النتيجة |
---|---|---|
<uses-sdk> |
4 أو أقل | لا يفلتر Google Play التطبيق من أي أجهزة
بناءً على دعمها الذي تم الإبلاغ عنه لميزة android.hardware.bluetooth . |
4 أو أقل | أكثر من أو يساوي 5 | يُفلتِر Google Play التطبيق من أي أجهزة لا تتوافق مع ميزة android.hardware.bluetooth (��ما في ذلك الإصدارات القديمة). |
أكثر من أو يساوي 5 | أكثر من أو يساوي 5 |
توضّح الأمثلة التالية تأثيرات الفلترة المختلفة استنادًا إلى كيفية تعامل Google Play مع ميزة البلوتوث.
-
في المثال الأول، يعلن التطبيق المصمّم للعمل على مستويات قديمة من واجهة برمجة التطبيقات
عن إذن بلوتوث ولكنه لا يذكر ميزة البلوتوث في
عنصر
- النتيجة: لا يفلتر Google Play التطبيق من أي جهاز.
<uses-feature>
.
<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>
-
أخيرًا، في الحالة التالية، يضيف التطبيق نفسه سمة
- النتيجة: يوقف Google Play الفلترة استنادًا إلى إتاحة ميزة البلوتوث لجميع الأجهزة.
android:required="false"
.
<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 لتحديد الميزات التي يتطلبها تطبيقك.
لاستخدام الأداة، يُرجى اتباع الخطوات التالية:
- يمكنك إنشاء تطبيقك وتصديره كملف APK غير موقَّع.
إذا كنت تريد تطوير تطبيقك في "استوديو Android"، عليك إنشاء تطبيقك باستخدام Gradle على النحو التالي:
- افتح المشروع واختَر تشغيل > تعديل عمليات الضبط.
- اختَر علامة الجمع بالقرب من أعلى يمين نافذة Run/Debug Configurations.
- اختَر Gradle.
- أدخِل "حزمة APK غير موقَّعة" في حقل الاسم.
- اختر وحدتك من قسم مشروع Gradle.
- أدخِل "تجميع" في مهام Google.
- انقر على حسنًا لإكمال الإعدادات الجديدة.
- تأكد من تحديد إعداد ت��غيل ح��مة APK غير الموقَّعة في شريط الأدوات، ثم اختَر تشغيل > تشغيل 'حزمة APK غير مُوقَّعة'.
<ProjectName>/app/build/outputs/apk/
. - حدِّد موقع أداة
aapt2
إذا لم تكن متضمّنة في المسار PATH. إذا كنت تستخدم الإصدار 8 أو إصدارًا أحدث من "أدوات SDK"، يمكنك العثور علىaapt2
في دليل<SDK>/build-tools/<tools version number>
.ملاحظة: يجب استخدام إصدار
aapt2
المتوفّر لأحدث مكوّنات Build-Tools المتاحة. إذا لم يكن لديك أحدث مكوّن من أدوات الإنشاء، يمكنك تنزيله باستخدام Android SDK Manager. - تشغيل
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
.
الفئة | الإذن | متطلبات الميزة الضمنية |
---|---|---|
البلوتوث | 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 |
|
|
ACCESS_FINE_LOCATION |
|
|
الميكروفون | 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 |