Android 7.0 untuk Developer

Android 7.0 Nougat memperkenalkan berbagai fitur dan kemampuan baru bagi pengguna dan pengembang. Dokumen ini merangkum apa saja yang baru untuk developer.

Pastikan untuk memeriksa Perubahan perilaku Android 7.0 untuk mempelajari area perubahan platform dapat memengaruhi aplikasi Anda.

Untuk mempelajari lebih lanjut tentang fitur konsumen Android 7.0, kunjungi www.android.com.

Dukungan Multi-Jendela

Di Android 7.0, kami memperkenalkan fitur multitasking ke dalam platform — dukungan multi-aplikasi.

Pengguna sekarang bisa membuka dua aplikasi sekaligus di layar.

  • Di ponsel dan tablet menjalankan Android 7.0, pengguna dapat menjalankan dua aplikasi secara berdampingan atau satu sama lain dalam mode layar terpisah. Pengguna dapat mengubah ukuran aplikasi dengan menariknya pemisah di antara mereka.
  • Pada perangkat Android TV, aplikasi dapat menempatkan dirinya sendiri dalam mode picture-in-picture , yang memungkinkan pengguna terus menampilkan konten saat pengguna menjelajah atau berinteraksi dengan aplikasi lain.
Aplikasi yang berjalan di perangkat seluler dalam mode layar terpisah

Gambar 1. Aplikasi yang berjalan dalam mode layar terpisah.

Khususnya di tablet dan perangkat yang berlayar lebih besar lainnya, dukungan multi-aplikasi memberi Anda cara baru untuk melibatkan pengguna. Anda bahkan dapat mengaktifkan fitur tarik lalu lepas aplikasi Anda agar pengguna dapat dengan mudah menarik konten ke atau dari aplikasi Anda — untuk meningkatkan pengalaman pengguna.

Sangat mudah untuk menambahkan dukungan multi-aplikasi ke aplikasi Anda dan mengonfigurasi cara menangani tampilan multi-aplikasi. Misalnya, Anda dapat menetapkan aktivitas dimensi minimum yang diizinkan, mencegah pengguna mengubah ukuran aktivitas di bawah sebesar itu. Anda juga dapat menonaktifkan tampilan multi-aplikasi untuk aplikasi Anda, yang memastikan sistem hanya akan menampilkan aplikasi dalam mode layar penuh.

Untuk informasi lebih lanjut, lihat Dukungan Multi-Aplikasi dokumentasi developer.

Penyempurnaan Notifikasi

Di Android 7.0 kami telah mendesain ulang notifikasi untuk membuatnya lebih mudah dan digunakan dengan lebih cepat. Beberapa perubahan tersebut antara lain:

  • Pembaruan template: Kami memperbarui template notifikasi untuk memberi penekanan baru pada gambar utama dan {i>avatar<i}. Developer akan dapat memanfaatkan template baru dengan penyesuaian kode yang minimal.
  • Penyesuaian gaya pesan: Anda dapat menyesuaikan lebih banyak label antarmuka pengguna yang terkait dengan notifikasi Anda menggunakan Class MessagingStyle. Anda dapat mengonfigurasi pesan, judul percakapan, dan tampilan konten.
  • Paket notifikasi: Sistem dapat mengelompokkan pesan secara bersamaan, misalnya berdasarkan topik pesan, dan menampilkan grupnya. Pengguna dapat mengambil tindakan, seperti Tutup atau Arsipkan, atas tindakan tersebut. Jika Anda sudah mengimplementasikan notifikasi untuk Android Wear, Anda akan terbiasa dengan model ini.
  • Balasan langsung: Untuk aplikasi komunikasi real-time, Sistem Android mendukung balasan beruntun sehingga pengguna dapat merespons dengan cepat SMS atau pesan teks secara langsung di dalam antarmuka pemberitahuan.
  • Tampilan kustom: Dua API baru memungkinkan Anda memanfaatkan sistem dekorasi, seperti header dan tindakan notifikasi, saat menggunakan tampilan di notifikasi.
Perangkat seluler menampilkan notifikasi pesan terpaket
Perangkat seluler menampilkan notifikasi satu pesan
Perangkat seluler menampilkan balasan pesan inline dalam antarmuka notifikasi

Gambar 2. Paket notifikasi dan balasan langsung.

Untuk mempelajari cara menerapkan fitur baru ini, lihat dokumentasi Notifikasi kami.

Kompilasi JIT/AOT yang dipandu profil

Di Android 7.0, kami telah menambahkan kompilator Just in Time (JIT) dengan kode ke ART, yang memungkinkannya terus-menerus meningkatkan kinerja aplikasi Android saat dijalankan. Kompilator JIT melengkapi compiler Ahead of Time (AOT) dan membantu meningkatkan performa runtime, serta ruang penyimpanan, dan mempercepat pembaruan aplikasi dan pembaruan sistem.

Kompilasi yang dipandu profil memungkinkan ART mengelola kompilasi AOT/JIT untuk setiap aplikasi sesuai dengan penggunaan sebenarnya, serta kondisi pada perangkat. Misalnya, ART menyimpan profil metode populer setiap aplikasi dan dapat mengompilasi dan meng-{i>cache<i} metode tersebut untuk kinerja terbaik. Menyisakan bagian lain aplikasi tidak dikompilasi hingga benar-benar digunakan.

Selain meningkatkan performa bagian-bagian penting aplikasi, panduan profil kompilasi membantu mengurangi jejak RAM aplikasi secara keseluruhan, termasuk biner. Fitur ini terutama penting pada perangkat dengan memori minim.

ART mengelola kompilasi yang dipandu profil dengan cara yang meminimalkan dampak terhadap baterai perangkat. Itu melakukan prakompilasi hanya ketika perangkat sedang tidak ada aktivitas dan mengisi daya, menghemat waktu, dan baterai dengan melakukan pekerjaan itu terlebih dahulu.

Jalur Cepat untuk Pasang Aplikasi

Salah satu manfaat paling nyata dari compiler JIT ART adalah kecepatan aplikasi penginstalan dan pembaruan sistem. Bahkan aplikasi besar yang membutuhkan waktu beberapa menit untuk mengoptimalkan dan menginstal di Android 6.0 sekarang dapat menginstal hanya dalam beberapa detik. Update sistem juga lebih cepat, karena tidak ada lagi langkah pengoptimalan.

Istirahatkan Kapan Saja...

Android 6.0 memperkenalkan Istirahatkan, yaitu mode sistem yang menghemat baterai dengan menangguhkan aplikasi Aktivitas CPU dan jaringan saat perangkat sedang tidak ada aktivitas, seperti saat sedang diletakkan di atas meja atau di laci.

Kini di Android 7.0, Istirahatkan mengambil langkah lebih jauh dan menghemat baterai kapan saja di mana saja. Setiap kali layar mati selama jangka waktu tertentu dan perangkat dicabut, Istirahatkan menerapkan subset dari pembatasan CPU dan jaringan yang sudah dikenal untuk aplikasi. Ini berarti pengguna dapat menghemat baterai bahkan saat membawa perangkat mereka di kantong.

Ilustrasi cara Istirahatkan menerapkan pembatasan aktivitas sistem tingkat pertama untuk meningkatkan masa pakai baterai

Gambar 3. Mode Istirahatkan kini berlaku pembatasan untuk meningkatkan masa pakai baterai bahkan saat perangkat sedang tidak bergerak.

Beberapa saat setelah layar dinonaktifkan saat perangkat menggunakan baterai, Istirahatkan membatasi akses jaringan dan menunda tugas dan sinkronisasi. Selama pemeliharaan singkat aplikasi diizinkan mengakses jaringan dan semua layanan yang ditangguhkan dan menjalankan tugas/sinkronisasi. Menyalakan layar atau mencolokkan perangkat akan membawa perangkat keluar dari Istirahatkan.

Saat perangkat tidak bergerak lagi, dengan layar nonaktif dan menggunakan baterai selama tertentu, Istirahatkan akan menerapkan pembatasan CPU dan jaringan penuh pada alarm PowerManager.WakeLock, AlarmManager, dan Pemindaian GPS/Wi-Fi.

Praktik terbaik untuk menyesuaikan aplikasi Anda dengan Istirahatkan adalah sama, baik apakah perangkat bergerak atau tidak, jadi jika Anda sudah mengupdate aplikasi dengan lancar menangani Istirahatkan, Anda sudah siap. Jika tidak, mulailah beradaptasi aplikasi Anda ke Istirahatkan sekarang.

Project Svelte: Optimisasi Latar Belakang

Project Svelte merupakan upaya berkelanjutan untuk meminimalkan penggunaan RAM oleh sistem dan aplikasi di berbagai perangkat Android dalam ekosistem. Di Android 7.0, Project Svelte berfokus pada pengoptimalan cara aplikasi berjalan di latar belakang.

Proses latar belakang merupakan bagian terpenting dari sebagian besar aplikasi. Jika ditangani dengan benar, akan dapat membuat pengalaman pengguna Anda luar biasa — segera, cepat, dan kontekstual. Jika tidak ditangani dengan benar, pemrosesan latar belakang bisa menghabiskan RAM (dan baterai) dan memengaruhi performa sistem untuk aplikasi lain.

Sejak Android 5.0, JobScheduler telah menjadi cara yang disukai untuk melakukan pekerjaan latar belakang dengan cara yang bagus ketersediaan tinggi dan latensi yang lebih rendah bagi pengguna. Aplikasi dapat menjadwalkan tugas sekaligus memungkinkan sistem melakukan pengoptimalan berdasarkan kondisi memori, daya, dan konektivitas. JobScheduler menawarkan kontrol dan kesederhanaan, dan kita ingin semua aplikasi menggunakannya.

Pilihan bagus lainnya adalah GCMNetworkManager, bagian dari Layanan Google Play, yang menawarkan penjadwalan tugas serupa dengan kompatibilitas di seluruh versi lama Android.

Kami terus memperluas JobScheduler dan GCMNetworkManager untuk memenuhi lebih banyak kasus penggunaan Anda — misalnya, di Android 7.0, Anda kini dapat menjadwalkan latar belakang bekerja berdasarkan perubahan dalam Penyedia Konten. Pada saat yang sama, kami mulai menghentikan penggunaan beberapa pola lama yang dapat menurunkan kinerja sistem, terutama pada perangkat dengan memori rendah.

Di Android 7.0 kami menghapus tiga siaran implisit yang biasa digunakan — CONNECTIVITY_ACTION, ACTION_NEW_PICTURE, dan ACTION_NEW_VIDEO — karena keduanya dapat mengaktifkan proses latar belakang beberapa aplikasi sekaligus dan menegakkan memori serta baterai. Jika aplikasi Anda menerimanya, manfaatkan Android 7.0 untuk bermigrasi ke JobScheduler dan API terkait sebagai gantinya.

Lihat Latar Belakang Dokumentasi pengoptimalan untuk mengetahui detailnya.

SurfaceView

Android 7.0 menghadirkan gerakan sinkron ke SurfaceView yang memberikan performa baterai lebih baik daripada TextureView dalam kasus tertentu: Saat merender video atau Konten 3D, aplikasi dengan scroll dan posisi video animasi menggunakan lebih sedikit daya dengan SurfaceView dibandingkan dengan TextureView.

Class SurfaceView memungkinkan pengomposisian yang lebih hemat baterai di layar, karena disusun dalam perangkat keras khusus, terpisah dari aplikasi konten jendela. Akibatnya, bentuk pemrosesan perantara menjadi lebih sedikit salinan daripada TextureView.

Posisi konten objek SurfaceView kini diperbarui secara sinkron dengan konten aplikasi yang memuatnya. Salah satu hasil dari perubahan ini adalah bahwa terjemahan atau skala video yang diputar dalam SurfaceView tidak lagi menghasilkan bilah hitam di samping tampilan saat bergerak.

Mulai Android 7.0, sebaiknya Anda menghemat daya dengan menggunakan SurfaceView, bukan TextureView.

Penghemat Data

Penghemat Data di Setelan

Gambar 4. Penghemat Data di Setelan.

Selama penggunaan perangkat seluler, biaya paket data seluler biasanya melebihi harga perangkat itu sendiri. Bagi banyak pengguna, data seluler adalah sumber daya mahal yang ingin mereka hemat.

Android 7.0 memperkenalkan mode Penghemat Data, layanan sistem baru yang membantu mengurangi penggunaan data seluler oleh aplikasi, baik saat roaming, menjelang akhir siklus penagihan, atau paket data prabayar kecil. Penghemat Data memberi pengguna kontrol atas cara aplikasi menggunakan data seluler dan memungkinkan developer memberikan layanan yang lebih efisien saat Data Penghemat aktif.

Saat pengguna mengaktifkan Penghemat Data di Setelan dan perangkat sedang di jaringan berkuota, sistem akan memblokir penggunaan data latar belakang dan memberi sinyal ke aplikasi untuk menggunakan seminimal mungkin data di latar depan — misalnya dengan membatasi kecepatan bit untuk streaming, mengurangi kualitas gambar, menunda pra-cache optimis, dan seterusnya. Pengguna dapat mengizinkan aplikasi tertentu untuk mengizinkan data berkuota latar belakang penggunaan meskipun Penghemat Data diaktifkan.

Android 7.0 memperluas ConnectivityManager untuk menyediakan cara untuk mengambil preferensi Penghemat Data pengguna dan pantau perubahan preferensi. Semua aplikasi harus memeriksa apakah pengguna telah mengaktifkan Data Menghemat dan berusaha membatasi penggunaan data latar depan dan latar belakang.

Vulkan API

Android 7.0 mengintegrasikan VulkanTM, API rendering 3D baru, ke dalam platform. Suka OpenGLTM ES, Vulkan adalah standar terbuka untuk grafis dan rendering 3D yang dikelola oleh Khronos Group.

Vulkan dirancang dari awal untuk meminimalkan overhead CPU di driver, dan memungkinkan aplikasi Anda untuk mengontrol operasi GPU secara lebih langsung. Vulkan memungkinkan paralelisasi yang lebih baik dengan mengizinkan beberapa thread untuk pekerjaan seperti konstruksi {i> buffer<i} perintah sekaligus.

Library dan alat pengembangan Vulkan telah dimasukkan ke dalam SDK Android 7.0. Mereka termasuk:

  • Header
  • Layer validasi (pustaka debug)
  • SPIR-V shader compiler
  • Pustaka kompilasi shader waktu proses SPIR-V

Vulkan hanya tersedia untuk aplikasi pada perangkat dengan hardware yang mendukung Vulkan, seperti Nexus 5X, Nexus 6P, dan Nexus Player. Kami bekerja sama dengan partner untuk menghadirkan Vulkan ke lebih banyak perangkat sesegera mungkin.

Untuk informasi selengkapnya, lihat dokumentasi API.

Quick Settings Tile API

Petak Setelan Cepat dalam bayangan notifikasi

Gambar 5. Petak Setelan Cepat di bayangan notifikasi.

{i>Quick Settings<i} adalah cara populer dan sederhana untuk mengekspos pengaturan dan tindakan utama, langsung dari menu notifikasi. Di Android 7.0, kami telah memperluas cakupan Setelan Cepat untuk membuatnya lebih berguna dan praktis.

Kami telah menambahkan lebih banyak ruang untuk kartu Setelan Cepat tambahan, yang dapat akses di seluruh area tampilan bernomor halaman dengan menggeser ke kiri atau kanan. Kami juga sudah diberi kontrol kepada pengguna untuk menentukan letak dan kotak Setelan Cepat ditampilkan — pengguna dapat menambahkan atau memindahkan ubin hanya dengan menyeret dan melepasnya.

Untuk developer, Android 7.0 juga menambahkan API baru yang memungkinkan Anda menentukan Kartu Setelan Cepat untuk memudahkan pengguna mengakses kontrol dan tindakan tombol di aplikasi Anda.

Kotak Setelan Cepat dicadangkan untuk kontrol atau tindakan yang mendesak atau sering digunakan, dan tidak boleh digunakan sebagai jalan pintas ke meluncurkan aplikasi.

Setelah menentukan kartu, Anda dapat menampilkannya kepada pengguna, yang dapat menambahkan mereka ke Setelan Cepat hanya dengan menyeret dan melepas.

Untuk informasi tentang cara membuat kartu aplikasi, lihat dokumentasi referensi untuk Tile.

Pemblokiran Nomor

Android 7.0 sekarang mendukung pemblokiran nomor di platform dan menyediakan API framework agar penyedia layanan dapat mengelola daftar nomor yang diblokir. Tujuan aplikasi SMS default, aplikasi telepon default, dan aplikasi operator dapat membaca dari dan menulis ke daftar nomor yang diblokir. Daftar ini tidak dapat diakses oleh aplikasi lain.

Dengan membuat pemblokiran nomor sebagai fitur standar pada platformnya, Android menyediakan cara yang konsisten bagi aplikasi untuk mendukung pemblokiran nomor di berbagai perangkat. Manfaat lain yang bisa diperoleh aplikasi antara lain:

  • Nomor yang diblokir untuk panggilan telepon juga akan diblokir untuk SMS
  • Nomor yang diblokir tetap tersimpan saat reset dan perangkat melalui opsi Pencadangan & Pulihkan fitur
  • Beberapa aplikasi sekaligus bisa menggunakan daftar nomor blokir yang sama

Selain itu, integrasi aplikasi operator melalui Android berarti bahwa operator dapat membaca daftar nomor yang diblokir di perangkat dan melakukan pemblokiran di sisi layanan bagi pengguna untuk menghentikan panggilan dan pesan yang tidak diinginkan agar tidak menjangkau pengguna melalui media apa pun, seperti titik akhir VOIP atau penerusan telepon.

Untuk informasi selengkapnya, lihat dokumentasi referensi untuk BlockedNumberContract.

Penyaringan Panggilan Telepon

Android 7.0 memungkinkan aplikasi telepon default untuk menyaring panggilan masuk. Ponsel aplikasi melakukannya dengan menerapkan CallScreeningService yang baru, yang memungkinkan aplikasi ponsel melakukan sejumlah tindakan berdasarkan Call.Details panggilan masuk, seperti:

  • Menolak panggilan masuk
  • Tidak mengizinkan panggilan telepon tersebut disimpan ke log panggilan
  • Tidak menampilkan notifikasi untuk panggilan telepon tersebut kepada pengguna

Untuk informasi selengkapnya, lihat dokumentasi referensi untuk CallScreeningService.

Dukungan Multilokal, Lebih Banyak Bahasa yang Didukung

Android 7.0 kini memungkinkan pengguna memilih beberapa lokalitas di Setelan, untuk mendukung kasus penggunaan dua bahasa dengan lebih baik. Aplikasi dapat menggunakan API baru untuk mendapatkan lokalitas pilihan pengguna dan kemudian menawarkan untuk pengguna multi-lokal — seperti menampilkan hasil penelusuran di beberapa bahasa dan tidak menawarkan untuk menerjemahkan laman web dalam bahasa sudah diketahui pengguna.

Bersama dengan dukungan multilokal, Android 7.0 juga memperluas ragam bahasa yang tersedia untuk pengguna. Produk ini menawarkan lebih dari 25 varian masing-masing untuk model bahasa seperti Inggris, Spanyol, Prancis, dan Arab. Ini juga menambahkan mendukung lebih dari 100 bahasa baru.

Aplikasi bisa mendapatkan daftar lokalitas yang ditetapkan oleh pengguna dengan memanggil LocaleList.GetDefault(). Untuk mendukung peningkatan jumlah lokal, Android 7.0 telah mengubah cara menangani resource. Pastikan Anda menguji dan memverifikasi bahwa aplikasi bekerja seperti yang diharapkan dengan logika resolusi resource baru.

Untuk mempelajari tentang perilaku baru resolusi resolusi dan praktik terbaik yang sebaiknya mengikuti, lihat Dukungan Multibahasa.

Emoji Baru

Android 7.0 memperkenalkan emoji tambahan dan fitur terkait emoji termasuk emoji warna kulit dan dukungan untuk variasi pemilih. Jika aplikasi Anda mendukung emoji, ikuti panduan di bawah ini untuk memanfaatkan fitur terkait emoji ini.

  • Periksa apakah perangkat berisi emoji sebelum memasukkannya. Untuk memeriksa emoji mana yang ada di font sistem, gunakan metode hasGlyph(String).
  • Pastikan emoji mendukung pemilih variasi. Pemilih variasi memungkinkan Anda untuk menampilkan emoji tertentu berwarna atau hitam putih. Pada perangkat seluler, aplikasi akan menghadirkan emoji berwarna daripada hitam-putih. Namun, jika aplikasi Anda menampilkan emoji sebaris dengan teks, maka harus menggunakan variasi hitam-putih. Untuk menentukan apakah sebuah emoji memiliki variasi, gunakan pemilih variasi. Untuk daftar lengkap dari karakter dengan variasi, tinjau bagian urutan variasi emoji pada Dokumentasi Unicode tentang variasi.
  • Pastikan emoji mendukung warna kulit. Android 7.0 memungkinkan pengguna untuk memodifikasi warna kulit emoji yang dirender sesuai keinginan. Aplikasi {i>keyboard<i} harus memberikan visualisasi indikasi untuk emoji yang memiliki beberapa warna kulit dan harus memungkinkan pengguna memilih warna kulit yang mereka sukai. Untuk menentukan emoji sistem mana yang digunakan pengubah warna kulit, gunakan hasGlyph(String) . Anda dapat menentukan emoji mana yang menggunakan warna kulit dengan membaca Dokumentasi Unicode.

ICU4J API di Android

Android 7.0 kini menawarkan subset ICU4J API dalam framework Android di bawah paket android.icu. Migrasi mudah, dan sebagian besar memerlukan hanya mengubah dari namespace com.java.icu menjadi android.icu. Jika Anda sudah menggunakan paket ICU4J dalam aplikasi, beralih ke android.icu API yang disediakan di Android bisa menghasilkan penghematan besar dalam ukuran APK.

Untuk mempelajari Android ICU4J API lebih lanjut, lihat Dukungan ICU4J.

WebView

Chrome + WebView, Bersama-sama

Mulai Chrome versi 51 di Android 7.0 dan yang lebih baru, APK Chrome di perangkat Anda digunakan untuk menyediakan dan merender Android System WebView. Pendekatan ini meningkatkan ingatan pada perangkat itu sendiri dan juga mengurangi {i> bandwidth<i} yang dibutuhkan untuk menjaga WebView diperbarui (karena APK WebView mandiri tidak akan diupdate lagi selama Chrome tetap diaktifkan).

Anda dapat memilih penyedia WebView dengan mengaktifkan Opsi Developer dan memilih penerapan WebView. Anda dapat menggunakan model Versi Chrome (Dev, Beta, atau Stabil) yang diinstal di perangkat Anda atau APK Webview mandiri untuk bertindak sebagai implementasi WebView.

Multiproses

Mulai Chrome versi 51 di Android 7.0, WebView akan menjalankan konten web dalam proses sandbox terpisah saat opsi developer "Multiprocess WebView" diaktifkan.

Kami sedang mencari masukan tentang kompatibilitas dan performa runtime di N sebelum mengaktifkan WebView multiproses di Android versi mendatang. Di sini versi baru, regresi waktu startup, total penggunaan memori, dan software performa rendering yang diharapkan.

Jika Anda menemukan masalah yang tidak terduga dalam mode multiproses, kami ingin mereka. Hubungi tim WebView di pelacak bug Chromium.

JavaScript berjalan sebelum laman dimuat

Mulai dengan aplikasi yang menargetkan Android 7.0, konteks JavaScript akan direset saat halaman baru dimuat. Saat ini, konteksnya dibawa untuk halaman pertama yang dimuat di instance WebView baru.

Developer yang ingin menginjeksikan JavaScript ke WebView harus mengeksekusi skrip setelah halaman mulai dimuat.

Geolokasi pada sumber yang tidak aman

Mulai aplikasi yang menargetkan Android 7.0, API geolokasi hanya akan diizinkan di origin yang aman (melalui HTTPS). Kebijakan ini dirancang untuk melindungi informasi pribadi pengguna saat mereka menggunakan koneksi yang tidak aman.

Pengujian dengan WebView Beta

WebView diupdate secara rutin, jadi kami sarankan agar Anda menguji kompatibilitas dengan aplikasi Anda secara rutin menggunakan saluran beta WebView. Untuk memulai pengujian versi pra-rilis WebView pada Android 7.0, unduh dan instal Chrome Dev atau Chrome Beta, lalu pilih sebagai implementasi WebView di bagian opsi developer sebagaimana dijelaskan di atas. Laporkan masalah melalui Chromium pelacak bug agar kami dapat memperbaikinya sebelum versi baru WebView dirilis.

API OpenGLTM ES 3.2

Android 7.0 menambahkan antarmuka kerangka kerja dan dukungan platform untuk OpenGL ES 3.2, termasuk:

  • Semua ekstensi dari Paket Ekstensi Android (AEP) kecuali untuk EXT_texture_sRGB_decode.
  • Floating-point framebuffer untuk HDR dan shading yang ditangguhkan.
  • Panggilan draw BaseVertex agar batching dan streaming jadi lebih baik.
  • Kontrol akses buffer yang tangguh untuk mengurangi overhead WebGL.

API framework untuk OpenGL ES 3.2 di Android 7.0 dilengkapi dengan Class GLES32. Saat menggunakan OpenGL ES 3.2, pastikan untuk mendeklarasikan persyaratan dalam file manifes Anda, menggunakan tag <uses-feature> dan atribut android:glEsVersion.

Untuk informasi tentang penggunaan OpenGL ES, termasuk cara memeriksa versi OpenGL ES yang didukung saat runtime, lihat panduan OpenGL ES API.

Perekaman Android TV

Android 7.0 menambahkan kemampuan untuk merekam dan memutar konten dari input Android TV melalui API perekaman baru. Membangun di atas pergeseran waktu yang sudah ada API, layanan input TV bisa mengontrol data saluran apa yang dapat direkam, sesi yang direkam disimpan, dan mengelola interaksi pengguna dengan konten yang direkam.

Untuk informasi selengkapnya, lihat Android TV Recording API.

Android for Work

Android for Work menambahkan banyak fitur dan API baru untuk perangkat yang menjalankan Android 7.0. Berikut beberapa fitur utamanya. Untuk mengetahui daftar lengkap fiturnya, lihat Fitur Android Enterprise daftar.

Pertanyaan keamanan profil kerja

Pemilik profil yang menargetkan N SDK dapat menentukan pertanyaan keamanan terpisah untuk aplikasi yang berjalan di profil kerja. Tantangan kerja ditampilkan ketika pengguna mencoba untuk membuka aplikasi kerja apa pun. Jawaban yang benar untuk tantangan keamanan akan membuka profil kerja dan mendekripsinya jika diperlukan. Bagi pemilik profil, ACTION_SET_NEW_PASSWORD meminta pengguna untuk menyetel tugas tantangan, dan ACTION_SET_NEW_PARENT_PROFILE_PASSWORD prompt pengguna untuk mengatur penguncian perangkat.

Pemilik profil dapat menetapkan kebijakan kode sandi yang berbeda untuk tantangan kerja (seperti berapa lama PIN diperlukan, atau apakah sidik jari dapat digunakan untuk membuka profil) menggunakan setPasswordQuality(), setPasswordMinimumLength() dan metode terkait. Profil pemilik juga dapat menyetel kunci perangkat menggunakan DevicePolicyManager instance yang ditampilkan oleh metode getParentProfileInstance() baru. Selain itu, pemilik profil dapat menyesuaikan layar kredensial untuk tantangan kerja menggunakan setOrganizationColor() baru dan Metode setOrganizationName().

Nonaktifkan profil kerja

Pada perangkat dengan profil kerja, pengguna bisa beralih mode kerja. Saat mode kerja pengguna terkelola dinonaktifkan untuk sementara, yang menonaktifkan profil kerja aplikasi, sinkronisasi latar belakang, dan notifikasi. Ini termasuk pemilik profil aplikasi. Jika mode kerja dinonaktifkan, sistem akan menampilkan status persisten untuk mengingatkan pengguna bahwa mereka tidak dapat meluncurkan aplikasi kerja. Peluncur menunjukkan bahwa aplikasi kerja dan widget tidak dapat diakses.

Always-On VPN

Pemilik perangkat dan pemilik profil dapat memastikan bahwa aplikasi kerja selalu terhubung melalui VPN tertentu. Sistem akan otomatis memulai VPN itu setelah booting perangkat.

Metode DevicePolicyManager baru adalah setAlwaysOnVpnPackage() dan getAlwaysOnVpnPackage().

Karena layanan VPN dapat dibatasi langsung oleh sistem tanpa aplikasi komunikasi, klien VPN perlu menangani titik entri baru untuk VPN yang Selalu aktif. Sebagai sebelumnya, layanan ditunjukkan ke sistem oleh filter intent yang sesuai tindakan android.net.VpnService.

Pengguna juga dapat secara manual menyetel klien VPN Selalu aktif yang menerapkan VPNService metode menggunakan Setelan>Lainnya>Vpn. Opsi untuk mengaktifkan VPN Selalu aktif dari Setelan hanya tersedia jika klien VPN menargetkan API level 24.

Penyediaan yang disesuaikan

Aplikasi dapat menyesuaikan penyediaan pemilik profil dan pemilik perangkat mengalir dengan warna dan logo perusahaan. DevicePolicyManager.EXTRA_PROVISIONING_MAIN_COLOR menyesuaikan warna alur. DevicePolicyManager.EXTRA_PROVISIONING_LOGO_URI menyesuaikan alur dengan logo perusahaan.

Penyempurnaan Aksesibilitas

Android 7.0 sekarang menawarkan Vision Settings langsung di layar Sambutan untuk pengaturan perangkat. Hal ini memudahkan pengguna untuk menemukan dan mengonfigurasi fitur aksesibilitas di perangkat mereka, termasuk gerakan pembesaran, {i>font<i} ukuran layar, ukuran layar, dan TalkBack.

Dengan fitur aksesibilitas yang penempatannya semakin jelas, pengguna Anda cenderung mencoba aplikasi Anda dengan mengaktifkan setelan tersebut. Pastikan Anda menguji aplikasi lebih awal dengan mengaktifkan setelan ini. Anda dapat mengaktifkannya dari Setelan > Aksesibilitas.

Di Android 7.0, layanan aksesibilitas kini juga dapat membantu pengguna gangguan motorik gangguan saat menyentuh layar. API baru memungkinkan membangun layanan dengan fitur seperti pelacakan wajah, pelacakan mata, pemindaian titik, dan sebagainya, untuk memenuhi kebutuhan para pengguna tersebut.

Untuk informasi selengkapnya, lihat dokumentasi referensi untuk GestureDescription.

Direct Boot

Direct Boot memperbaiki waktu startup perangkat dan memungkinkan aplikasi memiliki fungsi terbatas bahkan setelah reboot tidak terduga. Misalnya, jika perangkat terenkripsi dimulai ulang saat pengguna sedang tidur, alarm terdaftar, pesan dan panggilan masuk sekarang dapat terus memberi tahu pengguna seperti biasa. Ini juga berarti layanan aksesibilitas juga dapat segera tersedia setelah {i>restart<i}.

Direct Boot memanfaatkan enkripsi berbasis file di Android 7.0 untuk memungkinkan kebijakan enkripsi terperinci bagi data sistem dan aplikasi. Sistem menggunakan penyimpanan yang dienkripsi dengan perangkat untuk data sistem terpilih dan secara eksplisit data aplikasi yang terdaftar. Secara default, penyimpanan yang dienkripsi dengan kredensial digunakan untuk semua data sistem lainnya, data pengguna, aplikasi, dan data aplikasi.

Saat {i>booting<i}, sistem dimulai dalam mode terbatas dengan akses ke data yang dienkripsi dengan perangkat saja, dan tanpa akses umum ke aplikasi atau data. Jika Anda memiliki komponen yang ingin dijalankan dalam mode ini, Anda dapat mendaftarkan mereka dengan mengatur penanda dalam manifes. Setelah {i>restart<i}, sistem akan aktif komponen terdaftar dengan menyiarkan LOCKED_BOOT_COMPLETED intent. Sistem memastikan data aplikasi yang dienkripsi dengan perangkat tersedia sebelum membukanya. Semua data lainnya tidak tersedia sampai Pengguna mengonfirmasi pengunciannya kredensial layar untuk mendekripsinya.

Untuk mengetahui informasi selengkapnya, lihat Direct Boot.

Pengesahan Kunci

Android 7.0 memperkenalkan pengesahan kunci, alat keamanan baru yang membantu pastikan bahwa pasangan kunci yang disimpan dalam perangkat keras yang didukung keystore melindungi informasi sensitif yang diperlukan aplikasi Anda dengan benar pengguna. Dengan menggunakan alat ini, Anda mendapatkan keyakinan tambahan bahwa aplikasi Anda berinteraksi dengan kunci yang berada di hardware aman, meskipun perangkat menjalankan aplikasi Anda di-root. Jika Anda menggunakan kunci dari keystore yang didukung hardware di aplikasi, Anda harus menggunakan alat ini, terutama jika Anda menggunakan tombol untuk memverifikasi informasi sensitif di dalam aplikasi.

Pengesahan kunci memungkinkan Anda untuk memverifikasi bahwa pasangan kunci RSA atau EC telah yang dibuat dan disimpan di keystore yang didukung perangkat keras dari perangkat Trusted Execution Environment (TEE). Alat ini juga memungkinkan Anda menggunakan di luar perangkat, seperti server {i>back-end <i}aplikasi Anda, untuk menentukan dan memverifikasi penggunaan dan validitas pasangan kunci. Fitur-fitur ini menyediakan tingkat keamanan tambahan yang melindungi pasangan kunci, bahkan jika seseorang me-root perangkat atau menyusupi keamanan platform Android yang berjalan di perangkat.

Catatan: Hanya sedikit perangkat yang menjalankan Android 7.0 mendukung pengesahan kunci tingkat hardware; semua perangkat lain yang menjalankan Android 7.0 menggunakan pengesahan kunci tingkat perangkat lunak sebagai gantinya. Sebelum memverifikasi properti kunci yang didukung perangkat keras di perangkat dalam lingkungan tingkat produksi, harus memastikan bahwa perangkat mendukung pengesahan kunci level perangkat keras. Kepada melakukannya, Anda harus memeriksa bahwa rantai sertifikat pengesahan berisi sebuah {i>root <i} yang ditandatangani oleh kunci {i>root <i}pengesahan Google dan bahwa Elemen attestationSecurityLevel dalam kunci deskripsi data disetel ke keamanan TrustedEnvironment level organisasi.

Untuk informasi selengkapnya, lihat Pengesahan Kunci dokumentasi developer.

Network Security Config

Di Android 7.0, aplikasi bisa menyesuaikan perilaku amannya (HTTPS, TLS) koneksi dengan aman, tanpa modifikasi kode, dengan menggunakan Konfigurasi Keamanan Jaringan, bukan menggunakan metode konvensional API terprogram yang rentan error (misalnya, X509TrustManager).

Fitur yang didukung:

  • Trust anchor kustom. Memungkinkan aplikasi menyesuaikan Certificate Authority (CA) dipercaya karena koneksi amannya. Sebagai misalnya, mempercayai sertifikat tertentu yang ditandatangani sendiri atau serangkaian CA publik yang dibatasi.
  • Penggantian khusus debug. Memungkinkan developer aplikasi men-debug dengan aman koneksi aman aplikasi mereka tanpa menambah risiko terhadap saat ini.
  • Memilih tidak menggunakan traffic cleartext. Memungkinkan aplikasi melindungi dirinya sendiri dari penggunaan lalu lintas {i>cleartext<i} yang tidak disengaja.
  • Penyematan sertifikat. Fitur lanjutan yang memungkinkan sebuah aplikasi membatasi kunci server mana yang dipercaya untuk koneksi aman.

Untuk mengetahui informasi selengkapnya, lihat Konfigurasi keamanan jaringan.

Otoritas Sertifikat Tepercaya Default

Secara default, aplikasi yang menargetkan Android 7.0 hanya memercayai sertifikat yang disediakan sistem dan tidak lagi memercayai Certificate Authority (CA) yang ditambahkan pengguna. Aplikasi yang menargetkan Android 7.0 (API level 24) yang ingin memercayai CA yang ditambahkan pengguna harus menggunakan Konfigurasi keamanan jaringan untuk menentukan bagaimana CA pengguna harus dipercaya.

APK Signature Scheme v2

Android 7.0 memperkenalkan APK Signature Scheme v2, sebuah skema penandatanganan aplikasi yang baru menawarkan waktu penginstalan aplikasi yang lebih cepat dan perlindungan yang lebih baik terhadap pada file APK. Secara default, Android Studio 2.2 dan Android Plugin untuk Gradle 2.2 menandatangani aplikasi Anda menggunakan APK Signature Scheme v2 dan skema penandatanganan tradisional, yang menggunakan penandatanganan JAR.

Meskipun kami menyarankan untuk menerapkan APK Signature Scheme v2 ke aplikasi Anda, skema tidak wajib. Jika aplikasi Anda tidak dibangun dengan benar saat menggunakan APK Signature Scheme v2, Anda dapat menonaktifkan skema baru. Proses penonaktifan menyebabkan Android Studio 2.2 dan Plugin Android untuk Gradle 2.2 menandatangani aplikasi hanya dengan menggunakan skema penandatanganan tradisional. Untuk menandatangani hanya dengan skema tradisional, buka file build.gradle level modul, lalu tambahkan baris v2SigningEnabled false ke penandatanganan rilis Anda konfigurasi:

  android {
    ...
    defaultConfig { ... }
    signingConfigs {
      release {
        storeFile file("myreleasekey.keystore")
        storePassword "password"
        keyAlias "MyReleaseKey"
        keyPassword "password"
        v2SigningEnabled false
      }
    }
  }

Perhatian: Jika Anda menandatangani aplikasi menggunakan APK Signature Scheme v2 dan buat perubahan lebih lanjut pada aplikasi, tanda tangan aplikasi tidak valid. Oleh karena itu, gunakan alat seperti zipalign sebelum menandatangani aplikasi Anda menggunakan APK Signature Scheme v2, bukan setelahnya.

Untuk informasi selengkapnya, baca dokumen Android Studio yang menjelaskan cara menandatangani aplikasi di Android Studio dan cara mengonfigurasi file build untuk menandatangani aplikasi menggunakan Plugin Android untuk Gradle.

Scoped Directory Access

Di Android 7.0, aplikasi bisa menggunakan API baru untuk meminta akses ke API eksternal penyimpanan, termasuk direktori pada media portabel seperti SD kartu. API baru ini sangat menyederhanakan cara aplikasi Anda mengakses direktori penyimpanan eksternal, seperti direktori Pictures. Aplikasi seperti aplikasi foto bisa menggunakan API ini daripada menggunakannya READ_EXTERNAL_STORAGE, yang memberikan akses ke semua penyimpanan direktori, atau {i>Storage Access Framework<i}, yang membuat pengguna menavigasi pada direktori tersebut.

Selain itu, API baru ini menyederhanakan langkah-langkah yang diambil pengguna untuk memberikan akses penyimpanan ke aplikasi Anda. Saat Anda menggunakan API baru, sistem akan menggunakan UI izin akses yang secara jelas merinci direktori mana aplikasi tersebut akses.

Untuk informasi selengkapnya, lihat Cakupan Dokumentasi Developer.

Bantuan Pintasan Keyboard

Di Android 7.0, pengguna dapat menekan Meta + / untuk memicu Layar Pintasan Keyboard yang menampilkan semua pintasan yang tersedia keduanya dari sistem dan dari aplikasi yang difokuskan. Sistem mengambil data ini pintasan secara otomatis dari menu aplikasi jika ada pintasan. Anda dapat juga menyediakan daftar pintasan Anda sendiri yang sudah disesuaikan untuk layar. Anda dapat melakukan ini dengan mengganti metode onProvideKeyboardShortcuts().

Catatan: Kunci Meta tidak ada di semua keyboard: di keyboard Macintosh, ini adalah tombol Command, di keyboard Windows, ini adalah tombol Windows, dan di Pixel C dan keyboard ChromeOS, ini adalah tombol Penelusuran.

Untuk memicu Bantuan Pintasan Keyboard dari mana saja di aplikasi Anda, panggil requestShowKeyboardShortcuts() dari aktivitas yang relevan.

Custom Pointer API

Android 7.0 memperkenalkan Custom Pointer API, yang memungkinkan Anda menyesuaikan tampilan, visibilitas, dan perilaku pointer. Kemampuan ini sangat berguna ketika pengguna menggunakan {i>mouse<i} atau touchpad untuk berinteraksi dengan Objek UI. Pointer default menggunakan ikon standar. API ini juga mencakup fungsionalitas lanjutan seperti mengubah tampilan ikon pointer berdasarkan pada gerakan mouse atau touchpad tertentu.

Untuk menyetel ikon pointer, ganti onResolvePointerIcon() dari class View. Metode ini menggunakan PointerIcon untuk menggambar ikon yang sesuai dengan peristiwa gerakan tertentu.

Sustained Performance API

Kinerja dapat berfluktuasi secara dramatis untuk aplikasi yang berjalan lama, karena menekan mesin sistem di chip saat komponen perangkat mencapai batas suhu standar. Fluktuasi ini menampilkan target bergerak untuk aplikasi developer yang membuat aplikasi berperforma tinggi dan berjalan lama.

Untuk mengatasi keterbatasan ini, Android 7.0 menyertakan dukungan untuk mode performa berkelanjutan, yang memungkinkan OEM memberikan petunjuk tentang kemampuan kinerja perangkat untuk aplikasi yang berjalan lama. Developer aplikasi petunjuk ini bisa digunakan untuk menyesuaikan aplikasi agar tingkat kinerja perangkat yang konsisten dalam jangka waktu yang lama.

Pengembang aplikasi dapat mencoba API baru ini di Android 7.0 pada Khusus perangkat Nexus 6P. Untuk menggunakan fitur ini, setel flag periode performa berkelanjutan untuk jendela yang ingin Anda jalankan dalam mode performa berkelanjutan. Tetapkan penanda ini menggunakan Metode Window.setSustainedPerformanceMode(). Sistem secara otomatis akan menonaktifkan mode ini saat jendela tidak lagi menjadi fokus.

Dukungan VR

Android 7.0 menambahkan dukungan platform dan pengoptimalan untuk Mode VR baru yang memungkinkan developer membuat pengalaman VR seluler berkualitas tinggi bagi pengguna. Ada sejumlah performa peningkatan kualitas, termasuk akses ke inti CPU yang eksklusif untuk aplikasi VR. Di dalam aplikasi, Anda dapat memanfaatkan pelacakan kepala yang cerdas, dan notifikasi stereo yang berfungsi untuk VR. Yang terpenting, Android 7.0 menyediakan grafis latensi sangat rendah. Untuk informasi selengkapnya tentang membangun aplikasi VR untuk Android 7.0, lihat Google VR SDK untuk Android.

Di Android 7.0, developer layanan cetak kini dapat menampilkan informasi tambahan tentang masing-masing {i>printer<i} dan pekerjaan cetak.

Saat mencantumkan printer satu per satu, layanan cetak kini dapat menyetel per printer ikon dalam dua cara:

Selain itu, Anda dapat menyediakan aktivitas per printer untuk menampilkan informasi tertentu dengan memanggil setInfoIntent().

Anda dapat menunjukkan progres dan status tugas pencetakan dalam tugas pencetakan notifikasi dengan memanggil setProgress() dan setStatus().

API Metrik Frame

Frame Metrics API memungkinkan aplikasi memantau rendering UI-nya tingkat tinggi. API tersebut menyediakan kemampuan ini dengan mengekspos Pub/Sub API streaming untuk mentransfer frame informasi pengaturan waktu untuk jendela aplikasi saat ini. Data yang ditampilkan adalah setara dengan yang ditampilkan adb shell dumpsys gfxinfo framestats, tetapi tidak terbatas pada 120 frame terakhir.

Anda dapat menggunakan Frame Metrics API untuk mengukur UI tingkat interaksi tanpa koneksi USB. API ini memungkinkan pengumpulan data pada tingkat perincian yang jauh lebih tinggi daripada adb shell dumpsys gfxinfo. Perincian yang lebih tinggi ini dimungkinkan karena sistem dapat mengumpulkan data untuk interaksi tertentu dalam aplikasi; sistem pengguna tidak perlu menangkap ringkasan global dari seluruh meningkatkan performa, atau menghapus status global. Anda dapat menggunakan kemampuan untuk mengumpulkan data performa dan menangkap regresi dalam performa UI untuk kasus penggunaan nyata dalam aplikasi.

Untuk memantau jendela, implementasikan metode OnFrameMetricsAvailableListener.onFrameMetricsAvailable() dan mendaftarkannya pada jendela tersebut.

API menyediakan objek FrameMetrics, yang berisi data waktu yang dilaporkan oleh subsistem rendering untuk berbagai tahap pencapaian dalam siklus hidup {i>frame<i}. Metrik yang didukung adalah: UNKNOWN_DELAY_DURATION, INPUT_HANDLING_DURATION, ANIMATION_DURATION, LAYOUT_MEASURE_DURATION, DRAW_DURATION, SYNC_DURATION, COMMAND_ISSUE_DURATION, SWAP_BUFFERS_DURATION, TOTAL_DURATION, dan FIRST_DRAW_FRAME.

File Virtual

Di versi Android sebelumnya, aplikasi Anda dapat menggunakan Akses Penyimpanan Kerangka kerja yang memungkinkan pengguna memilih file dari akun penyimpanan {i>cloud<i}, seperti Google Drive. Namun, tidak ada cara untuk mewakili file yang tidak memiliki representasi bytecode langsung; setiap file diperlukan untuk memberikan aliran input.

Android 7.0 menambahkan konsep file virtual ke Akses Penyimpanan Google Workspace. Fitur file virtual memungkinkan DocumentsProvider untuk menampilkan URI dokumen yang dapat digunakan dengan intent ACTION_VIEW meskipun tidak memiliki representasi bytecode langsung. Android 7.0 juga memungkinkan Anda menyediakan format alternatif untuk {i>file<i} pengguna, virtual atau lainnya.

Untuk informasi selengkapnya tentang cara membuka file virtual, lihat Buka file virtual di Panduan Storage Access Frameworks.