Fitur dan API Android 10

Android 10 memperkenalkan fitur dan kemampuan hebat bagi pengguna dan developer. Dokumen ini memperjelas apa saja yang tersedia untuk developer.

Untuk mempelajari API, baca laporan perbedaan API atau buka Referensi API Android — cari API yang "ditambahkan dalam level API 29". Selain itu, pastikan untuk memeriksa perubahan perilaku Android 10 (untuk aplikasi yang menargetkan API level 29 dan untuk semua aplikasi), serta perubahan privasi, untuk mempelajari area mana saja pada aplikasi Anda yang mungkin terpengaruh oleh perubahan platform.

Penyempurnaan keamanan

Android 10 memperkenalkan sejumlah fitur keamanan, yang diringkas dalam bagian berikut.

Dialog autentikasi biometrik yang disempurnakan

Android 10 memperkenalkan peningkatan berikut untuk dukungan autentikasi biometrik:

  • Pemeriksaan untuk kemampuan autentikasi biometrik.
  • Mekanisme penggantian yang memungkinkan pengguna melakukan autentikasi menggunakan PIN, pola, atau sandi perangkat jika mereka tidak dapat melakukan autentikasi menggunakan input biometriknya.
  • Petunjuk yang memberi tahu sistem untuk tidak meminta konfirmasi pengguna setelah pengguna melakukan autentikasi menggunakan modalitas biometrik implisit. Misalnya, Anda dapat memberi tahu sistem bahwa konfirmasi lebih lanjut tidak diperlukan setelah pengguna melakukan autentikasi menggunakan autentikasi wajah.

Menjalankan kode DEX tersemat langsung dari APK

Mulai Android 10, Anda dapat memberi tahu platform agar menjalankan kode DEX tersemat langsung dari file APK aplikasi. Opsi ini dapat membantu mencegah serangan jika penyerang berhasil merusak kode yang dikompilasi secara lokal di perangkat.

Untuk mengetahui informasi selengkapnya, lihat Menjalankan kode DEX tersemat langsung dari APK.

Dukungan TLS 1.3

Android 10 menambahkan dukungan untuk TLS 1.3. TLS 1.3 adalah revisi besar terhadap standar TLS yang menyertakan manfaat performa dan peningkatan keamanan. Benchmark kami menunjukkan bahwa koneksi aman dapat dibuat hingga 40% lebih cepat dengan TLS 1.3 dibandingkan dengan TLS 1.2.

Untuk detail selengkapnya tentang penerapan TLS 1.3, lihat bagian TLS dalam halaman perubahan perilaku untuk semua aplikasi.

Conscrypt API Publik

Mulai dari Android 10, penyedia keamanan Conscrypt menyertakan API publik untuk fungsi TLS.

Kumpulan class dalam android.net.ssl berisi metode statis untuk mengakses fungsi yang tidak tersedia dari javax.net.ssl API generik. Nama-nama untuk class ini dapat disimpulkan sebagai bentuk jamak dari class javax.net.ssl yang sesuai. Misalnya, kode yang beroperasi pada instance javax.net.ssl.SSLSocket dapat menggunakan metode dari SSLSockets.

Fitur konektivitas

Android 10 menghadirkan beberapa penyempurnaan terkait jaringan dan konektivitas.

API sambungan jaringan Wi-Fi

Android 10 menambahkan dukungan untuk koneksi peer-to-peer. Fitur ini memungkinkan aplikasi Anda meminta pengguna untuk mengubah titik akses yang terhubung dengan perangkat menggunakan WifiNetworkSpecifier untuk mendeskripsikan properti jaringan yang diminta. Koneksi peer-to-peer digunakan untuk tujuan selain penyediaan jaringan, seperti konfigurasi bootstrap untuk perangkat sekunder seperti hardware Chromecast dan Google Home.

Untuk mengetahui informasi selengkapnya, lihat Wi-Fi Network Request API untuk konektivitas peer-to-peer.

API saran jaringan Wi-Fi

Android 10 menambahkan dukungan bagi aplikasi Anda untuk meminta pengguna terhubung ke titik akses Wi-Fi. Anda dapat memberikan saran terkait jaringan yang dapat dihubungkan. Selanjutnya, platform akan memilih titik akses (AP) yang akan diterima berdasarkan input dari aplikasi Anda dan aplikasi lainnya.

Untuk mengetahui informasi selengkapnya tentang fitur ini, lihat saran Wi-Fi.

Penyempurnaan untuk mode Wi-Fi performa tinggi latensi rendah

Android 10 memungkinkan Anda memberikan petunjuk kepada modem yang mendasarinya untuk meminimalkan latensi.

Android 10 memperluas API penguncian Wi-Fi untuk mendukung mode performa tinggi dan mode latensi rendah secara efektif. Penghematan daya Wi-Fi dinonaktifkan untuk mode performa tinggi dan latensi rendah, dan pengoptimalan latensi lebih lanjut dapat diaktifkan dalam mode latensi rendah, bergantung pada dukungan modem.

Mode latensi rendah hanya diaktifkan saat aplikasi yang mendapatkan kunci sedang berjalan di latar depan dan layar aktif. Mode latensi rendah sangat membantu aplikasi game seluler real-time.

Pencarian khusus dalam resolver DNS

Android 10 menambahkan dukungan native untuk pencarian DNS khusus menggunakan pencarian cleartext dan mode DNS-over-TLS. Sebelumnya, DNS resolver platform hanya mendukung data A dan AAAA, yang hanya memungkinkan pencarian alamat IP yang terkait dengan suatu nama, tetapi tidak mendukung jenis data lainnya. DnsResolver API menyediakan resolusi asinkron umum, yang memungkinkan Anda mencari SRV, NAPTR, dan jenis data lainnya. Perhatikan bahwa penguraian respons diserahkan ke aplikasi.

Untuk aplikasi berbasis NDK, lihat android_res_nsend.

Wi-Fi Easy Connect

Android 10 memungkinkan Anda menggunakan Easy Connect untuk menyediakan kredensial Wi-Fi ke perangkat peer, sebagai pengganti WPS yang sudah tidak digunakan lagi. Aplikasi dapat mengintegrasikan Easy Connect ke dalam alur penyiapan dan penyediaannya menggunakan intent ACTION_PROCESS_WIFI_EASY_CONNECT_URI.

Untuk mengetahui informasi selengkapnya tentang fitur ini, lihat Wi-Fi Easy Connect.

API koneksi Wi-Fi Langsung

Class WifiP2pConfig dan WifiP2pManager API memiliki update di Android 10 untuk mendukung kemampuan pembentukan koneksi cepat ke Wi-Fi Langsung menggunakan informasi yang telah ditentukan. Informasi ini dibagikan melalui saluran samping, seperti Bluetooth atau NFC.

Contoh kode berikut menunjukkan cara membuat grup menggunakan informasi yang telah ditentukan:

Kotlin

val manager = getSystemService(Context.WIFI_P2P_SERVICE) as WifiP2pManager
val channel = manager.initialize(this, mainLooper, null)

// prefer 5G band for this group
val config = WifiP2pConfig.Builder()
    .setNetworkName("networkName")
    .setPassphrase("passphrase")
    .enablePersistentMode(false)
    .setGroupOperatingBand(WifiP2pConfig.GROUP_OWNER_BAND_5GHZ)
    .build()

// create a non-persistent group on 5GHz
manager.createGroup(channel, config, null)

Java

WifiP2pManager manager = (WifiP2pManager) getSystemService(Context.WIFI_P2P_SERVICE);
Channel channel = manager.initialize(this, getMainLooper(), null);

// prefer 5G band for this group
WifiP2pConfig config = new WifiP2pConfig.Builder()
.setNetworkName("networkName")
.setPassphrase("passphrase")
.enablePersistentMode(false)
.setGroupOperatingBand(WifiP2pConfig.GROUP_OWNER_BAND_5GHZ)
.build();

// create a non-persistent group on 5GHz
manager.createGroup(channel, config, null);

Untuk bergabung dengan grup menggunakan kredensial, ganti manager.createGroup() dengan yang berikut ini:

Kotlin

manager.connect(channel, config, null)

Java

manager.connect(channel, config, null);

Saluran Berorientasi Koneksi (CoC) Bluetooth LE

Android 10 memungkinkan aplikasi Anda menggunakan koneksi CoC BLE untuk mentransfer aliran data yang lebih besar antara dua perangkat BLE. Antarmuka ini mengabstraksi Bluetooth dan mekanisme konektivitas untuk menyederhanakan implementasi.

Fitur telepon

Android 10 menyertakan beberapa peningkatan terkait telepon.

Peningkatan kualitas panggilan

Android 10 menambahkan kemampuan untuk mengumpulkan informasi tentang kualitas panggilan IP Multimedia Subsystem (IMS) yang sedang berlangsung, termasuk kualitas ke dan dari jaringan, di perangkat yang mendukung fitur tersebut.

Penyaringan panggilan dan nomor penelepon

Android 10 memberi aplikasi Anda cara untuk mengidentifikasi panggilan yang tidak ada di buku alamat pengguna sebagai panggilan telepon spam potensial, dan mencegah panggilan telepon spam secara diam-diam ditolak atas nama pengguna. Informasi tentang panggilan yang diblokir ini dicatat sebagai panggilan yang diblokir di log panggilan untuk memberikan transparansi yang lebih baik kepada pengguna saat mereka kehilangan panggilan. Dengan API ini, Anda tidak perlu lagi mendapatkan izin READ_CALL_LOG dari pengguna untuk menyediakan fungsi penyaringan panggilan dan ID penelepon.

API layanan pengalihan panggilan

Android 10 mengubah cara penanganan intent panggilan. Siaran NEW_OUTGOING_CALL tidak digunakan lagi dan diganti dengan CallRedirectionService API. CallRedirectionService API menyediakan antarmuka yang dapat Anda gunakan untuk mengubah panggilan keluar yang dilakukan oleh platform Android. Misalnya, aplikasi pihak ketiga mungkin membatalkan panggilan dan mengalihkannya melalui VoIP.

Penyempurnaan dalam pembuatan file di penyimpanan eksternal

Selain memperkenalkan penyimpanan terbatas, Android 10 juga menambahkan kemampuan berikut yang terkait dengan penyimpanan eksternal:

  • Anda dapat menggunakan flag IS_PENDING untuk memberi aplikasi Anda akses eksklusif ke file media saat ditulis ke disk.
  • Jika mengetahui lokasi spesifik penyimpanan file, Anda dapat memberikan petunjuk kepada sistem tentang lokasi penyimpanan file yang baru ditulis.
  • Setiap perangkat penyimpanan eksternal memiliki nama volume unik.

Media dan grafis

Android 10 memperkenalkan fitur dan API media dan grafis baru berikut ini:

Berbagi input audio

Android 10 menambahkan kemampuan yang memungkinkan dua aplikasi berbagi input audio secara bersamaan. Untuk mengetahui informasi selengkapnya, lihat Berbagi input audio.

Perekaman pemutaran audio

Android 10 memberikan kemampuan pada aplikasi untuk merekam pemutaran audio dari aplikasi lain. Untuk mengetahui informasi selengkapnya, lihat Perekaman pemutaran.

Seekbar dalam notifikasi MediaStyle

Mulai dari Android 10, notifikasi MediaStyle akan menampilkan pencari bar. Seekbar ini menunjukkan progres pemutaran dari PlaybackState.getPosition(), dan dalam beberapa kasus, pencari dapat digunakan untuk mencari lokasi dalam program pemutaran. Tampilan dan perilaku seekbar dikontrol oleh aturan berikut:

  • Seekbar muncul jika ada MediaSession yang aktif dan durasinya (ditentukan oleh MediaMetadata.METADATA_KEY_DURATION) lebih besar dari nol. Artinya, batang tersebut tidak akan muncul untuk streaming yang tidak tentu seperti livestream dan siaran radio.
  • Jika sesi mengimplementasikan ACTION_SEEK_TO, pengguna dapat menarik lookupbar untuk mengontrol lokasi pemutaran.

Native MIDI API

Android Native MIDI API (AMidi) memungkinkan developer aplikasi untuk mengirim dan menerima data MIDI dengan kode C/C++, sehingga berintegrasi lebih erat dengan logika audio/kontrol C/C++ dan meminimalkan kebutuhan akan JNI.

Untuk informasi selengkapnya, lihat API MIDI Bawaan Android.

Penyempurnaan MediaCodecInfo

Android 10 menambahkan metode ke MediaCodecInfo yang mengungkapkan informasi selengkapnya tentang codec.

Untuk mengetahui informasi selengkapnya, lihat Codec media.

Thermal API

Jika menjadi terlalu panas, perangkat dapat men-throttle CPU dan/atau GPU, dan hal ini dapat memengaruhi aplikasi dan game secara tidak terduga. Aplikasi yang menggunakan grafis kompleks, komputasi yang berat, atau aktivitas jaringan berkelanjutan lebih cenderung mengalami masalah, dan dapat bervariasi di berbagai perangkat berdasarkan frekuensi chipset dan inti, tingkat integrasi, serta paket dan faktor bentuk perangkat.

Di Android 10, aplikasi dan game dapat menggunakan Thermal API untuk memantau perubahan pada perangkat dan mengambil tindakan untuk mempertahankan penggunaan daya yang lebih rendah guna memulihkan suhu normal. Aplikasi mendaftarkan pemroses di PowerManager, yang memungkinkan sistem melaporkan status termal yang sedang berlangsung, mulai dari ringan dan sedang hingga parah, kritis, darurat, dan shutdown.

Saat perangkat melaporkan tekanan termal, aplikasi dan game dapat membantu dengan membatalkan aktivitas yang sedang berlangsung untuk mengurangi penggunaan daya dalam berbagai cara. Misalnya, aplikasi streaming dapat mengurangi resolusi/kecepatan bit atau traffic jaringan, aplikasi kamera dapat menonaktifkan flash atau peningkatan gambar intensif, game dapat mengurangi kecepatan frame atau tesselasi poligon, aplikasi media dapat mengurangi volume speaker, dan aplikasi peta dapat menonaktifkan GPS.

Thermal API memerlukan lapisan HAL perangkat baru. Saat ini, API ini didukung di perangkat Pixel yang menjalankan Android 10, dan kami bekerja sama dengan partner produsen perangkat untuk menghadirkan dukungan luas ke ekosistem secepat mungkin.

Kamera dan gambar

Android 10 memperkenalkan fitur baru berikut ini terkait kamera dan gambar:

Dukungan kamera monokrom

Versi Android pertama yang memperkenalkan kemampuan kamera monokrom adalah Android 9 (API level 28). Android 10 menambahkan beberapa penyempurnaan untuk dukungan kamera monokrom:

  • Dukungan format streaming Y8 untuk meningkatkan efisiensi memori.
  • Dukungan untuk pengambilan gambar DNG RAW monokrom.
  • Pengantar enumerasi MONO dan NIR CFA untuk membedakan antara kamera monokrom biasa dan kamera inframerah dekat.

Anda dapat menggunakan fitur ini untuk mengambil gambar monokrom native. Perangkat multi-kamera yang logis dapat menggunakan kamera monokrom sebagai sub-kamera fisik untuk mencapai kualitas gambar cahaya rendah yang lebih baik.

Format Dynamic Depth

Mulai Android 10, kamera dapat menyimpan data kedalaman untuk gambar dalam file terpisah, menggunakan skema baru yang disebut Format Dynamic Depth (DDF). Aplikasi dapat meminta gambar JPG dan metadata kedalamannya, menggunakan informasi tersebut untuk menerapkan blur yang diinginkan dalam pascapemrosesan tanpa mengubah data gambar asli.

Untuk membaca spesifikasi format ini, lihat Format Dynamic Depth.

Format File Gambar Efisiensi Tinggi

Format File Gambar Efisiensi Tinggi (HEIF) adalah format gambar dan video standar yang memperkenalkan encoding berkualitas lebih tinggi dan ukuran file yang lebih kecil jika dibandingkan dengan format file lainnya.

Untuk mengetahui informasi selengkapnya tentang format file, lihat HEIC.

Penyempurnaan pada multi-kamera

Android 10 meningkatkan penggabungan beberapa kamera menjadi satu kamera logis, fitur yang diperkenalkan di Android 9 (level API 28). Hal berikut ditambahkan ke Camera2 API:

API layanan aksesibilitas

Android 10 memperkenalkan fitur dan API layanan aksesibilitas baru berikut ini:

Tanda kunci entri AccessibilityNodeInfo

Mulai Android 10, Anda dapat memanggil isTextEntryKey() untuk menentukan apakah AccessibilityNodeInfo tertentu mewakili tombol entri teks yang merupakan bagian dari keyboard atau keypad.

Masukan lisan dialog aksesibilitas

Jika pengguna perlu melakukan pintasan aksesibilitas untuk memulai layanan aksesibilitas, Android 10 memungkinkan dialog untuk disertai dengan prompt text-to-speech jika layanan memintanya.

Pintasan aksesibilitas saat navigasi gestur diaktifkan

Saat fitur navigasi gestur diaktifkan di Android 10, tombol aksesibilitas tidak akan terlihat atau dapat dipilih. Untuk mengakses menu layanan aksesibilitas, pengguna harus melakukan salah satu gestur berikut:

  • Geser ke atas dengan dua jari.
  • Geser ke atas dengan dua jari dan tahan.

Pintasan aksesibilitas untuk keyboard fisik

Di Android 10, pengguna dapat memicu pintasan aksesibilitas pada keyboard fisik dengan menekan Control+Alt+Z.

Penyempurnaan pengontrol keyboard virtual

Di Android 10, layanan aksesibilitas dapat meminta agar keyboard virtual tetap ditampilkan meskipun perangkat mendeteksi adanya keyboard fisik. Pengguna bisa mengganti perilaku ini.

Waktu tunggu aksesibilitas yang ditetapkan pengguna

Android 10 memperkenalkan getRecommendedTimeoutMillis() API. Metode ini memberikan dukungan untuk waktu tunggu yang ditentukan pengguna untuk elemen UI interaktif dan noninteraktif. Nilai yang ditampilkan dipengaruhi oleh preferensi pengguna dan API layanan aksesibilitas.

Penyempurnaan IsiOtomatis

Android 10 menyertakan penyempurnaan berikut ini untuk layanan IsiOtomatis.

Permintaan IsiOtomatis terkait kompatibilitas

Anda dapat menggunakan flag FillRequest.FLAG_COMPATIBILITY_MODE_REQUEST untuk menentukan apakah permintaan isi otomatis dibuat melalui mode kompatibilitas.

Menyimpan nama pengguna dan sandi secara bersamaan

Anda dapat mendukung kasus ketika aplikasi menggunakan beberapa aktivitas untuk menampilkan nama pengguna, sandi, dan kolom lainnya menggunakan tanda SaveInfo.FLAG_DELAY_SAVE.

Interaksi pengguna dengan UI Penyimpanan

Anda dapat menampilkan dan menyembunyikan kolom sandi dalam dialog penyimpanan dengan menetapkan pemroses tindakan pada dialog dan mengubah visibilitas tampilan jarak jauh sandi yang sesuai.

Dukungan untuk memperbarui set data

IsiOtomatis bisa memperbarui sandi yang sudah ada. Misalnya, jika pengguna telah menyimpan sandi, lalu mereka menyimpan sandi baru, Isi Otomatis akan meminta pengguna untuk memperbarui sandi yang sudah ada, bukan menyimpan sandi baru.

Penyempurnaan Klasifikasi Kolom

Android 10 menyertakan penyempurnaan berikut ini pada API Klasifikasi Kolom.

Konstruktor UserData.Builder

Konstruktor UserData.Builder telah diubah agar lebih selaras dengan pola Builder.

Mengizinkan pemetaan satu Nilai ke beberapa jenis ID Kategori

Saat menggunakan UserData.Builder di Android 10, Anda kini dapat memetakan nilai ke beberapa jenis ID kategori. Pada rilis sebelumnya, pengecualian ditampilkan jika sebuah nilai ditambahkan lebih dari sekali.

Dukungan yang lebih baik untuk nomor kartu kredit

Klasifikasi kolom kini dapat mendeteksi angka empat digit sebagai empat digit terakhir dari sebuah nomor kartu kredit.

Dukungan untuk klasifikasi kolom khusus aplikasi

Android 10 menambahkan FillResponse.setUserData(), yang memungkinkan Anda menetapkan data pengguna khusus aplikasi sepanjang sesi. Tindakan ini membantu layanan isi otomatis mendeteksi jenis untuk kolom yang berisi konten khusus aplikasi.

Kontrol UI dan sistem

Android 10 menghadirkan penyempurnaan berikut ini untuk antarmuka pengguna:

Mendukung batas PopFrame JFMTI

Android 10 menambahkan dukungan untuk kemampuan can_pop_frames dalam implementasi JVMTI Android. Saat proses debug, fitur ini memungkinkan Anda menjalankan kembali fungsi setelah dijeda di titik henti sementara dan menyesuaikan lokal, global, atau implementasi suatu fungsi. Untuk informasi selengkapnya, lihat halaman referensi Pop Frame Oracle.

Surface control API

Android 10 menyediakan SurfaceControl API untuk akses level rendah ke system-compositor (SurfaceFlinger). Untuk sebagian besar pengguna, SurfaceView adalah cara yang benar untuk memanfaatkan compositor. SurfaceControl API dapat berguna dalam kasus tertentu, misalnya:

  • Sinkronisasi beberapa permukaan
  • Penyematan permukaan lintas proses
  • Pengelolaan masa aktif level rendah

SurfaceControl API tersedia dalam binding SDK dan NDK. Implementasi NDK mencakup API untuk pertukaran buffer secara manual dengan compositor. Hal ini memberikan alternatif bagi pengguna yang mengalami batasan BufferQueue.

Deteksi perender hung WebView

Android 10 memperkenalkan class abstrak WebViewRenderProcessClient, yang dapat digunakan aplikasi untuk mendeteksi apakah WebView tidak responsif. Untuk menggunakan class ini:

  1. Tentukan subclass Anda sendiri dan implementasikan metode onRenderProcessResponsive() dan onRenderProcessUnresponsive() miliknya.
  2. Lampirkan instance WebViewRenderProcessClient ke satu atau beberapa objek WebView.
  3. Jika WebView menjadi tidak responsif, sistem akan memanggil metode onRenderProcessUnresponsive() klien, yang meneruskan WebView dan WebViewRenderProcess. (Jika WebView adalah proses tunggal, parameter WebViewRenderProcess adalah null.) Aplikasi Anda dapat mengambil tindakan yang sesuai, seperti menampilkan kotak dialog kepada pengguna untuk menanyakan apakah mereka ingin menghentikan proses rendering.

Jika WebView tetap tidak responsif, sistem akan memanggil onRenderProcessUnresponsive() secara berkala (tidak lebih dari sekali setiap lima detik), tetapi tidak melakukan tindakan lain. Jika WebView menjadi responsif lagi, sistem akan memanggil onRenderProcessResponsive() sekali saja.

Panel setelan

Android 10 memperkenalkan Panel Setelan, sebuah API yang memungkinkan aplikasi menampilkan setelan kepada pengguna dalam konteks aplikasinya. Dengan begitu, pengguna tidak perlu membuka Setelan untuk mengubah hal-hal seperti NFC atau Data seluler agar dapat menggunakan aplikasi.

Gambar 1. Pengguna mencoba membuka halaman web saat perangkat tidak terhubung ke jaringan. Chrome memunculkan panel setelan Konektivitas Internet...

Gambar 2. Pengguna dapat mengaktifkan Wi-Fi dan memilih jaringan tanpa keluar dari aplikasi Chrome.

Misalnya, pengguna membuka browser web saat perangkat mereka dalam mode pesawat. Sebelum Android 10, aplikasi hanya dapat menampilkan pesan umum yang meminta pengguna membuka Setelan untuk memulihkan konektivitas. Dengan Android 10, aplikasi browser dapat menampilkan panel inline yang menunjukkan setelan konektivitas utama seperti mode pesawat, Wi-Fi (termasuk jaringan di sekitar), dan data seluler. Dengan panel ini, pengguna dapat memulihkan konektivitas tanpa keluar dari aplikasi.

Untuk menampilkan panel setelan, aktifkan intent dengan salah satu tindakan Settings.Panel berikut:

Kotlin

val panelIntent = Intent(Settings.Panel.settings_panel_type)
startActivityForResult(panelIntent)

Java

Intent panelIntent = new Intent(Settings.Panel.settings_panel_type);
startActivityForResult(panelIntent);

settings_panel_type dapat berupa salah satu dari:

ACTION_INTERNET_CONNECTIVITY
Menampilkan setelan yang terkait dengan konektivitas internet, seperti Mode pesawat, Wi-Fi, dan Data Seluler.
ACTION_WIFI
Menampilkan setelan Wi-Fi, tetapi tidak menampilkan setelan konektivitas lainnya. Ini berguna untuk aplikasi yang memerlukan koneksi Wi-Fi untuk melakukan upload atau download dalam jumlah besar.
ACTION_NFC
Menampilkan semua setelan yang terkait dengan komunikasi nirkabel jarak dekat (NFC).
ACTION_VOLUME
Menampilkan setelan volume untuk semua streaming audio.

Peningkatan fitur berbagi

Android 10 menghadirkan sejumlah penyempurnaan untuk fitur berbagi.

Sharing Shortcuts API

Sharing Shortcuts API menggantikan Direct Share API.

Sharing Shortcuts API memungkinkan aplikasi memublikasikan target berbagi langsung lebih awal, bukan mengambil hasil secara reaktif sesuai permintaan. Berikut ini cara kerja ShortcutManager. Karena kedua API ini serupa, kami telah memperluas ShortcutInfo API untuk mempermudah penggunaan kedua fitur tersebut. Dengan Sharing Shortcuts API, Anda dapat langsung menetapkan kategori atau orang ke target berbagi. Target berbagi tetap ada di dalam sistem hingga aplikasi yang sama mengupdatenya atau aplikasi di-uninstal.

Mekanisme Berbagi Langsung lama masih berfungsi, tetapi aplikasi yang menggunakannya memiliki prioritas lebih rendah daripada aplikasi yang menggunakan Sharing Shortcuts API.

ShortcutInfo.Builder menambahkan dan meningkatkan kualitas metode untuk memberikan info tambahan tentang target berbagi.

Target berbagi langsung

Anda dapat memublikasikan pintasan dinamis sebagai Target Berbagi Langsung. Lihat Memublikasikan target berbagi langsung.

ShortcutManagerCompat adalah AndroidX API baru yang menyediakan kompatibilitas mundur dengan DirectShare API lama. Cara ini lebih disukai untuk memublikasikan target berbagi.

Melihat pratinjau teks

Saat berbagi konten teks, aplikasi dapat menampilkan pratinjau opsional konten tersebut di UI Sharesheet.

Lihat Menambahkan pratinjau rich text

Selengkapnya

Untuk mengetahui informasi selengkapnya tentang cara aplikasi bisa berbagi data, lihat Mengirim data sederhana ke aplikasi lain dan Menerima data sederhana dari aplikasi lain

Tema gelap

Android 10 menawarkan Tema gelap yang berlaku untuk UI sistem Android dan aplikasi yang berjalan di perangkat. Untuk mengetahui informasi selengkapnya, lihat Tema gelap.

Jenis layanan latar depan

Android 10 memperkenalkan atribut manifes XML foregroundServiceType, yang Anda sertakan dalam definisi beberapa layanan tertentu. Meskipun jarang sesuai, Anda dapat menetapkan beberapa jenis layanan latar depan ke layanan tertentu.

Tabel berikut menunjukkan berbagai jenis layanan latar depan dan layanan yang sesuai untuk mendeklarasikan jenis tertentu:

Jenis layanan latar depan Contoh kasus penggunaan untuk layanan yang seharusnya menyatakan jenis ini
connectedDevice Memantau pelacak kebugaran perangkat wearable
dataSync Mendownload file dari jaringan
location Melanjutkan tindakan yang dimulai pengguna
mediaPlayback Memutar buku audio, podcast, atau musik
mediaProjection Merekam video dari tampilan perangkat dalam waktu singkat
phoneCall Menangani panggilan telepon yang sedang berlangsung

Kotlin

Android 10 menyertakan update berikut ini untuk pengembangan Kotlin.

Anotasi nullability untuk API libcore

Android 10 meningkatkan cakupan anotasi nullability di SDK untuk API libcore. Anotasi ini memungkinkan developer aplikasi yang menggunakan analisis nullability Kotlin atau Java di Android Studio untuk mendapatkan informasi nullness saat berinteraksi dengan API ini.

Umumnya, pelanggaran kontrak nullability di Kotlin akan mengakibatkan error kompilasi. Untuk memastikan kompatibilitas dengan kode yang ada, hanya anotasi @RecentlyNullable dan @RecentlyNonNull yang ditambahkan. Artinya, pelanggaran nullability akan menghasilkan peringatan, bukan error.

Selain itu, setiap anotasi @RecentlyNullable atau @RecentlyNonNull yang ditambahkan di Android 9 akan berubah menjadi @Nullable dan @NonNull. Artinya, di Android 10 dan yang lebih tinggi, pelanggaran nullability akan menyebabkan error, bukan peringatan.

Untuk mengetahui informasi selengkapnya tentang perubahan anotasi, lihat Android Pie SDK kini lebih cocok untuk Kotlin di Blog Developer Android.

NDK

Android 10 menyertakan perubahan NDK berikut ini.

Proses debug yang disempurnakan untuk kepemilikan deskriptor file

Android 10 menambahkan fdsan untuk membantu Anda menemukan dan memperbaiki masalah kepemilikan deskriptor file dengan lebih mudah.

Bug yang terkait dengan kesalahan penanganan kepemilikan deskriptor file, yang cenderung termanifestasi sebagai use-after-close dan double-close, serupa dengan bug alokasi memori use-after-free dan double-free, tetapi cenderung jauh lebih sulit untuk didiagnosis dan diperbaiki. fdsan mencoba mendeteksi dan/atau mencegah kesalahan pengelolaan deskriptor file dengan menerapkan kepemilikan deskriptor file.

Untuk informasi selengkapnya tentang error yang terkait dengan masalah ini, lihat Error yang terdeteksi oleh fdsan. Untuk mengetahui informasi selengkapnya tentang fdsan, lihat halaman Googlesource tentang fdsan.

ELF TLS

Aplikasi yang di-build menggunakan NDK dengan minimum API level 29 dapat menggunakan ELF TLS, bukan emutls. Dukungan linker dinamis dan statis telah ditambahkan untuk mendukung metode penanganan variabel lokal thread ini.

Untuk aplikasi yang di-build untuk API level 28 dan yang lebih rendah, peningkatan telah diterapkan untuk libgcc/compiler-rt guna mengatasi beberapa masalah emutls.

Untuk informasi selengkapnya, lihat perubahan Android untuk developer NDK.

Runtime

Android 10 menghadirkan perubahan berikut ini untuk waktu proses.

Pemicuan pembersihan sampah memori berbasis Mallinfo

Jika objek Java platform kecil mereferensikan objek besar dalam heap C++, objek C++ biasanya hanya dapat diklaim kembali jika objek Java tersebut dikumpulkan dan, misalnya, diselesaikan. Pada rilis sebelumnya, platform memperkirakan ukuran banyak objek C++ yang terkait dengan objek Java. Perkiraan ini tidak selalu akurat dan terkadang mengakibatkan peningkatan penggunaan memori yang signifikan karena platform gagal membersihkan sampah memori pada waktu yang seharusnya.

Di Android 10, pembersih sampah memori (GC) melacak ukuran total heap yang dialokasikan oleh malloc() sistem, memastikan bahwa alokasi malloc() yang besar selalu disertakan dalam penghitungan yang memicu GC. Akibatnya, aplikasi yang menyisipkan sejumlah besar alokasi C++ dengan eksekusi Java mungkin mengalami peningkatan frekuensi pembersihan sampah memori. Aplikasi lainnya mungkin mengalami sedikit penurunan.

Pengujian dan proses debug

Android 10 menyertakan peningkatan berikut ini untuk pengujian dan proses debug.

Peningkatan pelacakan sistem pada perangkat

Mulai di Android 10, Anda dapat menentukan batas ukuran dan durasi rekaman aktivitas saat melakukan pelacakan sistem di perangkat. Saat Anda menentukan salah satu nilai, sistem akan melakukan pelacakan panjang, yang secara berkala menyalin buffer rekaman aktivitas ke file tujuan selagi rekaman aktivitas direkam. Rekaman aktivitas selesai saat batas ukuran atau durasi yang Anda tentukan tercapai.

Gunakan parameter tambahan ini untuk menguji kasus penggunaan yang berbeda dengan yang biasanya Anda uji dengan pelacakan standar. Misalnya, Anda mungkin mendiagnosis bug performa yang hanya terjadi setelah aplikasi berjalan untuk waktu yang lama. Dalam hal ini, Anda dapat merekam pelacakan panjang sepanjang hari, lalu menganalisis penjadwal CPU, aktivitas disk, thread aplikasi, dan data lainnya dalam laporan untuk membantu Anda menentukan penyebab bug.

Di Android 10 dan yang lebih tinggi, file rekaman aktivitas disimpan dalam format yang dapat dibuka dengan Perfetto, sebuah project open source untuk instrumentasi performa dan perekaman aktivitas. Anda dapat mengonversi file rekaman aktivitas Perfetto ke dalam format Systrace.

Penyempurnaan TextClassifier

Android 10 menyediakan fungsi klasifikasi teks tambahan dalam antarmuka TextClassifier.

Deteksi bahasa

Cara kerja metode detectLanguage() mirip dengan metode klasifikasi yang sudah ada sebelumnya. Metode ini menerima objek TextLanguage.Request dan menampilkan objek TextLanguage.

Objek TextLanguage terdiri dari daftar pasangan yang diurutkan. Setiap pasangan berisi lokalitas dan skor keyakinan yang sesuai untuk klasifikasi.

Tindakan percakapan yang disarankan

Cara kerja metode suggestConversationActions() mirip dengan metode klasifikasi yang sudah ada. Metode ini menerima objek ConversationActions.Request dan menampilkan objek ConversationActions.

Objek ConversationActions terdiri dari daftar objek ConversationAction. Setiap objek ConversationAction menyertakan kemungkinan tindakan yang disarankan dan skor keyakinannya.

Smart reply/tindakan di notifikasi

Android 9 memperkenalkan kemampuan untuk menampilkan balasan yang disarankan dalam notifikasi. Android 10 mengembangkannya dengan kemampuan untuk menyertakan tindakan berbasis intent yang disarankan. Selain itu, platform dapat menghasilkan saran ini secara otomatis. Aplikasi tetap dapat memberikan saran sendiri, atau memilih untuk tidak menerima saran yang dihasilkan sistem.

API yang digunakan untuk membuat balasan ini adalah bagian dari TextClassifier, dan juga telah diekspos langsung kepada developer di Android 10. Silakan baca bagian tentang peningkatan TextClassifier untuk mengetahui informasi selengkapnya.

Jika aplikasi Anda memberikan sarannya sendiri, platform tidak akan menghasilkan saran otomatis. Jika tidak ingin notifikasi aplikasi menampilkan balasan atau tindakan yang disarankan, Anda dapat memilih untuk tidak menggunakan balasan dan tindakan yang dihasilkan sistem menggunakan setAllowGeneratedReplies() dan setAllowSystemGeneratedContextualActions().