API Level: 21
Android 5.0 (LOLLIPOP) menawarkan fitur baru bagi pengguna dan developer aplikasi. Dokumen ini memberikan pengantar API baru yang paling penting.
Jika Anda memiliki aplikasi yang dipublikasikan, pastikan untuk melihat Perilaku Android 5.0 Perubahan yang harus Anda perhitungkan di aplikasi. Perubahan perilaku ini dapat memengaruhi aplikasi Anda di perangkat Android 5.0, meski Anda tidak menggunakan API baru atau menargetkan fungsi baru.
Untuk mendapatkan gambaran tingkat tinggi tentang fitur platform baru, sebagai gantinya lihat Android Lollipop sorotan.
Mulai mengembangkan
Untuk mulai mem-build aplikasi bagi Android 5.0, Anda harus mendapatkan Android SDK terlebih dahulu. Lalu gunakan SDK Manager untuk mendownload Android 5.0 SDK Platform dan System Image.
Memperbarui target API level Anda
Untuk lebih mengoptimalkan aplikasi Anda pada perangkat yang menjalankan Android 5.0,
tetapkan targetSdkVersion
Anda ke
"21"
, instal aplikasi Anda di Android
image sistem 5.0, uji, lalu publikasikan aplikasi yang telah diupdate dengan
perubahan ini.
Anda dapat menggunakan API Android 5.0 sekaligus mendukung versi
lama dengan menambahkan kondisi ke kode yang memeriksa API level sistem
sebelum mengeksekusi API yang tidak didukung oleh minSdkVersion
Anda.
Untuk mempelajari lebih lanjut cara 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 desain material baru Android gaya. Anda dapat membuat aplikasi dengan desain material yang terlihat dinamis dan memiliki 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 grafis vektor XML
Untuk mempelajari lebih lanjut cara menambahkan fungsi desain material ke aplikasi Anda, lihat Desain Material.
Beberapa dokumen dan aktivitas sekaligus di layar terbaru
Dalam rilis sebelumnya,
layar terbaru
hanya dapat menampilkan satu tugas untuk setiap aplikasi yang berinteraksi dengan pengguna
paling akhir. Sekarang aplikasi Anda dapat membuka lebih banyak tugas sesuai kebutuhan untuk beberapa aktivitas serentak tambahan bagi dokumen. Fitur ini memfasilitasi {i>multitasking<i} dengan
memungkinkan pengguna dengan cepat beralih di antara aktivitas individual dan dokumen dari
layar terbaru, dengan pengalaman beralih yang konsisten di semua aplikasi.
Contoh tugas serentak 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 dapat mengelola tugasnya melalui class ActivityManager.AppTask
.
Untuk memasukkan jeda logis sehingga sistem memperlakukan aktivitas Anda sebagai
tugas, 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 tampak berantakan, Anda dapat menyetel jumlah maksimum
tugas dari aplikasi Anda yang
dapat muncul di layar tersebut. Untuk melakukannya, tetapkan
android:maxRecents
atribut
<application>. Jumlah maksimum
saat ini yang dapat ditentukan 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 dapat mengubah
properti visual aktivitas di layar terbaru, seperti
warna, label, dan ikon aktivitas, dengan memanggil
metode
setTaskDescription()
.
Pembaruan WebView
Android 5.0 mengupdate WebView
hingga Chromium M37, dengan menghadirkan peningkatan keamanan dan stabilitas,
serta perbaikan {i>bug<i}. 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()
yang 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.
Merekam dan berbagi layar
Android 5.0 memungkinkan Anda menambahkan kemampuan merekam dan berbagi layar ke
aplikasi dengan android.media.projection
API yang baru. Fungsi ini
berguna, misalnya, jika Anda ingin mengaktifkan berbagi layar di aplikasi
konferensi video.
Metode createVirtualDisplay()
baru
memungkinkan aplikasi Anda merekam konten layar utama (tampilan
default) ke dalam objek Surface
, yang kemudian dapat
dikirim oleh aplikasi Anda ke seluruh jaringan. API hanya mengizinkan perekaman layar yang tidak aman
konten, dan bukan audio sistem. Untuk memulai perekaman layar, aplikasi Anda harus terlebih dahulu
minta izin pengguna dengan meluncurkan dialog screenshot menggunakan
Intent
diperoleh melalui
createScreenCaptureIntent()
.
Untuk contoh cara menggunakan API baru, lihat MediaProjectionDemo
di project contoh.
Notifikasi
Notifikasi layar kunci
Layar kunci di Android 5.0 memiliki kemampuan untuk menampilkan notifikasi. Pengguna dapat memilih melalui 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
tetapkan 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-apa, bahkan ikon notifikasi.
Jika tingkat visibilitasnya adalah VISIBILITY_PRIVATE
,
Anda juga dapat memberikan versi notifikasi yang disamarkan
konten yang menyembunyikan detail pribadi. Misalnya, aplikasi SMS dapat menampilkan
notifikasi yang menunjukkan "Anda memiliki 3 pesan teks baru", tetapi menyembunyikan isi
pesan dan pengirimnya. 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 dikaitkan dengan notifikasi aplikasi Anda
untuk mengurutkan notifikasi secara lebih cerdas. Untuk menyetel metadata, panggil metode
metode berikut di Notification.Builder
saat Anda
buat notifikasi:
setCategory()
: Memberi tahu sistem cara menangani notifikasi aplikasi saat perangkat dalam mode prioritas (misalnya, jika notifikasi mewakili panggilan masuk, pesan instan, atau alarm).setPriority()
: Menandai notifikasi sebagai lebih penting atau kurang penting daripada notifikasi biasa. Notifikasi dengan kolom prioritas yang ditetapkan kePRIORITY_MAX
atauPRIORITY_HIGH
akan muncul di jendela mengambang kecil jika notifikasi juga memiliki suara atau getaran.addPerson()
: Memungkinkan Anda menambahkan satu atau beberapa orang yang relevan ke notifikasi. Aplikasi Anda dapat menggunakannya untuk memberi tahu sistem bahwa sistem harus mengelompokkan notifikasi dari orang yang ditentukan, atau memberi peringkat notifikasi dari orang tersebut sebagai lebih penting.
Grafik
Dukungan untuk OpenGL ES 3.1
Android 5.0 menambahkan antarmuka Java dan dukungan native untuk OpenGL ES 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
. Contoh:
<manifest> <uses-feature android:glEsVersion="0x00030001" /> ... </manifest>
Untuk informasi selengkapnya tentang penggunaan OpenGL ES, 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 tingkat lanjut. Ini
ekstensi diperlakukan sebagai
satu paket oleh Android. (Jika
ekstensi ANDROID_extension_pack_es31a
ada, aplikasi Anda dapat
menganggap semua ekstensi dalam paket itu ada dan mengaktifkan fitur bahasa shading
dengan satu pernyataan #extension
.)
Dukungan paket ekstensi:
- Dukungan fragment-shader terjamin untuk buffer penyimpanan shader, 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 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 canggih
Android 5.0 memperkenalkan API
android.hardware.camera2
baru untuk memfasilitasi pengambilan foto yang halus dan pemrosesan gambar. Anda kini 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 bidikan atau beberapa gambar sekaligus.
Agar diberi tahu saat gambar baru diambil, implementasikan pemroses CameraCaptureSession.CaptureCallback
dan tetapkan dalam permintaan pengambilan gambar. Sekarang, saat sistem menyelesaikan permintaan
perekaman gambar, pemroses CameraCaptureSession.CaptureCallback
Anda akan menerima panggilan ke
onCaptureCompleted()
,
yang memberi Anda metadata perekaman gambar dalam
CaptureResult
.
Class CameraCharacteristics
memungkinkan
mendeteksi fitur kamera apa yang tersedia pada perangkat. Properti
INFO_SUPPORTED_HARDWARE_LEVEL
objek mewakili tingkat fungsionalitas kamera.
- Semua perangkat mendukung setidaknya
INFO_SUPPORTED_HARDWARE_LEVEL_LEGACY
level hardware, yang memiliki kemampuan kurang lebih sama dengan atributCamera
yang tidak digunakan lagi Compute Engine API. - Perangkat yang mendukung level hardware
INFO_SUPPORTED_HARDWARE_LEVEL_FULL
dapat digunakan secara manual pengendalian pengambilan dan pascapemrosesan, serta pengambilan gambar beresolusi tinggi dengan kecepatan frame tinggi.
Untuk melihat cara menggunakan
Kamera
API, lihat implementasi Camera2Basic
dan Camera2Video
contoh dalam rilis ini.
Pemutaran audio
Rilis ini menyertakan perubahan berikut pada
AudioTrack
:
- Aplikasi Anda kini dapat menyediakan data audio dalam format floating point
(
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 pipeline internal belum menjadi floating point.) - Aplikasi Anda kini dapat menyediakan data audio sebagai
ByteBuffer
, dalam format yang sama dengan yang diberikan olehMediaCodec
. - Opsi
WRITE_NON_BLOCKING
dapat menyederhanakan buffering dan multithreading untuk beberapa aplikasi.
Kontrol pemutaran media
Gunakan notifikasi dan API media baru untuk memastikan bahwa
UI sistem mengetahui pemutaran media Anda dan dapat mengekstrak serta menampilkan sampul album.
Mengontrol pemutaran media di seluruh UI dan layanan kini lebih mudah dengan
MediaSession
dan
Class MediaController
.
Class MediaSession
baru menggantikan
class RemoteControlClient
yang tidak digunakan lagi dan memberikan
satu set metode callback untuk menangani kontrol transport dan tombol media.
Jika aplikasi Anda menyediakan pemutaran media dan berjalan di Android
TV atau
Platform Wear, gunakan
Class MediaSession
untuk menangani transpor Anda
menggunakan metode callback yang sama.
Kini Anda dapat membangun aplikasi pengontrol media sendiri dengan
Class MediaController
. Class ini menyediakan
cara yang thread-safe untuk 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
diikat ke sesi media dengan class Notification.MediaStyle
yang baru.
Penjelajahan media
Android 5.0 memperkenalkan kemampuan bagi aplikasi untuk menjelajahi library konten
media milik aplikasi lain, melalui
android.media.browse
API yang baru. Untuk mengekspos konten media dalam aplikasi Anda, perluas
class MediaBrowserService
. Implementasi
MediaBrowserService
Anda harus menyediakan akses ke
MediaSession.Token
agar aplikasi dapat memutar konten media
yang disediakan melalui layanan Anda.
Untuk berinteraksi dengan layanan browser media, gunakan
Class MediaBrowser
. Menentukan komponen
nama 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
Pilihan direktori
Android 5.0 memperluas Storage Access Framework untuk memungkinkan pengguna memilih seluruh subpohon direktori, sehingga memberikan akses baca/tulis pada aplikasi ke semua dokumen yang dimuat tanpa memerlukan konfirmasi pengguna untuk setiap item.
Untuk memilih subtree direktori, bangun dan kirim sebuah
OPEN_DOCUMENT_TREE
intent. Sistem menampilkan semua
Instance DocumentsProvider
yang mendukung pemilihan subhierarki,
memungkinkan pengguna menjelajahi
dan memilih direktori. URI yang ditampilkan mewakili akses ke subpohon yang dipilih. Kemudian, Anda dapat menggunakan buildChildDocumentsUriUsingTree()
dan buildDocumentUriUsingTree()
bersama dengan
query()
untuk menjelajahi subpohon.
Metode createDocument()
baru memungkinkan Anda membuat dokumen atau direktori baru di mana saja
di bawah subpohon. Untuk mengelola dokumen yang ada, gunakan
renameDocument()
dan
deleteDocument()
.
Periksa COLUMN_FLAGS
memverifikasi dukungan penyedia untuk 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 di
penyimpanan bersama tempat aplikasi Anda dapat menempatkan file media untuk disertakan dalam
MediaStore
. Yang baru
getExternalMediaDirs()
menampilkan jalur ke objek ini
direktori pada semua perangkat
penyimpanan bersama. Serupa dengan
getExternalFilesDir()
,
tidak ada izin tambahan yang diperlukan oleh aplikasi Anda untuk mengakses jalur yang ditampilkan. Tujuan
secara berkala memindai media baru di direktori ini, tetapi Anda juga bisa
gunakan MediaScannerConnection
untuk memindai
kode baru secara eksplisit
saat ini.
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. Fungsi ini berguna saat aplikasi Anda memerlukan jaringan khusus, seperti SUPL, MMS, atau jaringan penagihan operator, atau jika Anda ingin mengirim data menggunakan jenis protokol {i>transport<i} tertentu.
Untuk memilih dan menghubungkan ke jaringan secara dinamis dari aplikasi Anda, ikuti langkah-langkah berikut langkah:
- Buat
ConnectivityManager
. - Gunakan class
NetworkRequest.Builder
untuk membuat objekNetworkRequest
dan menentukan fitur jaringan dan jenis transport yang diminati aplikasi Anda. - Untuk memindai jaringan yang cocok, panggil
requestNetwork()
atauregisterNetworkCallback()
, dan teruskan objekNetworkRequest
dan implementasiConnectivityManager.NetworkCallback
. GunakanrequestNetwork()
jika Anda ingin secara aktif beralih ke jaringan yang sesuai setelah terdeteksi; untuk menerima notifikasi untuk jaringan yang dipindai tanpa beralih secara aktif, gunakanregisterNetworkCallback()
sebagai gantinya.
Saat mendeteksi jaringan yang cocok, 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
lalu lintas data agar menggunakan
jaringan yang dipilih.
Bluetooth Hemat Energi
Android 4.3 memperkenalkan dukungan platform untuk Bluetooth Hemat Energi (Bluetooth LE) dalam peran sentral. Pada Android 5.0, perangkat Android sekarang dapat berfungsi sebagai perangkat periferal Bluetooth LE. Aplikasi dapat menggunakan kemampuan ini untuk membuat keberadaannya diketahui oleh perangkat di sekitar. Misalnya, Anda dapat membangun aplikasi yang memungkinkan perangkat berfungsi sebagai pedometer atau pemantau kesehatan dan berkomunikasi datanya dengan perangkat Bluetooth LE lain.
android.bluetooth.le
API baru memungkinkan aplikasi Anda untuk menyiarkan
iklan, memindai respons, dan membuat koneksi dengan Bluetooth di sekitar
perangkat LE. Untuk menggunakan fitur iklan dan pemindaian baru, tambahkan izin
BLUETOOTH_ADMIN
dalam manifes Anda. Saat pengguna mengupdate atau
mendownload aplikasi Anda dari Play Store,
mereka akan diminta untuk memberikan izin berikut pada aplikasi Anda:
"Informasi koneksi Bluetooth: Memungkinkan aplikasi untuk mengontrol Bluetooth,
termasuk menyiarkan ke atau mendapatkan informasi tentang perangkat Bluetooth di sekitar."
Untuk memulai iklan Bluetooth LE agar perangkat lain dapat menemukan
aplikasi Anda, panggil
startAdvertising()
dan meneruskan implementasi
Class AdvertiseCallback
. Objek callback
menerima laporan keberhasilan atau kegagalan operasi iklan.
Android 5.0 memperkenalkan class ScanFilter
sehingga
agar aplikasi Anda hanya dapat memindai
perangkat tertentu yang diminati. Untuk memulai pemindaian perangkat
LE Bluetooth, panggil startScan()
dan teruskan daftar filter. Dalam panggilan metode, Anda juga harus menyediakan
penerapan ScanCallback
untuk melaporkan
Iklan Bluetooth LE ditemukan.
Penyempurnaan 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 berbagi data dengan
memanggil
invokeBeam()
. Dengan begitu, pengguna tidak perlu mengetuk perangkat secara manual dengan perangkat lain Perangkat berkemampuan 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 NFC (AID) secara dinamis dengan memanggil
registerAidsForService()
. Anda juga dapat menggunakansetPreferredService()
untuk menetapkan layanan emulasi kartu yang sebaiknya digunakan saat aktivitas tertentu berada di latar depan.
Proyek Volta
Selain fitur baru, Android 5.0 menekankan peningkatan dalam daya tahan baterai. Gunakan API dan alat baru untuk memahami dan mengoptimalkan daya aplikasi Anda pengguna.
Menjadwalkan tugas
Android 5.0 menyediakan API JobScheduler
baru yang memungkinkan Anda mengoptimalkan masa pakai baterai dengan menentukan tugas untuk dijalankan sistem
secara asinkron nanti atau dalam kondisi yang ditentukan (misalnya saat
perangkat sedang diisi dayanya). 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 Wi-Fi koneksi jarak jauh.
- Aplikasi ini memiliki sejumlah tugas yang ingin Anda jalankan sebagai batch secara jadwal proyek.
Unit kerja di-enkapsulasi oleh objek JobInfo
.
Objek ini menetapkan kriteria penjadwalan.
Gunakan class JobInfo.Builder
untuk mengonfigurasi cara
tugas terjadwal berjalan. Anda dapat menjadwalkan tugas untuk dijalankan dalam kondisi tertentu, seperti:
- 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 dapat menambahkan kode seperti ini untuk menjalankan tugas pada jaringan yang berbiaya tetap:
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 stabil (yaitu, terhubung ke listrik selama lebih dari 2 menit dan baterai berada pada kondisi sehat), sistem akan menjalankan tugas terjadwal yang siap dijalankan, meskipun batas waktu tugas belum berakhir.
Untuk melihat contoh cara menggunakan JobScheduler
API,
lihat contoh implementasi JobSchedulerSample
dalam rilis ini.
Alat bantu 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 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 mempelajari berbagai opsi untuk menyesuaikan output. Misalnya, untuk mencetak statistik penggunaan
baterai untuk paket aplikasi tertentu sejak perangkat terakhir diisi, jalankan
perintah ini:
$ adb shell dumpsys batterystats --charged <package-name>
Anda dapat menggunakan
Battery Historian
pada output perintah dumpsys
untuk
membuat visualisasi HTML dari peristiwa
terkait daya dari log. Informasi
ini memudahkan Anda memahami dan mendiagnosis masalah
terkait baterai.
Android di Tempat Kerja dan Pendidikan
Penyediaan terkelola
Android 5.0 menyediakan fungsi baru untuk menjalankan aplikasi dalam lingkungan perusahaan. J administrator perangkat dapat memulai proses penyediaan terkelola untuk menambahkan presentasi bersama tetapi profil terkelola ke perangkat, jika pengguna sudah memiliki akun pribadi. Aplikasi yang terkait dengan profil terkelola akan muncul di samping 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()
.
Kemudian, Anda dapat memanggil setProfileEnabled()
untuk
mengaktifkan profil terkelola ini.
Secara default, hanya subset kecil dari aplikasi yang diaktifkan dalam profil terkelola.
Anda dapat menginstal aplikasi tambahan dalam profil terkelola dengan memanggil
enableSystemApp()
.
Jika sedang mengembangkan aplikasi Peluncur, Anda dapat menggunakan class LauncherApps
baru untuk mendapatkan daftar aktivitas yang dapat diluncurkan
untuk pengguna saat ini dan profil terkelola yang terkait. Peluncur dapat membuat
aplikasi terkelola terlihat menonjol secara visual dengan menambahkan lencana kerja ke ikon
yang dapat digambar. Untuk mengambil ikon badge, panggil
getUserBadgedIcon()
.
Untuk melihat cara menggunakan fungsi baru, lihat
contoh implementasi 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
di class DevicePolicyManager
untuk mengambil
memberikan kontrol yang lebih mendetail atas konfigurasi, keamanan, dan aplikasi pada perangkat terkelola.
Sebuah perangkat hanya bisa memiliki satu pemilik perangkat aktif untuk setiap kalinya.
Untuk men-deploy 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 intent penyediaan yang dijelaskan dalam Penyediaan terkelola.
Pin ke layar
Android 5.0 memperkenalkan API baru untuk pin ke layar yang memungkinkan Anda untuk mencegah pengguna meninggalkan tugas Anda atau diganggu oleh notifikasi. Ini dapat digunakan, misalnya, jika Anda sedang mengembangkan aplikasi pendidikan untuk mendukung persyaratan penilaian berisiko tinggi di Android, atau aplikasi aplikasi kios. Setelah aplikasi mengaktifkan pin ke layar, pengguna tidak dapat 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 dapat mengaktifkan pemakuan layar di Setelan > Keamanan > Pemakuan Layar, dan memilih tugas yang ingin mereka sematkan dengan menyentuh ikon pin hijau di layar terbaru.
- Secara terprogram: Untuk mengaktifkan pin ke layar
secara terprogram, panggil
startLockTask()
dari aplikasi Anda. Jika aplikasi yang meminta bukan pemilik perangkat, pengguna akan dimintai untuk konfirmasi. Aplikasi pemilik perangkat dapat memanggil metodesetLockTaskPackages()
untuk mengaktifkan aplikasi agar dapat disematkan tanpa langkah konfirmasi pengguna.
Saat penguncian tugas aktif, perilaku berikut akan terjadi:
- Status bar kosong, dan notifikasi pengguna serta informasi status disembunyikan.
- Tombol Beranda dan Aplikasi Terbaru disembunyikan.
- Aplikasi lainnya tidak bisa membuka aktivitas baru.
- Aplikasi saat ini dapat memulai aktivitas baru, asalkan aktivitas tersebut tidak membuat tugas baru.
- Saat 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 oleh pengguna secara langsung, pengguna dapat keluar dengan menahan kedua tombol Kembali dan Terbaru.
Kerangka Kerja Pencetakan
Me-render PDF sebagai bitmap
Anda kini bisa merender halaman dokumen PDF menjadi gambar bitmap untuk dicetak dengan
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 panggil
render()
untuk mengubah PdfRenderer.Page
yang dibuka menjadi bitmap. Anda
Anda juga dapat menetapkan parameter tambahan jika Anda hanya ingin mengonversi sebagian
dokumen menjadi gambar bitmap (misalnya, untuk mengimplementasikan
rendering berpetak
untuk memperbesar dokumen).
Untuk contoh cara menggunakan API baru, lihat contoh
PdfRendererBasic
.
Sistem
Statistik penggunaan aplikasi
Sekarang Anda dapat mengakses riwayat penggunaan aplikasi di perangkat Android dengan
API android.app.usage
baru. API ini memberikan penggunaan yang lebih mendetail
informasi daripada yang tidak
Metode getRecentTasks()
.
Untuk menggunakan API ini, Anda harus mendeklarasikan
izin "android.permission.PACKAGE_USAGE_STATS"
terlebih dahulu dalam manifes.
Pengguna juga harus mengaktifkan akses untuk aplikasi ini melalui Setelan > Keamanan > Aplikasi
dengan akses penggunaan.
Sistem mengumpulkan data penggunaan per aplikasi, menggabungkan data pada interval harian, mingguan, bulanan, dan tahunan. Durasi maksimum bahwa 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 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:
getWindowAnimationFrameStats()
baru dangetWindowContentFrameStats()
menangkap statistik frame untuk animasi dan konten jendela. Metode ini memungkinkan Anda menulis uji instrumentasi untuk mengevaluasi apakah aplikasi sedang dirender {i>frame<i} dengan frekuensi penyegaran yang memadai untuk memberikan pengalaman pengguna yang lancar.- Metode
executeShellCommand()
baru memungkinkan Anda mengeksekusi perintah shell dari uji instrumentasi. Tujuan mirip dengan menjalankanadb shell
dari host terhubung ke perangkat, memungkinkan Anda untuk menggunakan alat berbasis {i>shell<i} sepertidumpsys
,am
,content
, danpm
. - Layanan aksesibilitas dan alat pengujian yang menggunakan API aksesibilitas
(seperti
UiAutomator
) kini dapat mengambil informasi mendetail tentang properti jendela di layar yang dapat berinteraksi dengan pengguna yang dapat melihat. Untuk mengambil daftar objekAccessibilityWindowInfo
, panggil metodegetWindows()
baru. AccessibilityNodeInfo.AccessibilityAction
baru memungkinkan Anda menentukan tindakan standar atau kustom yang akan dilakukanAccessibilityNodeInfo
.AccessibilityNodeInfo.AccessibilityAction
baru menggantikan API terkait tindakan yang sebelumnya ditemukan diAccessibilityNodeInfo
.- Android 5.0 menyediakan kontrol yang lebih detail atas sintesis text-to-speech di
aplikasi Anda. Class
Voice
baru memungkinkan aplikasi Anda untuk menggunakan profil suara yang terkait dengan lokal, kualitas, dan latensi tertentu rating, dan parameter khusus mesin text-to-speech.
IME
Berganti bahasa masukan dengan lebih mudah
Mulai Android 5.0, pengguna dapat lebih mudah beralih antar
semua input
editor metode (IME) yang didukung oleh platform ini. Melakukan tindakan beralih
yang ditentukan (biasanya dengan menyentuh ikon Bola Dunia di keyboard virtual) akan berputar
melalui semua IME tersebut. Perubahan perilaku ini diimplementasikan oleh
metode
shouldOfferSwitchingToNextInputMethod()
.
Selain itu, framework 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 yang telah diupdate, lihat contoh implementasi keyboard virtual terbaru dalam rilis ini. Untuk mempelajari lebih lanjut cara mengimplementasikan peralihan antar-IME, lihat Membuat Metode Input.
Deklarasi Manifes
Fitur wajib yang bisa dideklarasikan
Nilai-nilai berikut kini didukung di
<uses-feature>
sehingga Anda bisa memastikan bahwa aplikasi hanya diinstal pada perangkat yang
menyediakan fitur yang
dibutuhkan aplikasi Anda.
FEATURE_AUDIO_OUTPUT
FEATURE_CAMERA_CAPABILITY_MANUAL_POST_PROCESSING
FEATURE_CAMERA_CAPABILITY_MANUAL_SENSOR
FEATURE_CAMERA_CAPABILITY_RAW
FEATURE_CAMERA_LEVEL_FULL
FEATURE_GAMEPAD
FEATURE_LIVE_TV
FEATURE_MANAGED_USERS
FEATURE_LEANBACK
FEATURE_OPENGLES_EXTENSION_PACK
FEATURE_SECURELY_REMOVES_USERS
FEATURE_SENSOR_AMBIENT_TEMPERATURE
FEATURE_SENSOR_HEART_RATE_ECG
FEATURE_SENSOR_RELATIVE_HUMIDITY
FEATURE_VERIFIED_BOOT
FEATURE_WEBVIEW
Izin pengguna
Izin berikut sekarang didukung di
<uses-permission>
untuk mendeklarasikan izin yang dibutuhkan 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 hanya sistem yang dapat mengikat ke layanan tersebut.