API Android 5.0

Level API: 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 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 membuat aplikasi untuk Android 5.0, Anda harus mendapatkan terlebih dahulu Android SDK. 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 API versi dengan menambahkan kondisi ke kode yang memeriksa level API sistem sebelum menjalankan API yang tidak didukung oleh minSdkVersion Anda. Untuk mempelajari lebih lanjut tentang mempertahankan kompatibilitas mundur, baca Mendukung Versi Platform Berbeda.

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

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 secara visual 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 untuk 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 dapat mencakup tab yang terbuka di web aplikasi browser, dokumen dalam aplikasi produktivitas, beberapa kecocokan sekaligus di {i>game<i}, atau {i>chat<i} dalam aplikasi pesan. 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 menyetel <aktivitas> atribut documentLaunchMode elemen ke "intoExisting" atau "always" di manifes Anda.

Agar layar terbaru tampak berantakan, Anda dapat menyetel jumlah maksimum tugas dari aplikasi Anda yang dapat muncul di layar tersebut. Caranya, setel atribut <aplikasi> atribut android:maxRecents. Saat ini maksimum yang dapat ditentukan adalah 50 tugas per pengguna (25 untuk perangkat dengan RAM rendah).

Tugas di layar terbaru bisa disetel agar tetap bertahan setelah boot ulang. Untuk mengontrol perilaku persistensi, gunakan android:persistableMode . Anda juga dapat mengubah sifat 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 memiliki telah diperbarui untuk menggabungkan 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 untuk sumber daya 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 WebAudio, WebGL, dan Standar terbuka 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 menangkap layar dan berbagi layar ke aplikasi Anda dengan android.media.projection API yang baru. Fungsi ini berguna, misalnya, jika Anda ingin mengaktifkan berbagi layar di video aplikasi konferensi.

Metode createVirtualDisplay() baru memungkinkan aplikasi Anda menangkap konten layar utama (setelan default ditampilkan) menjadi objek Surface, yang kemudian dapat digunakan aplikasi dikirim 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 untuk ditampilkan di layar kunci yang aman.

Aplikasi Anda dapat mengontrol tingkat detail yang terlihat saat notifikasi yang ditampilkan di layar kunci yang aman. Untuk mengontrol tingkat visibilitas, panggil setVisibility() dan menentukan salah satu nilai berikut:

Jika tingkat visibilitasnya adalah VISIBILITY_PRIVATE, Anda juga dapat memberikan versi notifikasi yang disamarkan konten yang menyembunyikan detail pribadi. Misalnya, aplikasi SMS mungkin menampilkan notifikasi yang menunjukkan "Anda memiliki 3 SMS baru" tetapi menyembunyikan pesan konten dan pengirim. Untuk memberikan notifikasi alternatif ini, buat terlebih dahulu notifikasi penggantian menggunakan Notification.Builder. Kapan Anda membuat objek notifikasi pribadi, lampirkan notifikasi pengganti ke lokasi tersebut melalui Metode setPublicVersion().

Metadata notifikasi

Android 5.0 menggunakan metadata yang terkait dengan notifikasi aplikasi untuk mengurutkan notifikasi dengan 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 atau kurang penting daripada notifikasi biasa. Notifikasi dengan bidang prioritas disetel ke PRIORITY_MAX atau PRIORITY_HIGH 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 aplikasi harus dikelompokkan bersama notifikasi dari orang-orang tertentu, atau memberi peringkat pada notifikasi dari orang-orang tersebut menjadi lebih penting.

Grafik

Dukungan untuk OpenGL ES 3.1

Android 5.0 menambahkan antarmuka Java dan dukungan bawaan untuk OpenGL Spanyol 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 deklarasikan dalam file manifes dengan kode 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 Tersedia ANDROID_extension_pack_es31a ekstensi, aplikasi Anda dapat mengasumsikan semua ekstensi dalam paket ada dan mengaktifkan bahasa shading fitur dengan satu pernyataan #extension.)

Dukungan paket ekstensi:

  • Dukungan shader fragmen yang terjamin untuk buffer penyimpanan shader, gambar, dan atomik (Dukungan shader fragmen 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 dilengkapi dengan 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 android.hardware.camera2 API untuk memfasilitasi pengambilan foto yang lebih halus dan pemrosesan gambar. Anda sekarang dapat secara terprogram mengakses perangkat kamera yang tersedia untuk sistem 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 atau beberapa gambar sekaligus.

Agar diberi tahu saat gambar baru diambil, implementasikan metode Pendengar CameraCaptureSession.CaptureCallback dan menetapkannya dalam permintaan penangkapan Anda. Sekarang, saat sistem menyelesaikan image permintaan pengambilan, CameraCaptureSession.CaptureCallback Anda pemroses menerima panggilan ke onCaptureCompleted(), yang memberi Anda metadata pengambilan gambar dalam CaptureResult.

Class CameraCharacteristics memungkinkan mendeteksi fitur kamera apa yang tersedia pada perangkat. Properti INFO_SUPPORTED_HARDWARE_LEVEL mewakili tingkat fungsi kamera.

  • Semua perangkat mendukung setidaknya INFO_SUPPORTED_HARDWARE_LEVEL_LEGACY level hardware, yang memiliki kemampuan kurang lebih sama dengan atribut Camera 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 mencakup 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, bagian dari pipeline internal belum floating point.)
  • Aplikasi Anda kini dapat menyediakan data audio sebagai ByteBuffer, di format yang sama dengan yang disediakan oleh MediaCodec.
  • WRITE_NON_BLOCKING dapat menyederhanakan {i>buffering<i} 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 aman untuk thread untuk memantau dan mengontrol pemutaran media dari proses UI aplikasi Anda. Saat membuat pengontrol, tentukan MediaSession.Token sehingga aplikasi Anda dapat berinteraksi dengan MediaSession yang diberikan. Dengan menggunakan metode MediaController.TransportControls, Anda dapat mengirimkan perintah seperti play(), stop(), skipToNext(), dan setRating() untuk mengontrol pemutaran media pada sesi tersebut. Dengan {i>controller<i}, Anda juga dapat daftarkan objek MediaController.Callback untuk memproses perubahan metadata dan status pada sesi tersebut.

Selain itu, Anda dapat membuat notifikasi kaya yang memungkinkan kontrol pemutaran dikaitkan dengan sesi media dengan Notification.MediaStyle yang baru .

Penjelajahan media

Android 5.0 memperkenalkan kemampuan bagi aplikasi untuk menjelajahi konten media pustaka aplikasi lain, melalui android.media.browse Compute Engine API. Untuk mengekspos konten media di aplikasi Anda, perluas Class MediaBrowserService. Implementasi Anda atas MediaBrowserService 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. Menentukan komponen nama untuk MediaSession saat Anda membuat Instance MediaBrowser. Menggunakan {i>instance<i} browser tersebut, aplikasi Anda kemudian bisa terhubung ke layanan terkait dan mendapatkan sebuah MediaSession.Token objek untuk memutar konten terekspos melalui layanan tersebut.

Penyimpanan

Pilihan direktori

Android 5.0 memperluas Storage Access Framework agar pengguna dapat memilih seluruh subtree direktori, sehingga memberikan akses baca/tulis pada aplikasi ke semua dokumen yang ada di dalamnya 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 subhierarki 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 menerapkan DocumentsProvider dan ingin untuk mendukung pemilihan subhierarki, terapkan isChildDocument() dan sertakan FLAG_SUPPORTS_IS_CHILD di COLUMN_FLAGS.

Android 5.0 juga memperkenalkan direktori khusus paket baru pada 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 API multijaringan baru yang memungkinkan aplikasi Anda memindai jaringan yang tersedia dengan kemampuan tertentu secara dinamis, dan membangun koneksi dengan mereka. 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:

  1. Buat ConnectivityManager.
  2. Gunakan class NetworkRequest.Builder untuk membuat objek NetworkRequest dan menentukan fitur jaringan dan jenis transport yang diminati aplikasi Anda.
  3. Untuk memindai jaringan yang sesuai, panggil requestNetwork() atau registerNetworkCallback(), dan teruskan objek NetworkRequest dan implementasi ConnectivityManager.NetworkCallback. Gunakan requestNetwork() jika Anda ingin secara aktif beralih ke jaringan yang sesuai setelah terdeteksi; untuk menerima notifikasi untuk jaringan yang dipindai tanpa beralih secara aktif, gunakan registerNetworkCallback() sebagai gantinya.

Ketika sistem mendeteksi jaringan yang sesuai, sistem terhubung ke jaringan dan memanggil 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 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 mulai memindai Bluetooth Perangkat LE, panggil startScan() dan meneruskan daftar filter. Dalam panggilan metode, Anda juga harus menyediakan penerapan ScanCallback untuk melaporkan Iklan Bluetooth LE ditemukan.

Penyempurnaan NFC

Android 5.0 menambahkan penyempurnaan ini untuk memungkinkan lebih luas penggunaan NFC yang 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 menggunakan setPreferredService() untuk menyetel layanan emulasi kartu pilihan yang harus digunakan saat aktivitas tertentu berada di latar depan.

Proyek Volta

Selain fitur baru, Android 5.0 menekankan peningkatan baterai kehidupan Anda. Gunakan API dan alat baru untuk memahami dan mengoptimalkan daya aplikasi Anda pengguna.

Menjadwalkan tugas

Android 5.0 menyediakan JobScheduler baru API yang memungkinkan Anda mengoptimalkan masa pakai baterai dengan menentukan tugas untuk dijalankan sistem secara asinkron nanti atau dalam kondisi tertentu (seperti saat perangkat sedang diisi dayanya). Penjadwalan tugas berguna dalam situasi seperti:

  • Aplikasi memiliki pekerjaan yang sedang-tidak-dihadapi-pengguna yang bisa Anda tangguhkan.
  • Aplikasi ini memiliki pekerjaan yang ingin Anda lakukan saat unit dicolokkan.
  • 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 dienkapsulasi oleh objek JobInfo. Objek ini menetapkan kriteria penjadwalan.

Gunakan class JobInfo.Builder untuk mengonfigurasi cara tugas terjadwal akan berjalan. Anda dapat menjadwalkan tugas untuk dijalankan berdasarkan kondisi, 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 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 (artinya, perangkat telah dicolokkan selama beberapa dari 2 menit dan daya baterai tingkat sehat), sistem akan menjalankan tugas terjadwal apa pun yang siap dijalankan, meskipun tugas batas waktu belum kedaluwarsa.

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 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 mempelajari berbagai opsi untuk menyesuaikan {i>output-<i}nya. Misalnya, untuk mencetak penggunaan baterai statistik untuk paket aplikasi tertentu sejak perangkat terakhir diisi, jalankan ini berikut:

$ 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. Ini informasi ini memudahkan Anda untuk memahami dan mendiagnosis baterai apa pun masalah terkait.

Android di Tempat Kerja dan Pendidikan

Penyediaan terkelola

Android 5.0 menyediakan fungsionalitas baru untuk menjalankan aplikasi di 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 di Intent. Jika berhasil, sistem akan memicu Callback onProfileProvisioningComplete(). Anda kemudian 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 di 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 tersebut, lihat Contoh implementasi BasicManagedProfile dalam rilis ini.

Pemilik perangkat

Android 5.0 memperkenalkan kemampuan untuk men-deploy aplikasi pemilik perangkat. Perangkat pemilik situs adalah jenis spesialis administrator perangkat yang memiliki kemampuan tambahan untuk membuat dan menghapus pengguna sekunder dan untuk mengkonfigurasi pengaturan global pada 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 tidak disediakan status. Transfer data ini 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 penyematan layar di Setelan > Keamanan > Penyematan Layar, lalu pilih tugas yang ingin pin 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 setLockTaskPackages() agar aplikasi 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, selama hal tersebut tidak terjadi membuat tugas baru.
  • Saat pin ke layar dipanggil oleh pemilik perangkat, pengguna akan tetap terkunci 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) di mana 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 PdfRendererBasic contoh.

Sistem

Statistik penggunaan aplikasi

Anda kini dapat mengakses histori 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 terlebih dahulu mendeklarasikan atribut "android.permission.PACKAGE_USAGE_STATS" di manifes Anda. Pengguna juga harus mengaktifkan akses untuk aplikasi ini melalui Setelan > Keamanan > Aplikasi terkait akses penggunaan.

Sistem mengumpulkan data penggunaan per aplikasi, menggabungkan data pada interval harian, mingguan, bulanan, dan tahunan. Durasi maksimum bahwa sistem menyimpan data itu 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
  • Total durasi aplikasi berada di latar depan selama interval waktu tersebut (menurut hari, minggu, bulan, atau tahun)
  • Pengambilan stempel waktu saat komponen (diidentifikasi oleh paket dan nama aktivitas) dipindahkan ke latar depan atau latar belakang pada hari itu
  • Pengambilan stempel waktu saat konfigurasi perangkat berubah (misalnya saat orientasi perangkat berubah karena rotasi)

Pengujian & Fitur

Peningkatan pengujian dan aksesibilitas

Android 5.0 menambahkan dukungan berikut untuk pengujian dan aksesibilitas:

  • getWindowAnimationFrameStats() baru dan getWindowContentFrameStats() 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.
  • Yang baru executeShellCommand() memungkinkan Anda menjalankan perintah shell dari uji instrumentasi. Tujuan mirip dengan menjalankan adb shell dari host terhubung ke perangkat, memungkinkan Anda untuk menggunakan alat berbasis {i>shell<i} seperti dumpsys, am, content, dan pm.
  • Layanan aksesibilitas dan alat pengujian yang menggunakan API aksesibilitas (seperti UiAutomator) sekarang dapat mengambil informasi detail tentang properti jendela pada layar yang dapat berinteraksi dengan pengguna yang mampu melihat. Untuk mengambil daftar AccessibilityWindowInfo objek, panggil metode baru getWindows() .
  • AccessibilityNodeInfo.AccessibilityAction baru memungkinkan Anda menentukan tindakan standar atau kustom yang akan dilakukan AccessibilityNodeInfo. AccessibilityNodeInfo.AccessibilityAction baru menggantikan API terkait tindakan yang sebelumnya ditemukan di AccessibilityNodeInfo.
  • 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 tugas siklus tindakan beralih (biasanya menyentuh ikon Bola dunia di keyboard virtual) melalui semua IME. Perubahan perilaku ini diimplementasikan oleh shouldOfferSwitchingToNextInputMethod() .

Selain itu, kerangka kerja sekarang memeriksa apakah IME berikutnya menyertakan mekanisme peralihan ini sama sekali (dan, oleh karena itu, apakah IME mendukung peralihan ke IME setelahnya). Channel IME dengan mekanisme peralihan tidak akan berpindah ke IME yang tidak memilikinya. Ini perubahan perilaku diimplementasikan oleh 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 tentang cara mengimplementasikan peralihan di antara 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.

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 21 ke atas, izin ini diwajibkan oleh Layanan Daydream, untuk memastikan bahwa hanya sistem yang dapat mengikatnya.