Level API: 21
Android 5.0 (LOLLIPOP)
menawarkan fitur baru untuk pengguna dan developer aplikasi. Dokumen ini memberikan
pengantar API baru yang paling penting.
Jika Anda memiliki aplikasi yang dipublikasikan, pastikan untuk memeriksa Perubahan Perilaku Android 5.0 yang harus Anda perhitungkan dalam aplikasi. Perubahan perilaku ini dapat memengaruhi aplikasi Anda di perangkat Android 5.0, meskipun Anda tidak menggunakan API baru atau menargetkan fungsi baru.
Untuk melihat fitur platform baru secara umum, lihat sorotan Android Lollipop.
Mulai mengembangkan
Untuk mulai membuat aplikasi untuk Android 5.0, Anda harus mendapatkan Android SDK terlebih dahulu. Kemudian, gunakan SDK Manager untuk mendownload Android 5.0 SDK Platform dan Image Sistem.
Mengupdate level API target
Untuk mengoptimalkan aplikasi Anda dengan lebih baik untuk perangkat yang menjalankan Android 5.0,
tetapkan targetSdkVersion ke
"21", instal aplikasi Anda di image sistem Android
5.0, uji, lalu publikasikan aplikasi yang diupdate dengan
perubahan ini.
Anda dapat menggunakan API Android 5.0 sekaligus mendukung versi
sebelumnya dengan menambahkan kondisi ke kode Anda yang memeriksa level API sistem
sebelum mengeksekusi API yang tidak didukung oleh minSdkVersion Anda.
Untuk mempelajari lebih lanjut cara mempertahankan kompatibilitas mundur, baca Mendukung
Versi Platform yang Berbeda.
Untuk mengetahui informasi selengkapnya tentang cara kerja level API, baca Apa yang dimaksud dengan Level API?
Perubahan perilaku penting
Jika Anda telah memublikasikan aplikasi untuk Android, perlu diketahui bahwa aplikasi Anda mungkin terpengaruh oleh perubahan di Android 5.0.
Lihat Perubahan Android 5.0 untuk mengetahui informasi selengkapnya.
Antarmuka Pengguna
Dukungan Desain Material
Android 5.0 menambahkan dukungan untuk gaya Desain Material baru Android. Anda dapat membuat aplikasi dengan Desain Material yang dinamis secara visual dan memiliki transisi elemen UI yang terasa alami bagi pengguna. Dukungan ini mencakup:
- Tema material
- Melihat bayangan
- Widget
RecyclerView - Efek gaya visual dan animasi drawable
- Efek transisi aktivitas dan animasi Desain Material
- Animator untuk properti tampilan berdasarkan status tampilan
- Widget UI dan panel aplikasi yang dapat disesuaikan dengan palet warna yang Anda kontrol
- Drawable animasi dan non-animasi berdasarkan grafik vektor XML
Untuk mempelajari lebih lanjut cara menambahkan fungsi Desain Material ke aplikasi Anda, lihat Desain Material.
Dokumen dan aktivitas serentak di layar terbaru
Dalam rilis sebelumnya,
layar terbaru
hanya dapat menampilkan satu tugas untuk setiap aplikasi yang terakhir
berinteraksi dengan pengguna. Sekarang aplikasi Anda dapat membuka lebih banyak tugas sesuai kebutuhan untuk aktivitas serentak tambahan untuk dokumen. Fitur ini memfasilitasi multitasking dengan
memungkinkan pengguna beralih dengan cepat antara aktivitas dan dokumen individual dari
layar terbaru, dengan pengalaman peralihan yang konsisten di semua aplikasi.
Contoh tugas serentak tersebut dapat mencakup tab yang terbuka di aplikasi
browser web, dokumen di aplikasi produktivitas, pertandingan serentak di
game, atau chat di aplikasi pesan. Aplikasi Anda dapat mengelola tugasnya
melalui class ActivityManager.AppTask.
Untuk menyisipkan jeda logis sehingga sistem memperlakukan aktivitas Anda sebagai tugas
baru, gunakan FLAG_ACTIVITY_NEW_DOCUMENT saat
meluncurkan aktivitas dengan startActivity(). Anda juga bisa mendapatkan perilaku ini dengan menetapkan
atribut documentLaunchMode elemen
<activity> ke "intoExisting" atau
"always" dalam manifes Anda.
Agar layar terbaru tidak berantakan, Anda dapat menetapkan jumlah maksimum
tugas dari aplikasi yang dapat muncul di layar tersebut. Untuk melakukannya, tetapkan
atribut android:maxRecents
<application>. Maksimum saat ini yang dapat ditentukan adalah 50 tugas per pengguna (25 untuk perangkat dengan RAM rendah).
Tugas di layar terbaru dapat disetel agar tetap ada setelah perangkat dimulai ulang. Untuk mengontrol
perilaku persistensi, gunakan
atribut
android:persistableMode. Anda juga dapat mengubah
properti visual aktivitas di layar terbaru, seperti
warna, label, dan ikon aktivitas, dengan memanggil
metode
setTaskDescription().
Update WebView
Android 5.0 mengupdate implementasi WebView
ke Chromium M37, yang menghadirkan peningkatan 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 class PermissionRequest,
yang memungkinkan aplikasi Anda memberikan izin WebView
untuk mengakses resource yang dilindungi seperti kamera dan mikrofon, melalui API web
seperti getUserMedia(). Aplikasi Anda harus memiliki izin
Android yang sesuai untuk resource ini agar dapat memberikan izin ke
WebView.
Dengan metode onShowFileChooser() baru,
Anda kini dapat menggunakan kolom formulir input di WebView,
dan meluncurkan pemilih file untuk memilih gambar dan file dari perangkat Android.
Selain itu, rilis ini menghadirkan dukungan untuk standar terbuka WebAudio, WebGL, dan WebRTC. Untuk mempelajari lebih lanjut fitur baru yang disertakan dalam rilis ini, lihat WebView untuk Android.
Screenshot dan berbagi
Android 5.0 memungkinkan Anda menambahkan kemampuan perekaman layar dan berbagi layar ke
aplikasi dengan android.media.projection API baru. Fungsi ini
berguna, misalnya, jika Anda ingin mengaktifkan berbagi layar di aplikasi
konferensi video.
Metode createVirtualDisplay() baru
memungkinkan aplikasi Anda menangkap konten layar utama (tampilan
default) ke dalam objek Surface, yang kemudian dapat dikirim
aplikasi Anda melalui jaringan. API ini hanya memungkinkan perekaman konten layar yang tidak aman, dan bukan audio sistem. Untuk memulai perekaman layar, aplikasi Anda harus meminta izin pengguna terlebih dahulu dengan meluncurkan dialog perekaman layar menggunakan Intent yang diperoleh melalui metode createScreenCaptureIntent().
Untuk contoh cara menggunakan API baru, lihat class MediaProjectionDemo
dalam project contoh.
Notifikasi
Notifikasi layar kunci
Layar kunci di Android 5.0 memiliki kemampuan untuk menampilkan notifikasi. Pengguna dapat memilih menggunakan Setelan apakah akan mengizinkan konten notifikasi sensitif ditampilkan di layar kunci yang aman.
Aplikasi Anda dapat mengontrol tingkat detail yang terlihat saat notifikasinya
ditampilkan di layar kunci yang aman. Untuk mengontrol tingkat visibilitas, panggil
setVisibility() dan
tentukan salah satu nilai berikut:
VISIBILITY_PRIVATE: Menampilkan informasi dasar, seperti ikon notifikasi, tetapi menyembunyikan konten lengkap notifikasi.VISIBILITY_PUBLIC: Menampilkan konten lengkap notifikasi.VISIBILITY_SECRET: Tidak menampilkan apa pun, bahkan tidak termasuk ikon notifikasi.
Jika tingkat visibilitasnya adalah VISIBILITY_PRIVATE,
Anda juga dapat memberikan versi konten notifikasi yang disamarkan
yang menyembunyikan detail pribadi. Misalnya, aplikasi SMS mungkin menampilkan
notifikasi yang menampilkan "Anda memiliki 3 pesan teks baru", tetapi menyembunyikan konten
pesan dan pengirim. Untuk memberikan notifikasi alternatif ini, buat notifikasi pengganti terlebih dahulu menggunakan Notification.Builder. Saat
Anda membuat objek notifikasi pribadi, lampirkan notifikasi pengganti
ke objek tersebut melalui
metode setPublicVersion().
Metadata notifikasi
Android 5.0 menggunakan metadata yang terkait dengan notifikasi aplikasi Anda
untuk mengurutkan notifikasi dengan lebih cerdas. Untuk menetapkan metadata, panggil
metode berikut di Notification.Builder saat Anda
membuat notifikasi:
setCategory(): Memberi tahu sistem cara menangani notifikasi aplikasi Anda saat perangkat dalam mode prioritas (misalnya, jika notifikasi mewakili panggilan masuk, pesan instan, atau alarm).setPriority(): Menandai notifikasi sebagai lebih atau kurang penting daripada notifikasi normal. Notifikasi dengan kolom prioritas yang ditetapkan kePRIORITY_MAXatauPRIORITY_HIGHakan muncul di jendela mengambang kecil jika notifikasi juga memiliki suara atau getaran.addPerson(): Memungkinkan Anda menambahkan satu atau beberapa orang yang relevan dengan notifikasi. Aplikasi Anda dapat menggunakan ini untuk memberi sinyal kepada sistem bahwa aplikasi harus mengelompokkan notifikasi dari orang yang ditentukan, atau memberi peringkat notifikasi dari orang-orang ini sebagai lebih penting.
Grafik
Dukungan untuk OpenGL ES 3.1
Android 5.0 menambahkan antarmuka Java dan dukungan native untuk OpenGL ES 3.1. Fungsi baru utama yang disediakan di OpenGL ES 3.1 meliputi:
- Shader komputasi
- Objek shader terpisah
- Perintah gambar tidak langsung
- Tekstur multisampel dan stensil
- Peningkatan bahasa shading
- Ekstensi untuk mode penggabungan lanjutan dan proses debug
- Kompatibilitas mundur dengan OpenGL ES 2.0 dan 3.0
Antarmuka Java untuk OpenGL ES 3.1 di Android disediakan dengan
GLES31. Saat menggunakan OpenGL ES 3.1, pastikan Anda
mendeklarasikannya dalam file manifes dengan
tag <uses-feature> dan atribut android:glEsVersion. Contoh:
<manifest>
<uses-feature android:glEsVersion="0x00030001" />
...
</manifest>Untuk informasi penggunaan OpenGL ES lebih lanjut, termasuk cara memeriksa versi OpenGL ES yang didukung perangkat saat runtime, lihat Panduan OpenGL ES API.
Android Extension Pack
Selain OpenGL ES 3.1, rilis ini menyediakan paket ekstensi dengan antarmuka Java dan dukungan native untuk fungsi grafis lanjutan. Ekstensi ini diperlakukan sebagai satu paket oleh Android. (Jika
ekstensi ANDROID_extension_pack_es31a ada, aplikasi Anda dapat
mengasumsikan bahwa semua ekstensi dalam paket ada dan mengaktifkan fitur bahasa shading
dengan satu pernyataan #extension.)
Paket ekstensi mendukung:
- Dukungan shader fragmen yang diperlukan untuk buffer penyimpanan shader, gambar, dan atomik (Dukungan shader fragmen bersifat opsional di OpenGL ES 3.1.)
- Shader tessellation dan geometri
- Format kompresi tekstur ASTC (LDR)
- Interpolasi dan shading per sampel
- Mode penggabungan yang berbeda untuk setiap lampiran warna dalam buffering frame
Antarmuka Java untuk paket ekstensi disediakan dengan
GLES31Ext. Dalam manifes aplikasi, Anda dapat mendeklarasikan bahwa
aplikasi Anda hanya boleh diinstal di perangkat yang mendukung paket ekstensi.
Contoh:
<manifest>
<uses-feature android:name="android.hardware.opengles.aep"
android:required="true" />
...
</manifest>Media
Camera API untuk kemampuan kamera tingkat lanjut
Android 5.0 memperkenalkan API
android.hardware.camera2
baru untuk memfasilitasi pengambilan foto dan pemrosesan gambar yang lebih mendetail. Sekarang Anda dapat
mengakses perangkat kamera yang tersedia untuk sistem secara terprogram dengan
getCameraIdList()
dan terhubung ke perangkat tertentu dengan
openCamera().
Untuk mulai mengambil gambar, buat CameraCaptureSession
dan tentukan objek Surface untuk mengirim gambar yang diambil.
CameraCaptureSession dapat dikonfigurasi untuk
mengambil satu foto atau beberapa gambar dalam mode burst.
Untuk mendapatkan notifikasi saat gambar baru diambil, implementasikan pemroses CameraCaptureSession.CaptureCallback dan tetapkan dalam permintaan pengambilan Anda. Sekarang, saat sistem menyelesaikan permintaan pengambilan gambar, pemroses CameraCaptureSession.CaptureCallback Anda akan menerima panggilan ke onCaptureCompleted(), yang memberi Anda metadata pengambilan gambar dalam CaptureResult.
Class CameraCharacteristics memungkinkan aplikasi
Anda mendeteksi fitur kamera yang tersedia di perangkat. Properti INFO_SUPPORTED_HARDWARE_LEVEL objek mewakili tingkat fungsionalitas kamera.
- Semua perangkat mendukung setidaknya
level hardware
INFO_SUPPORTED_HARDWARE_LEVEL_LEGACY, yang memiliki kemampuan yang kurang lebih setara dengan APICamerayang tidak digunakan lagi. - Perangkat yang mendukung level hardware
INFO_SUPPORTED_HARDWARE_LEVEL_FULLmampu mengontrol pengambilan dan pascapemrosesan secara manual, serta mengambil gambar resolusi tinggi dengan kecepatan frame tinggi.
Untuk melihat cara menggunakan API
Kamera
yang diupdate, lihat contoh implementasi Camera2Basic dan Camera2Video
dalam rilis ini.
Pemutaran audio
Rilis ini mencakup perubahan berikut pada
AudioTrack:
- Aplikasi Anda kini dapat menyediakan data audio dalam format floating point
(
ENCODING_PCM_FLOAT). Hal ini memungkinkan rentang dinamis yang lebih besar, presisi yang lebih konsisten, dan headroom yang lebih besar. Aritmetika floating point sangat berguna selama penghitungan perantara. Endpoint pemutaran menggunakan format bilangan bulat untuk data audio, dan dengan kedalaman bit yang lebih rendah. (Di Android 5.0, sebagian pipeline internal belum menggunakan floating point.) - Aplikasi Anda kini dapat menyediakan data audio sebagai
ByteBuffer, dalam format yang sama seperti yang disediakan olehMediaCodec. - Opsi
WRITE_NON_BLOCKINGdapat menyederhanakan buffering dan multithreading untuk beberapa aplikasi.
Kontrol pemutaran media
Gunakan API notifikasi dan media baru untuk memastikan bahwa
UI sistem mengetahui pemutaran media Anda serta dapat mengekstrak dan menampilkan gambar album.
Mengontrol pemutaran media di seluruh UI dan layanan kini lebih mudah dengan class
MediaSession dan
MediaController baru.
Class MediaSession baru menggantikan
class RemoteControlClient yang tidak digunakan lagi dan menyediakan
satu set metode callback untuk menangani kontrol transpor dan tombol media.
Jika aplikasi Anda menyediakan pemutaran media dan berjalan di platform Android
TV atau
Wear, gunakan
class MediaSession untuk menangani kontrol
transportasi menggunakan metode callback yang sama.
Anda kini dapat membuat aplikasi pengontrol media sendiri dengan class
MediaController baru. Class ini menyediakan
cara yang aman untuk thread dalam memantau dan mengontrol pemutaran media dari proses UI aplikasi Anda.
Saat membuat pengontrol, tentukan objek MediaSession.Token
agar aplikasi Anda dapat berinteraksi dengan MediaSession yang diberikan.
Dengan menggunakan metode MediaController.TransportControls,
Anda dapat mengirim perintah seperti play(),
stop(),
skipToNext(),
dan setRating()
untuk mengontrol pemutaran media pada sesi tersebut. Dengan pengontrol, Anda juga dapat
mendaftarkan objek MediaController.Callback untuk
memproses metadata dan perubahan status pada sesi.
Selain itu, Anda dapat membuat notifikasi lengkap yang memungkinkan kontrol pemutaran
terikat ke sesi media dengan class Notification.MediaStyle
baru.
Penjelajahan media
Android 5.0 memperkenalkan kemampuan bagi aplikasi untuk menjelajahi library konten media
aplikasi lain, melalui API
android.media.browse
baru. Untuk mengekspos konten media di aplikasi Anda, perluas
class MediaBrowserService. Implementasi MediaBrowserService Anda harus memberikan akses ke MediaSession.Token agar aplikasi dapat memutar konten media yang disediakan melalui layanan Anda.
Untuk berinteraksi dengan layanan browser media, gunakan
class MediaBrowser. Tentukan nama komponen
untuk MediaSession saat Anda membuat
instance MediaBrowser. Dengan menggunakan instance browser tersebut,
aplikasi Anda kemudian dapat terhubung ke layanan terkait dan mendapatkan
objek MediaSession.Token untuk memutar konten yang diekspos
melalui layanan tersebut.
Penyimpanan
Pemilihan direktori
Android 5.0 memperluas Storage Access Framework untuk memungkinkan pengguna memilih seluruh subhierarki direktori, sehingga memberikan akses baca/tulis ke aplikasi untuk semua dokumen yang ada tanpa memerlukan konfirmasi pengguna untuk setiap item.
Untuk memilih subhierarki direktori, buat dan kirim intent
OPEN_DOCUMENT_TREE. Sistem menampilkan semua
instance DocumentsProvider yang mendukung pemilihan subhierarki,
sehingga pengguna dapat menjelajahi dan memilih direktori. URI yang ditampilkan mewakili
akses ke subhierarki yang dipilih. Selanjutnya, Anda dapat menggunakan buildChildDocumentsUriUsingTree()
dan buildDocumentUriUsingTree()
bersama dengan
query()
untuk menjelajahi subhierarki.
Metode createDocument() baru memungkinkan Anda membuat dokumen atau direktori baru di mana saja
di bawah subhierarki. Untuk mengelola dokumen yang ada, gunakan
renameDocument() dan
deleteDocument().
Periksa COLUMN_FLAGS
untuk memverifikasi dukungan penyedia untuk panggilan ini sebelum mengeluarkannya.
Jika Anda menerapkan DocumentsProvider dan ingin
mendukung pemilihan subhierarki, terapkan isChildDocument() dan sertakan FLAG_SUPPORTS_IS_CHILD
dalam COLUMN_FLAGS.
Android 5.0 juga memperkenalkan direktori khusus paket baru di
penyimpanan bersama tempat aplikasi Anda dapat menempatkan file media untuk disertakan dalam
MediaStore. getExternalMediaDirs() baru menampilkan jalur ke direktori ini di semua perangkat penyimpanan bersama. Sama seperti
getExternalFilesDir(),
aplikasi Anda tidak memerlukan izin tambahan untuk mengakses jalur yang ditampilkan. Platform
ini memindai media baru secara berkala di direktori ini, tetapi Anda juga dapat
menggunakan MediaScannerConnection untuk memindai konten baru
secara eksplisit.
Nirkabel & Konektivitas
Beberapa koneksi jaringan
Android 5.0 menyediakan API multi-jaringan baru yang memungkinkan aplikasi Anda memindai jaringan yang tersedia secara dinamis dengan kemampuan tertentu, dan membuat koneksi ke jaringan tersebut. Fungsi ini berguna saat aplikasi Anda memerlukan jaringan khusus, seperti jaringan SUPL, MMS, atau tagihan operator, atau jika Anda ingin mengirim data menggunakan jenis protokol transportasi tertentu.
Untuk memilih dan terhubung ke jaringan secara dinamis dari aplikasi Anda, ikuti langkah-langkah berikut:
- Buat
ConnectivityManager. - Gunakan class
NetworkRequest.Builderuntuk membuat objekNetworkRequestdan menentukan fitur jaringan dan jenis transpor yang diinginkan aplikasi Anda. - Untuk memindai jaringan yang sesuai, panggil
requestNetwork()atauregisterNetworkCallback(), dan teruskan objekNetworkRequestdan implementasiConnectivityManager.NetworkCallback. Gunakan metoderequestNetwork()jika Anda ingin beralih secara aktif ke jaringan yang sesuai setelah terdeteksi; untuk hanya menerima notifikasi jaringan yang dipindai tanpa beralih secara aktif, gunakan metoderegisterNetworkCallback().
Saat mendeteksi jaringan yang sesuai, sistem akan terhubung ke jaringan dan
memanggil
callback
onAvailable(). Anda dapat menggunakan objek Network dari callback untuk
mendapatkan informasi tambahan tentang jaringan, atau untuk mengarahkan traffic agar menggunakan
jaringan yang dipilih.
Bluetooth Hemat Energi
Android 4.3 memperkenalkan dukungan platform untuk Bluetooth Hemat Energi (Bluetooth LE) dalam peran sentral. Di Android 5.0, perangkat Android kini dapat berfungsi sebagai perangkat periferal Bluetooth LE. Aplikasi dapat menggunakan kemampuan ini untuk membuat keberadaannya diketahui oleh perangkat di sekitar. Misalnya, Anda dapat membuat aplikasi yang memungkinkan perangkat berfungsi sebagai pedometer atau pemantau kesehatan dan mengomunikasikan datanya dengan perangkat Bluetooth LE lain.
android.bluetooth.le API baru memungkinkan aplikasi Anda menyiarkan
pemberitahuan, memindai respons, dan membentuk koneksi dengan perangkat Bluetooth
LE di sekitar. Untuk menggunakan fitur pemberitahuan dan pemindaian baru, tambahkan izin
BLUETOOTH_ADMIN
dalam manifes Anda. Saat pengguna mengupdate atau mendownload aplikasi Anda dari Google Play Store,
mereka akan diminta untuk memberikan izin berikut ke aplikasi Anda:
"Informasi koneksi Bluetooth: Memungkinkan aplikasi mengontrol Bluetooth,
termasuk menyiarkan ke atau mendapatkan informasi tentang perangkat Bluetooth di sekitar."
Untuk memulai pemberitahuan Bluetooth LE agar perangkat lain dapat menemukan
aplikasi Anda, panggil
startAdvertising()
dan teruskan implementasi
class AdvertiseCallback. Objek callback
menerima laporan keberhasilan atau kegagalan operasi pemberitahuan.
Android 5.0 memperkenalkan class ScanFilter agar
aplikasi Anda hanya dapat memindai
jenis perangkat tertentu yang diinginkan. Untuk mulai memindai perangkat Bluetooth
LE, panggil startScan()
dan teruskan daftar filter. Dalam panggilan metode, Anda juga harus memberikan
implementasi ScanCallback untuk melaporkan saat
pemberitahuan Bluetooth LE ditemukan.
Peningkatan NFC
Android 5.0 menambahkan peningkatan ini untuk memungkinkan penggunaan NFC yang lebih luas dan lebih fleksibel:
- Android Beam kini tersedia di menu bagikan.
- Aplikasi Anda dapat memanggil Android Beam di perangkat pengguna untuk membagikan data dengan
memanggil
invokeBeam(). Hal ini menghindari kebutuhan pengguna untuk mengetuk perangkat secara manual ke perangkat lain yang mendukung NFC untuk menyelesaikan transfer data. - Anda dapat menggunakan metode
createTextRecord()baru untuk membuat data NDEF yang berisi data teks UTF-8. - Jika Anda mengembangkan aplikasi pembayaran, Anda kini memiliki kemampuan untuk
mendaftarkan ID aplikasi (AID) NFC secara dinamis dengan memanggil
registerAidsForService(). Anda juga dapat menggunakansetPreferredService()untuk menetapkan layanan emulasi kartu pilihan yang harus digunakan saat aktivitas tertentu berada di latar depan.
Project Volta
Selain fitur baru, Android 5.0 menekankan peningkatan pada masa pakai baterai. Gunakan API dan alat baru untuk memahami dan mengoptimalkan konsumsi daya aplikasi Anda.
Menjadwalkan tugas
Android 5.0 menyediakan API JobScheduler
baru yang memungkinkan Anda mengoptimalkan masa pakai baterai dengan menentukan tugas yang akan dijalankan sistem
secara asinkron di lain waktu atau dalam kondisi tertentu (seperti saat perangkat
sedang diisi dayanya). Penjadwalan tugas berguna dalam situasi seperti:
- Aplikasi memiliki tugas yang tidak ditampilkan kepada pengguna dan dapat Anda tunda.
- Aplikasi memiliki pekerjaan yang sebaiknya dilakukan saat unit dicolokkan.
- Aplikasi memiliki tugas yang memerlukan akses jaringan atau koneksi Wi-Fi.
- Aplikasi ini memiliki sejumlah tugas yang ingin Anda jalankan sebagai batch sesuai jadwal rutin.
Unit kerja dienkapsulasi oleh objek JobInfo.
Objek ini menentukan kriteria penjadwalan.
Gunakan class JobInfo.Builder untuk mengonfigurasi cara
menjalankan tugas terjadwal. Anda dapat menjadwalkan tugas untuk dijalankan dalam kondisi tertentu, seperti:
- Mulai saat perangkat sedang mengisi daya
- Memulai saat perangkat terhubung ke jaringan tidak berbayar
- Mulai saat perangkat tidak ada aktivitas
- Selesai sebelum batas waktu tertentu atau dengan penundaan minimum
Misalnya, Anda dapat menambahkan kode seperti ini untuk menjalankan tugas di jaringan tidak berbayar:
Kotlin
val uploadTask: JobInfo = JobInfo.Builder( jobId, serviceComponent /* JobService component */ ).run { setRequiredNetworkType(JobInfo.NETWORK_TYPE_UNMETERED) build() } val jobScheduler = context.getSystemService(Context.JOB_SCHEDULER_SERVICE) as JobScheduler jobScheduler.schedule(uploadTask)
Java
JobInfo uploadTask = new JobInfo.Builder(jobId, serviceComponent /* JobService component */) .setRequiredNetworkCapabilities(JobInfo.NETWORK_TYPE_UNMETERED) .build(); JobScheduler jobScheduler = (JobScheduler) context.getSystemService(Context.JOB_SCHEDULER_SERVICE); jobScheduler.schedule(uploadTask);
Jika perangkat memiliki daya yang stabil (yaitu, telah dicolokkan selama lebih dari 2 menit dan baterai berada pada level yang baik), sistem akan menjalankan tugas terjadwal yang siap dijalankan, meskipun batas waktu tugas belum berakhir.
Untuk melihat contoh cara menggunakan JobScheduler API,
lihat contoh penerapan JobSchedulerSample dalam rilis ini.
Alat developer untuk penggunaan baterai
Perintah dumpsys batterystats baru menghasilkan data statistik
yang menarik tentang penggunaan baterai pada perangkat, yang diatur menurut ID pengguna unik
(UID). Statistik tersebut mencakup:
- Histori peristiwa terkait baterai
- Statistik global untuk perangkat
- Perkiraan penggunaan daya per UID dan komponen sistem
- Milidetik seluler per aplikasi per paket
- Statistik agregat UID sistem
- Statistik agregat UID aplikasi
Gunakan opsi --help untuk mempelajari berbagai opsi untuk menyesuaikan output. Misalnya, untuk mencetak statistik penggunaan baterai
untuk paket aplikasi tertentu sejak perangkat terakhir kali diisi daya, jalankan perintah
ini:
$ adb shell dumpsys batterystats --charged <package-name>
Anda dapat menggunakan alat
Battery Historian
pada output perintah dumpsys untuk
membuat visualisasi HTML peristiwa terkait daya dari log. Informasi
ini memudahkan Anda memahami dan mendiagnosis masalah terkait
baterai.
Android di Tempat Kerja dan di Pendidikan
Penyediaan yang dikelola
Android 5.0 menyediakan fungsi baru untuk menjalankan aplikasi dalam lingkungan perusahaan. Administrator perangkat dapat memulai proses penyediaan terkelola untuk menambahkan profil terkelola yang ada bersama tetapi terpisah ke perangkat, jika pengguna memiliki akun pribadi yang sudah ada. Aplikasi yang terkait dengan profil terkelola akan muncul bersama aplikasi yang tidak dikelola di 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().
Anda kemudian dapat memanggil setProfileEnabled() untuk
mengaktifkan profil terkelola ini.
Secara default, hanya sebagian kecil aplikasi yang diaktifkan di profil terkelola.
Anda dapat menginstal aplikasi tambahan di profil terkelola dengan memanggil
enableSystemApp().
Jika mengembangkan aplikasi Peluncur, Anda dapat menggunakan class LauncherApps baru untuk mendapatkan daftar aktivitas yang dapat diluncurkan
untuk pengguna saat ini dan profil terkelola terkait. Peluncur Anda dapat membuat
aplikasi terkelola terlihat jelas secara visual dengan menambahkan badge kerja ke drawable
ikon. Untuk mengambil ikon yang diberi badge, panggil
getUserBadgedIcon().
Untuk mengetahui cara menggunakan fungsi baru, lihat contoh penerapan BasicManagedProfile dalam rilis ini.
Pemilik perangkat
Android 5.0 memperkenalkan kemampuan untuk men-deploy aplikasi pemilik perangkat. Pemilik
perangkat adalah jenis khusus
administrator perangkat
yang memiliki kemampuan tambahan untuk membuat dan menghapus pengguna sekunder serta
mengonfigurasi setelan global di perangkat. Aplikasi pemilik perangkat Anda dapat menggunakan
metode di class DevicePolicyManager untuk mengambil
kontrol mendetail atas konfigurasi, keamanan, dan aplikasi di perangkat terkelola.
Perangkat hanya dapat memiliki satu pemilik perangkat aktif dalam satu waktu.
Untuk men-deploy dan mengaktifkan pemilik perangkat, Anda harus melakukan transfer data NFC dari aplikasi pemrograman ke perangkat saat perangkat dalam status belum disediakan. Transfer data ini mengirimkan informasi yang sama seperti dalam intent penyediaan yang dijelaskan dalam Penyediaan terkelola.
Pin ke layar
Android 5.0 memperkenalkan API sematkan ke layar baru yang memungkinkan Anda membatasi pengguna untuk sementara agar tidak meninggalkan tugas atau terganggu oleh notifikasi. Hal ini dapat digunakan, misalnya, jika Anda mengembangkan aplikasi pendidikan untuk mendukung persyaratan penilaian berbobot tinggi di Android, atau aplikasi kios atau fungsi tunggal. Setelah aplikasi mengaktifkan sematkan ke layar, pengguna tidak dapat melihat notifikasi, mengakses aplikasi lain, atau kembali ke layar utama, hingga aplikasi keluar dari mode tersebut.
Ada dua cara untuk mengaktifkan penyematan ke layar:
- Secara manual: Pengguna dapat mengaktifkan penyematan ke layar di Setelan > Keamanan > Penyematan ke Layar, dan memilih tugas yang ingin disematkan dengan menyentuh ikon pin hijau di layar terbaru.
- Secara terprogram: Untuk mengaktifkan penyematan ke layar
secara terprogram, panggil
startLockTask()dari aplikasi Anda. Jika aplikasi yang meminta bukan pemilik perangkat, pengguna akan diminta untuk mengonfirmasi. Aplikasi pemilik perangkat dapat memanggil metodesetLockTaskPackages()untuk memungkinkan aplikasi disematkan tanpa langkah konfirmasi pengguna.
Saat penguncian tugas aktif, perilaku berikut akan terjadi:
- Status bar kosong, serta notifikasi pengguna dan informasi status disembunyikan.
- Tombol Layar Utama dan Aplikasi Terbaru disembunyikan.
- Aplikasi lain tidak dapat meluncurkan aktivitas baru.
- Aplikasi saat ini dapat memulai aktivitas baru, asalkan tidak membuat tugas baru.
- Saat sematkan ke layar dipanggil oleh pemilik perangkat, pengguna tetap terkunci
pada aplikasi Anda hingga aplikasi memanggil
stopLockTask(). - Jika sematkan ke layar diaktifkan oleh aplikasi lain yang bukan pemilik perangkat atau oleh pengguna secara langsung, pengguna dapat keluar dengan menahan tombol Kembali dan Terbaru.
Framework Pencetakan
Merender PDF sebagai bitmap
Anda kini dapat merender halaman dokumen PDF menjadi gambar bitmap untuk dicetak menggunakan class PdfRenderer baru. Anda harus menentukan
ParcelFileDescriptor yang dapat dicari (yaitu, konten
dapat diakses secara acak) tempat sistem menulis konten yang dapat dicetak.
Aplikasi Anda dapat memperoleh halaman untuk dirender dengan
openPage(), lalu memanggil
render()
untuk mengubah PdfRenderer.Page yang dibuka menjadi bitmap. Anda
juga dapat menetapkan parameter tambahan jika hanya ingin mengonversi sebagian
dokumen menjadi gambar bitmap (misalnya, untuk menerapkan
rendering ubin
untuk memperbesar dokumen).
Untuk contoh cara menggunakan API baru, lihat contoh
PdfRendererBasic.
Sistem
Statistik penggunaan aplikasi
Anda kini dapat mengakses histori penggunaan aplikasi di perangkat Android dengan
android.app.usage API baru. API ini memberikan informasi penggunaan yang lebih mendetail daripada metode getRecentTasks() yang tidak digunakan lagi.
Untuk menggunakan API ini, Anda harus mendeklarasikan
izin "android.permission.PACKAGE_USAGE_STATS" di manifes terlebih dahulu.
Pengguna juga harus mengaktifkan akses untuk aplikasi ini melalui Setelan > Keamanan > Aplikasi
dengan akses penggunaan.
Sistem mengumpulkan data penggunaan per aplikasi, menggabungkan data dalam interval harian, mingguan, bulanan, dan tahunan. Durasi maksimum sistem menyimpan data ini adalah sebagai berikut:
- Data harian: 7 hari
- Data mingguan: 4 minggu
- Data bulanan: 6 bulan
- Data tahunan: 2 tahun
Untuk setiap aplikasi, sistem mencatat data berikut:
- Terakhir kali aplikasi digunakan
- Total durasi aplikasi berada di latar depan untuk interval waktu tersebut (berdasarkan hari, minggu, bulan, atau tahun)
- Stempel waktu yang mencatat kapan komponen (diidentifikasi oleh nama paket dan aktivitas) berpindah ke latar depan atau latar belakang selama satu hari
- Stempel waktu yang mencatat kapan konfigurasi perangkat berubah (seperti saat orientasi perangkat berubah karena rotasi)
Pengujian & Aksesibilitas
Peningkatan pengujian dan aksesibilitas
Android 5.0 menambahkan dukungan berikut untuk pengujian dan aksesibilitas:
- Metode
getWindowAnimationFrameStats()dangetWindowContentFrameStats()baru menangkap statistik frame untuk animasi dan konten jendela. Metode ini memungkinkan Anda menulis uji instrumentasi untuk mengevaluasi apakah aplikasi merender frame pada frekuensi refresh yang memadai untuk memberikan pengalaman pengguna yang lancar. - Metode
executeShellCommand()baru memungkinkan Anda menjalankan perintah shell dari uji instrumentasi. Eksekusi perintah mirip dengan menjalankanadb shelldari host yang terhubung ke perangkat, sehingga Anda dapat menggunakan alat berbasis shell sepertidumpsys,am,content, danpm. - Layanan aksesibilitas dan alat pengujian yang menggunakan Accessibility API
(seperti
UiAutomator) kini dapat mengambil informasi mendetail tentang properti jendela di layar yang dapat digunakan untuk berinteraksi oleh pengguna yang dapat melihat. Untuk mengambil daftar objekAccessibilityWindowInfo, panggil metodegetWindows()baru. - Class
AccessibilityNodeInfo.AccessibilityActionbaru memungkinkan Anda menentukan tindakan standar atau tindakan kustom untuk dilakukan padaAccessibilityNodeInfo. ClassAccessibilityNodeInfo.AccessibilityActionbaru menggantikan API terkait tindakan yang sebelumnya ditemukan diAccessibilityNodeInfo. - Android 5.0 memberikan kontrol yang lebih mendetail atas sintesis text-to-speech di
aplikasi Anda. Class
Voicebaru memungkinkan aplikasi Anda menggunakan profil suara yang terkait dengan lokalitas, rating kualitas dan latensi, serta parameter khusus mesin text-to-speech tertentu.
IME
Beralih antar-bahasa input dengan lebih mudah
Mulai Android 5.0, pengguna dapat beralih di antara
semua editor
metode input (IME) yang didukung oleh platform. Melakukan tindakan pengalihan
yang ditentukan (biasanya menyentuh ikon Globe pada keyboard virtual) akan beralih
ke semua IME tersebut. Perubahan perilaku ini diimplementasikan oleh
metode
shouldOfferSwitchingToNextInputMethod().
Selain itu, framework kini memeriksa apakah IME berikutnya menyertakan
mekanisme peralihan sama sekali (dan, dengan demikian, apakah IME tersebut mendukung peralihan ke
IME setelahnya). IME
dengan mekanisme pengalihan tidak akan beralih ke IME tanpa mekanisme tersebut. Perubahan
perilaku ini diterapkan oleh
metode
switchToNextInputMethod().
Untuk melihat contoh cara menggunakan API pengalihan IME yang diupdate, lihat contoh implementasi keyboard virtual yang diupdate dalam rilis ini. Untuk mempelajari lebih lanjut cara mengimplementasikan peralihan antar-IME, lihat Membuat Metode Input.
Deklarasi Manifes
Fitur wajib yang dapat dideklarasikan
Nilai berikut kini didukung dalam elemen
<uses-feature>,
sehingga Anda dapat memastikan bahwa aplikasi Anda hanya diinstal di perangkat yang
menyediakan fitur yang dibutuhkan aplikasi Anda.
FEATURE_AUDIO_OUTPUTFEATURE_CAMERA_CAPABILITY_MANUAL_POST_PROCESSINGFEATURE_CAMERA_CAPABILITY_MANUAL_SENSORFEATURE_CAMERA_CAPABILITY_RAWFEATURE_CAMERA_LEVEL_FULLFEATURE_GAMEPADFEATURE_LIVE_TVFEATURE_MANAGED_USERSFEATURE_LEANBACKFEATURE_OPENGLES_EXTENSION_PACKFEATURE_SECURELY_REMOVES_USERSFEATURE_SENSOR_AMBIENT_TEMPERATUREFEATURE_SENSOR_HEART_RATE_ECGFEATURE_SENSOR_RELATIVE_HUMIDITYFEATURE_VERIFIED_BOOTFEATURE_WEBVIEW
Izin pengguna
Izin berikut kini didukung dalam elemen
<uses-permission>
untuk mendeklarasikan izin yang diperlukan aplikasi Anda untuk mengakses API tertentu.
BIND_DREAM_SERVICE: Saat menargetkan API level 21 dan yang lebih tinggi, izin ini diperlukan oleh layanan Daydream, untuk memastikan bahwa hanya sistem yang dapat mengikatnya.