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 lihat perubahan perilaku Android 7.0 untuk mempelajari area mana saja pada aplikasi yang dapat terpengaruh oleh 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 yang banyak diminta ke dalam platform — dukungan multi-aplikasi.

Pengguna sekarang bisa membuka dua aplikasi sekaligus di layar.

  • Pada 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 pemisah di antara mereka.
  • Di perangkat Android TV, aplikasi dapat menempatkan dirinya sendiri dalam mode picture-in-picture, yang memungkinkan aplikasi untuk terus menampilkan konten sementara 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 dengan layar lebih besar lainnya, dukungan multi-aplikasi memberi Anda cara baru untuk berinteraksi dengan pengguna. Anda bahkan dapat mengaktifkan fitur tarik lalu lepas di aplikasi agar pengguna dapat dengan mudah menarik konten ke atau dari aplikasi Anda — cara yang bagus untuk meningkatkan pengalaman pengguna.

Anda dapat dengan mudah menambahkan dukungan multi-aplikasi ke aplikasi dan mengonfigurasi cara menangani tampilan multi-aplikasi. Misalnya, Anda bisa menetapkan 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 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 lebih cepat digunakan. Beberapa perubahan tersebut antara lain:

  • Pembaruan template: Kami memperbarui template notifikasi untuk lebih menekankan banner besar 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. Pengguna dapat mengambil tindakan, seperti Tutup atau Arsipkan, atas tindakan yang akan dilakukan. Jika sudah mengimplementasikan notifikasi untuk Android Wear, Anda akan terbiasa dengan 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.
Perangkat seluler menampilkan notifikasi pesan yang dipaketkan
Perangkat seluler menampilkan notifikasi satu pesan
Perangkat seluler menampilkan balasan pesan inline dalam antarmuka notifikasi

Gambar 2. Gabungan notifikasi dan balasan langsung.

Untuk mempelajari cara menerapkan 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 terbaik aplikasi dan dapat mengompilasi serta meng-cache metode tersebut untuk mendapatkan performa terbaik. Cara ini membuat bagian lain dari aplikasi tidak dikompilasi hingga benar-benar digunakan.

Selain meningkatkan performa untuk 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 pada baterai perangkat. Compose melakukan prakompilasi hanya 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 waktu beberapa menit untuk dioptimalkan dan diinstal di Android 6.0 kini 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 sedang tidak ada aktivitas, seperti saat diletakkan di atas meja atau dalam panel samping.

Kini di Android 7.0, fitur Istirahatkan bekerja lebih baik dan menghemat baterai kapan saja di mana saja. Setiap kali layar mati selama jangka waktu tertentu dan perangkat tidak dicolokkan ke sumber listrik, Istirahatkan menerapkan subset pembatasan CPU dan jaringan yang sudah dikenal ke aplikasi. Artinya, pengguna dapat menghemat baterai meskipun saat membawa perangkat di saku.

Ilustrasi tentang cara Istirahatkan menerapkan pembatasan aktivitas sistem tingkat pertama untuk meningkatkan daya tahan baterai

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

Tidak lama setelah layar nonaktif saat perangkat menggunakan daya baterai, fitur Istirahatkan akan membatasi akses jaringan serta menunda tugas dan sinkronisasi. Selama masa pemeliharaan 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, Istirahatkan akan menerapkan pembatasan CPU dan jaringan secara penuh pada PowerManager.WakeLock, alarm AlarmManager, dan pemindaian GPS/Wi-Fi.

Praktik terbaik untuk menyesuaikan aplikasi Anda dengan Istirahatkan adalah sama, baik perangkat sedang bergerak atau tidak, jadi jika Anda sudah mengupdate aplikasi untuk menangani mode Istirahatkan dengan baik, berarti Anda sudah siap. Jika belum, mulai menyesuaikan aplikasi Anda dengan 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 ini dapat membuat pengalaman pengguna Anda 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 yang disukai 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 tepat 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 di Penyedia Konten. Pada saat yang sama, kami mulai menghilangkan 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 ketiganya 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 lebih baik daripada TextureView dalam kasus tertentu: Saat merender video atau konten 3D, aplikasi dengan posisi video scroll dan animasi menggunakan lebih sedikit daya dengan SurfaceView dibandingkan dengan TextureView.

Class SurfaceView memungkinkan komposisi yang lebih hemat baterai di layar, karena dikomposisikan dalam hardware khusus, secara terpisah dari konten jendela aplikasi. Akibatnya, salinan perantara yang dibuat 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 dalam SurfaceView tidak lagi menghasilkan kotak hitam bersamaan dengan 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 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, yaitu layanan sistem baru yang membantu mengurangi penggunaan data seluler oleh aplikasi, baik saat roaming, mendekati akhir siklus penagihan, atau pada 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.

Ketika pengguna mengaktifkan Penghemat Data dalam Setelan dan perangkat menggunakan jaringan berkuota, sistem akan memblokir penggunaan data latar belakang dan memberi tahu aplikasi untuk menggunakan lebih sedikit data di latar depan jika memungkinkan — misalnya dengan membatasi kecepatan bit untuk streaming, mengurangi kualitas gambar, menunda precaching 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 untuk 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 dalam driver, dan memungkinkan aplikasi Anda mengontrol operasi GPU lebih langsung. Vulkan juga memungkinkan paralelisasi yang lebih baik dengan memungkinkan beberapa thread menjalankan pekerjaan seperti pembuatan buffer perintah sekaligus.

Library dan alat pengembangan Vulkan telah dimasukkan ke dalam Android 7.0 SDK. 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 mengetahui informasi selengkapnya, baca dokumentasi API.

Quick Settings Tile API

Kotak Setelan Cepat di menu notifikasi

Gambar 5. Kotak Setelan Cepat di menu notifikasi.

Setelan Cepat 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 nyaman.

Kami telah menambahkan lebih banyak ruang untuk kartu Setelan Cepat tambahan, yang dapat diakses pengguna di seluruh area tampilan yang dipaginasi dengan menggeser ke kiri atau kanan. Kami juga telah memberi pengguna kontrol atas kartu Setelan Cepat yang akan muncul dan tempat tampilannya — pengguna dapat menambahkan atau memindahkan kartu hanya dengan menarik lalu melepasnya.

Bagi developer, Android 7.0 juga menambahkan API baru yang memungkinkan Anda menentukan kartu Setelan Cepat Anda sendiri 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 menampilkannya kepada pengguna, yang dapat menambahkannya ke Setelan Cepat hanya 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 dari dan menulis ke daftar nomor blokir. Daftar ini tidak dapat diakses oleh aplikasi lain.

Dengan menjadikan pemblokiran nomor sebagai fitur standar platform, 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 perangkat melalui fitur Pencadangan & Pemulihan
  • Beberapa aplikasi sekaligus bisa menggunakan daftar nomor blokir yang sama

Selain itu, dengan integrasi aplikasi operator melalui Android, operator dapat membaca daftar nomor yang diblokir di perangkat dan melakukan pemblokiran sisi layanan bagi pengguna untuk menghentikan panggilan dan pesan teks yang tidak diinginkan agar tidak sampai ke 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 menerapkan 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. Library 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 lokalitas yang diperluas, Android 7.0 mengubah cara me-resolve resource. Pastikan Anda menguji dan memverifikasi bahwa aplikasi 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 ini 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, maka aplikasi harus menggunakan variasi hitam-putih. Untuk menentukan apakah sebuah emoji memiliki variasi, gunakan pemilih variasi. Untuk daftar lengkap karakter dengan variasinya, tinjau bagian urutan variasi emoji dalam Dokumentasi Unicode tentang variasi.
  • Pastikan emoji mendukung warna kulit. Android 7.0 memungkinkan pengguna memodifikasi 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 dalam framework Android pada paket android.icu. Migrasi mudah dilakukan, dan sebagian besar hanya memerlukan perubahan 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 Android System WebView. 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 diaktifkan).

Anda dapat memilih penyedia WebView dengan mengaktifkan Opsi Developer dan memilih Implementasi WebView. Anda dapat menggunakan versi Chrome apa pun yang kompatibel (Dev, Beta, atau Stabil) yang terinstal di perangkat Anda atau Webview APK mandiri untuk berfungsi sebagai implementasi WebView.

Multiproses

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

Kami memerlukan masukan tentang kompatibilitas dan performa runtime di N sebelum mengaktifkan WebView multiproses di versi Android yang akan datang. Dalam versi ini, diperkirakan akan terjadi regresi waktu startup, penggunaan memori total 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 dari 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 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 di bagian opsi developer seperti dijelaskan di atas. Harap laporkan masalah melalui pelacak bug Chromium agar kami dapat memperbaikinya sebelum versi WebView baru 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 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 disediakan 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 tersedia di bawah — untuk mengetahui daftar lengkap fitur, lihat daftar fitur Android Enterprise.

Pertanyaan keamanan profil kerja

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

Pemilik profil dapat menetapkan kebijakan kode sandi yang berbeda untuk tantangan kerja (seperti durasi PIN, 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. Termasuk aplikasi pemilik profil. Saat mode kerja dinonaktifkan, sistem akan menampilkan ikon 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 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 VPN Selalu Aktif. Seperti sebelumnya, layanan ditunjukkan ke sistem dengan tindakan pencocokan filter intent android.net.VpnService.

Pengguna juga dapat secara manual menetapkan klien VPN Selalu Aktif yang menerapkan metode VPNService menggunakan Settings>More>Vpn. Opsi untuk mengaktifkan VPN 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 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 menjadi lebih jelas, pengguna kemungkinan besar akan mencoba aplikasi Anda dengan fitur yang diaktifkan. Pastikan Anda menguji aplikasi lebih awal dengan mengaktifkan setelan ini. Anda dapat mengaktifkannya dari Setelan > Aksesibilitas.

Selain itu, di Android 7.0, layanan aksesibilitas kini dapat membantu pengguna yang mengalami gangguan motorik untuk menyentuh layar. API baru ini memungkinkan pembuatan layanan dengan fitur-fitur seperti pelacakan wajah, pelacakan mata, pemindaian titik, dan sebagainya, untuk memenuhi kebutuhan pengguna tersebut.

Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi untuk GestureDescription.

Direct Boot

Direct Boot meningkatkan waktu startup perangkat dan memungkinkan aplikasi yang terdaftar memiliki fungsionalitas terbatas bahkan setelah reboot 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 terperinci bagi sistem dan 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 menyetel flag 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 akan tersedia hingga Pengguna mengonfirmasi kredensial layar kunci untuk mendekripsinya.

Untuk mengetahui informasi selengkapnya, lihat Direct Boot.

Pengesahan Kunci

Android 7.0 memperkenalkan pengesahan kunci, 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 mendapatkan keyakinan tambahan bahwa aplikasi Anda berinteraksi dengan kunci yang berada di hardware yang aman, meskipun perangkat yang menjalankan aplikasi Anda di-root. Jika Anda menggunakan kunci dari keystore yang didukung hardware di aplikasi, Anda harus menggunakan alat ini, terutama jika menggunakan kunci tersebut untuk memverifikasi informasi sensitif dalam aplikasi Anda.

Pengesahan kunci memungkinkan Anda memverifikasi bahwa pasangan kunci RSA atau EC telah dibuat dan disimpan di keystore yang didukung hardware 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 jika 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. Sebelum memverifikasi properti kunci yang didukung hardware perangkat dalam lingkungan level produksi, Anda harus memastikan bahwa perangkat mendukung pengesahan kunci level hardware. Untuk melakukannya, Anda harus memastikan bahwa rantai sertifikat pengesahan berisi root certificate yang ditandatangani oleh kunci utama pengesahan Google dan bahwa elemen attestationSecurityLevel dalam struktur data deskripsi kunci disetel ke level 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 apa pun, dengan menggunakan Konfigurasi Keamanan Jaringan deklaratif, bukan menggunakan API terprogram konvensional yang rawan error (misalnya, X509TrustManager).

Fitur yang didukung:

  • Trust anchor kustom. Memungkinkan aplikasi menyesuaikan Certificate Authorities (CA) mana 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 Plugin Android 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 ke 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 menggunakan skema penandatanganan tradisional saja. 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 akan 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 yang dapat dilepas 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 mana yang aksesnya diminta oleh aplikasi.

Untuk informasi selengkapnya, lihat dokumentasi developer Akses Direktori Cakupan.

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 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, tombolnya adalah Command, di keyboard Windows, tombol Windows, dan di Pixel C dan keyboard ChromeOS, tombol Search.

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 saat pengguna menggunakan mouse atau touchpad untuk berinteraksi dengan objek UI. Pointer default menggunakan ikon standar. API ini juga mencakup 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 performa perangkat dapat diprediksi dan level 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 tanda jendela performa berkelanjutan untuk jendela yang ingin Anda jalankan dalam mode performa berkelanjutan. Tetapkan flag ini menggunakan metode Window.setSustainedPerformanceMode(). Sistem akan otomatis menonaktifkan mode ini saat jendela tidak lagi dalam 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 dapat memanfaatkan pelacakan 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 dengan 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 masing-masing setProgress() dan setStatus().

Frame Metrics API

Frame Metrics API memungkinkan aplikasi memantau performa rendering UI-nya. 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 performa seluruh aplikasi, atau menghapus semua status global. 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 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.