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