Android 7.0 untuk Developer

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

Pastikan melihat perubahan perilaku Android 7.0 untuk mempelajari area mana saja pada aplikasi Anda yang dapat dipengaruhi perubahan platform.

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

Dukungan Multi-Jendela

Di Android 7.0, kami memperkenalkan fitur multitasking baru dan yang banyak diminta ke dalam platform — dukungan multi-aplikasi.

Pengguna sekarang bisa membuka dua aplikasi sekaligus di layar.

  • Di ponsel dan tablet yang menjalankan Android 7.0, pengguna dapat menjalankan dua aplikasi secara berdampingan atau satu aplikasi di atas yang lain dalam mode layar terpisah. Pengguna dapat mengubah ukuran aplikasi dengan menarik pembagi di antara keduanya.
  • Di perangkat Android TV, aplikasi dapat menempatkan dirinya sendiri dalam mode picture-in-picture, sehingga aplikasi dapat terus menampilkan konten saat pengguna menjelajahi atau berinteraksi dengan aplikasi lain.
Aplikasi seluler yang berjalan dalam mode layar terpisah

Gambar 1. Aplikasi yang berjalan dalam mode layar terpisah.

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

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

Untuk informasi selengkapnya, lihat dokumentasi developer Dukungan Multi-Aplikasi.

Penyempurnaan Notifikasi

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

  • Update template: Kami memperbarui template notifikasi untuk lebih menekankan gambar utama dan avatar. 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 menggunakan class MessagingStyle. Anda dapat mengonfigurasi pesan, judul percakapan, dan tampilan konten.
  • Paket notifikasi: Sistem dapat mengelompokkan pesan, misalnya menurut topik pesan, dan menampilkan grup. Seorang pengguna bisa mengambil tindakan, misalnya Tutup atau Arsipkan, atas pesan yang ditampilkan. Jika sudah mengimplementasikan notifikasi untuk Android Wear, Anda akan memahami model ini.
  • Balasan langsung: Untuk aplikasi komunikasi real-time, sistem Android mendukung balasan inline sehingga pengguna dapat dengan cepat membalas SMS atau pesan teks secara langsung dalam antarmuka notifikasi.
  • Tampilan kustom: Dua API baru memungkinkan Anda memanfaatkan dekorasi sistem, seperti header notifikasi dan tindakan, saat menggunakan tampilan kustom dalam notifikasi.
Seluler menampilkan notifikasi pesan yang dipaketkan
Ponsel menampilkan notifikasi satu pesan
Seluler menampilkan balasan pesan inline dalam antarmuka notifikasi

Gambar 2. Gabungan notifikasi dan balasan langsung.

Untuk mempelajari cara mengimplementasikan fitur baru ini, lihat panduan Notifikasi.

Kompilasi JIT/AOT yang dipandu profil

Di Android 7.0, kami telah menambahkan compiler Just in Time (JIT) dengan pembuatan profil kode ke ART, yang memungkinkannya terus meningkatkan performa aplikasi Android saat dijalankan. Compiler JIT melengkapi compiler Ahead of Time (AOT) ART saat ini dan membantu meningkatkan performa runtime, menghemat ruang penyimpanan, serta mempercepat update aplikasi dan update sistem.

Kompilasi yang dipandu profil memungkinkan ART mengelola kompilasi AOT/JIT untuk setiap aplikasi sesuai dengan penggunaan sebenarnya, serta kondisi di perangkat. Misalnya, ART menyimpan profil setiap metode populer aplikasi dan dapat mengompilasi serta menyimpan metode tersebut dalam cache untuk mendapatkan performa terbaik. Hal ini membiarkan bagian lain aplikasi tidak dikompilasi hingga benar-benar digunakan.

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

ART mengelola kompilasi yang dipandu profil dengan cara yang meminimalkan dampak terhadap baterai perangkat. Kompilasi ini hanya melakukan prakompilasi jika perangkat sedang tidak ada aktivitas dan mengisi daya, sehingga menghemat waktu dan baterai dengan melakukan pekerjaan tersebut di awal.

Jalur Cepat untuk Pasang Aplikasi

Salah satu manfaat paling nyata dari compiler JIT ART adalah kecepatan penginstalan aplikasi dan update sistem. Bahkan aplikasi besar yang perlu beberapa menit untuk dioptimalkan dan diinstal di Android 6.0 sekarang dapat diinstal hanya dalam hitungan detik. Pembaruan sistem juga lebih cepat, karena tidak ada lagi langkah pengoptimalan.

Istirahatkan Kapan Saja...

Android 6.0 memperkenalkan fitur Istirahatkan, yaitu mode sistem yang menghemat baterai dengan menunda aktivitas CPU dan jaringan aplikasi saat perangkat tidak ada aktivitas, seperti saat diletakkan di atas meja atau dalam panel samping.

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

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

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

Tidak lama setelah layar dinonaktifkan saat perangkat menggunakan daya baterai, Istirahatkan akan membatasi akses jaringan serta menunda tugas dan sinkronisasi. Selama masa pemeliharaan yang singkat, aplikasi diizinkan mengakses jaringan dan semua tugas/sinkronisasi yang ditangguhkan akan dijalankan. Mengaktifkan layar atau mencolokkan perangkat akan mengeluarkan perangkat dari Istirahatkan.

Saat perangkat kembali diam, dengan layar nonaktif dan menggunakan baterai selama jangka waktu tertentu, fitur Istirahatkan akan menerapkan pembatasan CPU dan jaringan secara penuh pada alarm PowerManager.WakeLock, AlarmManager, dan pemindaian GPS/Wi-Fi.

Praktik terbaik untuk menyesuaikan aplikasi Anda dengan mode Istirahatkan adalah sama, baik perangkat sedang bergerak maupun diam. Jadi, jika Anda sudah mengupdate aplikasi untuk menangani mode Istirahatkan dengan lancar, berarti Anda sudah siap. Jika belum, mulai menyesuaikan aplikasi Anda dengan mode Istirahatkan sekarang.

Project Svelte: Optimisasi Latar Belakang

Project Svelte adalah 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, hal tersebut dapat membuat pengalaman pengguna menjadi luar biasa — segera, cepat, dan sesuai konteks. Jika tidak ditangani dengan benar, pemrosesan latar belakang dapat menghabiskan RAM (dan baterai) yang tidak perlu serta memengaruhi performa sistem untuk aplikasi lain.

Sejak Android 5.0, JobScheduler telah menjadi cara pilihan untuk melakukan pekerjaan latar belakang dengan cara yang baik bagi pengguna. Aplikasi dapat menjadwalkan tugas sekaligus memungkinkan sistem melakukan pengoptimalan berdasarkan kondisi memori, daya, dan konektivitas. JobScheduler menawarkan kontrol serta kemudahan, dan kami ingin semua aplikasi menggunakannya.

Opsi baik 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 pekerjaan latar belakang berdasarkan perubahan pada Penyedia Konten. Pada saat yang sama, kami mulai menghentikan beberapa pola lama yang dapat mengurangi performa 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 ketiga siaran tersebut dapat mengaktifkan proses latar belakang beberapa aplikasi sekaligus serta menguras memori dan baterai. Jika aplikasi Anda menerimanya, manfaatkan Android 7.0 untuk bermigrasi ke JobScheduler dan API terkait sebagai gantinya.

Lihat dokumentasi Pengoptimalan Latar Belakang untuk mengetahui detailnya.

SurfaceView

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

Class SurfaceView memungkinkan komposisi yang lebih hemat baterai di layar, karena disusun dalam hardware khusus, terpisah dari konten jendela aplikasi. Akibatnya, kode tersebut membuat salinan perantara yang lebih sedikit daripada TextureView.

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

Mulai Android 7.0, kami sangat menyarankan Anda untuk menghemat daya menggunakan SurfaceView, bukan TextureView.

Penghemat Data

Penghemat Data di Setelan

Gambar 4. Penghemat Data di Setelan.

Selama masa pakai 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, mendekati akhir siklus penagihan, atau saat menggunakan paket data prabayar yang kecil. Penghemat Data memberi pengguna kontrol atas cara aplikasi menggunakan data seluler dan memungkinkan developer memberikan layanan yang lebih efisien saat Penghemat Data aktif.

Saat pengguna mengaktifkan Penghemat Data di Setelan dan perangkat sedang menggunakan jaringan berkuota, sistem akan memblokir penggunaan data latar belakang dan memberi tahu aplikasi untuk menggunakan lebih sedikit data di latar depan jika memungkinkan — seperti dengan membatasi kecepatan bit untuk streaming, mengurangi kualitas gambar, menunda pra-cache optimis, dan sebagainya. Pengguna dapat mengizinkan aplikasi tertentu untuk mengizinkan penggunaan data berkuota di latar belakang meskipun Penghemat Data diaktifkan.

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

Vulkan API

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

Vulkan didesain dari nol untuk meminimalkan overhead CPU pada driver, dan memungkinkan aplikasi Anda mengontrol operasi GPU lebih langsung. Vulkan juga memungkinkan paralelisasi yang lebih baik dengan mengizinkan beberapa thread menjalankan pekerjaan seperti pembuatan buffer perintah sekaligus.

Library dan alat pengembangan Vulkan telah dimasukkan ke dalam SDK Android 7.0. Fitur tersebut meliputi:

  • 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

Kotak Setelan Cepat di menu notifikasi

Gambar 5. Kotak Setelan Cepat di menu notifikasi.

Quick Settings adalah cara populer dan mudah untuk menampilkan setelan 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 diakses pengguna di seluruh area tampilan yang diberi nomor halaman dengan menggeser ke kiri atau kanan. Kami juga telah memberi pengguna kontrol atas kartu Setelan Cepat yang akan muncul dan tempat ditampilkannya — pengguna dapat menambahkan atau memindahkan kartu cukup dengan menarik lalu melepasnya.

Bagi developer, Android 7.0 juga menambahkan API baru yang memungkinkan Anda menentukan kartu Setelan Cepat untuk memberi pengguna akses mudah ke kontrol dan tindakan utama dalam aplikasi Anda.

Kartu Setelan Cepat dicadangkan untuk kontrol atau tindakan yang mendesak atau sering digunakan, dan tidak boleh digunakan sebagai pintasan untuk meluncurkan aplikasi.

Setelah menentukan kartu, Anda dapat menampilkan kartu tersebut kepada pengguna, yang dapat menambahkannya ke Setelan Cepat cukup dengan menarik lalu melepas.

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

Pemblokiran Nomor

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

Dengan menjadikan 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 dapat tetap ada meskipun terjadi reset dan di berbagai perangkat melalui fitur Cadangkan & Pulihkan
  • Beberapa aplikasi sekaligus bisa menggunakan daftar nomor blokir yang sama

Selain itu, dengan integrasi aplikasi operator melalui Android, operator dapat membaca daftar nomor blokir di perangkat dan melakukan pemblokiran sisi layanan bagi pengguna untuk menghentikan panggilan dan SMS yang tidak diinginkan agar tidak sampai kepada pengguna melalui media apa pun, seperti endpoint VOIP atau meneruskan telepon.

Untuk informasi selengkapnya, lihat dokumentasi referensi untuk BlockedNumberContract.

Penyaringan Panggilan Telepon

Android 7.0 memungkinkan aplikasi telepon default untuk menyaring panggilan masuk. Aplikasi telepon melakukannya dengan mengimplementasikan CallScreeningService baru, yang memungkinkan aplikasi telepon 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 bilingual dengan lebih baik. Aplikasi dapat menggunakan API baru untuk mendapatkan lokalitas yang dipilih pengguna, lalu menawarkan pengalaman pengguna yang lebih canggih untuk pengguna multilokal, seperti menampilkan hasil penelusuran dalam beberapa bahasa dan tidak menawarkan untuk menerjemahkan halaman web dalam bahasa yang sudah diketahui pengguna.

Bersama dengan dukungan multilokal, Android 7.0 juga memperluas ragam bahasa yang tersedia untuk pengguna. Masing-masing menawarkan lebih dari 25 varian untuk bahasa yang umum digunakan seperti Inggris, Spanyol, Prancis, dan Arab. API ini juga menambahkan dukungan parsial untuk lebih dari 100 bahasa baru.

Aplikasi bisa mendapatkan daftar lokalitas yang disetel oleh pengguna dengan memanggil LocaleList.GetDefault(). Untuk mendukung jumlah lokal yang diperluas, Android 7.0 mengubah cara me-resolve resource. Pastikan Anda menguji dan memverifikasi bahwa aplikasi Anda berfungsi seperti yang diharapkan dengan logika resolusi resource baru.

Untuk mempelajari perilaku resolusi resource baru dan praktik terbaik yang harus Anda ikuti, lihat Dukungan Multibahasa.

Emoji Baru

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

  • Pastikan 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 menampilkan emoji tertentu berwarna atau hitam putih. Pada perangkat seluler, aplikasi akan menghadirkan emoji berwarna daripada hitam-putih. Namun, jika aplikasi Anda menampilkan emoji yang inline dengan teks, aplikasi harus menggunakan variasi hitam-putih. Untuk menentukan apakah sebuah emoji memiliki variasi, gunakan pemilih variasi. Untuk mengetahui daftar lengkap karakter dengan variasinya, tinjau bagian urutan variasi emoji dari Dokumentasi Unicode tentang variasi.
  • Pastikan emoji mendukung warna kulit. Android 7.0 memungkinkan pengguna mengubah warna kulit emoji yang dirender sesuai preferensi mereka. Aplikasi keyboard harus menyediakan indikasi visual untuk emoji yang memiliki beberapa warna kulit dan harus memungkinkan pengguna memilih warna kulit yang mereka sukai. Untuk menentukan emoji sistem yang memiliki pengubah warna kulit, gunakan metode 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 di framework Android pada paket android.icu. Migrasi mudah dilakukan, dan sebagian besar hanya perlu mengubah dari namespace com.java.icu menjadi android.icu. Jika Anda sudah menggunakan paket ICU4J dalam aplikasi, beralih ke android.icu API yang disediakan dalam framework Android dapat menghasilkan penghematan ukuran APK yang signifikan.

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 digunakan untuk menyediakan dan merender WebView Sistem Android. Pendekatan ini meningkatkan penggunaan memori pada perangkat itu sendiri dan juga mengurangi bandwidth yang diperlukan untuk menjaga WebView tetap terbaru (karena APK WebView mandiri tidak akan diupdate lagi selama Chrome tetap aktif).

Anda dapat memilih penyedia WebView dengan mengaktifkan Opsi Developer dan memilih Implementasi WebView. Anda dapat menggunakan versi Chrome yang kompatibel (Dev, Beta, atau Stabil) yang diinstal di perangkat atau APK Webview mandiri untuk berfungsi 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 menunggu masukan tentang kompatibilitas dan performa runtime di N sebelum mengaktifkan Multiprocess WebView di versi Android yang akan datang. Dalam versi ini, yang diharapkan adalah regresi waktu startup, total penggunaan memori, dan performa rendering software.

Jika Anda menemukan masalah yang tidak terduga dalam mode multiproses, kami ingin mengetahuinya. 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, konteks tersebut dibawa untuk halaman pertama yang dimuat di instance WebView baru.

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

Geolokasi pada sumber yang tidak aman

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

Pengujian dengan WebView Beta

WebView diupdate secara berkala, jadi sebaiknya Anda sering menguji kompatibilitas dengan aplikasi menggunakan saluran beta WebView. Untuk mulai menguji WebView versi pra-rilis di Android 7.0, download dan instal Chrome Dev atau Chrome Beta, lalu pilih sebagai implementasi WebView pada opsi developer seperti yang dijelaskan di atas. Harap laporkan masalah melalui pelacak bug Chromium agar kami dapat memperbaikinya sebelum versi baru WebView dirilis.

OpenGLTM ES 3.2 API

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

  • Semua ekstensi dari Android Extension Pack (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, menggunakan tag <uses-feature> dan atribut android:glEsVersion.

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

Perekaman Android TV

Android 7.0 menambahkan kemampuan untuk merekam dan memutar konten dari layanan input Android TV melalui API perekaman baru. Dengan memanfaatkan API pergeseran waktu yang sudah ada, layanan input TV dapat mengontrol data saluran yang dapat direkam, cara penyimpanan sesi rekaman, dan mengelola interaksi pengguna dengan konten rekaman.

Untuk informasi selengkapnya, lihat API Perekaman Android TV.

Android for Work

Android for Work menambahkan banyak fitur dan API baru untuk perangkat yang menjalankan Android 7.0. Beberapa fitur utama ada di bawah ini — untuk mengetahui daftar lengkap fitur, lihat daftar fitur Android Enterprise.

Pertanyaan keamanan profil kerja

Pemilik profil yang menargetkan N SDK dapat menetapkan tantangan keamanan terpisah untuk aplikasi yang berjalan di profil kerja. Tantangan kerja ditampilkan ketika pengguna mencoba membuka aplikasi kerja apa pun. Keberhasilan menyelesaikan tantangan keamanan akan membuka kunci profil kerja dan mendekripsinya jika diperlukan. Untuk pemilik profil, ACTION_SET_NEW_PASSWORD meminta pengguna menyetel tantangan kerja, dan ACTION_SET_NEW_PARENT_PROFILE_PASSWORD meminta pengguna menyetel kunci perangkat.

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

Menonaktifkan pekerjaan

Pada perangkat dengan profil kerja, pengguna bisa beralih mode kerja. Jika mode kerja dinonaktifkan, pengguna terkelola akan dinonaktifkan untuk sementara, yang akan menonaktifkan aplikasi profil kerja, sinkronisasi latar belakang, dan notifikasi. Hal ini termasuk aplikasi pemilik profil. Jika mode kerja dinonaktifkan, sistem akan menampilkan ikon status tetap 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 yang ditetapkan. Sistem akan otomatis memulai VPN tersebut setelah perangkat melakukan booting.

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

Karena layanan VPN dapat diikat langsung oleh sistem tanpa interaksi aplikasi, klien VPN perlu menangani titik entri baru untuk Always-On VPN. Seperti sebelumnya, layanan ditunjukkan ke sistem melalui tindakan pencocokan filter intent android.net.VpnService.

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

Penyediaan yang disesuaikan

Aplikasi dapat menyesuaikan alur penyediaan pemilik profil dan pemilik perangkat 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 kini menawarkan Vision Settings langsung di layar Sambutan untuk penyiapan perangkat baru. Hal ini sangat memudahkan pengguna untuk menemukan dan mengonfigurasi fitur aksesibilitas di perangkat mereka, termasuk gestur pembesaran, ukuran font, ukuran layar, dan TalkBack.

Dengan fitur aksesibilitas yang penempatannya semakin jelas, pengguna cenderung akan mencoba aplikasi Anda dengan fitur-fitur yang diaktifkan 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 yang mengalami gangguan motorik untuk menyentuh layar. API baru ini memungkinkan membangun layanan dengan fitur-fitur seperti pelacakan wajah, pelacakan mata, pemindaian titik, dan sebagainya, untuk memenuhi kebutuhan pengguna tersebut.

Untuk informasi selengkapnya, lihat dokumentasi referensi untuk GestureDescription.

Direct Boot

Direct Boot memperbaiki waktu startup perangkat dan memungkinkan aplikasi terdaftar memiliki fungsionalitas terbatas bahkan setelah mulai ulang yang tidak terduga. Misalnya, jika perangkat terenkripsi dimulai ulang saat pengguna tidur, alarm terdaftar, pesan dan panggilan masuk kini dapat terus memberi tahu pengguna seperti biasa. Ini juga berarti layanan aksesibilitas juga dapat segera tersedia setelah mulai ulang.

Direct boot memanfaatkan enkripsi berbasis file di Android 7.0 untuk mengaktifkan kebijakan enkripsi yang mendetail baik bagi sistem maupun data aplikasi. Sistem menggunakan penyimpanan yang dienkripsi dengan perangkat untuk data sistem tertentu dan data aplikasi yang terdaftar secara eksplisit. Secara default, penyimpanan yang dienkripsi dengan kredensial digunakan untuk semua data sistem lainnya, data pengguna, aplikasi, dan data aplikasi.

Saat booting, sistem akan dimulai dalam mode terbatas dengan akses ke data yang dienkripsi perangkat saja, dan tanpa akses umum ke aplikasi atau data. Jika memiliki komponen yang ingin dijalankan dalam mode ini, Anda dapat mendaftarkannya dengan menetapkan tanda dalam manifes. Setelah dimulai ulang, sistem akan mengaktifkan komponen terdaftar dengan menyiarkan intent LOCKED_BOOT_COMPLETED. Sistem akan memastikan data aplikasi yang dienkripsi dengan perangkat tersedia sebelum membuka kunci. Semua data lainnya tidak tersedia sebelum Pengguna mengonfirmasi kredensial layar kunci untuk mendekripsinya.

Untuk informasi selengkapnya, lihat Direct Boot.

Pengesahan Kunci

Android 7.0 memperkenalkan pengesahan kunci, sebuah alat keamanan baru yang membantu Anda memastikan bahwa pasangan kunci yang disimpan dalam keystore yang didukung hardware perangkat melindungi dengan benar informasi sensitif yang digunakan aplikasi Anda. Dengan menggunakan alat ini, Anda semakin yakin bahwa aplikasi Anda berinteraksi dengan kunci yang berada dalam hardware aman, meskipun perangkat yang menjalankan aplikasi Anda di-root. Jika Anda menggunakan kunci dari keystore yang didukung hardware dalam aplikasi, Anda harus menggunakan alat ini, terutama jika menggunakan kunci tersebut untuk memverifikasi informasi sensitif dalam aplikasi.

Dengan pengesahan kunci, Anda dapat memverifikasi bahwa pasangan kunci RSA atau EC telah dibuat dan disimpan di keystore yang didukung hardware di perangkat dalam Trusted execution environment (TEE) perangkat. Alat ini juga memungkinkan Anda menggunakan layanan di luar perangkat, seperti server back-end aplikasi, untuk menentukan dan memverifikasi dengan kuat penggunaan dan validitas pasangan kunci. Fitur ini memberikan tingkat keamanan tambahan yang melindungi pasangan kunci, meskipun ada orang yang melakukan root pada perangkat atau membahayakan keamanan platform Android yang berjalan di perangkat tersebut.

Catatan: Hanya sebagian kecil perangkat yang menjalankan Android 7.0 yang mendukung pengesahan kunci level hardware; semua perangkat lain yang menjalankan Android 7.0 menggunakan pengesahan kunci level software sebagai gantinya. Sebelum memverifikasi properti kunci yang didukung hardware perangkat dalam lingkungan level produksi, Anda harus memastikan bahwa perangkat mendukung pengesahan kunci tingkat hardware. Untuk melakukannya, Anda harus memastikan bahwa rantai sertifikat pengesahan berisi root certificate yang ditandatangani oleh kunci root pengesahan Google dan bahwa elemen attestationSecurityLevel dalam struktur data deskripsi kunci disetel ke tingkat keamanan TrustedEnvironment.

Untuk informasi selengkapnya, lihat dokumentasi developer Pengesahan Kunci.

Network Security Config

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

Fitur yang didukung:

  • Trust anchor kustom. Memungkinkan aplikasi menyesuaikan Certificate Authority (CA) yang dipercaya untuk koneksi amannya. Misalnya, memercayai sertifikat tertentu yang ditandatangani sendiri atau kumpulan CA publik yang dibatasi.
  • Penggantian khusus debug. Memungkinkan developer aplikasi men-debug koneksi aman aplikasi mereka dengan aman tanpa menambah risiko pada basis yang diinstal.
  • Memilih tidak menggunakan traffic cleartext. Memungkinkan aplikasi melindungi dirinya sendiri dari penggunaan traffic cleartext yang tidak disengaja.
  • Penyematan sertifikat. Fitur lanjutan yang memungkinkan aplikasi membatasi kunci server mana yang dipercaya untuk koneksi aman.

Untuk 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 cara tepercaya CA pengguna.

APK Signature Scheme v2

Android 7.0 memperkenalkan APK Signature Scheme v2, sebuah skema penandatanganan aplikasi baru yang menawarkan waktu penginstalan aplikasi lebih cepat dan lebih banyak perlindungan terhadap perubahan tidak sah 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 merekomendasikan untuk menerapkan APK Signature Scheme v2 pada aplikasi Anda, skema baru ini tidak wajib. Jika aplikasi Anda tidak di-build dengan benar saat menggunakan APK Signature Scheme v2, Anda dapat menonaktifkan skema baru ini. Proses penonaktifan menyebabkan Android Studio 2.2 dan Plugin Android untuk Gradle 2.2 menandatangani aplikasi Anda hanya menggunakan skema penandatanganan tradisional. Untuk menandatangani hanya dengan skema tradisional, buka file build.gradle level modul, lalu tambahkan baris v2SigningEnabled false ke konfigurasi penandatanganan rilis Anda:

  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 membuat perubahan lebih lanjut pada aplikasi, tanda tangan aplikasi menjadi tidak valid. Oleh karena itu, gunakan alat seperti zipalign sebelum menandatangani aplikasi menggunakan APK Signature Scheme v2, bukan setelahnya.

Untuk mengetahui 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 dapat menggunakan API baru untuk meminta akses ke direktori penyimpanan eksternal tertentu, termasuk direktori di media lepas-pasang seperti kartu SD. API baru ini sangat menyederhanakan cara aplikasi Anda mengakses direktori penyimpanan eksternal standar, seperti direktori Pictures. Aplikasi seperti aplikasi foto dapat menggunakan API ini, bukan menggunakan READ_EXTERNAL_STORAGE, yang memberikan akses ke semua direktori penyimpanan, atau Storage Access Framework, yang membuat pengguna membuka direktori tersebut.

Selain itu, API baru ini menyederhanakan langkah-langkah yang diambil pengguna untuk memberikan akses penyimpanan eksternal ke aplikasi Anda. Saat Anda menggunakan API baru, sistem akan menggunakan UI izin sederhana yang menjelaskan dengan jelas direktori yang aksesnya diminta aplikasi.

Untuk informasi selengkapnya, lihat dokumentasi developer Akses Direktori Tercakup.

Keyboard Shortcuts Helper

Di Android 7.0, pengguna dapat menekan Meta + / untuk memicu layar Pintasan Keyboard yang menampilkan semua pintasan yang tersedia baik dari sistem maupun dari aplikasi yang sedang menjadi fokus. Sistem akan otomatis mengambil pintasan ini dari menu aplikasi jika pintasan tersebut ada. Anda juga dapat menyediakan daftar pintasan yang telah disesuaikan untuk layar. Anda dapat melakukannya dengan mengganti metode onProvideKeyboardShortcuts().

Catatan: Tombol 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 Search.

Untuk memicu Pemandu 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 mouse atau touchpad untuk berinteraksi dengan objek UI. Pointer default menggunakan ikon standar. API ini juga menyertakan fungsionalitas lanjutan seperti mengubah tampilan ikon pointer berdasarkan gerakan mouse atau touchpad tertentu.

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

Sustained Performance API

Performa dapat berfluktuasi secara dramatis untuk aplikasi yang berjalan lama, karena sistem melakukan throttle pada mesin sistem-di-chip saat komponen perangkat mencapai batas suhu. Fluktuasi ini memberikan target bergerak bagi developer aplikasi yang membuat aplikasi berperforma tinggi dan berjalan lama.

Untuk mengatasi batasan ini, Android 7.0 menyertakan dukungan untuk mode performa berkelanjutan, yang memungkinkan OEM memberikan petunjuk tentang kemampuan performa perangkat untuk aplikasi yang berjalan lama. Developer aplikasi dapat menggunakan petunjuk ini untuk menyesuaikan aplikasi agar level performa perangkat yang dapat diprediksi dan konsisten dalam jangka waktu yang lama.

Developer aplikasi dapat mencoba API baru ini di Android 7.0 hanya di perangkat Nexus 6P. Untuk menggunakan fitur ini, tetapkan flag jendela performa berkelanjutan untuk jendela yang ingin Anda jalankan dalam mode performa berkelanjutan. Tetapkan flag ini menggunakan metode Window.setSustainedPerformanceMode(). Sistem secara otomatis 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 peningkatan performa, termasuk akses ke inti CPU eksklusif untuk aplikasi VR. Dalam aplikasi, Anda bisa memanfaatkan pelacakan gerakan kepala yang cerdas, dan notifikasi stereo yang berfungsi untuk VR. Yang terpenting, Android 7.0 menyediakan grafis dengan latensi yang 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 printer dan tugas pencetakan.

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

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

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

API Metrik Frame

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

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

Untuk memantau jendela, terapkan metode callback OnFrameMetricsAvailableListener.onFrameMetricsAvailable() dan daftarkan di jendela tersebut.

API ini menyediakan objek FrameMetrics, yang berisi data pengaturan waktu yang dilaporkan oleh subsistem rendering untuk berbagai pencapaian dalam siklus proses frame. 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

Pada versi Android sebelumnya, aplikasi Anda dapat menggunakan Storage Access Framework untuk memungkinkan pengguna memilih file dari akun penyimpanan cloud mereka, seperti Google Drive. Namun, tidak ada cara untuk merepresentasikan file yang tidak memiliki representasi bytecode langsung; setiap file diharuskan menyediakan aliran input.

Android 7.0 menambahkan konsep file virtual ke Storage Access Framework. Fitur file virtual memungkinkan DocumentsProvider Anda 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 file pengguna, virtual atau dengan cara lain.

Untuk informasi selengkapnya tentang cara membuka file virtual, lihat Membuka file virtual dalam panduan Storage Access Frameworks.