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>
اعلام می کند، قوانین عادی فیلتر را اعمال می کند.
minSdkVersion ... | targetSdkVersion است | نتیجه |
---|---|---|
<uses-sdk> اعلام نشده است | <=4 | Google Play برنامه را از هیچ دستگاهی بر اساس پشتیبانی گزارش شده آنها از ویژگی android.hardware.bluetooth فیلتر نمی کند . |
<=4 | >=5 | Google Play برنامه را از هر دستگاهی که از ویژگی android.hardware.bluetooth پشتیبانی نمی کند (از جمله نسخه های قدیمی تر) فیلتر می کند. |
>=5 | >=5 |
مثالهای زیر اثرات فیلترینگ مختلف را بر اساس نحوه مدیریت Google Play از ویژگی بلوتوث نشان میدهند.
- در مثال اول، برنامهای که برای اجرا در سطوح API قدیمیتر طراحی شده است، مجوز بلوتوث را اعلام میکند اما ویژگی بلوتوث را در عنصر
- نتیجه: Google Play برنامه را از هیچ دستگاهی فیلتر نمی کند.
<uses-feature>
اعلام نمیکند.<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>
- در نهایت، در حالت زیر، همان برنامه یک ویژگی
- نتیجه: 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
موجود در Android SDK برای تعیین اینکه چگونه Google Play برنامه شما را بر اساس ویژگیها و مجوزهای اعلام شده فیلتر میکند، استفاده کنید. برای انجام این کار، aapt2
با دستور dump badging
اجرا کنید. این باعث میشود aapt2
مانیفست برنامه شما را تجزیه کند و همان قوانینی را که Google Play برای تعیین ویژگیهای مورد نیاز برنامه شما استفاده میکند، اعمال کند.
برای استفاده از ابزار، مراحل زیر را دنبال کنید:
- برنامه خود را به عنوان یک APK بدون امضا بسازید و صادر کنید. اگر در اندروید استودیو توسعه می دهید، اپلیکیشن خود را با Gradle به صورت زیر بسازید:
- پروژه را باز کنید و Run > Edit Configurations را انتخاب کنید.
- علامت مثبت را در گوشه سمت چپ بالای پنجره Run/Debug Configurations انتخاب کنید.
- Gradle را انتخاب کنید.
- "APK بدون امضا" را در نام وارد کنید.
- ماژول خود را از بخش پروژه Gradle انتخاب کنید.
- در Tasks "assemble" را وارد کنید.
- برای تکمیل پیکربندی جدید، OK را انتخاب کنید.
- مطمئن شوید که پیکربندی اجرای بدون امضای APK در نوار ابزار انتخاب شده است و سپس Run > Run 'Unsigned APK' را انتخاب کنید.
< ProjectName >/app/build/outputs/apk/
پیدا کنید. - ابزار
aapt2
را پیدا کنید، اگر قبلاً در PATH شما نیست. اگر از SDK Tools r8 یا بالاتر استفاده می کنید، می توانیدaapt2
در فهرست< SDK >/build-tools/< tools version number >
پیدا کنید.توجه: باید از نسخه
aapt2
که برای آخرین کامپوننت Build-Tools موجود است استفاده کنید. اگر آخرین مؤلفه 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 فرض میکند که این ویژگی ضروری است و از دسترسی دستگاههایی که از این ویژگی پشتیبانی نمیکنند به برنامه شما جلوگیری میکند.
پشتیبانی از صفحه نمایش بزرگ
برخی از دستگاه های صفحه نمایش بزرگ از همه ویژگی های دوربین پشتیبانی نمی کنند. کرومبوکها معمولاً دوربین پشتی (جهانی)، فوکوس خودکار یا فلاش ندارند. اما کرومبوکها دوربینهای جلویی (رو به کاربر) دارند و اغلب به دوربینهای خارجی متصل هستند.
برای ارائه پشتیبانی اولیه از دوربین و در دسترس قرار دادن برنامه خود برای هر چه بیشتر دستگاهها، تنظیمات ویژگی دوربین زیر را به مانیفست برنامه خود اضافه کنید:
<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
ویژگی های سخت افزاری.
دسته بندی | اجازه | ضمنی مورد نیاز ویژگی |
---|---|---|
بلوتوث | 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 | |
وای فای | ACCESS_WIFI_STATE | android.hardware.wifi |
CHANGE_WIFI_STATE | android.hardware.wifi | |
CHANGE_WIFI_MULTICAST_STATE | android.hardware.wifi |