<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>
توضیحات:

یک ویژگی سخت افزاری یا نرم افزاری را که توسط برنامه استفاده می شود، اعلام می کند.

هدف از بیانیه <uses-feature> اطلاع رسانی به هر نهاد خارجی از مجموعه ویژگی های سخت افزاری و نرم افزاری است که برنامه شما به آنها وابسته است. این عنصر یک ویژگی required را ارائه می دهد که به شما امکان می دهد تعیین کنید که آیا برنامه شما نیاز دارد و نمی تواند بدون ویژگی اعلام شده کار کند یا ترجیح می دهد این ویژگی را داشته باشد اما می تواند بدون آن کار کند.

از آنجایی که پشتیبانی از ویژگی‌ها می‌تواند در دستگاه‌های Android متفاوت باشد، عنصر <uses-feature> نقش مهمی در اجازه دادن به یک برنامه کاربردی برای توصیف ویژگی‌های متغیر دستگاهی که استفاده می‌کند، ایفا می‌کند.

مجموعه‌ای از ویژگی‌های موجود که برنامه شما اعلام می‌کند با مجموعه ثابت‌های ویژگی که توسط Android PackageManager در دسترس قرار گرفته است، مطابقت دارد. ثابت‌های ویژگی در بخش مرجع ویژگی‌ها در این سند فهرست شده‌اند.

شما باید هر ویژگی را در یک عنصر <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> فقط برای دستگاه‌هایی فعال می‌شود که API سطح 4 یا بالاتر دارند، این عناصر را برای همه برنامه‌ها لحاظ کنید، حتی اگر minSdkVersion 3 یا پایین‌تر باشد. دستگاه‌هایی که نسخه‌های قدیمی‌تر پلتفرم را اجرا می‌کنند، این عنصر را نادیده می‌گیرند.

توجه: هنگام اعلام یک ویژگی، به یاد داشته باشید که باید مجوزهای لازم را نیز درخواست کنید. برای مثال، قبل از اینکه برنامه شما بتواند به دوربین API دسترسی پیدا کند، باید مجوز 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 را ببینید.

معرفی شده در:
API سطح 4
همچنین ببینید:

Google Play و فیلتر مبتنی بر ویژگی

Google Play برنامه هایی را که برای کاربران قابل مشاهده است فیلتر می کند تا کاربران بتوانند فقط برنامه هایی را ببینند و دانلود کنند که با دستگاه آنها سازگار است. یکی از راه‌هایی که برنامه‌ها را فیلتر می‌کند، سازگاری با ویژگی‌ها است.

برای تعیین سازگاری ویژگی برنامه با دستگاه کاربر معین، Google Play مقایسه می کند:

  • ویژگی های مورد نیاز برنامه، همانطور که در عناصر <uses-feature> در مانیفست برنامه اعلام شده است.
  • ویژگی های موجود در دستگاه، به صورت سخت افزاری یا نرم افزاری، همانطور که با استفاده از ویژگی های سیستم فقط خواندنی گزارش شده است.

برای مقایسه دقیق ویژگی‌ها، Android Package Manager مجموعه مشترکی از ثابت‌های ویژگی را ارائه می‌کند که هم برنامه‌ها و هم دستگاه‌ها از آن برای اعلام نیازهای ویژگی و پشتیبانی استفاده می‌کنند. ثابت‌های ویژگی موجود در بخش مرجع ویژگی‌ها در این سند و در مستندات کلاس برای PackageManager فهرست شده‌اند.

هنگامی که کاربر Google Play را راه‌اندازی می‌کند، برنامه با فراخوانی getSystemAvailableFeatures() از مدیر بسته برای لیست ویژگی‌های موجود در دستگاه سؤال می‌کند. سپس برنامه فروشگاه هنگام ایجاد جلسه برای کاربر، لیست ویژگی‌ها را به Google Play منتقل می‌کند.

هر بار که برنامه ای را در کنسول Google Play آپلود می کنید، 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"] باشد اگر در حال کامپایل کردن بر اساس سطح API 5 یا بالاتر هستید، ویژگی android:required=["true" | "false"] .

این به شما امکان می‌دهد مشخص کنید که آیا برنامه به این ویژگی نیاز دارد و نمی‌تواند بدون آن به درستی کار کند ( "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 در API موجود نیست و 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 بر اساس یک ویژگی ضمنی خاص فیلتر شود، این ویژگی را صریحاً در عنصر <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 فیلتر کردن ویژگی بلوتوث را تنها در صورتی فعال می کند که برنامه پایین ترین یا هدفمندترین پلتفرم خود را اندروید 2.0 (سطح API 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 از ویژگی بلوتوث نشان می‌دهند.

در مثال اول، برنامه‌ای که برای اجرا در سطوح API قدیمی‌تر طراحی شده است، مجوز بلوتوث را اعلام می‌کند اما ویژگی بلوتوث را در عنصر <uses-feature> اعلام نمی‌کند.
نتیجه: Google Play برنامه را از هیچ دستگاهی فیلتر نمی کند.
<manifest ...>
    <uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
    <uses-sdk android:minSdkVersion="3" />
    ...
</manifest>
در مثال دوم، همان برنامه یک سطح API هدف را "5" اعلام می کند.
نتیجه: Google Play اکنون فرض می‌کند که این ویژگی مورد نیاز است و برنامه را از همه دستگاه‌هایی که پشتیبانی بلوتوث را گزارش نمی‌کنند، از جمله دستگاه‌هایی که نسخه‌های قدیمی‌تر پلتفرم را اجرا می‌کنند، فیلتر می‌کند.
<manifest ...>
    <uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
    <uses-sdk android:minSdkVersion="3" android:targetSdkVersion="5" />
    ...
</manifest>
در اینجا، همان برنامه اکنون به طور خاص ویژگی بلوتوث را اعلام می کند.
نتیجه: مشابه مثال قبلی: فیلتر اعمال می شود.
<manifest ...>
    <uses-feature android:name="android.hardware.bluetooth" />
    <uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
    <uses-sdk android:minSdkVersion="3" android:targetSdkVersion="5" />
    ...
</manifest>
در نهایت، در حالت زیر، همان برنامه یک ویژگی android:required="false" اضافه می کند.
نتیجه: Google Play فیلتر کردن را بر اساس پشتیبانی از ویژگی بلوتوث برای همه دستگاه‌ها غیرفعال می‌کند.
<manifest ...>
    <uses-feature android:name="android.hardware.bluetooth" android:required="false" />
    <uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
    <uses-sdk android:minSdkVersion="3" android:targetSdkVersion="5" />
    ...
</manifest>

ویژگی های مورد نیاز برنامه خود را تست کنید

می‌توانید از ابزار aapt2 موجود در Android SDK برای تعیین اینکه چگونه Google Play برنامه شما را بر اساس ویژگی‌ها و مجوزهای اعلام شده فیلتر می‌کند، استفاده کنید. برای انجام این کار، aapt2 با دستور dump badging اجرا کنید. این باعث می‌شود aapt2 مانیفست برنامه شما را تجزیه کند و همان قوانینی را که Google Play برای تعیین ویژگی‌های مورد نیاز برنامه شما استفاده می‌کند، اعمال کند.

برای استفاده از ابزار، مراحل زیر را دنبال کنید:

  1. برنامه خود را به عنوان یک APK بدون امضا بسازید و صادر کنید. اگر در اندروید استودیو توسعه می دهید، اپلیکیشن خود را با Gradle به صورت زیر بسازید:
    1. پروژه را باز کنید و Run > Edit Configurations را انتخاب کنید.
    2. علامت مثبت را در گوشه سمت چپ بالای پنجره Run/Debug Configurations انتخاب کنید.
    3. Gradle را انتخاب کنید.
    4. "APK بدون امضا" را در نام وارد کنید.
    5. ماژول خود را از بخش پروژه Gradle انتخاب کنید.
    6. در Tasks "assemble" را وارد کنید.
    7. برای تکمیل پیکربندی جدید، OK را انتخاب کنید.
    8. مطمئن شوید که پیکربندی اجرای بدون امضای APK در نوار ابزار انتخاب شده است و سپس Run > Run 'Unsigned APK' را انتخاب کنید.
    می توانید APK امضا نشده خود را در فهرست < ProjectName >/app/build/outputs/apk/ پیدا کنید.
  2. ابزار aapt2 را پیدا کنید، اگر قبلاً در PATH شما نیست. اگر از SDK Tools r8 یا بالاتر استفاده می کنید، می توانید aapt2 در فهرست < SDK >/build-tools/< tools version number > پیدا کنید.

    توجه: باید از نسخه aapt2 که برای آخرین کامپوننت Build-Tools موجود است استفاده کنید. اگر آخرین مؤلفه Build-Tools را ندارید، آن را با استفاده از Android SDK Manager دانلود کنید.

  3. aapt2 با استفاده از این نحو اجرا کنید:
$ aapt2 dump badging <path_to_exported_.apk>

در اینجا نمونه ای از خروجی فرمان برای مثال دوم بلوتوث نشان داده شده است:

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

مرجع ویژگی ها

بخش‌های زیر اطلاعات مرجعی درباره ویژگی‌های سخت‌افزار، ویژگی‌های نرم‌افزار، و مجموعه‌ای از مجوزها ارائه می‌دهند که مستلزم الزامات ویژگی خاص هستند.

ویژگی های سخت افزاری

این بخش ویژگی‌های سخت‌افزاری را ارائه می‌کند که توسط جدیدترین نسخه پلتفرم پشتیبانی می‌شوند. برای نشان دادن اینکه برنامه شما از یک ویژگی سخت افزاری استفاده می کند یا به آن نیاز دارد، مقدار مربوطه را که با "android.hardware" شروع می شود، در یک ویژگی android:name اعلام کنید. هر بار که یک ویژگی سخت افزاری را اعلام می کنید، از یک عنصر جداگانه <uses-feature> استفاده کنید.

ویژگی های سخت افزار صوتی

android.hardware.audio.low_latency
این برنامه از خط لوله صوتی کم تأخیر دستگاه استفاده می کند که تأخیر و تأخیر را هنگام پردازش ورودی یا خروجی صدا کاهش می دهد.
android.hardware.audio.output
این برنامه صدا را با استفاده از بلندگوهای دستگاه، جک صدا، قابلیت پخش بلوتوث یا مکانیزم مشابه منتقل می کند.
android.hardware.audio.pro
این برنامه از قابلیت های صوتی پیشرفته و قابلیت های عملکرد دستگاه استفاده می کند.
android.hardware.microphone
این برنامه با استفاده از میکروفون دستگاه صدا را ضبط می کند.

ویژگی های سخت افزاری بلوتوث

android.hardware.bluetooth
این برنامه از ویژگی های بلوتوث دستگاه، معمولاً برای برقراری ارتباط با سایر دستگاه های دارای بلوتوث استفاده می کند.
android.hardware.bluetooth_le
این برنامه از ویژگی های رادیویی کم انرژی بلوتوث دستگاه استفاده می کند.

ویژگی های سخت افزاری دوربین

توجه: برای جلوگیری از فیلتر غیرضروری برنامه خود توسط Google Play، android:required="false" را به هر ویژگی دوربینی که برنامه شما بدون آن کار می کند اضافه کنید. در غیر این صورت، Google Play فرض می‌کند که این ویژگی ضروری است و از دسترسی دستگاه‌هایی که از این ویژگی پشتیبانی نمی‌کنند به برنامه شما جلوگیری می‌کند.

پشتیبانی از صفحه نمایش بزرگ

برخی از دستگاه های صفحه نمایش بزرگ از همه ویژگی های دوربین پشتیبانی نمی کنند. کروم‌بوک‌ها معمولاً دوربین پشتی (جهانی)، فوکوس خودکار یا فلاش ندارند. اما کروم‌بوک‌ها دوربین‌های جلویی (رو به کاربر) دارند و اغلب به دوربین‌های خارجی متصل هستند.

برای ارائه پشتیبانی اولیه از دوربین و در دسترس قرار دادن برنامه خود برای هر چه بیشتر دستگاه‌ها، تنظیمات ویژگی دوربین زیر را به مانیفست برنامه خود اضافه کنید:

<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

این برنامه از دوربین پشتی دستگاه (جهان رو به رو) استفاده می کند.

احتیاط: دستگاه‌هایی مانند کروم‌بوک‌ها که فقط دوربین جلو (رو به کاربر) دارند، از این ویژگی پشتیبانی نمی‌کنند. اگر برنامه شما می‌تواند از هر دوربینی استفاده کند، بدون توجه به جهتی که دوربین رو به آن قرار دارد، از 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 فیلتر می‌شوند. بازی کنید. اگر برنامه شما از دستگاه‌هایی فقط با دوربین جلو پشتیبانی می‌کند، 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-pad، به جای نشانگر ماوس، است. یا دستگاه لمسی

android.hardware.type.watch
این برنامه برای نشان دادن رابط کاربری خود در ساعت طراحی شده است. ساعت روی بدن مانند روی مچ بسته می شود. کاربر هنگام تعامل با دستگاه بسیار به آن نزدیک است.
android.hardware.type.pc

این برنامه به گونه ای طراحی شده است که رابط کاربری خود را در کروم بوک ها نشان دهد. این ویژگی شبیه‌سازی ورودی ماوس و پد لمسی را غیرفعال می‌کند، زیرا کروم‌بوک‌ها از سخت‌افزار ماوس و پد لمسی استفاده می‌کنند. ورودی ماوس را ببینید.

توجه: برای این عنصر required="false" تنظیم کنید. در غیر این صورت، فروشگاه Google Play برنامه شما را برای دستگاه‌هایی غیر از Chromebook در دسترس قرار نمی‌دهد.

ویژگی های سخت افزار اثر انگشت

android.hardware.fingerprint
این اپلیکیشن اثر انگشت را با استفاده از سخت افزار بیومتریک دستگاه می خواند.

ویژگی های سخت افزاری گیم پد

android.hardware.gamepad
این برنامه ورودی کنترلر بازی را از خود دستگاه یا از یک گیم پد متصل می گیرد.

ویژگی های سخت افزار مادون قرمز

android.hardware.consumerir
این برنامه از قابلیت‌های مادون قرمز (IR) دستگاه استفاده می‌کند، معمولاً برای برقراری ارتباط با سایر دستگاه‌های 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
این برنامه از ویژگی های رادیویی Near-Field Communication (NFC) دستگاه استفاده می کند.
android.hardware.nfc.hce

این برنامه از شبیه سازی کارت NFC استفاده می کند که روی دستگاه میزبانی می شود.

ویژگی های سخت افزاری OpenGL ES

android.hardware.opengles.aep
این برنامه از بسته برنامه افزودنی اندروید 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 (سطح API 12) یا پایین تر است، از جهت افقی و عمودی پشتیبانی می کند.

ویژگی های سخت افزاری تلفن

android.hardware.telephony
این برنامه از ویژگی های تلفنی دستگاه مانند رادیو تلفن با خدمات ارتباط داده استفاده می کند.
android.hardware.telephony.cdma

این برنامه از سیستم رادیویی تلفنی Code Division Multiple Access (CDMA) استفاده می کند.

با استفاده از این ویژگی، یک برنامه به این معنی است که از ویژگی android.hardware.telephony نیز استفاده می کند، مگر اینکه این ویژگی والد با android:required="false" اعلان شده باشد.

android.hardware.telephony.gsm

این برنامه از سیستم رادیویی تلفنی سیستم جهانی ارتباطات سیار (GSM) استفاده می کند.

با استفاده از این ویژگی، یک برنامه به این معنی است که از ویژگی android.hardware.telephony نیز استفاده می کند، مگر اینکه این ویژگی والد با android:required="false" اعلان شده باشد.

ویژگی های سخت افزاری صفحه لمسی

android.hardware.faketouch

این برنامه از رویدادهای اولیه تعامل لمسی مانند ضربه زدن و کشیدن استفاده می کند.

هنگامی که به عنوان مورد نیاز اعلام می شود، این ویژگی نشان می دهد که برنامه تنها در صورتی با دستگاهی سازگار است که آن دستگاه دارای صفحه نمایش لمسی تقلبی شبیه سازی شده باشد یا صفحه لمسی واقعی داشته باشد.

دستگاهی که رابط لمسی تقلبی ارائه می‌کند، سیستم ورودی کاربر را ارائه می‌کند که زیرمجموعه‌ای از قابلیت‌های صفحه لمسی را شبیه‌سازی می‌کند. به عنوان مثال، یک ماوس یا کنترل از راه دور ممکن است نشانگر روی صفحه را هدایت کند.

اگر برنامه شما به تعامل نقطه و کلیک اولیه نیاز دارد و فقط با یک کنترلر D-pad کار نمی کند، این ویژگی را اعلام کنید. از آنجا که این حداقل سطح تعامل لمسی است، می‌توانید از برنامه‌ای استفاده کنید که این ویژگی را در دستگاه‌هایی که رابط‌های لمسی پیچیده‌تری ارائه می‌دهند، استفاده کنید.

برنامه ها به طور پیش فرض به ویژگی 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 multiTouch با یک رابط لمسی جعلی پشتیبانی می کنند ، از تمام حرکات پنج انگشت پشتیبانی نمی کند ، زیرا ورودی به حرکت نشانگر روی صفحه تبدیل می شود. یعنی حرکات تک انگشت روی چنین دستگاهی یک مکان نما را جابجا می کند ، حرکات چند انگشت باعث ایجاد حوادث لمس تک انگشت می شود و سایر حرکات چند انگشت باعث ایجاد حوادث لمسی چند انگشت می شوند.

دستگاهی که یک صفحه لمسی پنج انگشت برای حرکت مکان نما را فراهم می کند می تواند از این ویژگی پشتیبانی کند.

android.hardware.touchscreen

این برنامه از قابلیت های صفحه لمسی دستگاه برای حرکات استفاده می کند که تعاملی تر از رویدادهای لمسی اساسی مانند یک پرواز هستند. این یک سوپراست از ویژگی android.hardware.faketouch است.

به طور پیش فرض ، همه برنامه ها به این ویژگی نیاز دارند و بنابراین در دسترس دستگاه هایی نیستند که فقط یک رابط "لمس جعلی" ارائه شده را ارائه می دهند. شما می توانید برنامه خود را در دستگاه هایی که یک رابط لمسی جعلی یا حتی در دستگاه هایی که فقط یک کنترلر D-PAD را ارائه می دهند ، در دسترس قرار دهید ، با صریح اعلام کنید که یک صفحه لمسی با استفاده از android.hardware.touchscreen با android:required="false" اگر برنامه شما از رابط صفحه لمسی واقعی استفاده می کند ، این اعلامیه را اضافه کنید. تمام برنامه هایی که صریحاً به android.hardware.touchscreen نیاز ندارند نیز روی دستگاه های android.hardware.faketouch کار می کنند.

اگر برنامه شما در واقع به یک رابط لمسی نیاز دارد ، مانند انجام حرکات لمسی پیشرفته تر مانند Flings ، پس نیازی به اعلام ویژگی های رابط لمسی ندارید ، زیرا به طور پیش فرض مورد نیاز آنها هستند. با این حال ، بهتر است اگر صریحاً تمام ویژگی هایی را که برنامه خود از آن استفاده می کند ، اعلام کنید.

اگر به تعامل لمسی پیچیده تری مانند حرکات چند انگشت نیاز دارید ، اعلام کنید که برنامه شما از ویژگی های صفحه لمسی پیشرفته استفاده می کند.

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 پشتیبانی برنامه است. به عنوان مثال ، اگر برنامه شما به پشتیبانی 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
برنامه می تواند به طور دائم کاربران و داده های مرتبط آنها را حذف کند.
android.software.verified_boot
این برنامه شامل منطق برای رسیدگی به نتایج حاصل از ویژگی بوت تأیید شده دستگاه است که تشخیص می دهد که آیا پیکربندی دستگاه در طی یک عملیات راه اندازی مجدد تغییر می کند.

ویژگی های نرم افزار رسانه ای

android.software.midi
این برنامه با استفاده از پروتکل Instrument Digital Interface Interface (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
برنامه از تصاویر پس زمینه استفاده می کند یا شامل انیمیشن می شود.

مجوزهایی که دلالت بر نیازهای ویژگی دارد

برخی از ثابت های سخت افزاری و نرم افزاری پس از API مربوطه در دسترس برنامه ها قرار می گیرند. به همین دلیل ، برخی از برنامه ها ممکن است از API استفاده کنند قبل از اینکه بتوانند اعلام کنند که با استفاده از سیستم <uses-feature> به API نیاز دارند .

Google Play برای جلوگیری از در دسترس بودن این برنامه ها ، Google Play فرض می کند که مجوزهای مربوط به سخت افزار خاص نشان می دهد که ویژگی های سخت افزاری اساسی به طور پیش فرض مورد نیاز است. به عنوان مثال ، برنامه هایی که از بلوتوث استفاده می کنند باید مجوز BLUETOOTH در یک عنصر <uses-permission> درخواست کنند.

برای برنامه های Legacy ، 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 (API سطح 21) یا بالاتر را هدف قرار داده و از مجوز ACCESS_COARSE_LOCATION یا ACCESS_FINE_LOCATION برای دریافت به روزرسانی های مکان از شبکه یا GPS استفاده می کند ، به ترتیب باید اعلام کنید که برنامه شما از android.hardware.location.network استفاده می کند 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 (فقط وقتی سطح API هدف 20 یا پایین تر است.)

ACCESS_FINE_LOCATION

android.hardware.location

android.hardware.location.gps (فقط وقتی سطح API هدف 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
وای فای ACCESS_WIFI_STATE android.hardware.wifi
CHANGE_WIFI_STATE android.hardware.wifi
CHANGE_WIFI_MULTICAST_STATE android.hardware.wifi