Google Play menggunakan elemen <uses-feature>
yang dideklarasikan dalam manifes aplikasi untuk memfilter aplikasi dari perangkat
yang tidak memenuhi persyaratan fitur hardware dan software.
Dengan menentukan fitur yang diperlukan aplikasi, Anda mengaktifkan Google Play untuk menampilkan aplikasi hanya bagi pengguna yang perangkatnya memenuhi persyaratan fitur aplikasi, bukan menampilkannya kepada semua pengguna.
Untuk informasi penting tentang cara Google Play menggunakan fitur sebagai dasar pemfilteran, baca bagian Pemfilteran berbasis fitur dan Google Play.
- sintaksis:
-
<uses-feature android:name="string" android:required=["true" | "false"] android:glEsVersion="integer" />
- terdapat dalam:
<manifest>
- deskripsi:
Mendeklarasikan fitur hardware atau software tunggal yang digunakan aplikasi.
Tujuan deklarasi
<uses-feature>
adalah menginformasikan entity eksternal apa pun mengenai serangkaian fitur hardware dan software yang diperlukan aplikasi Anda agar berfungsi. Elemen ini menawarkan atributrequired
yang memungkinkan Anda menentukan apakah aplikasi memerlukan, dan tidak dapat berfungsi tanpa, fitur yang dideklarasikan atau lebih memilih untuk memiliki fitur, tetapi dapat berfungsi tanpanya.Karena dukungan fitur dapat beragam di seluruh perangkat Android, elemen
<uses-feature>
memiliki peran penting dalam memungkinkan aplikasi menjelaskan fitur variabel perangkat yang digunakannya.Rangkaian fitur tersedia yang dideklarasikan aplikasi Anda sesuai dengan rangkaian konstanta fitur yang disediakan oleh
PackageManager
Android. Konstanta fitur dicantumkan dalam bagian Referensi fitur di dokumen ini.Anda harus menentukan setiap fitur dalam elemen
<uses-feature>
terpisah, sehingga jika aplikasi memerlukan beberapa fitur, aplikasi akan mendeklarasikan beberapa elemen<uses-feature>
. Misalnya, aplikasi yang memerlukan fitur Bluetooth dan kamera di perangkat mendeklarasikan dua elemen ini:<uses-feature android:name="android.hardware.bluetooth" android:required="true" /> <uses-feature android:name="android.hardware.camera.any" android:required="true" />
Secara umum, selalu deklarasikan elemen
<uses-feature>
untuk semua fitur yang diperlukan aplikasi Anda.Elemen
<uses-feature>
dideklarasikan hanya sebagai informasi, yang berarti bahwa sistem Android sendiri tidak memeriksa dukungan fitur yang cocok pada perangkat sebelum menginstal aplikasi.Namun, layanan lainnya, seperti Google Play, dan aplikasi mungkin memeriksa deklarasi
<uses-feature>
aplikasi Anda sebagai bagian dari penanganan atau interaksi dengan aplikasi. Karena itu, Anda harus mendeklarasikan semua fitur yang digunakan aplikasi.Untuk beberapa fitur, mungkin ada atribut khusus yang memungkinkan Anda menentukan versi fitur, seperti versi Open GL yang digunakan (dideklarasikan dengan
glEsVersion
). Fitur lain yang mungkin ada atau tidak ada untuk perangkat, seperti kamera, dideklarasikan menggunakan atributname
.Meskipun elemen
<uses-feature>
hanya diaktifkan untuk perangkat yang menjalankan API Level 4 atau yang lebih tinggi, sertakan elemen ini untuk semua aplikasi, bahkan jikaminSdkVersion
adalah 3 atau lebih rendah. Perangkat yang menjalankan versi platform lama akan mengabaikan elemen tersebut.Catatan: Ketika mendeklarasikan fitur, ingat bahwa Anda juga harus meminta izin yang sesuai. Misalnya, Anda perlu meminta izin
CAMERA
sebelum aplikasi Anda dapat mengakses camera API. Meminta izin akan memberi aplikasi Anda akses ke hardware dan software yang tepat. Mendeklarasikan fitur yang digunakan oleh aplikasi akan membantu memastikan kompatibilitas perangkat yang tepat.- atribut:
-
-
android:name
- Menetapkan fitur hardware dan software tunggal yang digunakan oleh aplikasi sebagai string deskriptor. Nilai atribut yang valid tercantum dalam bagian Fitur hardware dan Fitur software. Nilai atribut ini peka huruf besar.
-
android:required
-
Nilai boolean yang menunjukkan bahwa aplikasi memerlukan fitur yang
ditetapkan di
android:name
.- Mendeklarasikan
android:required="true"
untuk sebuah fitur menunjukkan bahwa aplikasi tidak dapat berfungsi, atau tidak dirancang untuk berfungsi, jika fitur yang ditentukan tidak ada di perangkat. - Mendeklarasikan
android:required="false"
untuk sebuah fitur menunjukkan bahwa aplikasi menggunakan fitur tersebut jika ada pada perangkat, tetapi aplikasi dirancang untuk berfungsi tanpa fitur tertentu jika diperlukan.
Nilai default untuk
android:required
adalah"true"
. - Mendeklarasikan
android:glEsVersion
- Versi OpenGL ES yang diperlukan oleh aplikasi. 16 bit yang lebih tinggi
mewakili bilangan utama dan 16 bit yang lebih rendah menunjukkan bilangan minor. Misalnya,
untuk menentukan OpenGL ES versi 2.0, Anda menyetel nilai sebagai
"0x00020000", atau untuk menentukan OpenGL ES 3.2, Anda menyetel nilai sebagai "0x00030002".
Aplikasi menentukan maksimal satu atribut
android:glEsVersion
dalam manifesnya. Jika aplikasi menentukan lebih dari satu,android:glEsVersion
dengan nilai numerik tertinggi yang akan digunakan dan nilai-nilai lain diabaikan.Jika aplikasi tidak menentukan atribut
android:glEsVersion
, aplikasi dianggap hanya memerlukan OpenGL ES 1.0, yang didukung oleh semua perangkat Android.Aplikasi dapat berasumsi bahwa jika platform mendukung versi OpenGL ES yang diberikan, aplikasi juga mendukung semua versi OpenGL ES yang lebih rendah secara numerik. Oleh karena itu, untuk aplikasi yang memerlukan OpenGL ES 1.0 dan OpenGL ES 2.0, tentukan bahwa aplikasi memerlukan OpenGL ES 2.0.
Untuk aplikasi yang dapat bekerja dengan beberapa versi OpenGL ES, hanya tentukan versi OpenGL ES terendah secara numerik yang diperlukannya. Saat runtime, aplikasi dapat memeriksa apakah level OpenGL ES yang lebih tinggi tersedia.)
Untuk informasi penggunaan OpenGL ES lebih lanjut, termasuk cara memeriksa versi OpenGL ES yang didukung saat runtime, lihat Panduan OpenGL ES API.
-
- diperkenalkan di:
- API Level 4
- lihat juga:
Pemfilteran berbasis-fitur dan Google Play
Google Play memfilter aplikasi yang terlihat oleh pengguna, sehingga pengguna hanya dapat melihat dan mendownload aplikasi yang kompatibel dengan perangkat mereka. Salah satu cara memfilter aplikasi adalah dengan kompatibilitas fitur.
Untuk menentukan kompatibilitas fitur aplikasi dengan perangkat pengguna tertentu, Google Play membandingkan:
- Fitur yang diperlukan oleh aplikasi, seperti yang dideklarasikan dalam
elemen
<uses-feature>
dalam manifes aplikasi. - Fitur yang tersedia di perangkat, dalam hardware atau software, seperti yang dilaporkan menggunakan properti sistem hanya-baca.
Untuk membandingkan fitur secara akurat, Android Package Manager
menyediakan rangkaian konstanta fitur bersama yang digunakan aplikasi dan perangkat
untuk mendeklarasikan persyaratan dan dukungan fitur. Konstanta fitur yang tersedia
dicantumkan di bagian Referensi fitur
dalam dokumen ini dan di dokumentasi class untuk
PackageManager
.
Ketika pengguna meluncurkan Google Play, aplikasi akan melakukan kueri
pengelola paket untuk daftar fitur yang tersedia pada perangkat dengan memanggil
getSystemAvailableFeatures()
. Aplikasi
Store kemudian memberikan daftar fitur ke Google Play
saat membuat sesi untuk pengguna.
Setiap kali Anda mengupload aplikasi ke Konsol Google Play,
Google Play akan memindai file manifes aplikasi. Google Play mencari
elemen <uses-feature>
dan mengevaluasinya dalam kombinasi
dengan elemen lain, dalam beberapa kasus, seperti elemen <uses-sdk>
dan
<uses-permission>
. Setelah membuat
rangkaian fitur yang diperlukan aplikasi, Google Play menyimpan daftar tersebut secara internal sebagai
metadata yang terkait dengan APK aplikasi dan versi
aplikasi.
Ketika pengguna menelusuri atau menjelajahi aplikasi menggunakan aplikasi Google Play, layanan akan membandingkan fitur yang diperlukan oleh setiap aplikasi dengan fitur yang tersedia pada perangkat pengguna. Jika semua fitur yang diperlukan aplikasi terdapat pada perangkat, Google Play akan mengizinkan pengguna melihat aplikasi dan mendownloadnya.
Jika fitur yang diperlukan tidak didukung oleh perangkat, Google Play memfilter aplikasi sehingga tidak terlihat oleh pengguna atau tersedia untuk didownload.
Karena fitur yang Anda deklarasikan dalam elemen <uses-feature>
secara langsung memengaruhi cara Google Play memfilter aplikasi Anda, penting untuk memahami cara Google Play mengevaluasi manifes
aplikasi dan menentukan rangkaian fitur yang diperlukan. Bagian berikut memberikan informasi
selengkapnya.
Pemfilteran berdasarkan fitur yang dideklarasikan secara eksplisit
Fitur yang dideklarasikan secara eksplisit adalah fitur yang dideklarasikan aplikasi Anda dalam
elemen <uses-feature>
. Deklarasi fitur dapat menyertakan
atribut android:required=["true" | "false"]
jika Anda
melakukan kompilasi terhadap API level 5 atau yang lebih tinggi.
Hal ini memungkinkan Anda menentukan apakah
aplikasi memerlukan fitur tersebut dan tidak dapat berfungsi dengan baik
tanpanya ("true"
), atau menggunakan fitur tersebut
jika tersedia, tetapi dirancang untuk berjalan tanpanya ("false"
).
Google Play menangani fitur yang dideklarasikan secara eksplisit dengan cara ini:
- Jika fitur dideklarasikan secara eksplisit sebagai diperlukan, seperti ditunjukkan dalam contoh
berikut, Google Play akan menambahkan
fitur ke dalam daftar fitur yang diperlukan untuk aplikasi. Google Play kemudian
akan memfilter aplikasi dari pengguna pada perangkat yang tidak menyediakan fitur tersebut.
<uses-feature android:name="android.hardware.camera.any" android:required="true" />
- Jika fitur dideklarasikan secara eksplisit sebagai tidak diperlukan, seperti ditunjukkan dalam
contoh berikut, Google
Play tidak akan menambahkan fitur tersebut ke daftar fitur yang diperlukan. Karena
alasan tersebut, fitur tidak diperlukan yang dideklarasikan secara eksplisit tidak pernah dipertimbangkan saat
memfilter aplikasi. Meskipun perangkat tidak menyediakan fitur yang dideklarasikan,
Google Play tetap akan mempertimbangkan aplikasi yang kompatibel dengan
perangkat dan menampilkannya kepada pengguna, kecuali jika aturan pemfilteran lain berlaku.
<uses-feature android:name="android.hardware.camera" android:required="false" />
- Jika fitur secara eksplisit dideklarasikan, tetapi tanpa
atribut
android:required
, Google Play akan berasumsi bahwa fitur tersebut diperlukan dan menyiapkan pemfilteran di dalamnya.
Secara umum, jika aplikasi Anda dirancang untuk berjalan pada Android 1.6 dan versi yang lebih rendah,
atribut android:required
tidak akan tersedia di
API, dan Google Play berasumsi bahwa semua
deklarasi <uses-feature>
diperlukan.
Catatan: Dengan mendeklarasikan fitur secara eksplisit dan
menyertakan atribut android:required="false"
, Anda dapat
secara efektif menonaktifkan semua pemfilteran di Google Play untuk fitur tertentu.
Filter berdasarkan fitur implisit
Fitur implisit adalah fitur yang diperlukan aplikasi untuk
berfungsi dengan baik, tetapi tidak dideklarasikan dalam
elemen <uses-feature>
di file manifes. Singkatnya,
sebaiknya setiap aplikasi selalu mendeklarasikan semua fitur yang
digunakan atau diperlukan, dan tidak adanya deklarasi untuk fitur yang digunakan oleh
aplikasi dapat dianggap sebagai error.
Namun, sebagai perlindungan bagi pengguna dan developer, Google Play mencari fitur implisit dalam setiap aplikasi dan menyiapkan filter untuk fitur-fitur tersebut, seperti yang dilakukan untuk fitur yang dideklarasikan secara eksplisit.
Aplikasi mungkin memerlukan suatu fitur namun tidak mendeklarasikannya karena alasan seperti berikut:
- Aplikasi dikompilasi dengan library Android versi lama (Android 1.5 atau sebelumnya), yang mana elemen
<uses-feature>
tidak tersedia. - Developer salah berasumsi bahwa fitur ada di semua perangkat dan deklarasi tidak diperlukan.
- Developer menghilangkan deklarasi fitur secara tidak sengaja.
- Developer mendeklarasikan fitur secara eksplisit, tetapi deklarasi tersebut tidak
valid. Misalnya, kesalahan ejaan dalam nama elemen
<uses-feature>
atau nilai string yang tidak diakui untuk atributandroid:name
akan membatalkan deklarasi fitur.
Untuk menjelaskan hal tersebut, Google Play mencoba untuk menelusuri persyaratan fitur tersirat suatu
aplikasi dengan memeriksa elemen lain
yang dideklarasikan pada file manifes, khususnya
elemen <uses-permission>
.
Jika aplikasi meminta izin terkait hardware, Google Play
akan menganggap aplikasi tersebut menggunakan fitur hardware pokok, sehingga
memerlukan fitur tersebut, meskipun mungkin tidak ada
deklarasi <uses-feature>
terkait. Untuk izin
seperti ini, Google Play menambahkan fitur hardware pokok ke
metadata yang disimpannya untuk aplikasi dan menyiapkan filter untuk fitur tersebut.
Misalnya, jika aplikasi meminta izin CAMERA
,
Google Play menganggap aplikasi tersebut memerlukan kamera belakang (menghadap dunia) meskipun
aplikasi tidak mendeklarasikan elemen <uses-feature>
untuk
android.hardware.camera
. Akibatnya, Google Play akan memfilter perangkat
yang tidak memiliki kamera belakang.
Jika Anda tidak ingin Google Play memfilter berdasarkan fitur implisit
tertentu, deklarasikan secara eksplisit fitur dalam elemen
<uses-feature>
dan sertakan atribut android:required="false"
. Misalnya,
untuk menonaktifkan pemfilteran implisit oleh izin CAMERA
,
deklarasikan fitur berikut:
<uses-feature android:name="android.hardware.camera" android:required="false" /> <uses-feature android:name="android.hardware.camera.autofocus" android:required="false" />
Perhatian: Izin yang Anda minta dalam
elemen <uses-permission>
dapat langsung memengaruhi cara Google
Play memfilter aplikasi Anda. Bagian
Izin yang menyiratkan persyaratan fitur berisi daftar
rangkaian lengkap izin yang menyiratkan persyaratan fitur sehingga memicu
pemfilteran.
Penanganan khusus untuk fitur Bluetooth
Google Play menerapkan aturan yang sedikit berbeda dari yang dijelaskan dalam contoh sebelumnya ketika menentukan pemfilteran untuk Bluetooth.
Jika aplikasi mendeklarasikan izin Bluetooth dalam
elemen <uses-permission>
, tapi tidak secara eksplisit mendeklarasikan
fitur Bluetooth dalam elemen <uses-feature>
, Google
Play akan memeriksa versi platform Android, tempat aplikasi ini
dirancang untuk dijalankan, sebagaimana diatur dalam elemen <uses-sdk>
.
Seperti ditunjukkan dalam tabel berikut, Google Play mengaktifkan pemfilteran untuk
fitur Bluetooth hanya jika aplikasi mendeklarasikan platform terendah atau platform yang ditargetkan
seperti Android 2.0 (API level 5) atau yang lebih tinggi. Namun, perhatikan bahwa Google
Play menerapkan aturan normal pemfilteran jika aplikasi secara eksplisit
mendeklarasikan fitur Bluetooth dalam elemen <uses-feature>
.
minSdkVersion adalah ... |
targetSdkVersion adalah |
Hasil |
---|---|---|
<uses-sdk> tidak dideklarasikan |
<=4 | Google Play tidak memfilter aplikasi dari setiap perangkat
berdasarkan dukungan yang dilaporkannya untuk fitur
android.hardware.bluetooth . |
<=4 | >=5 | Google Play memfilter aplikasi dari setiap perangkat yang tidak mendukung fitur android.hardware.bluetooth (termasuk
rilis sebelumnya). |
>=5 | >=5 |
Contoh berikut menggambarkan efek pemfilteran yang berbeda berdasarkan cara Google Play menangani fitur Bluetooth.
-
Pada contoh pertama, aplikasi yang didesain untuk berjalan pada API level yang lebih lama
mendeklarasikan izin Bluetooth, tetapi tidak mendeklarasikan fitur Bluetooth dalam
elemen
- Hasil: Google Play tidak memfilter aplikasi dari perangkat apa pun.
<uses-feature>
.
<manifest ...> <uses-permission android:name="android.permission.BLUETOOTH_ADMIN" /> <uses-sdk android:minSdkVersion="3" /> ... </manifest>
-
Pada contoh kedua, aplikasi yang sama juga mendeklarasikan level API
target "5".
- Hasil: Google Play sekarang beranggapan bahwa fitur tersebut diperlukan dan memfilter aplikasi dari semua perangkat yang tidak melaporkan dukungan Bluetooth, termasuk perangkat yang menjalankan versi lama platform ini.
<manifest ...> <uses-permission android:name="android.permission.BLUETOOTH_ADMIN" /> <uses-sdk android:minSdkVersion="3" android:targetSdkVersion="5" /> ... </manifest>
-
Berikutnya, aplikasi yang sama sekarang secara khusus mendeklarasikan fitur Bluetooth.
- Hasil: Sama dengan contoh sebelumnya: pemfilteran diterapkan.
<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>
-
Terakhir, dalam kasus berikut, aplikasi yang sama menambahkan atribut
- Hasil: Google Play menonaktifkan pemfilteran berdasarkan dukungan fitur Bluetooth untuk semua perangkat.
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>
Menguji fitur yang dibutuhkan oleh aplikasi Anda
Anda dapat menggunakan alat aapt2
, termasuk dalam Android SDK, untuk
menentukan cara Google Play memfilter aplikasi Anda berdasarkan fitur dan izin
yang dideklarasikannya. Untuk melakukannya, jalankan aapt2
dengan perintah dump
badging
. Hal ini menyebabkan aapt2
menguraikan manifes aplikasi Anda dan menerapkan aturan yang sama dengan yang digunakan Google Play untuk menentukan fitur yang diperlukan aplikasi.
Untuk menggunakan alat ini, ikuti langkah-langkah berikut:
- Build dan ekspor aplikasi sebagai APK yang tidak ditandatangani.
Jika Anda mengembangkan aplikasi pada Android Studio, build aplikasi Anda dengan Gradle, sebagai berikut:
- Buka project dan pilih Run > Edit Configurations.
- Pilih tanda plus di dekat sudut kiri atas jendela Run/Debug Configurations.
- Pilih Gradle.
- Ketikkan "Unsigned APK" di bagian Name.
- Pilih modul Anda dari bagian Gradle project.
- Masukkan "assemble" di Tasks.
- Pilih OK untuk menyelesaikan konfigurasi baru.
- Pastikan konfigurasi Unsigned APK dipilih pada toolbar, lalu pilih Run > Run 'Unsigned APK'.
<ProjectName>/app/build/outputs/apk/
. - Temukan alat
aapt2
, jika belum ada dalam PATH Anda. Jika Anda menggunakan SDK Tools r8 atau yang lebih tinggi, Anda dapat menemukanaapt2
dalam direktori<SDK>/build-tools/<tools version number>
.Catatan: Anda harus menggunakan versi
aapt2
yang disediakan untuk komponen Build-Tools terbaru yang tersedia. Jika Anda belum memiliki komponen Build-Tools terbaru, download menggunakan Android SDK Manager. - Jalankan
aapt2
menggunakan sintaksis ini:
$ aapt2 dump badging <path_to_exported_.apk>
Berikut ini contoh output perintah untuk contoh Bluetooth kedua yang ditampilkan sebelumnya:
$ ./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'
Referensi fitur
Bagian berikut ini menyediakan informasi referensi tentang fitur hardware, fitur software, dan sekumpulan izin yang menunjukkan persyaratan fitur tertentu.
Fitur hardware
Bagian ini menampilkan fitur hardware yang didukung oleh rilis platform
terbaru. Untuk menunjukkan bahwa aplikasi Anda menggunakan atau memerlukan fitur
hardware, deklarasikan nilai yang sesuai, diawali dengan
"android.hardware"
, dalam atribut android:name
.
Setiap kali Anda mendeklarasikan fitur hardware, gunakan elemen
<uses-feature>
terpisah.
Fitur hardware audio
-
android.hardware.audio.low_latency
- Aplikasi ini menggunakan pipeline audio latensi rendah dari perangkat, yang mengurangi lag dan menunda saat memproses input atau output suara.
-
android.hardware.audio.output
- Aplikasi ini mentransmisikan suara menggunakan speaker, colokan audio, kemampuan streaming Bluetooth atau mekanisme yang sama dari perangkat.
-
android.hardware.audio.pro
- Aplikasi ini menggunakan fungsionalitas audio canggih dan kemampuan performa dari perangkat.
-
android.hardware.microphone
- Aplikasi merekam audio menggunakan mikrofon perangkat.
Fitur hardware Bluetooth
-
android.hardware.bluetooth
- Aplikasi menggunakan fitur Bluetooth perangkat, biasanya untuk berkomunikasi dengan perangkat Bluetooth-aktif lainnya.
-
android.hardware.bluetooth_le
- Aplikasi menggunakan fitur radio Bluetooth Hemat Energi perangkat.
Fitur hardware kamera
Catatan: Untuk mencegah pemfilteran aplikasi yang tidak perlu oleh
Google Play, tambahkan android:required="false"
ke fitur kamera apa pun
yang dapat berfungsi tanpa aplikasi Anda. Jika tidak, Google Play akan menganggap fitur tersebut
diperlukan dan mencegah perangkat yang tidak mendukung fitur tersebut mengakses
aplikasi Anda.
Dukungan perangkat layar besar
Beberapa perangkat layar besar hanya mendukung sebagian fitur kamera. Chromebook biasanya tidak memiliki kamera belakang (menghadap dunia), fokus otomatis, atau flash. Namun, Chromebook memiliki kamera depan (menghadap pengguna) dan sering terhubung ke kamera eksternal.
Untuk memberikan dukungan kamera dasar dan menyediakan aplikasi ke sebanyak mungkin perangkat, tambahkan setelan fitur kamera berikut ke manifes aplikasi Anda:
<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" />
Sesuaikan setelan fitur untuk mendukung kasus penggunaan aplikasi Anda. Namun, agar
aplikasi Anda tersedia untuk sebagian besar perangkat, selalu sertakan
atribut required
untuk menentukan secara eksplisit apakah suatu fitur
harus dimiliki.
Daftar fitur
-
android.hardware.camera.any
-
Aplikasi menggunakan salah satu kamera perangkat atau kamera eksternal yang terhubung ke perangkat. Gunakan fitur ini sebagai ganti
android.hardware.camera
atauandroid.hardware.camera.front
jika aplikasi Anda tidak memerlukan kamera yang menghadap ke belakang (dunia) atau menghadap ke depan (pengguna), secara berurutan.Izin
CAMERA
menyiratkan bahwa aplikasi Anda juga menggunakanandroid.hardware.camera
. Kamera belakang adalah fitur yang diperlukan kecuali jikaandroid.hardware.camera
dideklarasikan denganandroid:required="false"
. -
android.hardware.camera
-
Aplikasi menggunakan kamera belakang (menghadap dunia) perangkat.
Perhatian: Perangkat seperti Chromebook yang hanya memiliki kamera depan (menghadap pengguna) tidak mendukung fitur ini. Gunakan
android.hardware.camera.any
jika aplikasi Anda dapat menggunakan kamera apa pun, ke mana pun arah hadap kamera.Catatan: Izin
CAMERA
menyiratkan bahwa kamera belakang merupakan fitur yang diperlukan. Untuk membantu memastikan pemfilteran yang tepat di Google Play saat manifes aplikasi Anda menyertakan izinCAMERA
, tentukan secara eksplisit bahwa aplikasi Anda menggunakan fiturcamera
dan tunjukkan apakah fitur tersebut diperlukan, seperti:
<uses-feature android:name="android.hardware.camera" android:required="false" />
-
android.hardware.camera.front
-
Aplikasi menggunakan kamera depan (menghadap pengguna) perangkat.
Izin
CAMERA
menyiratkan bahwa aplikasi Anda juga menggunakanandroid.hardware.camera
. Kamera belakang adalah fitur yang diperlukan kecuali jikaandroid.hardware.camera
dideklarasikan denganandroid:required="false"
.Perhatian: Jika aplikasi Anda menggunakan
android.hardware.camera.front
tetapi tidak secara eksplisit mendeklarasikanandroid.hardware.camera
denganandroid.required="false"
, perangkat yang tidak memiliki kamera belakang (seperti Chromebook) difilter oleh Google Play. Jika aplikasi Anda mendukung perangkat dengan kamera depan saja, deklarasikanandroid.hardware.camera
denganandroid.required="false"
untuk mencegah pemfilteran yang tidak perlu. -
android.hardware.camera.external
-
Aplikasi berkomunikasi dengan kamera eksternal yang dihubungkan pengguna ke perangkat. Fitur ini tidak menjamin bahwa kamera eksternal dapat digunakan oleh aplikasi Anda.
Izin
CAMERA
menyiratkan bahwa aplikasi Anda juga menggunakanandroid.hardware.camera
. Kamera belakang adalah fitur yang diperlukan kecuali jikaandroid.hardware.camera
dideklarasikan denganandroid:required="false"
. -
android.hardware.camera.autofocus
-
Aplikasi menggunakan fitur fokus otomatis yang didukung oleh kamera perangkat.
Catatan: Izin
CAMERA
menyiratkan bahwa fokus otomatis adalah fitur yang diperlukan. Untuk membantu memastikan pemfilteran yang tepat di Google Play saat manifes aplikasi Anda menyertakan izinCAMERA
, tentukan secara eksplisit bahwa aplikasi Anda menggunakan fitur fokus otomatis dan tunjukkan apakah fitur tersebut diperlukan atau tidak, seperti:
<uses-feature android:name="android.hardware.camera.autofocus" android:required="false" />
. -
android.hardware.camera.flash
-
Aplikasi menggunakan fitur flash yang didukung oleh kamera perangkat.
-
android.hardware.camera.capability.manual_post_processing
-
Aplikasi menggunakan fitur
MANUAL_POST_PROCESSING
yang didukung oleh kamera perangkat.Fitur ini memungkinkan aplikasi untuk mengganti fungsi white balance otomatis pada kamera. Gunakan
android.colorCorrection.transform
,android.colorCorrection.gains
, danandroid.colorCorrection.mode
dariTRANSFORM_MATRIX
. -
android.hardware.camera.capability.manual_sensor
-
Aplikasi menggunakan fitur
MANUAL_SENSOR
yang didukung oleh kamera perangkat.Fitur ini menyiratkan dukungan penguncian eksposur otomatis (
android.control.aeLock
), yang memungkinkan waktu dan sensitivitas eksposur kamera selalu tetap pada nilai tertentu. -
android.hardware.camera.capability.raw
-
Aplikasi menggunakan fitur
RAW
yang didukung oleh kamera perangkat.Fitur ini menyiratkan bahwa perangkat dapat menyimpan file DNG (raw). Kamera perangkat menyediakan metadata terkait DNG yang diperlukan untuk aplikasi Anda guna memproses gambar raw secara langsung.
-
android.hardware.camera.level.full
-
Aplikasi menggunakan dukungan pengambilan gambar level
FULL
yang disediakan oleh setidaknya salah satu kamera perangkat. DukunganFULL
mencakup kemampuan burst-capture, kontrol per frame, dan kontrol pascapemrosesan manual. LihatINFO_SUPPORTED_HARDWARE_LEVEL_FULL
.
Fitur hardware UI perangkat
-
android.hardware.type.automotive
-
Aplikasi ini dirancang untuk menampilkan UI pada set layar di dalam kendaraan. Pengguna berinteraksi dengan aplikasi menggunakan tombol, sentuh, pengontrol rotasi, dan antarmuka seperti mouse. Layar pada kendaraan biasanya berada di konsol tengah atau kluster instrumen kendaraan. Layar ini biasanya memiliki ukuran dan resolusi yang terbatas.
Catatan: Karena pengguna sedang mengemudi saat menggunakan jenis UI aplikasi ini, aplikasi harus meminimalkan gangguan bagi pengemudi.
-
android.hardware.type.television
-
(Tidak digunakan lagi; gunakan
android.software.leanback
sebagai gantinya.)Aplikasi ini dirancang untuk menampilkan UI pada televisi. Fitur ini menentukan "televisi" sebagai pengalaman televisi yang biasa di ruang tamu: aplikasi yang menampilkan layar TV, pengguna yang duduk jauh dari layar, dan bentuk input yang banyak dipakai adalah sesuatu seperti D-pad, bukan mouse, pointer, atau perangkat sentuh.
-
android.hardware.type.watch
- Aplikasi ini dirancang untuk menampilkan UI pada smartwatch. Smartwatch dipakai pada badan, seperti di pergelangan tangan. Pengguna berada sangat dekat dengan perangkat saat berinteraksi dengannya.
-
android.hardware.type.pc
-
Aplikasi ini dirancang untuk menampilkan UI di Chromebook. Fitur ini menonaktifkan emulasi input untuk mouse dan touchpad, karena Chromebook menggunakan hardware mouse dan touchpad. Lihat Input mouse.
Catatan: Setel
required="false"
untuk elemen ini; jika tidak, Google Play Store akan membuat aplikasi Anda tidak tersedia untuk perangkat selain Chromebook.
Fitur hardware sidik jari
-
android.hardware.fingerprint
- Aplikasi ini membaca sidik jari menggunakan hardware biometrik perangkat.
Fitur hardware gamepad
-
android.hardware.gamepad
- Aplikasi ini menangkap input pengontrol game, baik dari perangkat itu sendiri atau gamepad yang terhubung.
Fitur hardware inframerah
-
android.hardware.consumerir
- Aplikasi ini menggunakan kemampuan inframerah (IR) perangkat, biasanya untuk berkomunikasi dengan perangkat IR pengguna yang lain.
Fitur hardware lokasi
-
android.hardware.location
- Aplikasi ini menggunakan satu atau beberapa fitur pada perangkat untuk menentukan lokasi, seperti lokasi GPS, lokasi jaringan, atau lokasi seluler.
-
android.hardware.location.gps
-
Aplikasi ini menggunakan koordinat lokasi presisi yang diperoleh dari penerima Sistem Pemosisi Global (GPS) pada perangkat.
Dengan menggunakan fitur ini, aplikasi menegaskan bahwa aplikasi juga menggunakan fitur
android.hardware.location
, kecuali jika fitur induk ini dideklarasikan dengan atributandroid:required="false"
. -
android.hardware.location.network
-
Aplikasi menggunakan koordinat lokasi sementara yang diperoleh dari sistem geolokasi berbasis jaringan yang didukung pada perangkat.
Dengan menggunakan fitur ini, aplikasi menegaskan bahwa aplikasi juga menggunakan fitur
android.hardware.location
, kecuali jika fitur induk ini dideklarasikan dengan atributandroid:required="false"
.
Fitur hardware NFC
-
android.hardware.nfc
- Aplikasi menggunakan fitur radio Komunikasi Nirkabel Jarak Dekat (NFC) perangkat.
-
android.hardware.nfc.hce
-
Aplikasi menggunakan emulasi kartu NFC yang di-host pada perangkat.
Fitur hardware OpenGL ES
-
android.hardware.opengles.aep
- Aplikasi menggunakan OpenGL ES Android Extension Pack yang diinstal pada perangkat.
Fitur hardware Sensor
-
android.hardware.sensor.accelerometer
- Aplikasi ini menggunakan pembacaan gerak akselerometer perangkat untuk mendeteksi orientasi perangkat saat ini. Misalnya, aplikasi mungkin menggunakan pembacaan akselerometer untuk menentukan kapan beralih antara orientasi potret dan lanskap.
-
android.hardware.sensor.ambient_temperature
- Aplikasi ini menggunakan sensor suhu ambien (lingkungan) sekitar perangkat. Misalnya, aplikasi cuaca dapat melaporkan suhu ruangan atau suhu di luar ruangan.
-
android.hardware.sensor.barometer
- Aplikasi menggunakan barometer perangkat. Misalnya, aplikasi cuaca mungkin melaporkan tekanan udara.
-
android.hardware.sensor.compass
- Aplikasi menggunakan magnetometer (kompas) perangkat. Misalnya, aplikasi navigasi mungkin menunjukkan arah hadap pengguna saat ini.
-
android.hardware.sensor.gyroscope
- Aplikasi menggunakan giroskop perangkat untuk mendeteksi rotasi dan putaran, membuat sistem orientasi enam sumbu. Dengan menggunakan sensor ini, aplikasi dapat mendeteksi secara lebih halus apakah perlu beralih antara orientasi potret dan lanskap.
-
android.hardware.sensor.hifi_sensors
- Aplikasi menggunakan sensor high fidelity (Hi-Fi) perangkat. Misalnya, suatu aplikasi game mungkin mendeteksi gerakan presisi tinggi dari pengguna.
-
android.hardware.sensor.heartrate
- Aplikasi menggunakan pemantau detak jantung dari perangkat. Misalnya, aplikasi kebugaran mungkin melaporkan kecenderungan detak jantung pengguna dari waktu ke waktu.
-
android.hardware.sensor.heartrate.ecg
- Aplikasi menggunakan sensor detak jantung elektrokardiogram (ECG) di perangkat. Misalnya, aplikasi kebugaran mungkin melaporkan informasi lebih mendetail tentang detak jantung pengguna.
-
android.hardware.sensor.light
- Aplikasi menggunakan sensor cahaya perangkat. Misalnya, aplikasi mungkin menampilkan satu dari dua skema warna berdasarkan kondisi pencahayaan di sekitarnya.
-
android.hardware.sensor.proximity
- Aplikasi menggunakan sensor kedekatan perangkat. Misalnya, aplikasi telepon mungkin mematikan layar perangkat saat aplikasi mendeteksi bahwa pengguna sedang memegang perangkat dekat ke badan mereka.
-
android.hardware.sensor.relative_humidity
- Aplikasi menggunakan sensor kelembapan relatif perangkat. Misalnya, aplikasi cuaca mungkin menggunakan kelembapan untuk menghitung dan melaporkan titik embun saat ini.
-
android.hardware.sensor.stepcounter
- Aplikasi menggunakan penghitung langkah perangkat. Misalnya, aplikasi kebugaran mungkin melaporkan jumlah langkah yang diperlukan pengguna untuk mencapai sasaran jumlah langkah harian mereka.
-
android.hardware.sensor.stepdetector
- Aplikasi menggunakan detektor langkah perangkat. Misalnya, aplikasi kebugaran mungkin menggunakan interval waktu antara langkah untuk menyimpulkan jenis olahraga yang dilakukan pengguna.
Fitur hardware layar
-
android.hardware.screen.landscape
-
android.hardware.screen.portrait
-
Aplikasi mengharuskan perangkat untuk menggunakan orientasi potret atau lanskap. Jika aplikasi mendukung kedua orientasi, Anda tidak perlu mendeklarasikan tiap-tiap fitur.
Misalnya, jika aplikasi Anda memerlukan orientasi potret, deklarasikan fitur berikut sehingga hanya perangkat yang mendukung orientasi potret (selalu atau dengan pilihan pengguna) yang dapat menjalankan aplikasi Anda:
<uses-feature android:name="android.hardware.screen.portrait" />
Kedua orientasi dianggap tidak diperlukan secara default, sehingga aplikasi dapat diinstal di perangkat yang mendukung salah satu atau kedua orientasi. Namun, jika ada aktivitas yang meminta agar aplikasi berjalan dalam orientasi tertentu, dengan menggunakan atribut
android:screenOrientation
, deklarasi ini menegaskan bahwa aplikasi Anda memerlukan orientasi tersebut.Misalnya, jika Anda mendeklarasikan
android:screenOrientation
dengan"landscape"
,"reverseLandscape"
, atau"sensorLandscape"
, aplikasi Anda hanya akan tersedia pada perangkat yang mendukung orientasi lanskap.Sebagai praktik terbaik, deklarasikan persyaratan Anda untuk orientasi ini menggunakan elemen
<uses-feature>
. Jika Anda mendeklarasikan orientasi untuk aktivitas Anda menggunakanandroid:screenOrientation
, tetapi tidak benar-benar memerlukannya, Anda dapat menonaktifkan persyaratan tersebut dengan mendeklarasikan orientasi bersama elemen<uses-feature>
dan memasukkanandroid:required="false"
.Untuk kompatibilitas mundur, perangkat yang menjalankan Android 3.1 (API level 12) atau yang lebih rendah mendukung orientasi lanskap dan potret.
Fitur hardware telepon
-
android.hardware.telephony
- Aplikasi menggunakan fitur telepon perangkat, seperti radio telepon dengan layanan komunikasi data.
-
android.hardware.telephony.cdma
-
Aplikasi menggunakan sistem radio telepon Code Division Multiple Access (CDMA).
Dengan menggunakan fitur ini, aplikasi menegaskan bahwa aplikasi juga menggunakan fitur
android.hardware.telephony
, kecuali fitur induk ini dideklarasikan denganandroid:required="false"
. -
android.hardware.telephony.gsm
-
Aplikasi ini menggunakan sistem radio telepon Global System for Mobile Communications (GSM).
Dengan menggunakan fitur ini, aplikasi menegaskan bahwa aplikasi juga menggunakan fitur
android.hardware.telephony
, kecuali fitur induk ini dideklarasikan denganandroid:required="false"
.
Fitur hardware layar sentuh
-
android.hardware.faketouch
-
Aplikasi menggunakan peristiwa interaksi sentuh dasar, seperti ketuk dan tarik.
Ketika dideklarasikan sebagai diperlukan, fitur ini menunjukkan bahwa aplikasi kompatibel dengan perangkat, hanya jika perangkat tersebut memiliki layar sentuh "sentuh palsu" yang diemulasikan atau memiliki layar sentuh sebenarnya.
Perangkat yang menawarkan antarmuka sentuh palsu menyediakan sistem input pengguna yang mengemulasi subset dari kemampuan layar sentuh ini. Misalnya, mouse atau remote control mungkin menggerakkan kursor pada layar.
Jika aplikasi Anda memerlukan interaksi tunjuk dan klik dasar serta tidak berfungsi hanya dengan pengontrol D-pad, deklarasikan fitur ini. Karena ini adalah tingkat minimum interaksi sentuh, Anda juga dapat menggunakan aplikasi yang mendeklarasikan fitur ini pada perangkat yang menawarkan antarmuka sentuh lebih kompleks.
Aplikasi memerlukan fitur
android.hardware.faketouch
secara default. Jika Anda ingin aplikasi Anda hanya untuk perangkat yang hanya memiliki layar sentuh, Anda harus mendeklarasikan secara eksplisit bahwa layar sentuh diperlukan sebagai berikut:<uses-feature android:name="android.hardware.touchscreen" android:required="true" />
Semua aplikasi yang tidak secara eksplisit memerlukan
android.hardware.touchscreen
, seperti yang ditunjukkan dalam contoh berikut, juga berfungsi pada perangkat denganandroid.hardware.faketouch
.<uses-feature android:name="android.hardware.touchscreen" android:required="false" />
-
android.hardware.faketouch.multitouch.distinct
-
Aplikasi ini melacak dua atau beberapa "jari" yang berbeda pada antarmuka sentuh palsu. Ini adalah superset dari fitur
android.hardware.faketouch
. Ketika dideklarasikan sebagai diperlukan, fitur ini menunjukkan bahwa aplikasi tersebut kompatibel dengan perangkat hanya jika perangkat mengemulasi pelacakan dari dua atau beberapa jari yang berbeda atau memiliki layar sentuh sebenarnya.Tidak seperti multisentuh yang ditentukan oleh
android.hardware.touchscreen.multitouch.distinct
, perangkat input yang mendukung multisentuh yang ditentukan dengan antarmuka sentuh palsu tidak mendukung semua gestur dua jari karena input diubah ke gerakan kursor pada layar. Artinya, gestur satu jari pada perangkat dapat memindahkan kursor, menggeser dua jari menyebabkan peristiwa sentuh satu jari terjadi, dan gestur dua jari lainnya memicu peristiwa sentuh dua jari yang sesuai.Perangkat yang menyediakan trackpad sentuh dua jari untuk pergerakan kursor dapat mendukung fitur ini.
-
android.hardware.faketouch.multitouch.jazzhand
-
Aplikasi ini melacak lima atau lebih "jari" yang berbeda di antarmuka sentuh palsu. Ini adalah superset dari fitur
android.hardware.faketouch
. Jika dinyatakan sebagai diperlukan, fitur ini akan menunjukkan bahwa aplikasi kompatibel dengan perangkat hanya jika perangkat mengemulasi pelacakan lima atau lebih jari yang berbeda atau memiliki layar sentuh sebenarnya.Tidak seperti multisentuh berbeda yang ditentukan oleh
android.hardware.touchscreen.multitouch.jazzhand
, perangkat input yang mendukung multisentuh jazzhand dengan antarmuka sentuh palsu tidak mendukung semua gestur lima jari karena input diubah ke gerakan kursor pada layar. Artinya, gestur satu jari pada perangkat dapat memindahkan kursor, gestur multi-jari menyebabkan peristiwa sentuh satu jari terjadi, dan gestur multi-jari lainnya memicu peristiwa sentuh multi-jari yang sesuai.Perangkat yang menyediakan trackpad sentuh lima jari untuk pergerakan kursor dapat mendukung fitur ini.
-
android.hardware.touchscreen
-
Aplikasi ini menggunakan kemampuan layar sentuh perangkat untuk gestur yang lebih interaktif daripada peristiwa sentuh dasar, seperti mengayunkan jari. Ini adalah superset dari fitur
android.hardware.faketouch
.Secara default, semua aplikasi membutuhkan fitur ini, sehingga tidak tersedia untuk perangkat yang hanya menyediakan antarmuka "sentuh palsu" yang diemulasikan. Anda dapat membuat aplikasi tersedia di perangkat yang menyediakan antarmuka sentuh palsu, atau bahkan pada perangkat yang hanya menyediakan pengontrol D-pad, dengan mendeklarasikan secara eksplisit bahwa layar sentuh tidak diperlukan menggunakan
android.hardware.touchscreen
denganandroid:required="false"
. Tambahkan deklarasi ini jika aplikasi Anda menggunakan, tetapi tidak memerlukan, antarmuka layar sentuh sungguhan. Semua aplikasi yang tidak secara eksplisit memerlukanandroid.hardware.touchscreen
juga berfungsi pada perangkat denganandroid.hardware.faketouch
.Jika aplikasi Anda benar-benar memerlukan antarmuka sentuh, misalnya melakukan lebih banyak gestur sentuh lanjutan seperti mengayunkan jari, Anda tidak perlu mendeklarasikan fitur antarmuka sentuh apa pun, karena diperlukan secara default. Namun, akan sangat baik jika Anda secara eksplisit menyatakan semua fitur yang digunakan aplikasi Anda.
Jika Anda memerlukan interaksi sentuh yang lebih kompleks, seperti gestur multi jari, nyatakan bahwa aplikasi Anda menggunakan fitur layar sentuh lanjutan.
-
android.hardware.touchscreen.multitouch
-
Aplikasi ini menggunakan kemampuan multisentuh dua titik dasar dari perangkat, misalnya untuk gestur cubit, tetapi aplikasi tidak perlu melacak sentuhan secara independen. Ini adalah superset dari fitur
android.hardware.touchscreen
.Dengan menggunakan fitur ini, aplikasi menegaskan bahwa aplikasi juga menggunakan fitur
android.hardware.touchscreen
, kecuali fitur induk ini dideklarasikan denganandroid:required="false"
. -
android.hardware.touchscreen.multitouch.distinct
-
Aplikasi menggunakan kemampuan multisentuh canggih perangkat untuk melacak dua titik atau lebih secara independen. Fitur ini adalah superset dari fitur
android.hardware.touchscreen.multitouch
.Dengan menggunakan fitur ini, aplikasi menegaskan bahwa aplikasi juga menggunakan fitur
android.hardware.touchscreen.multitouch
, kecuali fitur induk ini dideklarasikan denganandroid:required="false"
. -
android.hardware.touchscreen.multitouch.jazzhand
-
Aplikasi menggunakan kemampuan multisentuh canggih perangkat untuk melacak lima titik atau lebih secara independen. Fitur ini adalah superset dari fitur
android.hardware.touchscreen.multitouch
.Dengan menggunakan fitur ini, aplikasi menegaskan bahwa aplikasi juga menggunakan fitur
android.hardware.touchscreen.multitouch
, kecuali fitur induk ini dideklarasikan denganandroid:required="false"
.
Fitur hardware USB
-
android.hardware.usb.accessory
- Aplikasi ini berperilaku sebagai perangkat USB dan terhubung ke host USB.
-
android.hardware.usb.host
- Aplikasi menggunakan aksesori USB yang terhubung ke perangkat. Perangkat berfungsi sebagai host USB.
Fitur hardware Vulkan
-
android.hardware.vulkan.compute
-
Aplikasi ini menggunakan fitur komputasi Vulkan. Fitur ini menunjukkan bahwa aplikasi tersebut memerlukan implementasi
akselerasi hardware Vulkan. Versi fitur menunjukkan tingkat fitur komputasi opsional
mana yang diperlukan aplikasi di luar persyaratan Vulkan 1.0. Misalnya, jika aplikasi Anda
memerlukan dukungan level 0 komputasi Vulkan, deklarasikan fitur berikut:
<uses-feature android:name="android.hardware.vulkan.compute" android:version="0" android:required="true" />
Untuk detail selengkapnya tentang versi fitur, lihatFEATURE_VULKAN_HARDWARE_COMPUTE
. -
android.hardware.vulkan.level
-
Aplikasi ini menggunakan fitur level Vulkan. Fitur ini menunjukkan bahwa aplikasi tersebut memerlukan implementasi
akselerasi hardware Vulkan. Versi fitur menunjukkan tingkat fitur hardware opsional
yang diperlukan aplikasi. Misalnya, jika aplikasi Anda memerlukan dukungan level 0 hardware
Vulkan, deklarasikan fitur berikut:
<uses-feature android:name="android.hardware.vulkan.level" android:version="0" android:required="true" />
Untuk mengetahui informasi selengkapnya tentang versi fitur, lihatFEATURE_VULKAN_HARDWARE_LEVEL
. -
android.hardware.vulkan.version
-
Aplikasi ini menggunakan Vulkan. Fitur ini menunjukkan bahwa aplikasi tersebut memerlukan implementasi
akselerasi hardware Vulkan. Versi fitur menunjukkan versi minimum dukungan Vulkan API support
yang diperlukan aplikasi. Misalnya, jika aplikasi Anda
memerlukan dukungan 1.0 Vulkan, deklarasikan fitur berikut:
<uses-feature android:name="android.hardware.vulkan.version" android:version="0x400003" android:required="true" />
Untuk detail selengkapnya tentang versi fitur, lihatFEATURE_VULKAN_HARDWARE_VERSION
.
Fitur hardware Wi-Fi
-
android.hardware.wifi
- Aplikasi menggunakan fitur jaringan 802.11 (Wi-Fi) pada perangkat.
-
android.hardware.wifi.direct
- Aplikasi menggunakan fitur jaringan Wi-Fi Langsung pada perangkat.
Fitur software
Bagian ini menampilkan fitur software yang didukung oleh sebagian besar rilis
platform terbaru. Untuk menunjukkan bahwa aplikasi Anda menggunakan atau memerlukan fitur
software, deklarasikan nilai yang sesuai, diawali dengan
"android.software"
, dalam atribut android:name
.
Setiap kali Anda mendeklarasikan fitur software, gunakan
elemen <uses-feature>
terpisah.
Fitur software komunikasi
-
android.software.sip
- Aplikasi menggunakan layanan Session Initiation Protocol (SIP). Dengan menggunakan SIP, aplikasi dapat mendukung operasi telepon internet, seperti konferensi video dan instant messaging.
-
android.software.sip.voip
-
Aplikasi menggunakan layanan Voice Over Internet Protocol (VoIP) berbasis-SIP. Dengan menggunakan VoIP, aplikasi dapat mendukung operasi telepon internet real-time, seperti konferensi video dua arah.
Dengan menggunakan fitur ini, aplikasi menegaskan bahwa aplikasi juga menggunakan fitur
android.software.sip
kecuali fitur induk ini dideklarasikan denganandroid:required="false"
. -
android.software.webview
- Aplikasi menampilkan materi dari internet.
Fitur software input khusus
-
android.software.input_methods
-
Aplikasi menggunakan metode input baru, yang ditetapkan developer dalam
InputMethodService
.
Fitur software pengelolaan perangkat
-
android.software.backup
- Aplikasi ini meliputi logika untuk menangani operasi pencadangan dan pemulihan.
-
android.software.device_admin
- Aplikasi menggunakan administrator perangkat untuk memberlakukan kebijakan perangkat.
-
android.software.managed_users
- Aplikasi mendukung pengguna tambahan dan profil terkelola.
-
android.software.securely_removes_users
- Aplikasi dapat secara permanen menghapus pengguna dan data terkait.
-
android.software.verified_boot
- Aplikasi ini mencakup logika untuk menangani hasil dari fitur booting terverifikasi perangkat, yang mendeteksi apakah konfigurasi perangkat berubah selama operasi mulai ulang.
Fitur software media
-
android.software.midi
- Aplikasi terhubung dengan instrumen musik atau output suara menggunakan protokol Musical Instrument Digital Interface (MIDI).
-
android.software.print
- Aplikasi memuat perintah untuk mencetak dokumen yang ditampilkan pada perangkat.
-
android.software.leanback
- Aplikasi ini dirancang untuk berjalan di perangkat TV Android.
-
android.software.live_tv
- Aplikasi melakukan streaming langsung acara televisi.
Fitur software antarmuka layar
-
android.software.app_widgets
- Aplikasi menggunakan atau menyediakan Widget Aplikasi dan hanya ditujukan untuk perangkat yang memuat Layar utama atau lokasi serupa tempat pengguna dapat menyematkan Widget Aplikasi.
-
android.software.home_screen
- Aplikasi berperilaku sebagai pengganti untuk layar Utama perangkat.
-
android.software.live_wallpaper
- Aplikasi ini menggunakan atau menyediakan wallpaper yang memuat animasi.
Izin yang menyiratkan persyaratan fitur
Beberapa konstanta fitur hardware dan software disediakan untuk
aplikasi setelah API yang berkaitan. Karena itu, beberapa aplikasi mungkin menggunakan API sebelum
dapat mendeklarasikan bahwa API tersebut memerlukan API menggunakan
sistem <uses-feature>
.
Untuk mencegah aplikasi tersebut tersedia secara tidak sengaja, Google Play
mengasumsikan bahwa izin yang berkaitan dengan hardware tertentu menunjukkan bahwa
fitur hardware dasar diperlukan secara default. Misalnya,
aplikasi yang menggunakan Bluetooth harus meminta izin BLUETOOTH
dalam elemen <uses-permission>
.
Untuk aplikasi
lama, Google Play berasumsi bahwa deklarasi izin berarti
fitur android.hardware.bluetooth
pokok diperlukan oleh
aplikasi dan menyiapkan pemfilteran berdasarkan fitur tersebut. Tabel 2 mencantumkan
izin yang menunjukkan persyaratan fitur yang sama dengan yang dideklarasikan dalam
elemen <uses-feature>
.
Deklarasi <uses-feature>
, termasuk
setiap atribut android:required
yang dideklarasikan, selalu lebih diutamakan daripada
fitur yang tersirat oleh izin dalam tabel 2. Untuk salah satu izin ini,
Anda dapat menonaktifkan pemfilteran berdasarkan fitur implisit dengan mendeklarasikan
fitur secara eksplisit dalam elemen <uses-feature>
dengan atribut required
yang disetel ke false
.
Misalnya, untuk
menonaktifkan pemfilteran berdasarkan izin CAMERA
, tambahkan
deklarasi <uses-feature>
berikut ke file manifes:
<uses-feature android:name="android.hardware.camera" android:required="false" /> <uses-feature android:name="android.hardware.camera.autofocus" android:required="false" />
Perhatian: Jika aplikasi Anda menargetkan Android 5.0 (API level 21) atau
lebih tinggi dan menggunakan izin ACCESS_COARSE_LOCATION
atau
ACCESS_FINE_LOCATION
untuk menerima pembaruan lokasi
dari jaringan atau GPS, Anda juga harus secara eksplisit
mendeklarasikan bahwa aplikasi Anda menggunakan fitur hardware android.hardware.location.network
atau android.hardware.location.gps
.
Kategori | Izin | Persyaratan fitur implisit |
---|---|---|
Bluetooth | BLUETOOTH |
android.hardware.bluetooth
Lihat Penanganan khusus untuk fitur Bluetooth untuk mengetahui detailnya. |
BLUETOOTH_ADMIN |
android.hardware.bluetooth |
|
Kamera | CAMERA |
android.hardware.camera android.hardware.camera.autofocus |
Lokasi | 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 |
|
|
Mikrofon | RECORD_AUDIO |
android.hardware.microphone |
Telepon | CALL_PHONE |
android.hardware.telephony |
CALL_PRIVILEGED |
android.hardware.telephony |
|
MODIFY_PHONE_STATE |
android.hardware.telephony |
|
PROCESS_OUTGOING_CALLS |
android.hardware.telephony |
|
READ_SMS |
android.hardware.telephony |
|
RECEIVE_SMS |
android.hardware.telephony |
|
RECEIVE_MMS |
android.hardware.telephony |
|
RECEIVE_WAP_PUSH |
android.hardware.telephony |
|
SEND_SMS |
android.hardware.telephony |
|
WRITE_APN_SETTINGS |
android.hardware.telephony |
|
WRITE_SMS |
android.hardware.telephony |
|
Wi-Fi | ACCESS_WIFI_STATE |
android.hardware.wifi |
CHANGE_WIFI_STATE |
android.hardware.wifi |
|
CHANGE_WIFI_MULTICAST_STATE |
android.hardware.wifi |