Android 6.0 API

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

Mulai mengembangkan

Untuk mulai membangun aplikasi bagi Android 6.0, pertama-tama Anda harus mendapatkan Android SDK. Kemudian gunakan SDK Manager untuk mengunduh Android 6.0 SDK Platform dan System Images.

Memperbarui target API level Anda

Untuk lebih mengoptimalkan aplikasi Anda pada perangkat yang menjalankan Android, setel targetSdkVersion ke "23", pasang aplikasi Anda di citra sistem Android, lakukan pengujian, kemudian publikasikan aplikasi yang telah diperbarui bersama perubahan ini.

Anda bisa menggunakan Android API sekaligus mendukung versi lama dengan menambahkan syarat ke kode yang akan memeriksa API level sistem sebelum mengeksekusi API yang tidak didukung oleh minSdkVersion Anda. Untuk mengetahui selengkapnya tentang mempertahankan kompatibilitas mundur, baca Mendukung Versi Platform Berbeda.

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

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 kelas FingerprintManager yang baru dan panggil metode authenticate(). Aplikasi harus berjalan pada perangkat yang kompatibel dengan sensor sidik jari. Anda harus mengimplementasikan antarmuka pengguna agar alur autentikasi sidik jari berjalan lancar di aplikasi, dan gunakan ikon sidik jari standar Android di UI. Ikon sidik jari Android (c_fp_40px.png) telah disertakan dalam contoh Dialog Sidik Jari. 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, pertama-tama tambahkan izin USE_FINGERPRINT di manifes.

<uses-permission
        android:name="android.permission.USE_FINGERPRINT" />

Untuk melihat implementasi aplikasi autentikasi sidik jari, lihat contoh Dialog Sidik Jari. Untuk memperagakan cara menggunakan API autentikasi ini bersama Android API lainnya, lihat video Fingerprint API dan Payment API.

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

  1. Pasang Android SDK Tools Revision 24.3, jika Anda belum melakukannya.
  2. Daftarkan sidik jari baru di emulator dengan masuk ke Settings > Security > Fingerprint, kemudian ikuti petunjuk pendaftaran.
  3. Gunakan emulator untuk mengemulasikan kejadian sentuhan sidik jari dengan perintah berikut. Gunakan perintah yang sama untuk mengemulasikan kejadian sentuhan sidik jari pada layar kunci atau di aplikasi.
    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 bisa mengautentikasi pengguna berdasarkan sudah berapa lama mereka membuka kunci perangkatnya sejak terakhir kali. Fitur ini membebaskan pengguna dari keharusan mengingat kata sandi untuk aplikasi tertentu, dan menghindarkan Anda dari keharusan mengimplementasikan antarmuka pengguna autentikasi sendiri. Aplikasi Anda harus menggunakan fitur bersama implementasi kunci rahasia atau kunci publik untuk autentikasi pengguna.

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

Hindari menampilkan dialog autentikasi ulang secara berlebihan – aplikasi Anda harus mencoba menggunakan objek kriptografik dan jika waktu tunggu berakhir, gunakan metode createConfirmDeviceCredentialIntent() untuk mengautentikasi ulang pengguna dalam aplikasi.

Untuk melihat implementasi aplikasi fitur ini, lihat contoh Konfirmasi Kredensial.

Penautan Aplikasi

Rilis ini menyempurnakan sistem maksud Android dengan menyediakan penautan aplikasi yang lebih andal. Fitur ini memungkinkan Anda mengaitkan aplikasi dengan domain web yang dimiliki. Berdasarkan pengaitan ini, platform bisa menentukan aplikasi default yang akan digunakan untuk menangani tautan web tertentu dan tidak meminta pengguna memilih aplikasi. Untuk mengetahui cara mengimplementasikan fitur ini, lihat Menangani Tautan Aplikasi.

Auto Backup for Apps

Sistem sekarang melakukan pencadangan dan pemulihan penuh atas data aplikasi secara otomatis. Aplikasi Anda harus menargetkan Android 6.0 (API level 23) untuk memungkinkan perilaku ini; Anda tidak perlu memasukkan kode tambahan. Jika pengguna menghapus akun Google mereka, data cadangan mereka juga akan dihapus. Untuk mengetahui cara kerja fitur ini dan cara mengonfigurasi apa yang akan dicadangkan di sistem file, lihat Mengonfigurasi Auto Backup for Apps.

Direct Share

Rilis ini melengkapi Anda dengan berbagai API agar pengguna bisa berbagi secara intuitif dan cepat. Kini Anda bisa mendefinisikan target berbagi langsung yang akan meluncurkan aktivitas khusus di aplikasi Anda. Target berbagi langsung ini diekspos kepada pengguna melalui menu Share. Fitur ini memungkinkan pengguna berbagi materi ke target, misalnya kontak, dalam aplikasi lain. Misalnya, target berbagi langsung bisa meluncurkan aktivitas di aplikasi jaringan sosial lain, yang memungkinkan pengguna berbagi materi langsung dengan teman atau komunitas tertentu di aplikasi tersebut.

Untuk memungkinkan target berbagi langsung, Anda harus mendefinisikan kelas yang akan memperluas kelas ChooserTargetService. Deklarasikan layanan Anda di manifes. Dalam deklarasi tersebut, tetapkan izin BIND_CHOOSER_TARGET_SERVICE dan filter maksud menggunakan tindakan SERVICE_INTERFACE.

Contoh berikut ini menampilkan cara mendeklarasikan ChooserTargetService di 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 diekspos 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 Voice Actions, memungkinkan Anda membangun pengalaman percakapan suara ke dalam aplikasi. Panggil metode isVoiceInteraction() untuk menentukan apakah tindakan suara akan memicu aktivitas Anda. Jika iya, maka aplikasi Anda bisa menggunakan kelas VoiceInteractor untuk meminta konfirmasi suara dari pengguna, pilih dari daftar opsi, dan lainnya.

Umumnya interaksi suara berasal dari tindakan suara pengguna. Akan tetapi, aktivitas interaksi suara juga bisa dimulai tanpa masukan pengguna. Misalnya, aplikasi lain yang diluncurkan melalui interaksi suara juga bisa mengirim maksud 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 yang meluncurkan aktivitas Anda, metode akan mengembalikan false. Kemudian aplikasi Anda bisa meminta pengguna mengonfirmasi bahwa mereka memang menginginkan tindakan ini.

Untuk mengetahui selengkapnya tentang mengimplementasikan tindakan suara, lihat situs developer Voice Actions.

Assist API

Rilis ini menawarkan cara baru bagi pengguna untuk terlibat dengan aplikasi Anda melalui semacam asisten. Untuk menggunakan fitur ini, pengguna harus mengaktifkan asisten itu menggunakan konteks saat ini. Setelah diaktifkan, pengguna bisa memanggil asisten dalam aplikasi apa saja dengan menekan lama pada tombol Beranda.

Aplikasi Anda bisa memilih untuk tidak berbagi konteks saat ini pada asisten dengan menyetel flag FLAG_SECURE. Selain set informasi standar yang diteruskan platform ke asisten itu, aplikasi Anda bisa berbagi informasi tambahan dengan menggunakan kelas baru AssistContent.

Untuk menyediakan konteks tambahan kepada asisten dari aplikasi Anda, ikuti langkah-langkah ini:

  1. Implementasikan antarmuka Application.OnProvideAssistDataListener.
  2. Daftarkan listener ini dengan menggunakan registerOnProvideAssistDataListener().
  3. Untuk menyediakan informasi kontekstual khusus aktivitas, ganti callback onProvideAssistData() dan bisa juga callback baru onProvideAssistContent().

Perangkat Storage yang Bisa Diadopsi

Bersama rilis ini, pengguna bisa mengadopsi perangkat storage eksternal seperti kartu SD. Mengadopsi perangkat storage eksternal akan mengenkripsi dan memformat perangkat itu agar berfungsi layaknya storage internal. Fitur ini memungkinkan pengguna memindahkan aplikasi dan data privat aplikasi tersebut di antara perangkat storage. Saat memindahkan aplikasi, sistem mengikuti preferensi android:installLocation di manifes.

Jika aplikasi Anda mengakses API atau bidang berikut, ketahuilah bahwa jalur file yang dikembalikan akan berubah secara dinamis saat aplikasi dipindah antara perangkat storage eksternal dan internal. Saat membangun jalur file, Anda disarankan agar selalu memanggil API ini secara dinamis. Jangan menggunakan jalur file hasil hardcode atau mempertahankan jalur file yang sepenuhnya memenuhi syarat dan telah dibuat sebelumnya.

Untuk men-debug fitur ini, Anda bisa 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 menyediakan dukungan yang disempurnakan untuk masukan pengguna dengan menggunakan stilus Bluetooth. Pengguna bisa menyandingkan dan menghubungkan stilus Bluetooth yang kompatibel dengan ponsel atau tablet mereka. Saat terhubung, informasi posisi dari layar sentuh menyatu dengan informasi tombol dan tekanan dari stilus untuk memberikan ekspresi yang lebih besar daripada hanya dengan layar sentuh. Aplikasi bisa mendeteksi penekanan tombol stilus dan melakukan tindakan kedua, dengan mendaftarkan objek View.OnContextClickListener dan GestureDetector.OnContextClickListener di aktivitas Anda.

Gunakan metode dan konstanta MotionEvent untuk mendeteksi interaksi tombol stilus:

Pemindaian Bluetooth Low Energy yang Ditingkatkan

Jika aplikasi Anda menjalankan pemindaian Bluetooth Low Energy, gunakan metode setCallbackType() baru untuk menetapkan bahwa Anda ingin sistem memberi tahu callback saat pertama kali menemukan, atau melihat setelah sekian lama, paket iklan yang cocok dengan ScanFilter yang telah disetel. Pendekatan terhadap pemindaian ini lebih hemat energi daripada yang diberikan dalam versi platform sebelumnya.

Dukungan Hotspot 2.0 Release 1

Rilis ini menambahkan dukungan untuk spesifikasi Hotspot 2.0 Release 1 pada perangkat Nexus 6 dan Nexus 9. Untuk provisi kredensial Hotspot 2.0 di aplikasi Anda, gunakan metode baru kelas WifiEnterpriseConfig, seperti setPlmn() dan setRealm(). Dalam objek WifiConfiguration, Anda bisa menyetel bidang FQDN dan bidang providerFriendlyName. Metode isPasspointNetwork() baru akan menunjukkan jika jaringan yang terdeteksi merupakan titik akses Hotspot 2.0.

Mode Tampilan 4K

Platform ini sekarang memungkinkan aplikasi meminta resolusi tampilan ditingkatkan ke rendering 4K pada perangkat keras yang kompatibel. Untuk melakukan kueri terhadap resolusi fisik saat ini, gunakan Display.Mode API baru. Jika UI digambar pada resolusi logis yang lebih rendah dan dinaikkan skalanya ke resolusi fisik yang lebih besar, ketahuilah bahwa resolusi fisik, yang dikembalikan metode getPhysicalWidth() bisa berbeda dari resolusi logis yang dilaporkan oleh getSize().

Anda bisa meminta sistem mengubah resolusi fisik di aplikasi sebagaimana yang dijalankannya, dengan menyetel properti preferredDisplayModeId jendela aplikasi Anda. Fitur ini berguna jika Anda ingin beralih ke resolusi tampilan 4K. Saat dalam mode tampilan 4K, UI tetap akan di-render pada resolusi asal (misalnya 1080p) dan dinaikkan skalanya ke 4K, namun objek SurfaceView mungkin menampilkan materi pada resolusi asli.

ColorStateList Bertema

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

Fitur Audio

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

  • Dukungan untuk protokol MIDI, dengan android.media.midi API baru. Gunakan API ini untuk mengirim dan menerima kejadian MIDI.
  • Kelas AudioRecord.Builder dan AudioTrack.Builder baru, masing-masing untuk merekam audio digital dan objek pemutaran, serta mengonfigurasi properti dan penerima sumber audio untuk menggantikan default sistem.
  • Sangkutan API untuk mengaitkan perangkat masukan dan audio. Hal ini khususnya berguna jika aplikasi Anda memungkinkan pengguna memulai pencarian dengan suara dari pengontrol game atau kontrol jarak jauh yang terhubung ke Android TV. Sistem akan memanggil callback baru onSearchRequested() saat pengguna memulai penelusuran. Untuk menentukan apakah perangkat masukan pengguna memiliki mikrofon bawaan, ambil objek InputDevice dari callback itu, kemudian panggil metode hasMicrophone() baru.
  • Metode getDevices() baru memungkinkan Anda mengambil daftar semua perangkat audio yang saat ini terhubung ke sistem. Anda juga bisa mendaftarkan objek AudioDeviceCallback jika ingin agar sistem mengirim notifikasi ke aplikasi saat perangkat audio terhubung atau terputus.

Fitur Video

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

  • Kelas MediaSync baru yang membantu aplikasi me-render aliran audio dan video secara sinkron. Buffer audio dikirim dengan cara yang tidak memblokir dan dikembalikan melalui callback. Ini juga mendukung laju pemutaran dinamis.
  • Kejadian EVENT_SESSION_RECLAIMED baru, yang menunjukkan sesi dibuka oleh aplikasi telah diambil kembali oleh pengelola sumber daya. Jika aplikasi Anda menggunakan sesi DRM, Anda harus menangani kejadian ini dan pastikan tidak menggunakan sesi yang diambil kembali.
  • Kode kesalahan ERROR_RECLAIMED baru, yang menunjukkan pengelola sumber telah mengambil kembali sumber daya media yang digunakan oleh codec. Dengan pengecualian ini, codec harus dilepas, karena telah dipindahkan ke status terminal.
  • Antarmuka baru getMaxSupportedInstances() untuk mendapatkan petunjuk mengenai jumlah maksimum instance codec yang didukung secara bersamaan.
  • Metode baru setPlaybackParams() untuk menyetel laju pemutaran media bagi gerakan cepat atau lambat. Ini juga memperpanjang atau mempercepat pemutaran audio secara otomatis bersama video.

Fitur Kamera

Rilis ini menyertakan API baru berikut ini untuk mengakses lampu kilat kamera dan agar kamera bisa memproses ulang gambar:

Flashlight API

Jika perangkat kamera memiliki unit lampu kilat, Anda bisa memanggil metode setTorchMode() untuk menyalakan atau mematikan mode senter pada unit lampu kilat tanpa membuka perangkat kamera. Aplikasi ini tidak memiliki kepemilikan eksklusif atas unit lampu kilat maupun perangkat kamera. Mode senter akan dinonaktifkan dan menjadi tidak tersedia bila perangkat kamera menjadi tidak tersedia, atau bila sumber daya kamera lain membuat senter menjadi tidak tersedia. Aplikasi lain juga bisa memanggil setTorchMode() untuk menonaktifkan mode senter. Bila aplikasi terakhir yang mengaktifkan mode senter ditutup, mode senter akan dinonaktifkan.

Anda bisa mendaftarkan callback agar diberi tahu tentang status mode senter dengan memanggil metode registerTorchCallback(). Pertama kali didaftarkan, callback langsung dipanggil bersama status mode senter dari semua perangkat kamera yang saat ini diketahui memiliki unit lampu kilat. Jika mode senter berhasil diaktifkan atau dinonaktifkan, metode onTorchModeChanged() akan dipanggil.

Reprocessing API

Camera2 API diperluas untuk mendukung pemrosesan ulang gambar berformat privat dan YUV. Untuk menentukan apakah kemampuan pemrosesan ulang ini tersedia, panggil getCameraCharacteristics() dan periksa adanya tombol REPROCESS_MAX_CAPTURE_STALL. Jika perangkat mendukung pemrosesan ulang, Anda bisa membuat sesi pemotretan kamera yang bisa diproses ulang dengan memanggil createReprocessableCaptureSession(), dan membuat permintaan untuk pemrosesan ulang buffer masukan.

Gunakan kelas ImageWriter untuk menghubungkan alur buffer masukan ke masukan pemrosesan ulang kamera. Untuk mendapatkan buffer kosong, ikuti model pemrograman ini:

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

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

Kelas ImageReader kini mendukung aliran gambar berformat PRIVATE. Dukungan ini memungkinkan aplikasi Anda menjaga antrean gambar melingkar dari gambar keluaran ImageReader, memilih satu atau beberapa gambar dan mengirimnya ke ImageWriter untuk pemrosesan ulang oleh kamera.

Fitur Android for Work

Rilis ini menyertakan API baru berikut untuk Android for Work:

  • Kontrol yang disempurnakan untuk perangkat Corporate-Owned, Single-Use (Sekali-Pakai, Milik-Perusahaan): Pemilik Perangkat kini bisa mengontrol setelan berikut untuk meningkatkan pengelolaan perangkat COSU (Corporate-Owned, Single-Use):
  • Memasang dan mencopot pemasangan aplikasi secara diam-diam melalui Pemilik Perangkat: Pemilik Perangkat kini bisa memasang dan mencopot pemasangan aplikasi secara diam-diam menggunakan PackageInstaller API, tanpa bergantung pada Google Play for Work. Anda kini bisa menyediakan perangkat melalui Pemilik Perangkat yang mengambil dan memasang aplikasi tanpa interaksi pengguna. Fitur ini berguna untuk mengaktifkan provisi kios dengan satu sentuhan atau perangkat sejenis lainnya tanpa mengaktifkan akun Google.
  • Akses sertifikat perusahaan secara diam-diam: Bila aplikasi memanggil choosePrivateKeyAlias(), sebelum pengguna diminta untuk memilih sertifikat, Pemilik Profil atau Pemilik Perangkat kini bisa memanggil metode onChoosePrivateKeyAlias() untuk memberikan alias secara diam-diam ke aplikasi yang meminta. Fitur ini memungkinkan Anda memberi akses ke sertifikat pada aplikasi terkelola tanpa interaksi pengguna.
  • Persetujuan otomatis terhadap pemutakhiran sistem. Dengan menyetel kebijakan pemutakhiran sistem dengan setSystemUpdatePolicy(), Pemilik Perangkat kini bisa menyetujui pemutakhiran sistem secara otomatis, misalnya pada kasus perangkat kios, atau menunda pembaruan dan mencegah pembaruan diambil oleh pengguna hingga selama 30 hari. Lebih jauh, administrator bisa menyetel jangka waktu pengambilan pembaruan, misalnya sewaktu perangkat kios tidak digunakan. Bila pemutakhiran sistem tersedia, sistem akan memeriksa apakah aplikasi pengontrol kebijakan perangkat telah menyetel kebijakan pemutakhiran sistem, dan bertindak sebagaimana mestinya.
  • Pemasangan sertifikat yang didelegasikan: Pemilik Profil atau Pemilik Perangkat kini bisa memberi aplikasi pihak ketiga kemampuan untuk memanggil API pengelolaan sertifikat DevicePolicyManager:
  • Pelacakan penggunaan data. Pemilik Profil atau Pemilik Perangkat kini bisa melakukan kueri terhadap statistik penggunaan data yang terlihat di Settings > Data dengan menggunakan metode NetworkStatsManager baru. Pemilik Profil secara otomatis diberikan izin untuk melakukan kueri terhadap data dalam profil yang dikelolanya, sementara Pemilik Perangkat mendapatkan akses ke data penggunaan milik pengguna utama yang terkelola.
  • Pengelolaan izin waktu proses:

    Pemilik Profil atau Pemilik Perangkat bisa menyetel kebijakan izin untuk semua permintaan waktu proses dari semua aplikasi dengan menggunakan setPermissionPolicy(), untuk meminta pengguna agar memberikan izin atau secara otomatis memberikan atau menolak izin secara diam-diam. Jika nanti kebijakan disetel, pengguna tidak bisa memodifikasi pilihan yang dibuat oleh Pemilik Profil atau Pemilik Perangkat dalam layar izin aplikasi di Settings.

  • VPN di Settings: Aplikasi VPN kini terlihat di Settings > More > VPN. Selain itu, notifikasi yang menyertai penggunaan VPN kini khusus berisi konfigurasi VPN tersebut. Untuk Pemilik Profil, notifikasi khusus mengenai apakah VPN dikonfigurasi untuk profil terkelola, profil pribadi, atau keduanya. Untuk Pemilik Perangkat, notifikasi khusus mengenai apakah VPN dikonfigurasi untuk seluruh perangkat.
  • Notifikasi status pekerjaan: Ikon tas kantor bilah status kini muncul bila aplikasi dari profil terkelola memiliki aktivitas di latar depan. Lebih jauh, jika kunci perangkat dibuka secara langsung ke aktivitas sebuah aplikasi di profil terkelola, toast akan ditampilkan dengan memberi tahu pengguna bahwa mereka sedang dalam profil kerja.