API Android 6.0

Android 6.0 (M) menawarkan fitur baru untuk pengguna dan developer aplikasi. Dokumen ini memberikan pengantar tentang API yang paling penting.

Mulai mengembangkan

Untuk mulai membuat aplikasi untuk Android 6.0, Anda harus mendapatkan Android SDK terlebih dahulu. Kemudian, gunakan SDK Manager untuk mendownload Android 6.0 SDK Platform dan Image Sistem.

Mengupdate level API target

Untuk mengoptimalkan aplikasi Anda dengan lebih baik untuk perangkat yang menjalankan Android, setel targetSdkVersion ke "23", instal aplikasi Anda di image sistem Android, uji, lalu publikasikan aplikasi yang diupdate dengan perubahan ini.

Anda dapat menggunakan Android API sekaligus mendukung versi yang lebih lama dengan menambahkan kondisi ke kode yang memeriksa level API sistem sebelum menjalankan API yang tidak didukung oleh minSdkVersion. Untuk mempelajari lebih lanjut cara mempertahankan kompatibilitas dengan versi lama, baca Mendukung Versi Platform yang Berbeda.

Untuk mengetahui informasi selengkapnya tentang cara kerja level API, baca Apa yang dimaksud dengan Level API?

Autentikasi Sidik Jari

Rilis ini menawarkan API baru untuk memungkinkan Anda mengautentikasi pengguna dengan menggunakan pemindaian sidik jari mereka di perangkat yang didukung. Gunakan API ini bersama dengan sistem Android Keystore.

Untuk mengautentikasi pengguna melalui pemindaian sidik jari, dapatkan instance class FingerprintManager baru dan panggil metode authenticate(). Aplikasi Anda harus berjalan di perangkat yang kompatibel dengan sensor sidik jari. Anda harus menerapkan antarmuka pengguna untuk alur autentikasi sidik jari di aplikasi Anda, dan menggunakan ikon sidik jari Android standar di UI Anda. Ikon sidik jari Android (c_fp_40px.png) disertakan dalam contoh Autentikasi Biometrik. Jika Anda mengembangkan beberapa aplikasi yang menggunakan autentikasi sidik jari, perhatikan bahwa setiap aplikasi harus mengautentikasi sidik jari pengguna secara independen.

Untuk menggunakan fitur ini di aplikasi Anda, tambahkan terlebih dahulu izin USE_FINGERPRINT di manifes Anda.

<uses-permission
        android:name="android.permission.USE_FINGERPRINT" />
Ponsel yang menampilkan fungsi autentikasi sidik jari

Untuk melihat penerapan autentikasi sidik jari di aplikasi, lihat Contoh Autentikasi Biometrik. Untuk melihat demonstrasi cara menggunakan API autentikasi ini bersama dengan API Android lainnya, tonton video Fingerprint and Payment APIs.

Jika Anda sedang menguji fitur ini, ikuti langkah-langkah berikut:

  1. Instal Android SDK Tools Revisi 24.3, jika Anda belum melakukannya.
  2. Daftarkan sidik jari baru di emulator dengan membuka Setelan > Keamanan > Sidik jari, lalu ikuti petunjuk pendaftaran.
  3. Gunakan emulator untuk meniru peristiwa sentuhan sidik jari dengan perintah berikut. Gunakan perintah yang sama untuk meniru peristiwa sentuh sidik jari di layar kunci atau di aplikasi Anda.
    adb -e emu finger touch <finger_id>
    

    Di Windows, Anda mungkin harus menjalankan telnet 127.0.0.1 <emulator-id>, diikuti dengan finger touch <finger_id>.

Konfirmasi Kredensial

Aplikasi Anda dapat mengautentikasi pengguna berdasarkan seberapa baru-baru ini mereka terakhir kali membuka kunci perangkat mereka. Fitur ini membebaskan pengguna dari keharusan mengingat sandi tambahan khusus aplikasi, dan menghindari kebutuhan Anda untuk menerapkan antarmuka pengguna autentikasi Anda sendiri. Aplikasi Anda harus menggunakan fitur ini bersama dengan penerapan kunci publik atau rahasia untuk autentikasi pengguna.

Untuk menyetel durasi waktu tunggu agar kunci yang sama dapat digunakan kembali setelah pengguna berhasil diautentikasi, panggil metode setUserAuthenticationValidityDurationSeconds() baru saat Anda menyiapkan KeyGenerator atau KeyPairGenerator.

Hindari menampilkan dialog autentikasi ulang secara berlebihan -- aplikasi Anda harus mencoba menggunakan objek kriptografi terlebih dahulu dan jika waktu tunggu habis, gunakan metode createConfirmDeviceCredentialIntent() untuk mengautentikasi ulang pengguna dalam aplikasi Anda.

Penautan Aplikasi

Rilis ini meningkatkan sistem intent Android dengan menyediakan penautan aplikasi yang lebih efektif. Fitur ini memungkinkan Anda mengaitkan aplikasi dengan domain web yang Anda miliki. Berdasarkan asosiasi ini, platform dapat menentukan aplikasi default yang akan digunakan untuk menangani link web tertentu dan melewati permintaan kepada pengguna untuk memilih aplikasi. Untuk mempelajari cara menerapkan fitur ini, lihat Menangani Link Aplikasi.

Pencadangan Otomatis untuk Aplikasi

Sistem kini melakukan pencadangan dan pemulihan data penuh otomatis untuk aplikasi. Aplikasi Anda harus menargetkan Android 6.0 (level API 23) untuk mengaktifkan perilaku ini; Anda tidak perlu menambahkan kode tambahan. Jika pengguna menghapus Akun Google mereka, data cadangan mereka juga akan dihapus. Untuk mempelajari cara kerja fitur ini dan cara mengonfigurasi apa yang akan dicadangkan di sistem file, lihat Mengonfigurasi Pencadangan Otomatis untuk Aplikasi.

Berbagi Langsung

Bagian bawah perangkat seluler yang menampilkan fungsi Berbagi Langsung

Rilis ini menyediakan API untuk membuat berbagi menjadi intuitif dan cepat bagi pengguna. Anda kini dapat menentukan target berbagi langsung yang meluncurkan aktivitas tertentu di aplikasi Anda. Target berbagi langsung ini ditampilkan kepada pengguna melalui menu Bagikan. Fitur ini memungkinkan pengguna membagikan konten ke target, seperti kontak, dalam aplikasi lain. Misalnya, target berbagi langsung dapat meluncurkan aktivitas di aplikasi jejaring sosial lain, yang memungkinkan pengguna membagikan konten langsung ke teman atau komunitas tertentu di aplikasi tersebut.

Untuk mengaktifkan target berbagi langsung, Anda harus menentukan class yang memperluas class ChooserTargetService. Deklarasikan layanan Anda di manifes. Dalam deklarasi tersebut, tentukan izin BIND_CHOOSER_TARGET_SERVICE dan filter intent menggunakan tindakan SERVICE_INTERFACE.

Contoh berikut menunjukkan cara mendeklarasikan ChooserTargetService dalam manifes Anda.

<service android:name=".ChooserTargetService"
        android:label="@string/service_name"
        android:permission="android.permission.BIND_CHOOSER_TARGET_SERVICE">
    <intent-filter>
        <action android:name="android.service.chooser.ChooserTargetService" />
    </intent-filter>
</service>

Untuk setiap aktivitas yang ingin Anda ekspos ke ChooserTargetService, tambahkan elemen <meta-data> dengan nama "android.service.chooser.chooser_target_service" di manifes aplikasi Anda.

<activity android:name=".MyShareActivity”
        android:label="@string/share_activity_label">
    <intent-filter>
        <action android:name="android.intent.action.SEND" />
    </intent-filter>
<meta-data
        android:name="android.service.chooser.chooser_target_service"
        android:value=".ChooserTargetService" />
</activity>

Interaksi Suara

Rilis ini menyediakan API interaksi suara baru yang, bersama dengan Tindakan Suara, memungkinkan Anda membangun pengalaman suara percakapan ke dalam aplikasi Anda. Panggil metode isVoiceInteraction() untuk menentukan apakah tindakan suara memicu aktivitas Anda. Jika ya, aplikasi Anda dapat menggunakan class VoiceInteractor untuk meminta konfirmasi suara dari pengguna, memilih dari daftar opsi, dan lainnya.

Sebagian besar interaksi suara berasal dari tindakan suara pengguna. Namun, aktivitas interaksi suara juga dapat dimulai tanpa input pengguna. Misalnya, aplikasi lain yang diluncurkan melalui interaksi suara juga dapat mengirimkan intent untuk meluncurkan interaksi suara. Untuk menentukan apakah aktivitas Anda diluncurkan dari kueri suara pengguna atau dari aplikasi interaksi suara lain, panggil metode isVoiceInteractionRoot(). Jika aplikasi lain meluncurkan aktivitas Anda, metode akan menampilkan false. Kemudian, aplikasi Anda dapat meminta pengguna untuk mengonfirmasi bahwa mereka menginginkan tindakan ini.

Untuk mempelajari lebih lanjut cara menerapkan voice action, lihat situs developer Voice Action.

Assist API

Rilis ini menawarkan cara baru bagi pengguna untuk berinteraksi dengan aplikasi Anda melalui asisten. Untuk menggunakan fitur ini, pengguna harus mengizinkan asisten menggunakan konteks saat ini. Setelah diaktifkan, pengguna dapat memanggil asisten dalam aplikasi apa pun, dengan menekan lama tombol Layar Utama.

Aplikasi Anda dapat memilih untuk tidak membagikan konteks saat ini kepada asisten dengan menyetel flag FLAG_SECURE. Selain set standar informasi yang diteruskan platform ke asisten, aplikasi Anda dapat membagikan informasi tambahan menggunakan class AssistContent baru.

Untuk memberikan konteks tambahan dari aplikasi Anda kepada asisten, ikuti langkah-langkah berikut:

  1. Mengimplementasikan antarmuka Application.OnProvideAssistDataListener.
  2. Daftarkan pemroses ini menggunakan registerOnProvideAssistDataListener().
  3. Untuk memberikan informasi kontekstual khusus aktivitas, ganti panggilan balik onProvideAssistData() dan, secara opsional, panggilan balik onProvideAssistContent() baru.

Perangkat Penyimpanan yang Dapat Diadaptasi

Dengan rilis ini, pengguna dapat mengadopsi perangkat penyimpanan eksternal seperti kartu SD. Menggunakan perangkat penyimpanan eksternal akan mengenkripsi dan memformat perangkat agar berfungsi seperti penyimpanan internal. Fitur ini memungkinkan pengguna memindahkan aplikasi dan data pribadi aplikasi tersebut antar-perangkat penyimpanan. Saat memindahkan aplikasi, sistem akan mematuhi preferensi android:installLocation dalam manifes.

Jika aplikasi Anda mengakses API atau kolom berikut, perlu diketahui bahwa jalur file yang ditampilkan akan berubah secara dinamis saat aplikasi dipindahkan antara perangkat penyimpanan internal dan eksternal. Saat membuat jalur file, sangat disarankan agar Anda selalu memanggil API ini secara dinamis. Jangan gunakan jalur file hard code atau mempertahankan jalur file yang sepenuhnya memenuhi syarat yang dibuat sebelumnya.

Untuk men-debug fitur ini, Anda dapat mengaktifkan adopsi drive USB yang terhubung ke perangkat Android melalui kabel USB On-The-Go (OTG), dengan menjalankan perintah ini:

$ adb shell sm set-force-adoptable true

Notifikasi

Rilis ini menambahkan perubahan API berikut untuk notifikasi:

Dukungan Stilus Bluetooth

Rilis ini memberikan dukungan yang lebih baik untuk input pengguna menggunakan stylus Bluetooth. Pengguna dapat menyambungkan dan menghubungkan stylus Bluetooth yang kompatibel dengan ponsel atau tablet mereka. Saat terhubung, informasi posisi dari layar sentuh digabungkan dengan informasi tekanan dan tombol dari stilus untuk memberikan rentang ekspresi yang lebih luas daripada hanya dengan layar sentuh. Aplikasi Anda dapat memproses tekanan tombol stylus dan melakukan tindakan sekunder, dengan mendaftarkan objek View.OnContextClickListener dan GestureDetector.OnContextClickListener dalam aktivitas Anda.

Gunakan metode dan konstanta MotionEvent untuk mendeteksi interaksi tombol stylus:

Peningkatan Pemindaian Bluetooth Hemat Energi

Jika aplikasi Anda melakukan pemindaian Bluetooth Hemat Energi, gunakan metode setCallbackType() baru untuk menentukan bahwa Anda ingin sistem memberi tahu callback saat pertama kali menemukan, atau melihat setelah waktu yang lama, paket iklan yang cocok dengan ScanFilter yang ditetapkan. Pendekatan pemindaian ini lebih hemat daya daripada yang disediakan di versi platform sebelumnya.

Dukungan Hotspot 2.0 Rilis 1

Rilis ini menambahkan dukungan untuk spesifikasi Hotspot 2.0 Rilis 1 di perangkat Nexus 6 dan Nexus 9. Untuk menyediakan kredensial Hotspot 2.0 di aplikasi Anda, gunakan metode baru class WifiEnterpriseConfig, seperti setPlmn() dan setRealm(). Dalam objek WifiConfiguration, Anda dapat menetapkan kolom FQDN dan providerFriendlyName. Metode isPasspointNetwork() baru menunjukkan apakah jaringan yang terdeteksi merupakan titik akses Hotspot 2.0.

Mode Tampilan 4K

Platform kini memungkinkan aplikasi meminta agar resolusi layar ditingkatkan ke rendering 4K pada hardware yang kompatibel. Untuk membuat kueri resolusi fisik saat ini, gunakan API Display.Mode baru. Jika UI digambar pada resolusi logis yang lebih rendah dan di-upscale ke resolusi fisik yang lebih besar, perhatikan bahwa resolusi fisik yang ditampilkan oleh metode getPhysicalWidth() mungkin berbeda dengan resolusi logis yang dilaporkan oleh getSize().

Anda dapat meminta sistem untuk mengubah resolusi fisik di aplikasi saat berjalan, dengan menyetel properti preferredDisplayModeId jendela aplikasi. Fitur ini berguna jika Anda ingin beralih ke resolusi layar 4K. Saat dalam mode tampilan 4K, UI terus dirender pada resolusi asli (seperti 1080p) dan di-upscale ke 4K, tetapi objek SurfaceView dapat menampilkan konten pada resolusi native.

ColorStateList yang Dapat Ditemakan

Atribut tema kini didukung di ColorStateList untuk perangkat yang berjalan di Android 6.0 (level API 23). Metode Resources.getColorStateList() dan Resources.getColor() tidak digunakan lagi. Jika Anda memanggil API ini, panggil metode Context.getColorStateList() atau Context.getColor() yang baru. Metode ini juga tersedia di library appcompat v4 melalui ContextCompat.

Fitur Audio

Rilis ini menambahkan peningkatan pada pemrosesan audio di Android, termasuk:

  • Dukungan untuk protokol MIDI, dengan API android.media.midi baru. Gunakan API ini untuk mengirim dan menerima peristiwa MIDI.
  • Class AudioRecord.Builder dan AudioTrack.Builder baru untuk membuat objek pengambilan dan pemutaran audio digital masing-masing, serta mengonfigurasi properti sumber dan tujuan audio untuk menggantikan setelan default sistem.
  • Hook API untuk mengaitkan perangkat audio dan input. Hal ini sangat berguna jika aplikasi Anda memungkinkan pengguna memulai penelusuran suara dari pengontrol game atau remote control yang terhubung ke Android TV. Sistem memanggil callback onSearchRequested() baru saat pengguna memulai penelusuran. Untuk menentukan apakah perangkat input pengguna memiliki mikrofon bawaan, ambil objek InputDevice dari callback tersebut, lalu panggil metode hasMicrophone() baru.
  • Metode getDevices() baru yang memungkinkan Anda mengambil daftar semua perangkat audio yang saat ini terhubung ke sistem. Anda juga dapat mendaftarkan objek AudioDeviceCallback jika Anda ingin sistem memberi tahu aplikasi Anda saat perangkat audio terhubung atau terputus.

Fitur Video

Rilis ini menambahkan kemampuan baru ke API pemrosesan video, termasuk:

  • Class MediaSync baru yang membantu aplikasi merender aliran audio dan video secara serentak. Buffer audio dikirimkan secara non-blocking dan ditampilkan melalui callback. Fitur ini juga mendukung laju pemutaran dinamis.
  • Peristiwa EVENT_SESSION_RECLAIMED baru, yang menunjukkan bahwa sesi yang dibuka oleh aplikasi telah diambil kembali oleh pengelola resource. Jika aplikasi Anda menggunakan sesi DRM, Anda harus menangani peristiwa ini dan memastikan untuk tidak menggunakan sesi yang diklaim ulang.
  • Kode error ERROR_RECLAIMED baru, yang menunjukkan bahwa pengelola resource merebut kembali resource media yang digunakan oleh codec. Dengan pengecualian ini, codec harus dilepaskan, karena telah berpindah ke status terminal.
  • Antarmuka getMaxSupportedInstances() baru untuk mendapatkan petunjuk tentang jumlah maksimum instance codec serentak yang didukung.
  • Metode setPlaybackParams() baru untuk menyetel laju pemutaran media untuk pemutaran gerak cepat atau gerak lambat. Fitur ini juga memperpanjang atau mempercepat pemutaran audio secara otomatis bersamaan dengan video.

Fitur Kamera

Rilis ini mencakup API baru berikut untuk mengakses senter kamera dan untuk pemrosesan ulang gambar kamera:

Flashlight API

Jika perangkat kamera memiliki unit flash, Anda dapat memanggil metode setTorchMode() untuk mengaktifkan atau menonaktifkan mode senter unit flash tanpa membuka perangkat kamera. Aplikasi tidak memiliki kepemilikan eksklusif atas unit flash atau perangkat kamera. Mode senter dinonaktifkan dan tidak tersedia setiap kali perangkat kamera tidak tersedia, atau saat resource kamera lain yang membuat senter tetap menyala tidak tersedia. Aplikasi lain juga dapat memanggil setTorchMode() untuk menonaktifkan mode senter. Saat aplikasi terakhir yang mengaktifkan mode senter ditutup, mode senter akan dinonaktifkan.

Anda dapat mendaftarkan callback untuk diberi tahu tentang status mode senter dengan memanggil metode registerTorchCallback(). Saat pertama kali didaftarkan, callback akan segera dipanggil dengan status mode senter dari semua perangkat kamera yang saat ini diketahui memiliki unit flash. Jika mode senter berhasil diaktifkan atau dinonaktifkan, metode onTorchModeChanged() akan dipanggil.

API Pemrosesan Ulang

Camera2 API diperluas untuk mendukung pemrosesan ulang gambar format YUV dan buram pribadi. Untuk menentukan apakah kemampuan pemrosesan ulang ini tersedia, panggil getCameraCharacteristics() dan periksa kunci REPROCESS_MAX_CAPTURE_STALL. Jika perangkat mendukung pemrosesan ulang, Anda dapat membuat sesi pengambilan kamera yang dapat diproses ulang dengan memanggil createReprocessableCaptureSession(), dan membuat permintaan untuk pemrosesan ulang buffer input.

Gunakan class ImageWriter untuk menghubungkan aliran buffer input ke input pemrosesan ulang kamera. Untuk mendapatkan buffer kosong, ikuti model pemrograman ini:

  1. Panggil metode dequeueInputImage().
  2. Isi data ke dalam buffer input.
  3. Kirim buffer ke kamera dengan memanggil metode queueInputImage().

Jika Anda menggunakan objek ImageWriter bersama dengan gambar PRIVATE, aplikasi Anda tidak dapat mengakses data gambar secara langsung. Sebagai gantinya, teruskan gambar PRIVATE langsung ke ImageWriter dengan memanggil metode queueInputImage() tanpa penyalinan buffer.

Class ImageReader kini mendukung streaming gambar format PRIVATE. Dukungan ini memungkinkan aplikasi Anda mempertahankan antrean gambar melingkar dari ImageReader gambar output, memilih satu atau beberapa gambar, dan mengirimkannya ke ImageWriter untuk pemrosesan ulang kamera.

Fitur Android untuk Kerja

Rilis ini mencakup API baru berikut untuk Android for Work:

  • Kontrol yang ditingkatkan untuk perangkat Sekali Pakai Milik Perusahaan: Pemilik Perangkat kini dapat mengontrol setelan berikut untuk meningkatkan pengelolaan perangkat Sekali Pakai Milik Perusahaan (COSU):
  • Penginstalan dan peng-uninstalan aplikasi secara diam-diam oleh Pemilik Perangkat: Pemilik Perangkat kini dapat menginstal dan meng-uninstal aplikasi secara diam-diam menggunakan PackageInstallerAPI, terlepas dari Google Play untuk Kerja. Anda kini dapat menyediakan perangkat melalui Pemilik Perangkat yang mengambil dan menginstal aplikasi tanpa interaksi pengguna. Fitur ini berguna untuk mengaktifkan penyediaan kios atau perangkat serupa sekali sentuh tanpa mengaktifkan Akun Google.
  • Akses sertifikat perusahaan tanpa interaksi pengguna: Saat aplikasi memanggil choosePrivateKeyAlias(), sebelum pengguna diminta untuk memilih sertifikat, Pemilik Profil atau Perangkat kini dapat memanggil metode onChoosePrivateKeyAlias() untuk memberikan alias secara diam-diam ke aplikasi yang meminta. Dengan fitur ini, Anda dapat memberikan akses aplikasi terkelola ke sertifikat tanpa interaksi pengguna.
  • Penerimaan otomatis update sistem. Dengan menetapkan kebijakan update sistem dengan setSystemUpdatePolicy(), Pemilik Perangkat kini dapat menyetujui update sistem secara otomatis, misalnya dalam kasus perangkat kios, atau menunda update dan mencegahnya dilakukan oleh pengguna hingga 30 hari. Selain itu, administrator dapat menetapkan jangka waktu harian saat update harus dilakukan, misalnya selama jam-jam saat perangkat kios tidak digunakan. Saat update sistem tersedia, sistem akan memeriksa apakah aplikasi pengontrol kebijakan perangkat telah menetapkan kebijakan update sistem, dan bertindak sesuai dengan kebijakan tersebut.
  • Penginstalan sertifikat yang didelegasikan: Pemilik Profil atau Perangkat kini dapat memberi aplikasi pihak ketiga kemampuan untuk memanggil API pengelolaan sertifikat DevicePolicyManager ini:
  • Ponsel yang menampilkan fitur notifikasi status kerja dalam Android for Work
  • Pelacakan penggunaan data. Pemilik Profil atau Perangkat kini dapat membuat kueri untuk statistik penggunaan data yang terlihat di Setelan > Penggunaan data dengan menggunakan metode NetworkStatsManager baru. Pemilik Profil otomatis diberi izin untuk membuat kueri data di profil yang mereka kelola, sementara Pemilik Perangkat mendapatkan akses ke data penggunaan pengguna utama terkelola.
  • Pengelolaan izin runtime:

    Pemilik Profil atau Perangkat dapat menetapkan kebijakan izin untuk semua permintaan runtime dari semua aplikasi menggunakan setPermissionPolicy(), untuk meminta pengguna memberikan izin atau memberikan atau menolak izin secara otomatis tanpa pemberitahuan. Jika kebijakan terakhir disetel, pengguna tidak dapat mengubah pilihan yang dibuat oleh Pemilik Profil atau Perangkat dalam layar izin aplikasi di Setelan.

  • VPN di Setelan: Aplikasi VPN kini terlihat di Setelan > Lainnya > VPN. Selain itu, notifikasi yang menyertai penggunaan VPN kini khusus untuk cara VPN tersebut dikonfigurasi. Untuk Pemilik Profil, notifikasi khusus untuk mengetahui apakah VPN dikonfigurasi untuk profil terkelola, profil pribadi, atau keduanya. Untuk Pemilik Perangkat, notifikasi khusus untuk mengetahui apakah VPN dikonfigurasi untuk seluruh perangkat.
  • Notifikasi status kerja: Ikon koper di status bar kini muncul setiap kali aplikasi dari profil terkelola memiliki aktivitas di latar depan. Selain itu, jika perangkat dibuka kuncinya langsung ke aktivitas aplikasi di profil terkelola, toast akan ditampilkan untuk memberi tahu pengguna bahwa mereka berada dalam profil kerja.