Tetap teratur dengan koleksi Simpan dan kategorikan konten berdasarkan preferensi Anda.

Google Play menggunakan elemen <uses-feature> yang di deklarasikan 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 cara Google Play menggunakan fitur sebagai dasar pemfilteran, baca Pemfilteran berbasis fitur dan Google Play, di bawah ini.

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 menjadi dependen dengan aplikasi Anda. Elemen ini menawarkan atribut required yang memungkinkan Anda menentukan apakah aplikasi memerlukan dan tidak dapat berfungsi tanpa fitur yang dideklarasikan, atau apakah aplikasi 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 bagian bawah 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 akan 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, Anda harus selalu memastikan untuk mendeklarasikan elemen <uses-feature> untuk semua fitur yang diperlukan aplikasi Anda.

Elemen <uses-feature> dideklarasikan hanya sebagai informasi, yang berarti bahwa sistem Android tidak memeriksa dukungan fitur yang cocok pada perangkat sebelum menginstal aplikasi. Namun, layanan lainnya (seperti Google Play) atau aplikasi mungkin memeriksa deklarasi <uses-feature> aplikasi Anda sebagai bagian dari penanganan atau interaksi dengan aplikasi. Karena hal ini, Anda harus mendeklarasikan semua fitur (dari daftar di bawah) yang digunakan aplikasi.

Untuk beberapa fitur, mungkin ada atribut tertentu yang memungkinkan Anda menentukan versi fitur, seperti versi Open GL yang digunakan (dideklarasikan dengan glEsVersion). Fitur lain yang 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.

Catatan: Ketika mendeklarasikan fitur, ingat bahwa Anda juga harus meminta izin yang sesuai. Misalnya, Anda tetap harus meminta izin CAMERA sebelum aplikasi dapat mengakses camera API. Meminta izin memberikan aplikasi Anda akses ke hardware dan software yang tepat. Mendeklarasikan fitur yang digunakan oleh aplikasi akan 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.
  • Ketika mendeklarasikan android:required="true" untuk fitur, Anda menentukan bahwa aplikasi tidak dapat berfungsi, atau tidak dirancang untuk berfungsi, saat fitur yang ditentukan tidak terdapat pada perangkat.
  • Saat Anda mendeklarasikan android:required="false" untuk fitur, artinya aplikasi lebih memilih untuk menggunakan fitur tersebut jika ada di perangkat, tetapi dirancang untuk berfungsi tanpa fitur yang ditentukan, jika perlu.

Nilai default untuk android:required jika tidak dideklarasikan 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 akan menentukan nilai sebagai "0x00030002".

Aplikasi harus menentukan paling banyak satu atribut android:glEsVersion dalam manifesnya. Jika itu 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, maka 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, aplikasi yang memerlukan OpenGL ES 1.0 dan OpenGL ES 2.0 harus menentukan bahwa aplikasi memerlukan OpenGL ES 2.0.

Aplikasi yang dapat bekerja dengan beberapa versi OpenGL ES seharusnya hanya menentukan versi OpenGL ES terendah secara numerik yang diperlukannya. (Aplikasi dapat memeriksa pada saat runtime jika tersedia level OpenGL ES yang lebih tinggi.)

Untuk informasi penggunaan OpenGL ES lebih lanjut, termasuk cara memeriksa versi OpenGL ES yang didukung saat waktu proses, lihat Panduan OpenGL ES API.

diperkenalkan pada
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 — aplikasi mendeklarasikan fitur di elemen <uses-feature> dalam manifesnya
    dengan...
  • Fitur yang tersedia pada perangkat, dalam hardware atau software — perangkat melaporkan fitur yang didukungnya sebagai properti sistem hanya-baca.

Untuk memastikan perbandingan fitur yang 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 di bagian bawah dokumen ini, dan di dokumentasi class untuk PackageManager.

Ketika pengguna meluncurkan Google Play, aplikasi akan melakukan kueri Package Manager 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 untuk melihat aplikasi dan mendownloadnya. Jika fitur yang diperlukan tidak didukung oleh perangkat, Google Play memfilter aplikasi sehingga tidak terlihat oleh pengguna dan tidak dapat 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 menyediakan 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 lebih tinggi), yang memungkinkan Anda menentukan apakah aplikasi benar-benar memerlukan fitur tersebut dan tidak dapat berfungsi dengan baik tanpanya ("true"), atau apakah aplikasi memilih untuk menggunakan fitur jika tersedia, tetapi dirancang untuk berjalan tanpa fitur itu ("false").

Google Play menangani fitur yang dideklarasikan secara eksplisit dengan cara ini:

  • Jika fitur dideklarasikan secara eksplisit sebagai diperlukan, Google Play menambahkan fitur ke dalam daftar fitur yang diperlukan untuk aplikasi. Google Play kemudian memfilter aplikasi dari pengguna pada perangkat yang tidak menyediakan fitur tersebut. Contoh:
    <uses-feature android:name="android.hardware.camera.any" android:required="true" />
    
  • Jika fitur dideklarasikan secara eksplisit sebagai tidak diperlukan, Google Play tidak akan menambahkan fitur ke dalam daftar fitur yang diperlukan untuk aplikasi. Karena alasan tersebut, fitur tidak diperlukan yang dideklarasikan secara eksplisit tidak pernah dipertimbangkan saat memfilter aplikasi. Bahkan jika perangkat tidak menyediakan fitur yang dideklarasikan, Google Play tetap akan mempertimbangkan aplikasi yang kompatibel dengan perangkat dan akan menunjukkannya ke pengguna, kecuali aturan pemfilteran lain diberlakukan. Contoh:
    <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 versi Android 1.6 dan versi sebelumnya, atribut android:required tidak akan tersedia di API dan Google Play berasumsi bahwa setiap dan 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.

Pemfilteran 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, setiap aplikasi harus selalu mendeklarasikan semua fitur yang digunakan atau diperlukan oleh aplikasi, sehingga ketiadaan deklarasi untuk fitur yang digunakan aplikasi harus 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 dilakukannya untuk fitur yang dideklarasikan secara eksplisit.

Aplikasi mungkin memerlukan suatu fitur namun tidak mendeklarasikannya karena:

  • Aplikasi ini dikompilasi terhadap library Android versi lama (Android 1.5 atau sebelumnya) dan elemen <uses-feature> tidak tersedia.
  • Developer salah berasumsi bahwa fitur akan terdapat pada 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 di atas, Google Play mencoba untuk menelusuri persyaratan fitur implisit suatu aplikasi dengan memeriksa elemen lain yang dideklarasikan pada file manifes, khususnya, elemen <uses-permission>.

Jika aplikasi meminta izin terkait hardware, Google Play menganggap aplikasi tersebut menggunakan fitur hardware pokok, sehingga memerlukan fitur tersebut, meskipun mungkin tidak ada deklarasi <uses-feature> terkait. Untuk izin semacam ini, Google Play menambahkan fitur hardware pokok ke metadata yang disimpannya untuk aplikasi dan menyiapkan filter bagi mereka.

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 referensi 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 di atas, saat 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 yang ditunjukkan pada tabel di bawah, 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 ... atau targetSdkVersion adalah Hasil
<=4 (atau uses-sdk tidak dideklarasikan) <=4 Google Play tidak akan 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 di bawah ini menunjukkan efek pemfilteran yang berbeda, berdasarkan cara Google Play menangani fitur Bluetooth.

Dalam contoh pertama, aplikasi yang dirancang untuk berjalan pada API level 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, di bawah, aplikasi yang sama juga mendeklarasikan API level target "5".
Hasil: Google Play sekarang beranggapan bahwa fitur tersebut diperlukan dan akan memfilter aplikasi dari semua perangkat yang tidak melaporkan dukungan Bluetooth, termasuk perangkat yang menjalankan versi platform lama.
<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: Serupa 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>
Yang terakhir, dalam kasus di bawah ini, 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 diperlukan oleh aplikasi

Anda dapat menggunakan alat aapt, termasuk dalam Android SDK, untuk menentukan cara Google Play memfilter aplikasi Anda, berdasarkan fitur dan izin yang dideklarasikannya. Untuk melakukannya, jalankan aapt dengan perintah dump badging. Hal ini menyebabkan aapt melakukan parse manifes aplikasi Anda dan menerapkan aturan sama seperti yang digunakan oleh Google Play untuk menentukan fitur yang diperlukan aplikasi.

Untuk menggunakan alat ini, ikuti langkah-langkah berikut:

  1. Pertama, buat dan ekspor aplikasi sebagai .apk yang belum ditandatangani. Jika Anda mengembangkan pada Android Studio, buat aplikasi Anda dengan Gradle:
    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. Masukkan Unsigned APK dalam Name.
    5. Pilih modul Anda dari bagian Gradle project.
    6. Masukkan assemble dalam Tasks.
    7. Pilih OK untuk menyelesaikan konfigurasi baru.
    8. Pastikan konfigurasi Unsigned APK dipilih pada toolbar dan pilih Run > Run 'Unsigned APK'.
    Anda dapat menemukan .apk yang belum ditandatangani dalam direktori <ProjectName>/app/build/outputs/apk/.
  2. Berikutnya, temukan alat aapt, jika belum ada dalam PATH Anda. Jika Anda menggunakan SDK Tools r8 atau yang lebih tinggi, Anda dapat menemukan aapt dalam direktori <SDK>/build-tools/<tools version number>.

    Catatan: Anda harus menggunakan versi aapt yang disediakan untuk komponen Build-Tools terbaru yang tersedia. Jika Anda belum memiliki komponen Build-Tools terbaru, download menggunakan Android SDK Manager.

  3. Jalankan aapt menggunakan sintaksis ini:
$ aapt dump badging <path_to_exported_.apk>

Berikut ini adalah contoh output perintah untuk contoh Bluetooth kedua, di atas:

$ ./aapt 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 sebagian besar 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 tidak mendukung semua 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).

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 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, misalnya:
<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) akan difilter oleh Google Play. Jika aplikasi Anda hanya mendukung kamera depan, 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 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, misalnya:
<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 mengizinkan aplikasi 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 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. 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: Perlu diingat bahwa, karena pengguna sedang mengemudi saat menggunakan tipe 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 biasa untuk ruang tamu: ditampilkan pada layar yang besar dengan pengguna duduk jauh dari layar dan format input yang banyak dipakai adalah sesuatu seperti d-pad, dan biasanya tidak menggunakan kursor, mouse, 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.

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 Packyang 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 dapat 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 dapat melaporkan tekanan udara.
android.hardware.sensor.compass
Aplikasi menggunakan magnetometer (kompas) perangkat. Misalnya, aplikasi navigasi dapat 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 jika perlu beralih antara orientasi potret dan lanskap.
android.hardware.sensor.hifi_sensors
Aplikasi menggunakan sensor high fidelity (Hi-Fi) perangkat. Misalnya, suatu aplikasi game dapat mendeteksi gerakan presisi tinggi dari pengguna.
android.hardware.sensor.heartrate
Aplikasi menggunakan pemantau detak jantung dari perangkat. Misalnya, aplikasi kebugaran dapat melaporkan kecenderungan denyut jantung pengguna dari waktu ke waktu.
android.hardware.sensor.heartrate.ecg
Aplikasi menggunakan sensor detak jantung elektrokardiogram (ECG) perangkat. Misalnya, aplikasi kebugaran dapat melaporkan informasi lebih mendetail mengenai denyut jantung pengguna.
android.hardware.sensor.light
Aplikasi menggunakan sensor cahaya perangkat. Misalnya, aplikasi dapat menampilkan satu dari dua skema warna yang berbeda berdasarkan kondisi pencahayaan di sekitarnya.
android.hardware.sensor.proximity
Aplikasi menggunakan sensor kedekatan perangkat. Misalnya, aplikasi telepon dapat 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 dapat menggunakan kelembapan untuk menghitung dan melaporkan titik embun saat ini.
android.hardware.sensor.stepcounter
Aplikasi menggunakan penghitung langkah perangkat. Misalnya, aplikasi kebugaran dapat 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 dapat menggunakan interval waktu antar 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, maka Anda tidak perlu mendeklarasikan tiap-tiap fitur.

Misalnya, jika aplikasi Anda memerlukan orientasi potret, Anda harus mendeklarasikan 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 pada perangkat yang mendukung salah satu atau kedua orientasi. Namun, jika ada aktivitas yang meminta agar mereka berjalan dalam orientasi tertentu, menggunakan atribut android:screenOrientation, maka deklarasi ini menegaskan bahwa aplikasi Anda memerlukan orientasi tersebut. Misalnya, jika Anda mendeklarasikan android:screenOrientation dengan "landscape", "reverseLandscape", atau "sensorLandscape", maka aplikasi Anda hanya akan tersedia pada perangkat yang mendukung orientasi lanskap.

Sebagai praktik terbaik, Anda harus tetap mendeklarasikan 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 tersebut kompatibel dengan perangkat hanya jika perangkat mengemulasi layar sentuh (antarmuka "sentuh palsu") 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 dapat menggerakkan kursor pada layar. Jika aplikasi Anda memerlukan interaksi tunjuk dan klik dasar (dengan kata lain, itu tidak akan berfungsi hanya dengan pengontrol d-pad), Anda harus mendeklarasikan 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.

Catatan: 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 secara eksplisit tidak memerlukan android.hardware.touchscreen juga akan 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 masukan 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, aplikasi Anda membutuhkan fitur ini. Oleh karena itu, aplikasi Anda tidak tersedia untuk perangkat yang hanya menyediakan antarmuka sentuh teremulasi ("sentuh palsu") secara default. Jika ingin aplikasi tersedia pada perangkat yang menyediakan antarmuka sentuh palsu (atau bahkan pada perangkat yang hanya menyediakan pengontrol d-pad), Anda harus mendeklarasikan secara eksplisit bahwa layar sentuh tidak diperlukan dengan menyatakan android.hardware.touchscreen bersama android:required="false". Anda harus menambahkan deklarasi ini jika aplikasi Anda menggunakan layar sentuh—namun tidak memerlukan—antarmuka layar sentuh. Semua aplikasi yang tidak secara eksplisit memerlukan android.hardware.touchscreen juga akan berfungsi pada perangkat dengan android.hardware.faketouch.

Jika aplikasi Anda sebenarnya memerlukan antarmuka sentuh (untuk melakukan gestur sentuh lanjutan seperti mengayunkan jari), maka Anda tidak perlu mendeklarasikan semua fitur antarmuka sentuh karena pada dasarnya mereka 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, Anda harus menyatakan bahwa aplikasi Anda menggunakan fitur layar sentuh lanjutan.

android.hardware.touchscreen.multitouch

Aplikasi ini menggunakan kemampuan multisentuh dua titik dasar dari perangkat, seperti untuk gestur cubit, tetapi aplikasi tidak perlu melacak gestur sentuh 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 komputasi level 0 Vulkan, Anda harus mendeklarasikan fitur berikut:
<uses-feature
    android:name="android.hardware.vulkan.compute"
    android:version="0"
    android:required="true" />
Lihat FEATURE_VULKAN_HARDWARE_COMPUTE untuk detail lebih lanjut tentang versi hardware.
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, Anda harus mendeklarasikan fitur berikut:
<uses-feature
    android:name="android.hardware.vulkan.level"
    android:version="0"
    android:required="true" />
Lihat FEATURE_VULKAN_HARDWARE_LEVEL untuk detail lebih lanjut tentang versi hardware.
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 Vulkan 1.0, Anda harus mendeklarasikan fitur berikut:
<uses-feature
    android:name="android.hardware.vulkan.version"
    android:version="0x400003"
    android:required="true" />
Lihat FEATURE_VULKAN_HARDWARE_VERSION untuk detail versi hardware selengkapnya.

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 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 boleh diinstal pada 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; misalnya, fitur android.hardware.bluetooth ditambahkan dalam Android 2.2 (API level 8), tetapi Bluetooth API yang dimaksud ditambahkan dalam Android 2.0 (API level 5). Karena itu, beberapa aplikasi dapat menggunakan API sebelum aplikasi memiliki kemampuan untuk mendeklarasikan bahwa API menggunakan sistem <uses-feature> diperlukan.

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 bahwa 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>.

Perhatikan bahwa deklarasi <uses-feature>, termasuk setiap atribut android:required yang dideklarasikan, selalu lebih diutamakan daripada fitur implisit 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.

Tabel 2. Izin perangkat yang menegaskan penggunaan hardware.

Kategori Izin Persyaratan fitur implisit
Bluetooth BLUETOOTH android.hardware.bluetooth

(Lihat Penanganan khusus untuk fitur Bluetooth untuk 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