It's happening now, watch the livestream.

Android 5.0 API

API Level: 21

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

Jika Anda memiliki aplikasi yang sudah dipublikasikan, pastikan membaca Perubahan Perilaku Android 5.0 yang harus Anda perhitungkan untuk aplikasi. Perubahan perilaku ini mungkin memengaruhi aplikasi Anda di perangkat Android 5.0, meskipun Anda tidak menggunakan API baru atau menargetkan fungsionalitas baru.

Untuk mendapatkan gambaran tingkat tinggi pada fitur platform baru, lihat Fitur Unggulan Android Lollipop.

Mulai mengembangkan

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

Memperbarui target API level Anda

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

Anda bisa menggunakan API Android 5.0 sekaligus mendukung versi lama dengan menambahkan ketentuan 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?

Perubahan perilaku yang penting

Jika Anda sebelumnya telah mempublikasikan aplikasi untuk Android, ketahuilah bahwa aplikasi Anda mungkin akan dipengaruhi oleh perubahan dalam Android 5.0.

Lihat Perubahan Android 5.0 untuk informasi selengkapnya.

Antarmuka Pengguna

Dukungan desain material

Android 5.0 menambahkan dukungan untuk gaya desain material baru Android. Anda bisa membuat aplikasi dengan desain material yang terlihat dinamis dan transisi elemen UI yang terasa alami bagi pengguna. Dukungan ini menyertakan:

  • Tema material
  • Bayangan tampilan
  • Widget RecyclerView
  • Animasi sumber daya dapat digambar dan efek penataan gaya
  • Animasi desain material dan efek transisi aktivitas
  • Animator untuk properti tampilan berdasarkan status tampilan
  • Widget UI yang bisa disesuaikan dan bilah aplikasi dengan palet warna yang Anda kontrol
  • Sumber daya dapat digambar yang animasi dan non-animasi berdasarkan grafik vektor XML

Untuk mengetahui selengkapnya tentang penambahan fungsionalitas desain material ke aplikasi Anda, lihat Desain Material.

Beberapa dokumen dan aktivitas sekaligus di layar terbaru

Di rilis sebelumnya, layar terbaru hanya bisa menampilkan satu tugas untuk setiap aplikasi yang terakhir berinteraksi dengan pengguna. Sekarang aplikasi Anda bisa membuka lebih banyak tugas sekaligus untuk beberapa aktivitas tambahan bagi beberapa dokumen. Fitur ini memfasilitasi multitasking dengan memungkinkan pengguna dengan cepat beralih di antara setiap aktivitas dan dokumen dari layar terbaru, dengan pengalaman beralih yang konsisten di semua aplikasi. Contoh tugas serempak tersebut antara lain membuka beberapa tab di aplikasi browser web, beberapa dokumen di aplikasi produktivitas, beberapa pertandingan sekaligus dalam game, atau chat di aplikasi perpesanan. Aplikasi Anda bisa mengelola tugasnya melalui kelas ActivityManager.AppTask.

Untuk menyisipkan jeda logis agar sistem memperlakukan aktivitas Anda sebagai tugas baru, gunakan FLAG_ACTIVITY_NEW_DOCUMENT saat memulai aktivitas dengan startActivity(). Anda juga bisa mendapatkan perilaku ini dengan menyetel elemen <activity> pada atribut documentLaunchMode ke "intoExisting" atau "always" di manifes Anda.

Agar layar terbaru tampak rapi, Anda bisa menyetel jumlah tugas maksimum dari aplikasi yang bisa muncul di layar itu. Caranya, setel atribut <application> android:maxRecents. Jumlah maksimum saat ini yang bisa ditetapkan adalah 50 tugas per pengguna (25 untuk perangkat dengan RAM sedikit).

Tugas di layar terbaru bisa disetel agar tetap bertahan setelah boot ulang. Untuk mengontrol perilaku persistensi, gunakan atribut android:persistableMode. Anda juga bisa mengubah properti visual aktivitas di layar terbaru, seperti warna, label, dan ikon aktivitas, dengan memanggil metode setTaskDescription().

Pembaruan WebView

Android 5.0 memperbarui implementasi WebView ke Chromium M37, dengan menghadirkan penyempurnaan keamanan dan stabilitas, serta perbaikan bug. String agen pengguna default untuk WebView yang berjalan di Android 5.0 telah diperbarui untuk menyertakan 37.0.0.0 sebagai nomor versi.

Rilis ini memperkenalkan kelas PermissionRequest, yang memungkinkan aplikasi Anda memberikan izin WebView untuk mengakses sumber daya yang dilindungi seperti kamera dan mikrofon, melalui API web seperti getUserMedia(). Aplikasi Anda harus memiliki izin Android yang sesuai untuk sumber daya ini agar bisa memberikan izin ke WebView.

Dengan metode onShowFileChooser() yang baru, Anda kini bisa menggunakan bidang formulir masukan di WebView, dan membuka pemilih file untuk memilih gambar dan file dari perangkat Android.

Selain itu, rilis ini menghadirkan dukungan untuk standar terbuka WebAudio, WebGL, dan WebRTC. Untuk mengetahui selengkapnya tentang fitur baru yang disertakan dalam rilis ini, lihat WebView untuk Android.

Merekam dan berbagi layar

Android 5.0 memungkinkan Anda menambahkan kemampuan merekam dan berbagi layar ke aplikasi dengan android.media.projection API yang baru. Fungsionalitas ini berguna jika, misalnya, Anda ingin mengaktifkan berbagi layar di aplikasi konferensi video.

Metode createVirtualDisplay() yang baru memungkinkan aplikasi Anda merekam materi layar utama (tampilan default) ke dalam objek Surface, yang kemudian oleh aplikasi Anda bisa dikirim ke seluruh jaringan. API hanya mengizinkan perekaman materi layar yang tidak aman, bukan audio sistem. Untuk memulai perekaman layar, aplikasi Anda terlebih dahulu harus meminta izin pengguna dengan menampilkan dialog perekaman layar menggunakan Intent yang diperoleh melalui metode createScreenCaptureIntent().

Untuk contoh cara menggunakan API baru, lihat kelas MediaProjectionDemo dalam proyek contoh.

Notifikasi

Notifikasi layar kunci

Layar kunci di Android 5.0 memiliki kemampuan menampilkan notifikasi. Pengguna bisa memilih melalui Settings apakah memperbolehkan materi notifikasi yang sensitif ditampilkan di layar kunci yang aman.

Aplikasi Anda bisa mengontrol detail yang bisa dilihat saat notifikasi ditampilkan di layar kunci yang aman. Untuk mengontrol tingkat visibilitas, panggil setVisibility() dan tetapkan salah satu nilai ini:

Bila tingkat visibilitas berupa VISIBILITY_PRIVATE, Anda juga bisa menyediakan versi materi notifikasi yang sudah diedit serta menyembunyikan detail pribadi. Misalnya, aplikasi SMS mungkin menampilkan notifikasi yang menunjukkan bahwa "Anda memiliki 3 pesan teks baru" namun tidak menampilkan materi pesan dan pengirimnya. Untuk memberikan notifikasi alternatif ini, buat dahulu notifikasi pengganti dengan menggunakan Notification.Builder. Bila Anda membuat objek notifikasi privat, lampirkan notifikasi pengganti melalui metode setPublicVersion().

Metadata notifikasi

Android 5.0 menggunakan metadata yang dikaitkan dengan notifikasi aplikasi Anda untuk mengurutkan notifikasi secara lebih cerdas. Untuk menyetel metadata, panggil metode berikut dalam Notification.Builder bila Anda membuat notifikasi:

  • setCategory(): Memberi tahu sistem cara menangani notifikasi aplikasi Anda bila perangkat berada dalam mode prioritas (misalnya, jika notifikasi menyatakan ada panggilan masuk, pesan instan, atau alarm).
  • setPriority(): Menandai notifikasi sebagai lebih penting atau kurang penting daripada notifikasi biasa. Notifikasi dengan bidang prioritas yang disetel ke PRIORITY_MAX atau PRIORITY_HIGH akan muncul dalam jendela kecil mengambang jika notifikasi juga mengeluarkan suara atau bergetar.
  • addPerson(): Memungkinkan Anda menambahkan satu atau beberapa orang yang relevan ke notifikasi. Aplikasi Anda bisa menggunakannya untuk memberi tanda pada sistem bahwa sistem harus mengelompokkan bersama notifikasi dari orang-orang yang ditetapkan, atau memberi peringkat lebih penting pada notifikasi untuk orang-orang ini.

Grafik

Dukungan untuk OpenGL ES 3.1

Android 5.0 menambahkan antarmuka Java dan dukungan asli untuk OpenGLES 3.1. Fungsionalitas baru yang utama pada OpenGL ES 3.1 menyertakan:

  • Compute Shader
  • Objek shader terpisah
  • Perintah menggambar tidak langsung
  • Tekstur stensil dan multisampel
  • Peningkatan bahasa shading
  • Ekstensi untuk mode blend tingkat lanjut dan debugging
  • Kompatibilitas mundur dengan versi OpenGL ES 2.0 dan 3.0

Antarmuka Java untuk OpenGL ES 3.1 di Android dilengkapi dengan GLES31. Saat menggunakan OpenGL ES 3.1, pastikan Anda mendeklarasikannya dalam file manifes dengan tag <uses-feature> dan atribut android:glEsVersion. Misalnya:

<manifest>
    <uses-feature android:glEsVersion="0x00030001" />
    ...
</manifest>

Untuk informasi selengkapnya tentang penggunaan OpenGL ES, termasuk cara memeriksa versi OpenGL ES yang didukung perangkat pada waktu proses, lihat Panduan OpenGL ES API.

Android Extension Pack

Sebagai tambahan OpenGL ES 3.1, rilis ini menyediakan paket ekstensi dengan antarmuka Java dan dukungan asli untuk fungsionalitas grafik tingkat lanjut. Semua ekstensi ini dianggap sebagai satu paket oleh Android. (Jika ada ekstensi ANDROID_extension_pack_es31a, aplikasi Anda bisa menganggap semua ekstensi dalam paket itu ada dan mengaktifkan fitur bahasa shading dengan satu pernyataan #extension.)

Dukungan paket ekstensi:

  • Dukungan fragment-shader terjamin untuk shader storage buffer, gambar, dan atomik (Dukungan fragment-shader bersifat opsional di OpenGL ES 3.1.)
  • Tessellation-shader dan geometry-shader
  • Format kompresi tekstur ASTC (LDR)
  • Interpolasi dan shading per-sampel
  • Mode blend berbeda untuk setiap penyertaan warna dalam frame-buffer

Antarmuka Java untuk paket ekstensi diberikan bersama GLES31Ext. Dalam manifes aplikasi, Anda bisa mendeklarasikan bahwa aplikasi Anda hanya boleh dipasang pada perangkat yang mendukung paket ekstensi. Misalnya:

<manifest>
    <uses-feature android:name=“android.hardware.opengles.aep”
        android:required="true" />
    ...
</manifest>

Media

Camera API untuk kemampuan kamera canggih

Android 5.0 memperkenalkan API baru android.hardware.camera2 untuk memfasilitasi penjepretan gambar yang halus dan pemrosesan gambar. Lewat program, Anda kini bisa mengakses perangkat kamera yang bisa digunakan sistem dengan getCameraIdList() dan menghubungkan ke perangkat tertentu dengan openCamera(). Untuk mulai menjepret gambar, buatlah CameraCaptureSession dan tetapkan objek Surface untuk mengirim gambar yang dijepret. CameraCaptureSession bisa dikonfigurasi untuk mengambil satu bidikan atau beberapa gambar sekaligus.

Ketahuilah, bila gambar baru telah dijepret, implementasikan listener CameraCaptureSession.CaptureCallback dan setel dalam permintaan penjepretan gambar. Kini bila sistem telah melakukan permintaan perekaman gambar, listener CameraCaptureSession.CaptureCallback Anda akan menerima panggilan ke onCaptureCompleted(), yang memberikan metadata perekaman gambar dalam CaptureResult.

Kelas CameraCharacteristics memungkinkan aplikasi Anda mendeteksi fitur kamera yang tersedia pada perangkat. Properti INFO_SUPPORTED_HARDWARE_LEVEL objek menyatakan tingkat fungsionalitas kamera.

  • Semua perangkat setidaknya mendukung level perangkat keras INFO_SUPPORTED_HARDWARE_LEVEL_LEGACY, yang memiliki kemampuan kurang-lebih sama dengan Camera API yang tidak digunakan lagi.
  • Perangkat yang mendukung level perangkat keras INFO_SUPPORTED_HARDWARE_LEVEL_FULL memiliki kemampuan manual atas kontrol perekaman gambar dan pascapemrosesan, serta perekaman gambar resolusi tinggi pada laju bingkai yang tinggi.

Untuk melihat cara menggunakan Camera API yang diperbarui, lihat contoh implementasi Camera2Basic dan Camera2Video dalam rilis ini.

Pemutaran audio

Rilis ini menyertakan perubahan berikut pada AudioTrack:

  • Aplikasi Anda kini bisa memasok data audio dalam format titik-mengambang (ENCODING_PCM_FLOAT). Ini memungkinkan rentang dinamis yang lebih besar, presisi yang lebih konsisten, dan headroom yang lebih besar. Aritmetika titik-mengambang terutama sangat berguna selama perhitungan antara. Endpoint pemutaran menggunakan format integer untuk data audio, dan dengan kedalaman bit yang lebih rendah. (Di Android 5.0, sebagian saluran internal belum menjadi titik-mengambang.)
  • Aplikasi Anda kini bisa memasok data audio sebagai ByteBuffer, dalam format yang sama dengan yang disediakan oleh MediaCodec.
  • Opsi WRITE_NON_BLOCKING bisa menyederhanakan penyanggaan dan multithreading untuk sebagian aplikasi.

Kontrol pemutaran media

Gunakan notifikasi dan API media baru untuk memastikan apakah UI sistem mengetahui tentang pemutaran media Anda dan bisa mengekstrak serta menampilkan gambar album. Mengontrol pemutaran media di seluruh bagian UI dan layanan kini lebih mudah dengan kelas MediaSession dan kelas MediaController yang baru.

Kelas MediaSession yang baru menggantikan kelas RemoteControlClient yang tidak digunakan lagi dan memberikan satu set metode callback untuk menangani kontrol pengangkutan dan tombol media. Jika aplikasi Anda menyediakan pemutaran media dan dijalankan pada platform Android TV atau Wear, gunakan kelas MediaSession untuk menangani kontrol pengangkutan dengan menggunakan metode callback yang sama.

Kini Anda bisa membuat aplikasi pengontrol media sendiri dengan kelas MediaController yang baru. Kelas ini menyediakan cara yang thread-safe untuk memantau dan mengontrol pemutaran media dari proses UI aplikasi Anda. Saat membuat pengontrol, tetapkan objek MediaSession.Token agar aplikasi Anda bisa berinteraksi dengan MediaSession yang diberikan. Dengan menggunakan metode MediaController.TransportControls, Anda bisa mengirimkan perintah seperti play(), stop(), skipToNext(), dan setRating() untuk mengontrol pemutaran media pada sesi itu. Dengan pengontrol tersebut, Anda juga bisa mendaftarkan objek MediaController.Callback untuk mendengarkan perubahan status dan metadata pada sesi tersebut.

Selain itu, Anda bisa membuat notifikasi lengkap yang memungkinkan kontrol pemutaran diikat ke sesi media dengan kelas Notification.MediaStyle yang baru.

Penjelajahan media

Android 5.0 memberikan kemampuan bagi aplikasi untuk menjelajahi pustaka materi media milik aplikasi lain, melalui android.media.browse API yang baru. Untuk mengekspos materi media dalam aplikasi Anda, perluas kelas MediaBrowserService. Implementasi MediaBrowserService Anda harus menyediakan akses ke MediaSession.Token agar aplikasi bisa memutar materi media yang disediakan melalui layanan Anda.

Untuk berinteraksi dengan layanan browser media, gunakan kelas MediaBrowser. Tetapkan nama komponen untuk MediaSession bila Anda membuat instance MediaBrowser. Dengan menggunakan instance browser, aplikasi Anda nanti bisa menghubungkan ke layanan terkait dan memperoleh objek MediaSession.Token untuk memutar materi yang diekspos melalui layanan itu.

Storage

Pilihan direktori

Android 5.0 memperluas Storage Access Framework untuk memungkinkan pengguna memilih keseluruhan subpohon direktori, sehingga memberikan akses baca/tulis pada aplikasi ke semua dokumen yang dimuat tanpa memerlukan konfirmasi pengguna untuk setiap item.

Untuk memilih subpohon direktori, buat dan kirimkan maksud OPEN_DOCUMENT_TREE. Sistem menampilkan semua instance DocumentsProvider yang mendukung pemilihan subpohon, sehingga memungkinkan pengguna menjelajahi dan memilih direktori. URI yang dikembalikan menyatakan akses ke subpohon yang dipilih. Anda kemudian bisa menggunakan buildChildDocumentsUriUsingTree() dan buildDocumentUriUsingTree() bersama dengan query() untuk menelusuri subpohon.

Metode baru createDocument() memungkinkan Anda membuat dokumen atau direktori baru di bawah subpohon. Untuk mengelola dokumen yang ada, gunakan renameDocument() dan deleteDocument(). Periksa COLUMN_FLAGS untuk memverifikasi dukungan penyedia bagi panggilan ini sebelum mengeluarkannya.

Jika Anda mengimplementasikan DocumentsProvider dan ingin mendukung pemilihan subpohon, implementasikan isChildDocument() dan sertakan FLAG_SUPPORTS_IS_CHILD dalam COLUMN_FLAGS Anda.

Android 5.0 juga memperkenalkan direktori khusus-paket baru pada penyimpanan bersama yang bisa digunakan aplikasi Anda untuk menempatkan file media guna disertakan dalam MediaStore. getExternalMediaDirs() yang baru mengembalikan jalur ke direktori ini pada semua perangkat penyimpanan bersama. Sama seperti getExternalFilesDir(), tidak ada izin tambahan yang diperlukan oleh aplikasi Anda untuk mengakses jalur yang dikembalikan. Platform secara berkala memindai media baru dalam direktori ini, namun Anda juga bisa menggunakan MediaScannerConnection untuk memindai materi baru secara eksplisit.

Nirkabel & Konektivitas

Beberapa koneksi jaringan sekaligus

Android 5.0 menyediakan beberapa API multijaringan baru yang memungkinkan aplikasi Anda secara dinamis memindai jaringan yang tersedia dengan kemampuan khusus, dan menghubungkan ke sana. Fungsionalitas ini berguna bila aplikasi Anda memerlukan jaringan khusus, seperti SUPL, MMS, atau jaringan-potong-pulsa, atau jika ingin mengirim data menggunakan tipe protokol transpor tertentu.

Untuk memilih dan menghubungkan ke jaringan secara dinamis dari aplikasi Anda, ikuti langkah-langkah ini:

  1. Buat ConnectivityManager.
  2. Gunakan kelas NetworkRequest.Builder untuk membuat objek NetworkRequest dan menetapkan fitur jaringan serta tipe transpor yang diperlukan aplikasi Anda.
  3. Untuk memindai jaringan yang cocok, panggil requestNetwork() atau registerNetworkCallback(), dan teruskan objek NetworkRequest dan implementasi ConnectivityManager.NetworkCallback. Gunakan metode requestNetwork() jika Anda ingin secara aktif beralih ke jaringan yang cocok setelah terdeteksi; untuk menerima notifikasi saja mengenai jaringan yang dipindai tanpa beralih ke jaringan itu secara aktif, gunakan metode registerNetworkCallback() sebagai gantinya.

Bila mendeteksi jaringan yang cocok, sistem akan menghubungkan ke jaringan dan memanggil callback onAvailable(). Anda bisa menggunakan objek Network dari callback untuk mendapatkan informasi tambahan tentang jaringan, atau mengarahkan lalu lintas agar menggunakan jaringan yang dipilih.

Bluetooth Low Energy

Android 4.3 memperkenalkan dukungan platform untuk Bluetooth Low Energy (Bluetooth LE) dalam peran sentral. Di Android 5.0, perangkat Android kini bisa berfungsi sebagai perangkat periferal Bluetooth LE. Aplikasi bisa menggunakan kemampuan ini untuk membuat keberadaannya diketahui oleh perangkat terdekat. Misalnya, Anda bisa membangun aplikasi yang memungkinkan perangkat berfungsi sebagai pedometer atau monitor kesehatan dan mengkomunikasikan datanya dengan perangkat Bluetooth LE lain.

android.bluetooth.le API yang baru memungkinkan aplikasi Anda untuk menyiarkan iklan, memindai respons, dan membentuk koneksi dengan perangkat Bluetooth LE terdekat. Untuk menggunakan fitur iklan dan pemindaian baru, tambahkan izin BLUETOOTH_ADMIN dalam manifes Anda. Bila pengguna memperbarui atau mengunduh aplikasi Anda dari Play Store, mereka akan diminta memberikan izin berikut pada aplikasi Anda: "Informasi koneksi Bluetooth: Mengizinkan aplikasi untuk mengontrol Bluetooth, termasuk menyiarkan ke atau mendapatkan informasi tentang perangkat Bluetooth terdekat."

Untuk memulai iklan Bluetooth LE agar perangkat lain bisa menemukan aplikasi Anda, panggil startAdvertising() dan teruskan implementasi kelas AdvertiseCallback. Objek callback akan menerima laporan berhasil atau gagal atas pengoperasian iklan.

Android 5.0 memperkenalkan kelas ScanFilter agar aplikasi Anda bisa memindai tipe perangkat tertentu saja yang diperlukannya. Untuk memulai pemindaian perangkat Bluetooth LE, panggil startScan() dan teruskan sebuah daftar filter. Dalam panggilan metode, Anda juga harus menyediakan implementasi ScanCallback untuk melaporkan bila iklan Bluetooth LE ditemukan.

Penyempurnaan NFC

Android 5.0 menambahkan penyempurnaan ini untuk memungkinkan penggunaan NFC yang lebih luas dan lebih fleksibel:

  • Android Beam kini tersedia di menu share.
  • Aplikasi Anda bisa memanggil Android Beam pada perangkat pengguna untuk berbagi data dengan memanggil invokeBeam(). Hal ini menghindarkan pengguna dari keharusan mengetuk perangkat secara manual dengan perangkat berkemampuan NFC untuk melakukan transfer data.
  • Anda bisa menggunakan metode createTextRecord() yang baru untuk membuat data NDEF yang berisi data teks UTF-8.
  • Jika sedang mengembangkan aplikasi pembayaran, kini Anda memiliki kemampuan untuk mendaftarkan ID aplikasi (AID) NFC secara dinamis dengan memanggil registerAidsForService(). Anda juga bisa menggunakan setPreferredService() untuk menyetel layanan emulasi kartu yang sebaiknya digunakan saat aktivitas tertentu berada di latar depan.

Proyek Volta

Sebagai tambahan fitur baru, Android 5.0 menekankan peningkatan dalam daya tahan baterai. Gunakan alat dan API baru untuk memahami dan mengoptimalkan konsumsi daya aplikasi Anda.

Menjadwalkan tugas

Android 5.0 menyediakan JobScheduler API baru yang memungkinkan Anda mengoptimalkan daya tahan baterai dengan mendefinisikan tugas untuk dijalankan sistem secara asinkron nanti atau pada ketentuan yang ditetapkan (misalnya saat perangkat sedang diisi daya). Penjadwalan tugas berguna dalam situasi seperti:

  • Aplikasi memiliki pekerjaan yang sedang-tidak-dihadapi-pengguna yang bisa Anda tangguhkan.
  • Aplikasi memiliki pekerjaan yang ingin Anda lakukan bila unit telah terhubung ke listrik.
  • Aplikasi memiliki tugas yang memerlukan akses jaringan atau koneksi Wi-Fi.
  • Aplikasi memiliki sejumlah tugas yang ingin Anda jalankan secara batch pada jadwal rutin.

Unit kerja dibungkus oleh objek JobInfo. Objek ini menetapkan kriteria penjadwalan.

Gunakan kelas JobInfo.Builder untuk mengonfigurasi cara menjalankan tugas yang dijadwalkan. Anda bisa menjadwalkan tugas untuk dijalankan dengan ketentuan tertentu, misalnya:

  • Dimulai saat perangkat sedang mengisi daya
  • Dimulai saat perangkat terhubung ke jaringan yang berbiaya tetap
  • Dimulai saat perangkat sedang tidak digunakan
  • Diselesaikan sebelum batas waktu tertentu atau dengan penundaan minimum

Misalnya, Anda bisa menambahkan kode seperti ini untuk menjalankan tugas pada jaringan yang berbiaya tetap:

JobInfo uploadTask = new JobInfo.Builder(mJobId,
                                         mServiceComponent /* JobService component */)
        .setRequiredNetworkCapabilities(JobInfo.NetworkType.UNMETERED)
        .build();
JobScheduler jobScheduler =
        (JobScheduler) context.getSystemService(Context.JOB_SCHEDULER_SERVICE);
jobScheduler.schedule(uploadTask);

Jika perangkat memiliki daya stabil (yakni, terhubung ke listrik selama lebih dari 2 menit dan baterai pada kondisi sehat), sistem akan menjalankan tugas terjadwal yang siap dijalankan, sekalipun batas waktu tugas itu belum berakhir.

Untuk melihat contoh cara menggunakan JobScheduler API, lihat contoh implementasi JobSchedulerSample dalam rilis ini.

Alat bantu developer untuk penggunaan baterai

Perintah baru dumpsys batterystats menghasilkan data statistik menarik tentang penggunaan baterai pada perangkat, yang disusun menurut ID pengguna unik (UID). Statistik tersebut berisi:

  • Riwayat kejadian yang terkait dengan baterai
  • Statistik global untuk perangkat
  • Perkiraan penggunaan daya per UID dan komponen sistem
  • Per aplikasi seluler ms per paket
  • Statistik agregat UID sistem
  • Statistik agregat UID aplikasi

Gunakan opsi --help untuk mengetahui tentang beragam opsi untuk menyesuaikan keluaran. Misalnya, untuk mencetak statistik penggunaan baterai bagi paket aplikasi yang diberikan sejak perangkat terakhir diisi, jalankan perintah ini:

$ adb shell dumpsys batterystats --charged <package-name>

Anda bisa menggunakan alat bantu Battery Historian atas keluaran perintah dumpsys untuk menghasilkan visualisasi HTML atas kejadian yang terkait dengan daya dari log. Informasi ini memudahkan Anda memahami dan mendiagnosis masalah terkait dengan baterai.

Android di Tempat Kerja dan Pendidikan

Penyediaan terkelola

Android 5.0 menyediakan fungsionalitas baru untuk menjalankan aplikasi dalam lingkungan perusahaan. Administrator perangkat bisa memulai proses penyediaan terkelola untuk menambahkan profil terkelola lain secara bersamaan namun terpisah pada perangkat, jika pengguna memiliki akun pribadi. Aplikasi yang terkait dengan profil terkelola akan muncul bersama aplikasi non-terkelola dalam Peluncur, layar terbaru, dan notifikasi pengguna.

Untuk memulai proses penyediaan terkelola, kirim ACTION_PROVISION_MANAGED_PROFILE dalam Intent. Jika panggilan berhasil, sistem akan memicu callback onProfileProvisioningComplete(). Kemudian Anda bisa memanggil setProfileEnabled() untuk mengaktifkan profil terkelola ini.

Secara default, hanya subset kecil dari aplikasi yang diaktifkan dalam profil terkelola. Anda bisa memasang aplikasi tambahan dalam profil terkelola dengan memanggil enableSystemApp().

Jika sedang mengembangkan aplikasi Peluncur, Anda bisa menggunakan kelas LauncherApps yang baru untuk mendapatkan daftar aktivitas yang dapat diluncurkan bagi pengguna saat ini dan profil terkelola yang terkait. Peluncur bisa membuat aplikasi terkelola menonjol secara visual dengan menambahkan lencana kerja ke sumber daya ikon dapat digambar. Untuk mengambil ikon lencana, panggil getUserBadgedIcon().

Untuk melihat cara menggunakan fungsionalitas baru, lihat contoh implementasi BasicManagedProfile dalam rilis ini.

Pemilik perangkat

Android 5.0 memperkenalkan kemampuan menerapkan aplikasi pemilik perangkat. Pemilik perangkat merupakan tipe khusus dari administrator perangkat yang memiliki kemampuan tambahan untuk membuat dan membuang pengguna tambahan serta mengonfigurasi setelan global pada perangkat Aplikasi pemilik perangkat Anda bisa menggunakan berbagai metode dalam kelas DevicePolicyManager untuk mengontrol lebih detail berbagai konfigurasi, keamanan, dan aplikasi pada perangkat terkelola. Sebuah perangkat hanya bisa memiliki satu pemilik perangkat aktif untuk setiap kalinya.

Untuk menerapkan dan mengaktifkan pemilik perangkat, Anda harus melakukan transfer data NFC dari aplikasi pemrograman ke perangkat saat perangkat dalam status belum ditetapkan. Transfer data ini akan mengirimkan informasi yang sama dengan maksud penyediaan yang dijelaskan dalam Penyediaan terkelola.

Pin ke layar

Android 5.0 memperkenalkan API pin ke layar yang baru yang memungkinkan Anda untuk sementara melarang pengguna meninggalkan tugas atau diganggu oleh notifikasi. Ini bisa digunakan, misalnya, jika Anda sedang mengembangkan aplikasi pendidikan untuk mendukung persyaratan penilaian dengan risiko tinggi pada Android, atau aplikasi yang memiliki kegunaan tunggal atau aplikasi kios. Setelah aplikasi Anda mengaktifkan pin ke layar, pengguna tidak bisa melihat notifikasi, mengakses aplikasi lain, atau kembali ke layar beranda, hingga aplikasi Anda keluar dari mode tersebut.

Ada dua cara untuk mengaktifkan pin ke layar:

  • Secara manual: Pengguna bisa mengaktifkan pin ke layar di Settings > Security > Screen Pinning, dan memilih tugas yang ingin disematkan dengan menyentuh ikon pin hijau di layar terbaru.
  • Lewat program: Untuk mengaktifkan pin ke layar lewat program, panggil startLockTask() dari aplikasi Anda. Jika aplikasi pemohon bukanlah pemilik perangkat, pengguna akan diminta konfirmasi. Aplikasi pemilik perangkat bisa memanggil metode setLockTaskPackages() untuk mengaktifkan aplikasi agar bisa disematkan tanpa langkah konfirmasi pengguna.

Saat penguncian tugas aktif, perilaku berikut akan terjadi:

  • Bilah status kosong, dan notifikasi pengguna serta informasi status disembunyikan.
  • Tombol Beranda dan Aplikasi Terbaru disembunyikan.
  • Aplikasi lainnya tidak bisa membuka aktivitas baru.
  • Aplikasi saat ini bisa memulai aktivitas baru, asalkan aktivitas tersebut tidak membuat tugas baru.
  • Bila pin ke layar dipanggil oleh pemilik perangkat, pengguna tetap dikunci ke aplikasi Anda hingga aplikasi memanggil stopLockTask().
  • Jika pin ke layar diaktifkan oleh aplikasi lain yang bukan pemilik perangkat atau milik pengguna secara langsung, pengguna bisa keluar dengan menahan kedua tombol Kembali dan Terbaru.

Kerangka Kerja Pencetakan

Me-render PDF sebagai bitmap

Anda bisa mengubah halaman dokumen PDF menjadi gambar bitmap untuk dicetak dengan menggunakan kelas PdfRenderer yang baru. Anda harus menetapkan ParcelFileDescriptor yang bisa dicari (isinya bisa diakses secara acak) di tempat sistem menulis materi yang bisa dicetak. Aplikasi Anda bisa memperoleh laman untuk di-render dengan openPage(), kemudian panggil render() untuk mengubah PdfRenderer.Page yang telah dibuka menjadi bitmap. Anda juga bisa menyetel parameter tambahan jika hanya ingin mengonversi sebagian dokumen menjadi gambar bitmap (misalnya, untuk mengimplementasikan rendering berpetak untuk diperbesar pada dokumen).

Untuk contoh cara menggunakan API yang baru, lihat contoh PdfRendererBasic.

Sistem

Statistik penggunaan aplikasi

Anda kini bisa mengakses riwayat penggunaan aplikasi pada perangkat Android dengan android.app.usage API yang baru. API ini memberikan informasi penggunaan lebih detail daripada metode getRecentTasks() yang tidak digunakan lagi. Untuk menggunakan API ini, Anda harus mendeklarasikan dahulu izin "android.permission.PACKAGE_USAGE_STATS" dalam manifes. Pengguna juga harus mengaktifkan akses untuk aplikasi ini melalui Settings > Security > Apps dengan akses penggunaan.

Sistem akan mengumpulkan data penggunaan berdasarkan per aplikasi, menggabungkan data pada interval harian, mingguan, bulanan, dan tahunan. Durasi maksimum yang digunakan sistem untuk menyimpan data ini adalah seperti berikut:

  • Data harian: 7 hari
  • Data mingguan: 4 minggu
  • Data bulanan: 6 bulan
  • Data tahunan: 2 tahun

Untuk setiap aplikasi, sistem akan mencatat data berikut:

  • Waktu terakhir penggunaan aplikasi
  • Durasi total aplikasi ketika berada di latar depan selama interval waktu tersebut (berdasar hari, minggu, bulan, atau tahun)
  • Perekaman stempel waktu saat komponen (yang diidentifikasi melalui paket dan nama aktivitas) dipindahkan ke latar depan atau latar belakang selama hari itu
  • Perekaman stempel waktu saat konfigurasi perangkat berubah (misalnya saat orientasi perangkat berubah karena rotasi)

Pengujian & Aksesibilitas

Peningkatan pengujian dan aksesibilitas

Android 5.0 menambahkan dukungan berikut untuk pengujian dan aksesibilitas:

  • Metode getWindowAnimationFrameStats() dan getWindowContentFrameStats() yang baru merekam statistik bingkai untuk animasi dan materi jendela. Metode ini memungkinkan Anda menulis pengujian instrumentasi untuk mengevaluasi apakah aplikasi me-render bingkai pada frekuensi penyegaran yang cukup untuk memberikan pengalaman pengguna yang mulus.
  • Metode executeShellCommand() baru memungkinkan Anda mengeksekusi perintah shell dari pengujian instrumentasi. Eksekusi perintah ini serupa dengan menjalankan adb shell dari host yang terhubung ke perangkat, sehingga memungkinkan Anda menggunakan alat bantu berbasis shell seperti dumpsys, am, content, dan pm.
  • Layanan aksesibilitas dan alat penguji yang menggunakan API aksesibilitas (misalnya UiAutomator) kini bisa mengambil informasi detail tentang properti jendela di layar terlihat yang bisa berinteraksi dengan pengguna. Untuk mengambil daftar objek AccessibilityWindowInfo, panggil metode getWindows() baru.
  • Kelas AccessibilityNodeInfo.AccessibilityAction yang baru memungkinkan Anda mendefinisikan tindakan standar atau khusus yang harus dilakukan pada AccessibilityNodeInfo. Kelas AccessibilityNodeInfo.AccessibilityAction yang baru menggantikan API terkait-tindakan yang sebelumnya ditemukan di AccessibilityNodeInfo.
  • Android 5.0 memberikan kontrol lebih detail atas sintesis teks-ke-suara di aplikasi Anda. Kelas Voice yang baru memungkinkan aplikasi Anda menggunakan profil suara yang dikaitkan dengan lokal, kualitas, dan rating latensi, serta parameter khusus-mesin teks-ke-suara.

IME

Berganti bahasa masukan dengan lebih mudah

Pada Android 5.0, pengguna lebih mudah beralih di antara semua editor metode masukan (Input Method Editors/IME) yang didukung oleh platform ini. Melakukan siklus tindakan beralih yang ditentukan (biasanya dengan menyentuh ikon Bola Dunia di keyboard virtual) melalui semua IME. Perubahan perilaku ini diimplementasikan oleh metode shouldOfferSwitchingToNextInputMethod().

Selain itu, kerangka kerja kini akan memeriksa apakah IME berikutnya menyertakan mekanisme peralihan (dan, karena itu, apakah IME mendukung peralihan ke IME setelahnya). IME yang memiliki mekanisme peralihan tidak akan berpindah ke IME yang tidak memilikinya. Perubahan perilaku ini diimplementasikan oleh metode switchToNextInputMethod().

Untuk melihat contoh cara menggunakan API peralihan IME terbaru, lihat contoh implementasi keyboard virtual terbaru di rilis ini. Untuk mengetahui selengkapnya tentang cara mengimplementasikan peralihan di antara IME, lihat Membuat Metode Masukan.

Deklarasi Manifes

Fitur wajib yang bisa dideklarasikan

Nilai-nilai berikut kini didukung di elemen <uses-feature>, jadi Anda bisa memastikan bahwa aplikasi hanya dipasang pada perangkat yang menyediakan fitur yang dibutuhkan aplikasi.

Izin pengguna

Izin berikut kini didukung di elemen <uses-permission> untuk mendeklarasikan izin yang diperlukan aplikasi Anda guna mengakses API tertentu.

  • BIND_DREAM_SERVICE: Bila menargetkan API level 21 dan yang lebih tinggi, izin ini diperlukan oleh layanan Daydream, untuk memastikan hanya sistem tersebut yang bisa mengikatnya.