<uses-feature>

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 atribut required 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 atribut name.

Meskipun elemen <uses-feature> hanya diaktifkan untuk perangkat yang menjalankan API Level 4 atau yang lebih tinggi, sertakan elemen ini untuk semua aplikasi, bahkan jika minSdkVersion 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".

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:
Level API 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 atribut android: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>, tetapi tidak secara eksplisit mendeklarasikan fitur Bluetooth dalam elemen <uses-feature>, Google Play akan memeriksa versi platform Android, tempat aplikasi ini dirancang untuk dijalankan, sebagaimana ditetapkan 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>.

Tabel 1. Cara Google Play menentukan persyaratan fitur Bluetooth untuk aplikasi yang meminta izin Bluetooth tetapi tidak mendeklarasikan fitur Bluetooth dalam elemen <uses-feature>.

Jika minSdkVersion adalah ... dan targetSdkVersion adalah Hasil
<=4, atau <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 <uses-feature>.
Hasil: Google Play tidak memfilter aplikasi dari perangkat apa pun.
<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 android:required="false".
Hasil: Google Play menonaktifkan pemfilteran berdasarkan dukungan fitur Bluetooth untuk semua perangkat.
<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:

  1. Build dan ekspor aplikasi sebagai APK yang tidak ditandatangani. Jika Anda mengembangkan aplikasi pada Android Studio, build aplikasi Anda dengan Gradle, sebagai berikut:
    1. Buka project dan pilih Run > Edit Configurations.
    2. Pilih tanda plus di dekat sudut kiri atas jendela Run/Debug Configurations.
    3. Pilih Gradle.
    4. Ketikkan "Unsigned APK" di bagian Name.
    5. Pilih modul Anda dari bagian Gradle project.
    6. Masukkan "assemble" di Tasks.
    7. Pilih OK untuk menyelesaikan konfigurasi baru.
    8. Pastikan konfigurasi Unsigned APK dipilih pada toolbar, lalu pilih Run > Run 'Unsigned APK'.
    Anda dapat menemukan APK yang tidak ditandatangani dalam direktori <ProjectName>/app/build/outputs/apk/.
  2. Temukan alat aapt2, jika belum ada dalam PATH Anda. Jika Anda menggunakan SDK Tools r8 atau yang lebih tinggi, Anda dapat menemukan aapt2 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.

  3. 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 serangkaian izin yang menyiratkan persyaratan fitur tertentu.

Fitur hardware

Bagian ini menampilkan fitur hardware yang didukung oleh rilis platform yang paling baru. 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 atau android.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 menggunakan android.hardware.camera. Kamera belakang adalah fitur yang diperlukan kecuali jika android.hardware.camera dideklarasikan dengan android: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 izin CAMERA, tentukan secara eksplisit bahwa aplikasi Anda menggunakan fitur camera 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 menggunakan android.hardware.camera. Kamera belakang adalah fitur yang diperlukan kecuali jika android.hardware.camera dideklarasikan dengan android:required="false".

Perhatian: Jika aplikasi Anda menggunakan android.hardware.camera.front tetapi tidak secara eksplisit mendeklarasikan android.hardware.camera dengan android.required="false", perangkat yang tidak memiliki kamera belakang (seperti Chromebook) difilter oleh Google Play. Jika aplikasi Anda mendukung perangkat dengan kamera depan saja, deklarasikan android.hardware.camera dengan android.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 menggunakan android.hardware.camera. Kamera belakang adalah fitur yang diperlukan kecuali jika android.hardware.camera dideklarasikan dengan android: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 izin CAMERA, 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, dan android.colorCorrection.mode dari TRANSFORM_MATRIX.

android.hardware.camera.capability.manual_sensor

Aplikasi menggunakan fitur MANUAL_SENSOR yang didukung oleh kamera perangkat.

Fitur ini menyiratkan dukungan untuk penguncian eksposur otomatis (android.control.aeLock), yang memungkinkan waktu dan sensitivitas eksposur kamera tetap 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 agar aplikasi Anda dapat 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. Dukungan FULL mencakup kemampuan burst-capture, kontrol per frame, dan kontrol pascapemrosesan manual. Lihat INFO_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; sebagai gantinya gunakan android.software.leanback.)

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 jam. Jam 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: Tetapkan 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 akurat 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 fitur induk ini dideklarasikan dengan atribut android: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 fitur induk ini dideklarasikan dengan atribut android: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 menggunakan android:screenOrientation, tetapi tidak benar-benar memerlukannya, Anda dapat menonaktifkan persyaratan tersebut dengan mendeklarasikan orientasi bersama elemen <uses-feature> dan memasukkan android: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 dengan android: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 dengan android: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 dengan android.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 menggunakanandroid.hardware.touchscreen dengan android:required="false". Tambahkan deklarasi ini jika aplikasi Anda menggunakan, tetapi tidak memerlukan, antarmuka layar sentuh sungguhan. Semua aplikasi yang tidak secara eksplisit memerlukan android.hardware.touchscreen juga berfungsi pada perangkat dengan android.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 dengan android: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 dengan android: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 dengan android: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, lihat FEATURE_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, lihat FEATURE_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, lihat FEATURE_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 Protokol Pemulaian Sesi (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 dengan android:required="false".

android.software.webview
Aplikasi menampilkan materi dari internet.

Fitur software input khusus

android.software.input_methods
Aplikasi menggunakan metode input baru, yang ditentukan developer di 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 menerapkan 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 menyertakan 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 Android TV.
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 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 yang lebih tinggi dan masing-masing 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.

Tabel 2. Izin perangkat yang menyiratkan penggunaan hardware.

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

android.hardware.location

android.hardware.location.network (Hanya jika level API target adalah 20 atau lebih rendah.)

ACCESS_FINE_LOCATION

android.hardware.location

android.hardware.location.gps (Hanya jika level API target adalah 20 atau lebih rendah.)

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