Home | History | Annotate | Download | only in preview
      1 page.title=Android N for Developers
      2 meta.tags="preview", "androidn"
      3 page.tags="preview", "developer preview"
      4 page.image=images/cards/card-n-apis_2x.png
      5 @jd:body
      6 
      7 
      8 
      9 
     10 <div id="qv-wrapper">
     11 <div id="qv">
     12   <h2>Fitur-fitur Utama bagi Pengembang</h2>
     13   <ol>
     14       <ul style="list-style-type:none;">
     15         <li><a href="#multi-window_support">Dukungan Multi-Jendela</a></li>
     16         <li><a href="#notification_enhancements">Pemberitahuan</a></li>
     17         <li><a href="#jit_aot">Kompilasi JIT/AOT</a></li>
     18         <li><a href="#quick_path_to_app_install">Jalur Cepat untuk Pasang Aplikasi</a></li>
     19         <li><a href="#doze_on_the_go">Istirahatkan Kapan Saja</a></li>
     20         <li><a href="#background_optimizations">Optimalisasi Latar Belakang</a></li>
     21         <li><a href="#data_saver">Data Saver</a></li>
     22         <li><a href="#vulkan">Vulkan API</a></li>
     23         <li><a href="#tile_api">Quick Settings Tile API</a></li>
     24         <li><a href="#number-blocking">Pemblokiran Nomor</a></li>
     25         <li><a href="#call_screening">Penyaringan Panggilan</a></li>
     26         <li><a href="#multi-locale_languages">Lokal dan Bahasa</a></li>
     27         <li><a href="#emoji">Emoji Baru</a></li>
     28         <li><a href="#icu4">ICU4J API di Android</a></li>
     29         <li><a href="#gles_32">OpenGL ES 3.2 API</a></li>
     30         <li><a href="#android_tv_recording">Perekaman Android TV</a></li>
     31         <li><a href="#android_for_work">Android for Work</a></li>
     32         <li><a href="#accessibility_enhancements">Aksesibilitas</a></li>
     33         <li><a href="#direct_boot">Direct Boot</a></li>
     34         <li><a href="#key_attestation">Key Attestation</a></li>
     35         <li><a href="#network_security_config">Network Security Config</a></li>
     36         <li><a href="#default_trusted_ca">CA Tepercaya Default</a></li>
     37         <li><a href="#apk_signature_v2">APK Signature Scheme V2</a></li>
     38         <li><a href="#scoped_directory_access">Scoped Directory Access</a></li>
     39         <li><a href="#keyboard_shortcuts_helper">Keyboard Shortcuts Helper</a></li>
     40         <li><a href="#sustained_performance_api">Sustained Performance API</a></li>
     41         <li><a href="#vr">Dukungan VR</a></li>
     42         <li><a href="#print_svc">Penyempurnaan Layanan Cetak</a></li>
     43         <li><a href="#virtual_files">File Maya</a></li>
     44         <li><a href="#framemetrics_api">FrameMetricsListener API</a></li>
     45       </ol>
     46 </div>
     47 </div>
     48 
     49 
     50 
     51 <p>Android N masih dalam pengembangan aktif, namun Anda bisa mencobanya
     52 sekarang sebagai bagian dari N Developer Preview. Bagian-bagian di bawah ini akan menyoroti sebagian dari
     53 fitur baru untuk pengembang. </p>
     54 
     55 <p>
     56   Pastikan memeriksa <a href="{@docRoot}preview/behavior-changes.html">Perubahan Perilaku</a> untuk mengetahui selengkapnya tentang
     57   bagian-bagian perubahan platform yang bisa memengaruhi aplikasi Anda, lihatlah
     58   panduan pengembang untuk mengetahui selengkapnya tentang fitur-fitur utama, dan unduh <a href="{@docRoot}preview/setup-sdk.html#docs-dl">Referensi API</a> untuk mengetahui detail tentang
     59   API baru.
     60 </p>
     61 
     62 <h2 id="multi-window_support">Dukungan Multi-Jendela</h2>
     63 
     64 
     65 <p>Di Android N, kami memperkenalkan fitur multitasking baru dan yang banyak diminta
     66 ke dalam platform &mdash; dukungan multi-jendela. </p>
     67 
     68   <p>Pengguna sekarang bisa membuka dua aplikasi sekaligus di layar. </p>
     69   <ul>
     70   <li>Pada ponsel dan tablet
     71 yang menjalankan Android N, pengguna bisa menjalankan dua aplikasi secara berdampingan atau
     72 satu aplikasi di atas yang lain dalam mode layar terbagi. Pengguna bisa mengubah ukuran aplikasi dengan menyeret
     73 pembagi di antara keduanya. </li>
     74 
     75 <li>Pada perangkat Android TV, aplikasi bisa menempatkan dirinya sendiri dalam <a href="{@docRoot}preview/features/picture-in-picture.html">mode
     76 gambar-dalam-gambar</a>, sehingga aplikasi bisa terus menampilkan materi sementara pengguna menjelajahi atau
     77 berinteraksi dengan aplikasi lain.</li>
     78   </ul>
     79 
     80 <div class="col-4of10">
     81 <img src="{@docRoot}preview/images/mw-portrait.png" alt="" style="height:460px;padding-left:1em;" id="img-split-screen" />
     82 <p class="img-caption">
     83   <strong>Gambar 1.</strong> Aplikasi yang berjalan dalam mode layar terbagi.
     84 </p>
     85 
     86   </div>
     87 
     88 <p>Khususnya pada tablet dan perangkat yang berlayar lebih besar lainnya, dukungan multi-jendela
     89 memberi Anda cara baru untuk memikat pengguna. Anda bahkan bisa mengaktifkan fitur seret-dan-lepas di
     90 aplikasi untuk memudahkan pengguna menyeret materi ke dan dari aplikasi &mdash; cara bagus
     91 untuk menyempurnakan pengalaman pengguna Anda. </p>
     92 
     93 <p>Tidak sulit menambahkan dukungan multi-jendela ke aplikasi Anda dan mengonfigurasi cara
     94 menangani tampilan multi-jendela. Misalnya, Anda bisa menetapkan dimensi
     95 minimum yang diizinkan aktivitas, sehingga mencegah pengguna mengubah ukuran aktivitas di bawah
     96 ukuran itu. Anda juga bisa menonaktifkan tampilan multi-jendela untuk aplikasi Anda, yang
     97   akan memastikan sistem hanya menampilkan aplikasi dalam mode layar penuh.</p>
     98 
     99 <p>
    100   Untuk informasi selengkapnya, lihat dokumentasi pengembang <a href="{@docRoot}preview/features/multi-window.html">Dukungan Multi-Jendela</a>.
    101 
    102 </p>
    103 
    104 <h2 id="notification_enhancements">Penyempurnaan Pemberitahuan</h2>
    105 
    106 <p>Di Android N kami telah mengubah desain pemberitahuan agar lebih mudah dan lebih cepat
    107 digunakan. Beberapa perubahan tersebut antara lain:</p>
    108 
    109 <ul>
    110   <li>
    111     <strong>Pembaruan template</strong>: Kami telah memperbarui template pemberitahuan untuk
    112     lebih menekankan citra pahlawan dan avatar. Pengembang akan dapat
    113    memanfaatkan template baru dengan penyesuaian kode yang minimal.
    114   </li>
    115 
    116   <li>
    117     <strong>Penyesuaian gaya pesan</strong>: Anda bisa menyesuaikan lebih banyak
    118     label antarmuka pengguna yang berkaitan dengan pemberitahuan Anda menggunakan kelas
    119     <code>MessageStyle</code>. Anda bisa mengonfigurasi pesan, judul percakapan,
    120     dan tampilan materi.
    121   </li>
    122 
    123   <li>
    124     <strong>Bundel pemberitahuan</strong>: Sistem bisa mengelompokkan pesan,
    125     misalnya menurut topik pesan, dan menampilkan kelompok pesan tersebut. Seorang pengguna bisa
    126    bertindak, misalnya Tutup atau Arsipkan, atas pesan yang ditampilkan. Jika Anda sudah
    127     mengimplementasikan pemberitahuan untuk Android Wear, Anda akan terbiasa dengan
    128     model ini.
    129   </li>
    130 
    131   <li>
    132     <strong>Balasan Langsung</strong>: Untuk aplikasi komunikasi real-time, sistem
    133     Android mendukung balasan inline sehingga pengguna bisa dengan cepat membalas
    134     SMS atau pesan teks secara langsung dari dalam antarmuka pemberitahuan.
    135   </li>
    136 
    137   <li>
    138     <strong>Tampilan khusus</strong>: Dua API baru memungkinkan Anda memanfaatkan dekorasi sistem,
    139     misalnya header pemberitahuan dan tindakan, saat menggunakan tampilan
    140     khusus dalam pemberitahuan.
    141   </li>
    142 </ul>
    143 
    144 <div class="col-4of12">
    145   <img src="{@docRoot}preview/images/notifications-1.png" alt="" style="padding:.5em;max-width:226px">
    146 </div>
    147 
    148 <div class="col-4of12">
    149   <img src="{@docRoot}preview/images/notifications-3.png" alt="" style="padding:.5em;max-width:226px">
    150 </div>
    151 
    152 <div class="col-4of12">
    153   <img src="{@docRoot}preview/images/notifications-2.png" alt="" style="padding:.5em;max-width:226px">
    154 </div>
    155 
    156 
    157 <p class="img-caption">
    158   <strong>Gambar 2.</strong> Bundel pemberitahuan dan balasan langsung.
    159 </p>
    160 
    161 <p>Untuk mengetahui cara mengimplementasikan fitur-fitur
    162   baru ini, lihat panduan <a href="{@docRoot}preview/features/notification-updates.html">Pemberitahuan</a>.
    163 </p>
    164 
    165 
    166 
    167 <h2 id="jit_aot">Kompilasi JIT/AOT yang dipandu profil</h2>
    168 
    169 <p>Di Android N, kami telah menambahkan compiler Just in Time (JIT) dengan pembuatan profil kode ke
    170 ART, yang memungkinkannya terus meningkatkan kinerja aplikasi Android saat
    171 dijalankan. Compiler JIT melengkapi compiler Ahead of Time (AOT) pada ART
    172 dan membantu memperbaiki kinerja waktu proses, menghemat ruang penyimpanan, dan mempercepat
    173 pembaruan aplikasi serta pembaruan sistem.</p>
    174 
    175 <p>Kompilasi yang dipandu profil memungkinkan ART mengelola kompilasi AOT/JIT untuk setiap aplikasi
    176 sesuai dengan penggunaan sebenarnya, serta kondisi pada perangkat. Misalnya
    177 ,ART menyimpan profil setiap metode terbaik aplikasi dan bisa melakukan kompilasi lebih awal
    178 serta menyimpan sementara metode-metode tersebut di cache untuk mendapatkan kinerja terbaik. Hal ini membuat bagian lain dari aplikasi
    179 dibiarkan tidak dikompilasi hingga benar-benar digunakan.</p>
    180 
    181 <p>Di samping meningkatkan kinerja bagian-bagian penting aplikasi, kompilasi yang dipandu profil
    182 membantu mengurangi footprint RAM keseluruhan aplikasi, termasuk biner
    183 terkait. Fitur ini terutama penting pada perangkat dengan memori minim.</p>
    184 
    185 <p>ART mengelola kompilasi yang dipandu profil dengan cara yang meminimalkan dampak terhadap
    186 baterai perangkat. ART melakukan prakompilasi hanya bila perangkat sedang diam dan
    187 mengisi daya, sehingga menghemat waktu dan baterai dengan melakukan pekerjaan tersebut di awal.</p>
    188 
    189 <h2 id="quick_path_to_app_install">Jalur Cepat untuk Pasang Aplikasi</h2>
    190 
    191 <p>Salah satu manfaat paling nyata dari compiler JIT pada ART adalah kecepatan
    192 pemasnagan aplikasi dan pembaruan sistem. Bahkan aplikasi besar yang membutuhkan beberapa menit untuk
    193 dioptimalkan dan dipasang di Android 6.0 sekarang bisa dipasang hanya dalam hitungan
    194 detik. Pembaruan sistem juga lebih cepat, karena tidak ada lagi langkah optimalisasi. </p>
    195 
    196 <h2 id="doze_on_the_go">Istirahatkan Kapan Saja...</h2>
    197 
    198 <p>Android 6.0 memperkenalkan Istirahatkan, yaitu mode sistem yang menghemat baterai dengan menangguhkan
    199 aktivitas CPU dan jaringan di aplikasi bila perangkat sedang diam, misalnya saat
    200 diletakkan di atas meja atau dalam laci. </p>
    201 
    202 <p>Sekarang di Android N, Istirahatkan selangkah lebih maju dalam menghemat baterai kapan saja.
    203 Setiap kali layar mati dalam jangka waktu tertentu dan perangkat tidak terhubung ke sumber daya,
    204 Istirahatkan akan menerapkan subset pembatasan umum CPU dan jaringan pada aplikasi.
    205 Artinya pengguna bisa menghemat daya baterai meskipun perangkat dibawa di dalam
    206 tasnya.</p>
    207 
    208 
    209 <img src="/preview/images/doze-diagram-1.png" alt="" id="figure1" />
    210 <p class="img-caption">
    211   <strong>Gambar 3.</strong> Istirahatkan sekarang menerapkan
    212   pembatasan untuk meningkatkan daya tahan baterai bahkan saat perangkat sedang tidak diam.
    213 </p>
    214 
    215 
    216 <p>Tidak lama setelah layar dimatikan saat perangkat menggunakan daya baterai, Istirahatkan
    217 akan membatasi akses jaringan serta menangguhkan pekerjaan dan sinkronisasi. Selama jeda
    218 pemeliharaan, aplikasi diizinkan mengakses jaringan dan menjalankan semua
    219 pekerjaan/sinkronisasi yang ditangguhkan. Menyalakan layar atau mencolokkan perangkat akan mengeluarkan
    220 perangkat dari Istirahatkan.</p>
    221 
    222 <p>Bila perangkat dalam kondisi diam lagi, dengan layar mati dan menggunakan daya baterai selama
    223 jangka waktu tertentu, Istirahatkan akan menerapkan pembatasan CPU dan jaringan pada {@link
    224 android.os.PowerManager.WakeLock}, alarm {@link android.app.AlarmManager}, dan
    225 pemindaian GPS/Wi-Fi.</p>
    226 
    227 <p>Praktik terbaik untuk menyesuaikan aplikasi Anda dengan Istirahatkan adalah sama, baik
    228 perangkat sedang bergerak maupun diam, jadi jika Anda sudah memperbarui aplikasi untuk
    229 menjalankan Istirahatkan dengan lancar, berarti Anda sudah siap. Jika belum, mulailah <a href="{@docRoot}training/monitoring-device-state/doze-standby.html#assessing_your_app">menyesuaikan
    230 aplikasi Anda dengan Istirahatkan</a> sekarang juga.</p>
    231 
    232 <h2 id="background_optimizations">Project Svelte: Optimalisasi Latar Belakang</h2>
    233 
    234 <p>Project Svelte merupakan upaya berkelanjutan untuk meminimalkan penggunaan RAM oleh sistem dan aplikasi
    235 di semua jenis perangkat Android dalam ekosistem. Di Android N, Project
    236 Svelte berfokus pada optimalisasi cara aplikasi berjalan di latar belakang. </p>
    237 
    238 <p>Proses latar belakang merupakan bagian terpenting dari sebagian besar aplikasi. Bila ditangani dengan benar, proses
    239 ini bisa memberikan pengalaman pengguna yang mengagumkan &mdash; segera, cepat, dan sesuai konteks.
    240 Bila tidak ditangani dengan benar, proses latar belakang bisa menguras RAM (dan
    241 baterai) yang sebenarnya tidak perlu serta memengaruhi kinerja sistem untuk aplikasi lain. </p>
    242 
    243 <p>Sejak Android 5.0, {@link android.app.job.JobScheduler} telah menjadi
    244 cara yang disukai untuk melakukan pekerjaan latar belakang dengan cara yang baik
    245 bagi pengguna. Aplikasi bisa menjadwalkan pekerjaan sekaligus memungkinkan sistem mengoptimalkan berdasarkan
    246 kondisi memori, daya, dan konektivitas. JobScheduler menawarkan kontrol serta
    247 kemudahan, dan kami ingin semua aplikasi menggunakannya. </p>
    248 
    249 <p>
    250   Opsi baik lainnya adalah <a href="https://developers.google.com/android/reference/com/google/android/gms/gcm/GcmNetworkManager">
    251   <code>GCMNetworkManager</code></a>, bagian dari Google Play Services, yang
    252   menawarkan penjadwalan pekerjaan serupa dengan kompatibilitas pada semua versi lawas
    253   Android.
    254 </p>
    255 
    256 <p>Kami terus memperluas <code>JobScheduler</code> dan
    257 <code>GCMNetworkManager</code> untuk memenuhi lebih banyak
    258 kasus penggunaan Anda &mdash; misalnya, di Android N Anda sekarang bisa menjadwalkan pekerjaan
    259 latar belakang berdasarkan perubahan di Content Providers. Pada saat yang sama kami mulai
    260 menghilangkan beberapa pola lama yang bisa mengurangi kinerja sistem,
    261 terutama pada perangkat yang minim memori.</p>
    262 
    263 <p>Di Android N kami membuang tiga siaran implisit yang umum digunakan &mdash;
    264  {@link android.net.ConnectivityManager#CONNECTIVITY_ACTION}, {@link
    265   android.hardware.Camera#ACTION_NEW_PICTURE}, dan {@link
    266   android.hardware.Camera#ACTION_NEW_VIDEO} &mdash; karena ketiganya bisa mengaktifkan
    267 proses latar belakang pada beberapa aplikasi sekaligus serta menguras memori dan baterai. Jika
    268 aplikasi Anda menerimanya, manfaatkan N Developer Preview untuk
    269   beralih ke <code>JobScheduler</code> dan API terkait sebagai gantinya. </p>
    270 
    271 <p>
    272   Lihat dokumentasi <a href="{@docRoot}preview/features/background-optimization.html">Optimalisasi
    273   Latar Belakang</a> untuk mengetahui detailnya.
    274 </p>
    275 
    276 
    277 <h2 id="data_saver">Data Saver</h2>
    278 
    279 <div class="col-5of12" style="margin-right:1.5em;">
    280 <img src="{@docRoot}preview/images/datasaver.png" style="border:2px solid #ddd">
    281 
    282 <p class="img-caption" style="padding-right:2em;">
    283   <strong>Gambar 4.</strong> Data Saver di Settings.
    284 </p>
    285   </div>
    286 
    287 <p>Selama penggunaan perangkat seluler, biaya paket data seluler biasanya
    288   melebihi harga perangkat itu sendiri. Bagi banyak pengguna, data seluler adalah sumber daya
    289 mahal yang ingin mereka hemat. </p>
    290 
    291 <p>Android N memperkenalkan mode Data Saver, layanan sistem baru yang mengurangi
    292 penggunaan data seluler oleh aplikasi, baik saat roaming, mendekati akhir siklus tagihan,
    293 atau saat menggunakan paket data prabayar yang kecil. Data Saver memberi pengguna kemampuan mengontrol cara aplikasi
    294 menggunakan data seluler dan memungkinkan pengembang memberikan layanan yang lebih efisien bila Data
    295 Saver aktif. </p>
    296 
    297 <p>Bila pengguna mengaktifkan Data Saver di <strong>Settings</strong> dan perangkat
    298 dalam jaringan berkuota, sistem akan memblokir penggunaan data latar belakang dan memberi tahu aplikasi
    299 untuk menghemat penggunaan data latar depan &mdash; misalnya dengan membatasi
    300 kecepatan bit untuk streaming, mengurangi kualitas gambar, menangguhkan precaching optimistik,
    301 dan seterusnya. Pengguna bisa memasukkan aplikasi tertentu ke daftar putih untuk memungkinkan penggunaan data berkuota
    302 bila Data Saver diaktifkan.</p>
    303 
    304 <p>Android N memperluas {@link android.net.ConnectivityManager} untuk menyediakan cara pada aplikasi
    305 untuk <a href="{@docRoot}preview/features/data-saver.html#status">mengambil
    306 preferensi Data Saver pengguna</a> dan <a href="{@docRoot}preview/features/data-saver.html#monitor-changes">memantau
    307 perubahan preferensi</a>. Semua aplikasi harus memeriksa apakah pengguna telah mengaktifkan Data
    308 Saver dan berusaha membatasi penggunaan data latar belakang dan latar depan.</p>
    309 
    310 
    311 <h2 id="vulkan">Vulkan API</h2>
    312 
    313 <p>
    314   Android N mengintegrasikan <a href="http://www.khronos.org/vulkan" class="external-link">Vulkan</a>, sebuah API rendering 3D baru, ke dalam platform. Seperti
    315   <a href="https://www.khronos.org/opengles/" class="external-link">OpenGL
    316   ES</a>, Vulkan merupakan standar terbuka untuk grafik 3D dan rendering yang dikelola
    317   oleh Khronos Group.
    318 </p>
    319 
    320 <p>
    321   Vulkan didesain dari nol untuk meminimalkan overhead CPU dalam driver,
    322   dan memungkinkan aplikasi Anda mengontrol operasi GPU lebih langsung. Vulkan
    323   juga memungkinkan paralelisasi yang lebih baik dengan mengizinkan beberapa thread menjalankan
    324   pekerjaan seperti pembuatan buffer perintah sekaligus.
    325 </p>
    326 
    327 <p>
    328   Pustaka dan alat pengembangan Vulkan telah dimasukkan ke dalam Android NDK. Ini
    329   berisi:
    330 </p>
    331 
    332 <ul>
    333   <li>Header
    334   </li>
    335 
    336   <li>Layer validasi (pustaka debug)
    337   </li>
    338 
    339   <li>SPIR-V shader compiler
    340   </li>
    341 
    342   <li>Pustaka kompilasi shader waktu proses SPIR-V
    343   </li>
    344 </ul>
    345 
    346 <p>
    347   Vulkan hanya tersedia untuk aplikasi pada perangkat dengan perangkat keras yang mendukung Vulkan,
    348   seperti Nexus 5X, Nexus 6P, dan Nexus Player. Kami bekerja sama erat dengan mitra
    349   agar secepatnya makin banyak perangkat yang dilengkapi Vulkan.
    350 </p>
    351 
    352 <p>
    353   Untuk informasi selengkapnya, lihat <a href="{@docRoot}ndk/guides/graphics/index.html">dokumentasi API</a>.
    354 </p>
    355 
    356 <h2 id="tile_api">Quick Settings Tile API</h2>
    357 
    358 
    359 <div style="float:right;max-width:320px">
    360 <img src="{@docRoot}preview/images/quicksettings.png" style="padding-left:1.5em;">
    361 
    362 <p class="img-caption" style="padding-left:2em;">
    363   <strong>Gambar 5.</strong> Quick Settings Tile dalam bayangan pemberitahuan.
    364 </p>
    365 
    366 
    367   </div><p>Quick Settings adalah cara populer dan mudah untuk mengekspos setelan dan tindakan utama,
    368 langsung dari bayangan pemberitahuan. Di Android N, kami telah memperluas lingkup
    369 Quick Settings untuk membuatnya lebih berguna dan praktis lagi. </p>
    370 
    371 <p>Kami telah menambahkan ruang lebih banyak untuk petak Quick Settings tambahan, yang bisa
    372 diakses pengguna di semua bagian area tampilan halaman bernomor dengan mengusap ke kiri atau kanan. Kami juga memberi pengguna
    373 kontrol untuk mengatur letak dan petak Quick Settings apa yang akan
    374 ditampilkan &mdash; pengguna bisa menambahkan atau memindahkan petak dengan menyeret dan melepasnya. </p>
    375 
    376 <p>Bagi pengembang, Android N juga menambahkan API baru yang memungkinkan Anda mendefinisikan
    377   petak Quick Settings untuk memberi akses mudah kepada pengguna ke berbagai kontrol dan tindakan utama dalam aplikasi Anda.</p>
    378 
    379 <p>
    380   Petak Quick Settings dicadangkan untuk kontrol atau tindakan yang
    381   mendesak atau sering digunakan, dan tidak boleh digunakan sebagai pintasan untuk
    382  membuka aplikasi.
    383 </p>
    384 
    385 <p>
    386   Setelah mendefinisikan petak, Anda bisa menyediakannya kepada pengguna, yang bisa mereka tambahkan
    387   ke Quick Settings cukup dengan seret dan lepas.
    388 </p>
    389 
    390 <p>
    391   Untuk informasi tentang pembuatan petak aplikasi, lihat dokumentasi untuk
    392   <code>android.service.quicksettings.Tile</code> dalam <a href="{@docRoot}preview/setup-sdk.html#docs-dl">Referensi API</a> yang bisa diunduh.
    393 </p>
    394 
    395 
    396 
    397 <h2 id="number-blocking">Pemblokiran Nomor</h2>
    398 
    399 <p>Android N sekarang mendukung pemblokiran nomor di platform dan menyediakan
    400 API kerangka kerja agar penyedia layanan bisa mengelola daftar nomor blokir. Aplikasi SMS
    401 default, aplikasi telepon default, dan aplikasi operator bisa membaca dari dan
    402 menulis ke daftar nomor blokir. Daftar ini tidak dapat diakses oleh aplikasi lain.</p>
    403 
    404 <p>Dengan membuat pemblokiran nomor sebagai fitur standar pada platformnya, Android menyediakan
    405 cara konsisten bagi aplikasi untuk mendukung pemblokiran nomor di berbagai
    406 perangkat. Manfaat lain yang bisa diperoleh aplikasi antara lain:</p>
    407 
    408 <ul>
    409   <li> Nomor yang diblokir untuk panggilan juga akan diblokir untuk SMS
    410   <li> Nomor yang diblokir tetap disimpan saat pengaturan ulang dan pada berbagai perangkat melalui fitur Backup &amp;
    411 Restore.
    412   <li> Beberapa aplikasi sekaligus bisa menggunakan daftar nomor blokir yang sama.
    413 </ul>
    414 
    415 <p>Selain itu, dengan integrasi aplikasi operator melalui Android berarti operator bisa
    416 membaca daftar nomor blokir pada perangkat dan melakukan pemblokiran di sisi layanan
    417 bagi pengguna tersebut untuk menghentikan panggilan dan SMS yang tidak diinginkan
    418 agar tidak sampai ke pengguna lewat media apa pun, misalnya VOIP-endpoint atau meneruskan panggilan telepon.</p>
    419 
    420 <p>
    421   Untuk informasi selengkapnya, lihat <code>android.provider.BlockedNumberContract</code>
    422   dalam <a href="{@docRoot}preview/setup-sdk.html#docs-dl">Referensi
    423   API</a> yang bisa diunduh.
    424 </p>
    425 
    426 <h2 id="call_screening">Penyaringan Panggilan</h2>
    427 
    428 <p>
    429   Android N memungkinkan aplikasi telepon default untuk menyaring panggilan masuk. Aplikasi
    430   telepon melakukannya dengan mengimplementasikan <code>CallScreeningService</code> baru,
    431   yang memungkinkan aplikasi telepon untuk melakukan sejumlah tindakan berdasarkan
    432   {@link android.telecom.Call.Details Call.Details} panggilan masuk, misalnya:
    433 </p>
    434 
    435 <ul>
    436   <li> Menolak panggilan masuk
    437   <li> Tidak mengizinkan panggilan tersebut disimpan ke log panggilan
    438   <li> Tidak menampilkan pemberitahuan untuk panggilan tersebut kepada pengguna
    439 </ul>
    440 
    441 <p>
    442   Untuk informasi selengkapnya, lihat <code>android.telecom.CallScreeningService</code>
    443   dalam <a href="{@docRoot}preview/setup-sdk.html#docs-dl">Referensi
    444   API</a> yang bisa diunduh.
    445 </p>
    446 
    447 
    448 <h2 id="multi-locale_languages">Dukungan Multilokal, Lebih Banyak Bahasa yang Didukung</h2>
    449 
    450 
    451 <p>Android N kini memungkinkan pengguna memilih <strong>banyak lokal</strong> di Settings,
    452 untuk mendukung kasus penggunaan dwibahasa dengan lebih baik. Aplikasi bisa menggunakan
    453 API baru untuk mendapatkan lokal pilihan pengguna kemudian menawarkan pengalaman pengguna
    454 yang lebih canggih untuk pengguna multilokal &mdash; seperti menampilkan hasil telusur dalam
    455 banyak bahasa dan tidak menawarkan untuk menerjemahkan halaman web dalam bahasa
    456 yang sudah diketahui pengguna.</p>
    457 
    458 <p>Bersama dukungan multilokal, Android N juga memperluas ragam bahasa
    459 yang tersedia untuk pengguna. Masing-masing ditawarkan lebih dari 25 varian untuk bahasa yang umum
    460 digunakan seperti Inggris, Spanyol, Prancis, dan Arab. Juga ditambahkan dukungan
    461 parsial untuk lebih dari 100 bahasa baru.</p>
    462 
    463 <p>Aplikasi bisa mendapatkan daftar lokal yang disetel oleh pengguna dengan memanggil
    464 <code>LocaleList.GetDefault()</code>.  Untuk mendukung jumlah lokal yang diperluas, Android N sedang
    465  mengubah cara mengatasi masalah sumber daya. Pastikan Anda menguji dan memverifikasi bahwa aplikasi Anda
    466 berfungsi seperti yang diharapkan dengan logika resolusi sumber daya baru.</p>
    467 
    468 <p>Untuk mengetahui tentang perilaku resolusi sumber daya baru dan praktik terbaik yang
    469 harus Anda ikuti, lihat <a href="{@docRoot}preview/features/multilingual-support.html">Dukungan Multibahasa</a>.</p>
    470 
    471 
    472 <h2 id="emoji">Emoji Baru</h2>
    473 
    474 <p>
    475   Android N memperkenalkan emoji tambahan dan fitur terkait emoji termasuk
    476   emoji warna kulit dan dukungan untuk pemilih
    477   variasi. Jika aplikasi Anda mendukung emoji,
    478   ikuti panduan berikut untuk memanfaatkan fitur terkait emoji ini.
    479 </p>
    480 
    481 <ul>
    482   <li>
    483     <strong>Periksa apakah perangkat berisi emoji sebelum memasukannya.</strong>
    484     Untuk memeriksa emoji mana yang terdapat di
    485     font sistem, gunakan metode {@link android.graphics.Paint#hasGlyph(String)}.
    486   </li>
    487   <li>
    488     <strong>Periksa apakah emoji mendukung pemilih variasi.</strong>
    489     Pemilih variasi memungkinkan Anda
    490     menampilkan emoji tertentu berwarna atau hitam-putih.
    491     Pada perangkat seluler, aplikasi akan menghadirkan emoji berwarna daripada hitam-putih. Akan tetapi,
    492     jika aplikasi Anda menampilkan emoji sebaris dengan teks, maka harus menggunakan variasi hitam-putih.
    493     Untuk menentukan apakah sebuah emoji memiliki variasi, gunakan pemilih variasi.
    494     Untuk daftar lengkap dari karakter dengan variasinya, tinjaulah bagian
    495     <em>rangkaian variasi emoji</em> pada
    496     <a class="external-link" href="http://www.unicode.org/Public/9.0.0/ucd/StandardizedVariants-9.0.0d1.txt">
    497       dokumentasi Unicode mengenai variasi</a>.
    498   </li>
    499   <li>
    500     <strong>Periksa apakah emoji mendukung warna kulit.</strong> Android N memungkinkan pengguna memodifikasi
    501     warna kulit emoji yang dirender sesuai dengan preferensi mereka. Aplikasi keyboard harus menyediakan indikasi
    502     visual untuk emoji yang memiliki beberapa warna kulit dan harus memungkinkan pengguna
    503     memilih warna kulit yang mereka sukai. Untuk menentukan apakah emoji sistem memiliki
    504     modifier warna kulit, gunakan metode {@link android.graphics.Paint#hasGlyph(String)}.
    505  Anda bisa menentukan emoji mana yang menggunakan warna kulit dengan membaca
    506     <a class="external-link" href="http://unicode.org/emoji/charts/full-emoji-list.html">
    507      dokumentasi Unicode</a>.
    508   </li>
    509 </ul>
    510 
    511 
    512 <h2 id="icu4">ICU4J API di Android</h2>
    513 
    514 <p>
    515   Android N kini menawarkan subset <a href="http://site.icu-project.org/">ICU4J</a> API dalam kerangka kerja Android pada paket
    516   <code>android.icu</code>. Migrasi mudah, dan biasanya hanya perlu
    517   mengubah dari ruang nama <code>com.java.icu</code> ke
    518   <code>android.icu</code>. Jika Anda sudah menggunakan bundel ICU4J dalam aplikasi,
    519   maka beralih ke <code>android.icu</code> API yang disediakan dalam kerangka kerja
    520   Android bisa menghasilkan penghematan besar dalam ukuran APK.
    521 </p>
    522 
    523 <p>
    524   Untuk mengetahui selengkapnya tentang Android ICU4J API, lihat <a href="{@docRoot}preview/features/icu4j-framework.html">Dukungan ICU4J</a>.
    525 </p>
    526 
    527 
    528 
    529 <h2 id="gles_32">OpenGL&trade; ES 3.2 API</h2>
    530 
    531 <p>Android N menambahkan antarmuka kerangka kerja dan dukungan platform untuk OpenGL ES 3.2, termasuk:</p>
    532 
    533 <ul>
    534   <li> Semua ekstensi dari <a class="external-link" href="https://www.khronos.org/registry/gles/extensions/ANDROID/ANDROID_extension_pack_es31a.txt">
    535 Android Extension Pack</a></a> (AEP) kecuali untuk <code>EXT_texture_sRGB_decode</code>.
    536   <li> Floating-point framebuffer untuk HDR dan shading yang ditangguhkan.
    537   <li> Panggilan draw BaseVertex agar batching dan streaming jadi lebih baik.
    538   <li> Kontrol akses buffer yang tangguh untuk mengurangi overhead WebGL.
    539 </ul>
    540 
    541 <p>API kerangka kerja untuk OpenGL ES 3.2 di Android N dilengkapi dengan kelas
    542   <code>GLES32</code>. Saat menggunakan OpenGL ES 3.2, pastikan
    543 mendeklarasikan persyaratan dalam file manifes Anda, dengan tag <code>&lt;uses-feature&gt;</code> dan
    544 atribut <code>android:glEsVersion</code>. </p>
    545 
    546 <p>Untuk informasi tentang menggunakan OpenGL ES, termasuk cara memeriksa versi
    547 OpenGL ES yang didukung perangkat saat waktu proses, lihat <a href="{@docRoot}guide/topics/graphics/opengl.html">Panduan OpenGL ES API</a>.</p>
    548 
    549 
    550 <h2 id="android_tv_recording">Perekaman Android TV</h2>
    551 
    552 <p>Android N menambahkan kemampuan untuk merekam dan memutar kembali materi dari layanan masukan
    553 Android TV melalui API perekaman baru.  Karena dibangun dengan API perekaman yang sudah
    554 ada, layanan masukan TV bisa mengontrol data saluran apa yang bisa direkam, cara menyimpan
    555 sesi rekaman, dan mengelola interaksi pengguna dengan materi rekaman. </p>
    556 
    557 <p>Untuk informasi selengkapnya, lihat <a href="{@docRoot}preview/features/tv-recording-api.html">API Perekaman Android TV</a>.</p>
    558 
    559 
    560 <h2 id="android_for_work">Android for Work</h2>
    561 
    562 <p>Android for Work menambahkan berbagai fitur dan API baru untuk perangkat yang menjalankan Android N.
    563 Beberapa fitur unggulannya ada di bawah ini &mdash; untuk mengetahui daftar lengkap perubahannya, lihat
    564 <a href="{@docRoot}preview/features/afw.html">Pembaruan Android for Work</a>.</p>
    565 
    566 <h3 id="work_profile_security_challenge">Pertanyaan Keamanan Profil Kerja </h3>
    567 
    568 <p>
    569   Pemilik profil yang menargetkan N SDK
    570   bisa menetapkan pertanyaan keamanan terpisah untuk aplikasi yang berjalan di
    571   profil kerja. Pertanyaan kerja ditampilkan bila pengguna mencoba membuka
    572   aplikasi kerja apa pun. Jawaban pertanyaan keamanan yang benar akan membuka
    573   profil kerja dan mendekripsinya jika diperlukan. Untuk pemilik profil,
    574   <code>ACTION_SET_NEW_PASSWORD</code> akan meminta pengguna untuk menetapkan pertanyaan
    575   kerja, dan <code>ACTION_SET_NEW_PARENT_PROFILE_PASSWORD</code> meminta
    576   pengguna menyetel kunci perangkat.
    577 </p>
    578 
    579 <p>
    580   Pemilik profil bisa menyetel kebijakan kode sandi untuk pertanyaan kerja
    581   (seperti berapa lama seharusnya PIN, atau apakah sidik jari bisa digunakan
    582   untuk membuka kunci profil) menggunakan <code>setPasswordQuality()</code>,
    583   <code>setPasswordMinimumLength()</code> dan metode terkait. Pemilik profil
    584   juga bisa menyetel kunci perangkat, menggunakan instance <code>DevicePolicyManager</code>
    585   yang dikembalikan oleh metode <code>getParentProfileInstance()</code>  baru.
    586   Selain itu, pemilik profil bisa menyesuaikan layar kredensial untuk
    587  pertanyaan kerja menggunakan metode baru <code>setOrganizationColor()</code> dan
    588   <code>setOrganizationName()</code>.
    589 </p>
    590 <h3 id="turn_off_work">Menonaktifkan pekerjaan </h3>
    591 
    592 <p>Pada perangkat dengan profil kerja, pengguna bisa beralih mode kerja. Bila mode
    593 kerja dinonaktifkan, profil yang dikelola akan dinonaktifkan untuk sementara, yang akan menonaktifkan aplikasi
    594 profil kerja, sinkronisasi latar belakang, dan pemberitahuan. Termasuk aplikasi pemilik
    595 profil. Bila profil kerja dinonaktifkan, sistem akan menampilkan ikon status
    596 tetap untuk mengingatkan pengguna bahwa mereka tidak bisa meluncurkan aplikasi kerja. Peluncur
    597 menunjukkan bahwa aplikasi kerja dan widget tidak bisa diakses. </p>
    598 
    599 <h3 id="always_on_vpn">Always-On VPN </h3>
    600 
    601 <p>Pemilik perangkat dan pemilik profil bisa memastikan bahwa aplikasi kerja selalu menghubungkan
    602 melalui VPN yang ditetapkan. Sistem secara otomatis akan memulai VPN itu setelah booting
    603 perangkat.</p>
    604 
    605 <p>
    606   Metode <code>DevicePolicyManager</code> baru adalah
    607   <code>setAlwaysOnVpnPackage()</code> dan
    608   <code>getAlwaysOnVpnPackage()</code>.
    609 </p>
    610 
    611 <p>Karena layanan VPN bisa diikat langsung oleh sistem tanpa interaksi
    612 aplikasi, klien VPN perlu menangani titik masuk baru untuk Always-On VPN. Seperti
    613 sebelumnya, layanan ditunjukkan ke sistem melalui
    614 tindakan pencocokan filter intent <code>android.net.VpnService</code>. </p>
    615 
    616 <p>
    617   Pengguna bisa secara manual menyetel klien Always-On VPN yang mengimplementasikan
    618   metode <code>VPNService</code> dalam pengguna utama dengan menggunakan
    619   <strong>Settings&gt;More&gt;Vpn</strong>.
    620 </p>
    621 
    622 <h3 id="custom_provisioning">Penyediaan yang disesuaikan</h3>
    623 
    624 <p>
    625   Aplikasi bisa menyesuaikan alur penyediaan pemilik profil dan pemilik perangkat
    626   dengan warna dan logo perusahaan.
    627   <code>DevicePolicyManager.EXTRA_PROVISIONING_MAIN_COLOR</code> menyesuaikan
    628   warna alur. <code>DevicePolicyManager.EXTRA_PROVISIONING_LOGO_URI</code>
    629   menyesuaikan alur dengan logo perusahaan.
    630 </p>
    631 
    632 <h2 id="accessibility_enhancements">Penyempurnaan Aksesibilitas</h2>
    633 
    634 <p>Android N saat ini menawarkan Vision Settings langsung di layar Sambutan untuk
    635 persiapan perangkat baru. Ini sangat memudahkan pengguna untuk menemukan dan mengonfigurasi
    636 fitur aksesibilitas pada perangkat mereka, termasuk isyarat perbesaran, ukuran
    637 font, ukuran layar, dan TalkBack. </p>
    638 
    639 <p>Dengan fitur aksesibilitas yang penempatannya semakin jelas, pengguna Anda
    640 kemungkinan besar akan mencoba aplikasi dengan fitur-fitur yang diaktifkan itu. Pastikan Anda menguji aplikasi
    641 lebih dini dengan mengaktifkan dahulu setelan ini. Anda bisa mengaktifkannya dari Settings &gt;
    642 Accessibility.</p>
    643 
    644 <p>Di Android N, layanan aksesibilitas sekarang bisa membantu pengguna yang mengalami gangguan
    645 motorik untuk menyentuh layar. API baru memungkinkan membangun layanan dengan
    646 fitur-fitur seperti pelacakan wajah, pelacakan mata, pemindaian titik, dan seterusnya, untuk
    647 memenuhi kebutuhan para pengguna tersebut.</p>
    648 
    649 <p>Untuk informasi selengkapnya, lihat <code>android.accessibilityservice.GestureDescription</code>
    650  dalam <a href="{@docRoot}preview/setup-sdk.html#docs-dl">Referensi  API</a> yang bisa diunduh.</p>
    651 
    652 
    653 <h2 id="direct_boot">Direct Boot</h2>
    654 
    655 <p>Direct Boot memperbaiki waktu startup perangkat dan memungkinkan aplikasi
    656 yang telah didaftarkan memiliki fungsionalitas terbatas bahkan setelah boot ulang tak terduga.
    657 Misalnya, jika perangkat yang dienkripsi melakukan boot ulang selagi pengguna tidur,
    658 alarm terdaftar, pesan dan panggilan masuk sekarang bisa terus memberi tahu
    659 pengguna seperti biasa. Ini juga berarti layanan aksesibilitas bisa
    660   segera tersedia setelah restart.</p>
    661 
    662 <p>Direct Boot memanfaatkan enkripsi berbasis file di Android N
    663 untuk mengaktifkan kebijakan enkripsi yang telah disesuaikan bagi sistem dan data aplikasi.
    664 Sistem akan menggunakan penyimpanan yang dienkripsi dengan perangkat untuk data sistem terpilih dan data
    665 aplikasi yang terdaftar secara eksplisit. Secara default, penyimpanan yang dienkripsi dengan kredensial digunakan untuk semua
    666   data sistem lainnya, data pengguna, aplikasi, dan data aplikasi. </p>
    667 
    668 <p>Saat booting, sistem dimulai dalam mode terbatas dengan akses
    669 ke data yang dienkripsi dengan perangkat saja, dan tanpa akses umum ke aplikasi atau data.
    670 Jika Anda memiliki komponen yang ingin Anda jalankan dalam mode ini, Anda bisa mendaftarkannya
    671 dengan menyetel flag dalam manifes. Setelah restart, sistem akan mengaktifkan
    672 komponen terdaftar dengan menyiarkan intent <code>LOCKED_BOOT_COMPLETED</code>.
    673  Sistem akan memastikan data aplikasi yang dienkripsi dengan perangkat tersedia
    674 sebelum membuka kunci. Semua data lainnya tidak tersedia sebelum Pengguna mengonfirmasi
    675   kredensial layar kunci mereka untuk mendekripsinya. </p>
    676 
    677 Untuk informasi selengkapnya, lihat <a href="{@docRoot}preview/features/direct-boot.html">Direct Boot</a>.</p>
    678 </p>
    679 
    680 
    681 <h2 id="key_attestation">Key Attestation</h2>
    682 
    683 <p>Keystore yang didukung perangkat keras menyediakan metode yang jauh lebih aman untuk membuat, menyimpan,
    684 dan menggunakan kunci kriptografi pada perangkat Android. Keystore itu melindungi kunci dari
    685 kernel Linux, potensi kerentanan Android, dan ekstraksi
    686 dari perangkat yang di-root.</p>
    687 
    688 <p>Agar lebih mudah dan lebih aman dalam menggunakan keystore yang didukung perangkat keras,
    689 Android N memperkenalkan Key Attestation. Aplikasi dan perangkat-nonaktif bisa menggunakan Key
    690 Attestation untuk menentukan apakah penyandingan kunci RSA atau EC
    691 didukung perangkat keras, apa properti dari penyandingan kunci, dan batasan
    692   apa yang diterapkan terhadap penggunaan dan validitasnya. </p>
    693 
    694 <p>Aplikasi dan layanan perangkat-nonaktif bisa meminta informasi tentang penyandingan kunci
    695 melalui sertifikat pengesahan X.509 yang harus ditandatangani dengan kunci
    696 pengesahan yang valid. Kunci pengesahan adalah kunci penandatanganan ECDSA yang
    697 telah diinjeksikan ke dalam keystore yang didukung perangkat keras pada perangkat saat di pabriknya.
    698 Karena itu, sertifikat pengesahan yang ditandatangani oleh kunci pengesahan yang
    699 valid akan mengonfirmasi keberadaan keystore yang didukung perangkat keras, bersama
    700   detail pasangan kunci dalam keystore itu.</p>
    701 
    702 <p>Untuk memastikan perangkat ini menggunakan citra Android resmi yang
    703 aman dari pabrik, Key Attestation mengharuskan <a class="external-link" href="https://source.android.com/security/verifiedboot/verified-boot.html#bootloader_requirements">bootloader</a> perangkat
    704 menyediakan informasi berikut pada <a class="external-link" href="https://source.android.com/security/trusty/index.html">Trusted
    705 Execution Environment (TEE)</a>:</p>
    706 
    707 <ul>
    708 <li>Versi OS dan level patch yang dipasang pada perangkat</li>
    709 <li>Kunci publik <a href="https://source.android.com/security/verifiedboot/index.html" class="external-link">Verified Boot</a> dan status kunci</li>
    710   </ul>
    711 
    712 <p>Untuk informasi selengkapnya tentang fitur keystore yang didukung perangkat keras,
    713 lihat panduan untuk <a href="https://source.android.com/security/keystore/" class="external-link">Keystore yang Didukung Perangkat Keras</a>.</p>
    714 
    715 <p>Selain Key Attestation, Android N juga memperkenalkan
    716   kunci yang terikat sidik jari yang tidak dipanggil saat pendaftaran sidik jari.</p>
    717 
    718 <h2 id="network_security_config">Network Security Config</h2>
    719 
    720 <p>Di Android N, aplikasi bisa menyesuaikan perilaku koneksi aman mereka
    721 (HTTPS, TLS) secara aman, tanpa modifikasi kode, dengan menggunakan
    722 <em>Network Security Config</em> deklaratif sebagai ganti menggunakan API programatik
    723 konvensional yang rawan kesalahan (mis. X509TrustManager).</p>
    724 
    725   <p>Fitur yang didukung:</p>
    726 <ul>
    727 <li><b>Trust-anchor khusus.</b> Memungkinkan aplikasi menyesuaikan
    728 Certificate Authorities (CA) mana yang dipercaya untuk koneksi amannya. Misalnya,
    729 mempercayai sertifikat tertentu yang ditandatangani sendiri atau set CA publik yang dibatasi.
    730 </li>
    731 <li><b>Penggantian hanya-debug.</b> Memungkinkan pengembang aplikasi dengan aman men-debug
    732 koneksi aman aplikasi mereka tanpa menambah risiko pada basis yang sudah
    733 dipasang.
    734 </li>
    735 <li><b>Berhenti dari lalu lintas cleartext.</b> Memungkinkan aplikasi melindungi dirinya sendiri dari
    736 penggunaan lalu lintas cleartext yang tidak disengaja.</li>
    737 <li><b>Penyematan sertifikat.</b> Sebuah fitur canggih yang memungkinkan aplikasi
    738   membatasi kunci server mana yang dipercaya untuk koneksi aman.</li>
    739 </ul>
    740 
    741 <p>Untuk informasi selengkapnya, lihat <a href="{@docRoot}preview/features/security-config.html">Network Security
    742 Config</a>.</p>
    743 
    744 <h2 id="default_trusted_ca">Certificate Authority Tepercaya Default</h2>
    745 
    746 <p>Secara default, aplikasi yang menargetkan Android N hanya mempercayai sertifikat yang disediakan sistem
    747 dan tidak lagi mempercayai Certificate Authorities (CA) yang ditambahkan pengguna. Aplikasi yang menargetkan Android
    748 N dan ingin mempercayai CA yang ditambahkan pengguna harus menggunakan
    749 <a href="{@docRoot}preview/features/security-config.html">Network Security Config</a> untuk
    750 menetapkan cara mempercayai CA pengguna.</p>
    751 
    752 <h2 id="apk_signature_v2">APK Signature Scheme v2</h2>
    753 
    754 <p>
    755   Android N memperkenalkan APK Signature Scheme v2, sebuah skema penandatanganan aplikasi baru yang
    756   menawarkan waktu pasang aplikasi lebih cepat dan lebih banyak perlindungan terhadap perubahan
    757  tidak sah pada file APK. Secara default, Android Studio 2.2 dan Android
    758   Plugin untuk Gradle 2.2 menandatangani aplikasi Anda menggunakan APK Signature Scheme v2 dan
    759   skema penandatanganan tradisional, yang menggunakan penandatanganan JAR.
    760 </p>
    761 
    762 <p>
    763   Meskipun kami menyarankan untuk menerapkan APK Signature Scheme v2 pada aplikasi Anda, skema
    764   baru ini tidak wajib. Jika aplikasi Anda tidak dibangun dengan benar saat menggunakan APK
    765   Signature Scheme v2, Anda bisa menonaktifkan skema baru ini. Proses penonaktifan
    766   menyebabkan Android Studio 2.2 dan Android Plugin untuk Gradle 2.2 menandatangani aplikasi Anda
    767   menggunakan skema penandatanganan tradisional saja. Untuk menandatangani dengan
    768  skema tradisional saja, buka file <code>build.gradle</code> level-modul, kemudian
    769   tambahkan baris <code>v2SigningEnabled false</code> ke konfigurasi
    770   penandatanganan rilis Anda:
    771 </p>
    772 
    773 <pre>
    774   android {
    775     ...
    776     defaultConfig { ... }
    777     signingConfigs {
    778       release {
    779         storeFile file("myreleasekey.keystore")
    780         storePassword "password"
    781         keyAlias "MyReleaseKey"
    782         keyPassword "password"
    783         <strong>v2SigningEnabled false</strong>
    784       }
    785     }
    786   }
    787 </pre>
    788 
    789 <p class="caution"><strong>Perhatian: </strong> Jika Anda menandatangani aplikasi menggunakan APK
    790   Signature Scheme v2 dan membuat perubahan lebih jauh pada aplikasi, tanda tangan aplikasi
    791   menjadi tidak valid. Untuk alasan ini, gunakan alat seperti <code>zipalign</code>
    792   sebelum menandatangani aplikasi Anda menggunakan APK Signature Scheme v2, bukan setelahnya.
    793 </p>
    794 
    795 <p>
    796   Untuk informasi selengkapnya, baca dokumen Android Studio yang menjelaskan cara
    797   <a href="{@docRoot}studio/publish/app-signing.html#release-mode">
    798   menandatangani aplikasi</a> di Android Studio dan cara<a href="{@docRoot}studio/build/build-variants.html#signing"> mengonfigurasi
    799   file build untuk menandatangani aplikasi</a> menggunakan Android Plugin untuk Gradle.
    800 </p>
    801 
    802 <h2 id="scoped_directory_access">Scoped Directory Access</h2>
    803 
    804 <p>Di Android N, aplikasi bisa menggunakan API baru untuk meminta akses ke direktori <a href="{@docRoot}guide/topics/data/data-storage.html#filesExternal">penyimpanan
    805 eksternal</a> tertentu, termasuk direktori di media lepas-pasang seperti kartu
    806 SD. API baru ini sangat menyederhanakan cara aplikasi Anda mengakses direktori
    807 penyimpanan eksternal standar, seperti direktori <code>Pictures</code>. Aplikasi
    808 seperti aplikasi foto bisa menggunakan API ini sebagai ganti menggunakan
    809 <code>READ_EXTERNAL_STORAGE</code>, yang memberikan akses ke semua direktori
    810 penyimpanan, atau Storage Access Framework, yang membuat pengguna mengarah ke
    811 direktori tersebut.</p>
    812 
    813 <p>Selain itu, API baru ini menyederhanakan langkah-langkah yang diambil pengguna untuk memberikan akses
    814 penyimpanan eksternal ke aplikasi Anda. Bila Anda menggunakan API baru, sistem akan menggunakan UI izin
    815 sederhana yang memperinci dengan jelas direktori apa yang aksesnya diminta
    816 oleh aplikasi.</p>
    817 
    818 <p>Untuk informasi selengkapnya, lihat dokumentasi pengembang 
    819 <a href="{@docRoot}preview/features/scoped-folder-access.html">Scoped
    820 Directory Access</a>.</p>
    821 
    822 <h2 id="keyboard_shortcuts_helper">Keyboard Shortcuts Helper</h2>
    823 
    824 <p>
    825 Di Android N, pengguna bisa menekan "Alt + /" untuk memunculkan layar <em>Keyboard Shortcuts</em>
    826 yang menampilkan semua pintasan yang tersedia baik dari sistem maupun dari
    827 aplikasi yang sedang mendapatkan fokus. Ini diambil secara otomatis dari menu aplikasi
    828 jika tersedia, namun pengembang bisa menyediakan daftar pintasan yang telah disesuaikan
    829 untuk layar. Anda bisa melakukannya dengan mengganti metode
    830 <code>Activity.onProvideKeyboardShortcuts()</code> baru, yang dijelaskan dalam
    831 <a href="{@docRoot}preview/setup-sdk.html#docs-dl">Referensi API</a> yang bisa diunduh.
    832 </p>
    833 
    834 <p>
    835 Untuk memunculkan Keyboard Shortcuts Helper dari mana saja di aplikasi Anda,
    836 panggil {@code Activity.requestKeyboardShortcutsHelper()} untuk aktivitas terkait.
    837 </p>
    838 
    839 <h2 id="sustained_performance_api">Sustained Performance API</h2>
    840 
    841 <p>
    842 Kinerja bisa berfluktuasi secara dramatis untuk aplikasi yang berjalan lama, karena
    843 sistem melakukan throttle pada mesin sistem-di-chip saat komponen perangkat mencapai
    844 batas suhunya. Fluktuasi ini memberikan target bergerak bagi pengembang
    845 aplikasi yang sedang membuat aplikasi berkinerja tinggi dan berjalan lama.
    846 </p>
    847 
    848 <p>
    849 Untuk menangani batasan ini, Android N menyertakan dukungan untuk
    850 <em>mode kinerja kontinu</em>, yang memungkinkan OEM memberikan petunjuk mengenai kemampuan kinerja
    851 perangkat untuk aplikasi yang berjalan lama. Pengembang aplikasi
    852 bisa menggunakan petunjuk ini untuk menyesuaikan aplikasi agar kinerja perangkat bisa diprediksi
    853 dan pada level yang konsisten dalam jangka waktu lama.
    854 </p>
    855 
    856 <p>
    857 Pengembang aplikasi bisa mencoba API baru ini dalam N Developer Preview pada
    858 perangkat Nexus 6P saja. Untuk menggunakan fitur ini,
    859 setel flag jendela kinerja kontinu
    860 yang ingin Anda jalankan dalam mode kinerja kontinu. Setel flag ini menggunakan metode
    861 {@code Window.setSustainedPerformanceMode()}. Sistem secara otomatis
    862 akan menonaktifkan mode ini bila jendela tidak lagi mendapatkan fokus.
    863 </p>
    864 
    865 <h2 id="vr">Dukungan VR</h2>
    866 
    867 <p>
    868 Android N menambahkan dukungan platform dan optimalisasi untuk VR Mode baru yang memungkinkan
    869 pengembang membuat pengalaman VR berkualitas tinggi di seluler bagi para pengguna. Ada banyak perbaikan
    870 kinerja, termasuk akses ke inti CPU yang eksklusif untuk aplikasi VR.
    871 Di dalam aplikasi, Anda bisa memanfaatkan pelacakan kepala yang cerdas,
    872 dan pemberitahuan stereo yang bekerja untuk VR. Hal terpenting adalah Android N menyediakan
    873 grafis dengan latensi sangat rendah. Untuk informasi selengkapnya tentang membangun aplikasi VR untuk Android N,
    874 lihat <a href="https://developers.google.com/vr/android/">Google VR SDK untuk Android</a>.
    875 </p>
    876 
    877 
    878 <h2 id="print_svc">Penyempurnaan Layanan Cetak</h2>
    879 
    880 <p>
    881   Di Android N, pengembang layanan cetak kini bisa menampilkan informasi tambahan
    882   tentang masing-masing printer dan pekerjaan cetak.
    883 </p>
    884 
    885 <p>
    886   Saat mendaftarkan masing-masing printer, layanan cetak kini bisa menyetel
    887   ikon per printer dalam dua cara:
    888 </p>
    889 
    890 <ul>
    891   <li>Anda bisa menyetel ikon dari ID sumber daya dengan memanggil
    892   <code>PrinterInfo.Builder.setResourceIconId()</code>
    893   </li>
    894 
    895   <li>Anda bisa menampilkan ikon dari jaringan dengan memanggil
    896   <code>PrinterInfo.Builder.setHasCustomPrinterIcon()</code>, dan menyetel sebuah
    897  callback bila ikon diminta menggunakan
    898   <code>android.printservice.PrinterDiscoverySession.onRequestCustomPrinterIcon()</code>
    899   </li>
    900 </ul>
    901 
    902 <p>
    903   Selain itu, Anda bisa menyediakan aktivitas per printer untuk menampilkan informasi
    904   tambahan dengan memanggil <code>PrinterInfo.Builder.setInfoIntent()</code>.
    905 </p>
    906 
    907 <p>
    908   Anda bisa menunjukkan kemajuan dan status pekerjaan cetak di
    909   pemberitahuan pekerjaan cetak dengan memanggil masing-masing
    910   <code>android.printservice.PrintJob.setProgress()</code> dan
    911   <code>android.printservice.PrintJob.setStatus()</code>.
    912 </p>
    913 
    914 <p>
    915   Untuk informasi selengkapnya tentang metode ini,lihat  dalam <a href="{@docRoot}preview/setup-sdk.html#docs-dl">Referensi  API</a> yang bisa diunduh.
    916 </p>
    917 
    918 <h2 id="framemetrics_api">FrameMetricsListener API</h2>
    919 
    920 <p>
    921 FrameMetricsListener API memungkinkan aplikasi untuk memantau
    922 kinerja rendering UI. API tersebut menyediakan kemampuan ini dengan mengekspos Pub/Sub API streaming
    923 untuk mentransfer info frame-timing untuk jendela aplikasi saat ini. Data yang dikembalikan
    924 setara dengan yang ditampilkan <code><a href="{@docRoot}tools/help/shell.html#shellcommands">adb shell</a>
    925 dumpsys gfxinfo framestats</code>, namun tidak dibatasi pada 120 bingkai.
    926 </p>
    927 
    928 <p>
    929 Anda bisa menggunakan FrameMetricsListener untuk mengukur kinerja UI
    930 level interaksi di produksi, tanpa koneksi USB. API
    931 ini memungkinkan pengumpulan data dengan granularitas lebih tinggi daripada
    932 {@code adb shell dumpsys gfxinfo}. Granularitas lebih tinggi ini dimungkinkan karena
    933 sistem bisa mengumpulkan data untuk interaksi tertentu di aplikasi; sistem
    934 tidak perlu merekam ringkasan global untuk keseluruhan kinerja
    935 aplikasi, atau mengosongkan status global yang ada. Anda bisa menggunakan kemampuan ini
    936 untuk mengumpulkan data kinerja dan menangkap regresi di kinerja UI
    937 untuk kasus penggunaan sungguhan di dalam aplikasi.
    938 </p>
    939 
    940 <p>
    941 Untuk memantau sebuah jendela, implementasikan metode callback <code>FrameMetricsListener.onMetricsAvailable()</code>
    942 dan daftarkan di jendela itu. Untuk informasi selengkapnya, lihat
    943 dokumentasi kelas {@code FrameMetricsListener} di
    944 <a href="{@docRoot}preview/setup-sdk.html#docs-dl">Referensi API</a> yang bisa diunduh.
    945 </p>
    946 
    947 <p>
    948 API menyediakan objek {@code FrameMetrics}, yang berisi data timing yang
    949 dilaporkan subsistem rendering untuk berbagai tahap pencapaian dalam daur hidup bingkai.
    950 Metrik yang didukung adalah: {@code UNKNOWN_DELAY_DURATION},
    951 {@code INPUT_HANDLING_DURATION}, {@code ANIMATION_DURATION},
    952 {@code LAYOUT_MEASURE_DURATION}, {@code DRAW_DURATION}, {@code SYNC_DURATION},
    953 {@code COMMAND_ISSUE_DURATION}, {@code SWAP_BUFFERS_DURATION},
    954 {@code TOTAL_DURATION}, dan {@code FIRST_DRAW_FRAME}.
    955 </p>
    956 
    957 
    958 <h2 id="virtual_files">File Maya</h2>
    959 
    960 <p>
    961   Di versi Android sebelumnya, aplikasi Anda bisa menggunakan Storage Access
    962   Framework untuk memungkinkan pengguna memilih file dari akun penyimpanan awan mereka,
    963   seperti Google Drive. Akan tetapi, tidak ada cara untuk merepresentasikan file yang
    964   tidak memiliki representasi bytecode langsung; setiap file diharuskan menyediakan
    965   aliran masukan.
    966 </p>
    967 
    968 <p>
    969   Android N menambahkan konsep <em>file maya</em> pada Storage Access
    970   Framework. Fitur file maya memungkinkan
    971   {@link android.provider.DocumentsProvider} Anda mengembalikan URI dokumen yang bisa
    972   digunakan bersama intent {@link android.content.Intent#ACTION_VIEW} sekalipun
    973   tidak memiliki representasi bytecode langsung. Android N juga memungkinkan Anda untuk
    974   menyediakan format alternatif untuk file pengguna, maya atau dengan cara lain.
    975 </p>
    976 
    977 <p>
    978   Untuk mendapatkan URI sebuah dokumen maya di aplikasi Anda, terlebih dahulu Anda membuat
    979   {@link android.content.Intent} untuk membuka UI pemilih file. Karena aplikasi
    980   tidak bisa membuka file maya secara langsung dengan menggunakan metode
    981   {@link android.content.ContentResolver#openInputStream(Uri) openInputStream()},
    982    aplikasi Anda tidak akan menerima file maya jika Anda memasukkan kategori
    983   {@link android.content.Intent#CATEGORY_OPENABLE}.
    984 </p>
    985 
    986 <p>
    987   Setelah pengguna menentukan pilihan, sistem akan memanggil metode
    988   {@link android.app.Activity#onActivityResult onActivityResult()}.
    989   Aplikasi Anda bisa mengambil URI file maya dan mendapatkan aliran masukan, seperti yang
    990   diperagakan dalam cuplikan kode di bawah.
    991 </p>
    992 
    993 <pre>
    994   // Other Activity code ...
    995 
    996   final static private int REQUEST_CODE = 64;
    997 
    998   // We listen to the OnActivityResult event to respond to the user's selection.
    999   &#64;Override
   1000   public void onActivityResult(int requestCode, int resultCode,
   1001     Intent resultData) {
   1002       try {
   1003         if (requestCode == REQUEST_CODE &amp;&amp;
   1004             resultCode == Activity.RESULT_OK) {
   1005 
   1006             Uri uri = null;
   1007 
   1008             if (resultData != null) {
   1009                 uri = resultData.getData();
   1010 
   1011                 ContentResolver resolver = getContentResolver();
   1012 
   1013                 // Before attempting to coerce a file into a MIME type,
   1014                 // check to see what alternative MIME types are available to
   1015                 // coerce this file into.
   1016                 String[] streamTypes =
   1017                   resolver.getStreamTypes(uri, "*/*");
   1018 
   1019                 AssetFileDescriptor descriptor =
   1020                     resolver.openTypedAssetFileDescriptor(
   1021                         uri,
   1022                         streamTypes[0],
   1023                         null);
   1024 
   1025                 // Retrieve a stream to the virtual file.
   1026                 InputStream inputStream = descriptor.createInputStream();
   1027             }
   1028         }
   1029       } catch (Exception ex) {
   1030         Log.e("EXCEPTION", "ERROR: ", ex);
   1031       }
   1032   }
   1033 </pre>
   1034 
   1035 <p>
   1036   Untuk informasi selengkapnya tentang mengakses file pengguna, lihat
   1037   <a href="{@docRoot}guide/topics/providers/document-provider.html">Panduan Storage
   1038   Access Frameworks</a>.
   1039 </p>
   1040