Android 10 memperkenalkan fitur dan kemampuan hebat bagi para pengguna dan developer. Dokumen ini memperjelas apa saja yang tersedia untuk developer.
Untuk mempelajari API, baca laporan perbedaan API atau kunjungi referensi API Android, cari API apa saja yang "ditambahkan dalam API level 29". Pastikan juga untuk mencari tahu 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 dirangkum di bagian berikut:
Dialog autentikasi biometrik yang disempurnakan
Android 10 memperkenalkan penyempurnaan berikut untuk dukungan autentikasi biometrik:
- Pemeriksaan untuk kemampuan autentikasi biometrik.
- Mekanisme penggantian yang memungkinkan pengguna melakukan autentikasi menggunakan PIN, pola, atau sandi perangkat jika input biometrik tidak berfungsi.
- Petunjuk yang memberi tahu sistem untuk tidak meminta konfirmasi pengguna setelah mereka melakukan autentikasi menggunakan modalitas biometrik implisit. Misalnya, Anda bisa memberi tahu sistem bahwa konfirmasi lebih lanjut tidak diperlukan setelah pengguna melakukan autentikasi menggunakan autentikasi wajah.
Menjalankan kode DEX tersemat langsung dari APK
Dimulai dari Android 10, Anda bisa memberi tahu platform untuk menjalankan kode DEX tersemat langsung dari file APK aplikasi. Opsi ini bisa 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 merupakan revisi besar untuk standar TLS yang menghadirkan keunggulan performa dan penyempurnaan keamanan. Tolok ukur kami menunjukkan bahwa koneksi yang aman bisa dibuat hingga 40% lebih cepat dengan TLS 1.3 dibandingkan TLS 1.2.
Untuk mengetahui detail selengkapnya tentang implementasi TLS 1.3 kami, lihat bagian TLS di halaman perubahan perilaku untuk semua aplikasi.
Conscrypt API Publik
Dimulai dari Android 10, penyedia keamanan Conscrypt menyertakan API publik untuk fungsionalitas TLS.
Kumpulan class di bawah android.net.ssl
berisi metode statis untuk mengakses fungsi yang tidak tersedia dari API javax.net.ssl
umum. Nama untuk class ini dapat disimpulkan sebagai bentuk jamak dari class javax.net.ssl
yang terkait. Misalnya, kode yang berjalan 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. Dengan fitur ini, aplikasi Anda dapat meminta pengguna untuk mengubah titik akses yang terhubung dengan perangkat menggunakan WifiNetworkSpecifier
untuk mendeskripsikan properti jaringan yang diminta. Koneksi peer-to-peer digunakan untuk keperluan selain penyediaan jaringan, misalnya konfigurasi bootstrap untuk perangkat sekunder seperti hardware Chromecast dan Google Home.
Untuk mengetahui informasi selengkapnya, lihat API Permintaan Jaringan Wi-Fi untuk konektivitas peer-to-peer.
API saran jaringan Wi-Fi
Android 10 menambahkan dukungan bagi aplikasi Anda untuk meminta pengguna menghubungkan perangkat ke titik akses Wi-Fi. Anda bisa memberikan saran terkait jaringan mana yang bisa digunakan. Selanjutnya, platform akan memilih titik akses mana 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 digunakan agar meminimalkan latensi.
Android 10 mengembangkan API penguncian Wi-Fi untuk mendukung mode performa tinggi dan latensi rendah secara efektif. Penghematan daya Wi-Fi dinonaktifkan untuk mode performa tinggi dan latensi rendah, dan pengoptimalan latensi lebih lanjut bisa diaktifkan dalam mode latensi rendah, tergantung pada dukungan modem.
Mode latensi rendah hanya diaktifkan jika aplikasi yang memperoleh kunci sedang berjalan di latar depan dan layar dalam kondisi menyala. Mode latensi rendah ini sangat berguna dalam aplikasi game seluler real time.
Pencarian khusus dalam resolver DNS
Android 10 menambahkan dukungan bawaan untuk pencarian DNS khusus menggunakan pencarian cleartext dan mode DNS-over-TLS. Sebelumnya, resolver DNS platform hanya mendukung data A dan AAAA, yang hanya memungkinkan pencarian alamat IP yang terkait dengan suatu nama, tetapi tidak mendukung jenis data lainnya.
API DnsResolver
menyediakan resolusi asinkron umum, yang memungkinkan Anda mencari SRV
, NAPTR
, dan jenis rekam lainnya. Perlu diketahui bahwa penguraian respons akan dilakukan oleh 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
Terdapat update untuk class API WifiP2pConfig
dan WifiP2pManager
di Android 10 untuk mendukung kemampuan pembuatan koneksi cepat ke Wi-Fi Langsung menggunakan informasi yang telah ditentukan. Informasi ini disampaikan 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 sebuah grup menggunakan kredensial, ganti manager.createGroup()
dengan 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 streaming data berukuran besar antara dua perangkat BLE. Antarmuka ini mengabstraksi Bluetooth dan mekanika konektivitas untuk menyederhanakan implementasi.
Fitur telepon
Android 10 menyertakan beberapa peningkatan terkait telepon.
Peningkatan kualitas panggilan
Android 10 menambahkan kemampuan untuk mengumpulkan informasi terkait kualitas panggilan IP Multimedia Subsystem (IMS) yang sedang berlangsung, termasuk kualitas ke dan dari jaringan, pada perangkat yang mendukung fitur tersebut.
Penyaringan panggilan dan nomor penelepon
Android 10 memberikan kemampuan pada aplikasi Anda untuk mengidentifikasi panggilan dari nomor tidak dikenal sebagai potensi panggilan telepon spam, dan untuk menolak panggilan telepon spam secara diam-diam atas nama pengguna. Informasi tentang panggilan ini dicatat sebagai panggilan yang diblokir di log panggilan untuk memberikan transparansi yang lebih baik kepada pengguna saat ada panggilan yang tidak terjawab. Dengan API ini, tidak ada lagi persyaratan untuk mendapatkan izin READ_CALL_LOG
dari pengguna untuk menyediakan fungsionalitas nomor penelepon dan penyaringan panggilan.
API layanan pengalihan panggilan
Android 10 mengubah cara penanganan intent panggilan. Siaran NEW_OUTGOING_CALL
kini tidak lagi digunakan dan diganti dengan API CallRedirectionService
. API CallRedirectionService
menyediakan antarmuka yang bisa Anda gunakan untuk memodifikasi panggilan keluar yang dilakukan oleh platform Android. Misalnya, aplikasi pihak ketiga bisa membatalkan panggilan dan merutekannya ulang 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 tanda
IS_PENDING
untuk memberikan akses eksklusif kepada aplikasi ke file media saat file sedang ditulis ke disk. - Jika mengetahui lokasi spesifik penyimpanan file, Anda bisa memberikan petunjuk kepada sistem tentang lokasi penyimpanan file yang baru ditulis.
- Setiap perangkat penyimpanan eksternal memiliki nama volume yang 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
Dimulai dari Android 10, notifikasi MediaStyle
akan menampilkan seekbar. Seekbar ini menunjukkan progres pemutaran dari PlaybackState.getPosition()
, dan dalam beberapa situasi, seekbar ini dapat digunakan untuk mencari lokasi dalam program yang sedang diputar. Tampilan dan perilaku seekbar dikontrol oleh aturan berikut:
- Seekbar muncul jika ada
MediaSession
yang aktif dan durasinya (ditentukan olehMediaMetadata.METADATA_KEY_DURATION
) lebih besar dari nol. Artinya, batang ini tidak akan muncul untuk streaming yang tidak menentu seperti streaming langsung dan siaran radio. - Jika sesi mengimplementasikan
ACTION_SEEK_TO
, pengguna bisa menyeret seekbar untuk mengontrol titik pemutaran.
API MIDI Bawaan
API MIDI Bawaan Android (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 pada MediaCodecInfo
yang mengungkapkan informasi selengkapnya tentang codec.
Untuk mengetahui informasi selengkapnya, lihat Codec media.
Thermal API
Ketika terlalu panas, perangkat dapat menekan CPU dan/atau GPU, dan hal ini dapat memengaruhi aplikasi dan game dengan cara yang tidak terduga. Aplikasi yang menggunakan grafis kompleks, komputasi yang berat, atau aktivitas jaringan yang berkelanjutan lebih cenderung mengalami masalah, dan hal tersebut bisa berbeda-beda di berbagai perangkat tergantung pada frekuensi inti dan chipset, tingkat integrasi, serta bahan unit dan faktor bentuk perangkat.
Kini, di Android 10, aplikasi dan game bisa menggunakan thermal API untuk memantau perubahan pada perangkat dan mengambil tindakan untuk mempertahankan penggunaan daya yang lebih rendah agar suhu kembali normal. Aplikasi mendaftarkan pemroses di PowerManager yang kemudian memungkinkan sistem melaporkan status termal saat ini, mulai dari ringan, sedang, hingga parah, kritis, darurat, dan shutdown.
Saat perangkat melaporkan tekanan termal, aplikasi dan game dapat membantu dengan membatalkan aktivitas yang sedang berlangsung guna mengurangi penggunaan daya dalam berbagai cara. Misalnya, aplikasi streaming bisa mengurangi resolusi/kecepatan bit atau traffic jaringan, aplikasi kamera bisa menonaktifkan flash atau penyempurnaan gambar intensif, game bisa menurunkan frekuensi gambar atau polygon tesselation, aplikasi media bisa mengurangi volume speaker, dan aplikasi peta bisa menonaktifkan GPS.
Thermal API membutuhkan lapisan HAL perangkat baru; yang saat ini didukung pada perangkat Pixel yang menjalankan Android 10, dan kami tengah bekerja sama dengan partner pembuat perangkat untuk segera menyediakan dukungan yang luas ke ekosistem ini.
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.
- Pengenalan enumerasi MONO dan NIR CFA untuk membedakan antara kamera monokrom biasa dengan kamera inframerah dekat.
Anda dapat menggunakan fitur ini untuk mengambil gambar monokrom native. Perangkat multi-kamera logis dapat menggunakan kamera monokrom sebagai sub-kamera fisik untuk mencapai kualitas gambar cahaya rendah yang lebih baik.
Format Dynamic Depth
Dimulai dari Android 10, kamera bisa menyimpan data kedalaman gambar dalam file terpisah menggunakan skema baru yang disebut Format Dynamic Depth (DDF). Aplikasi bisa meminta gambar JPG dan metadata kedalamannya, lalu menggunakan informasi tersebut untuk menerapkan efek blur yang diinginkan dalam tahap pascapemrosesan tanpa mengubah data gambar aslinya.
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 tinggi dan ukuran file yang lebih kecil jika dibandingkan dengan format file lainnya.
Untuk mengetahui informasi lebih lanjut mengenai format file tersebut, lihat HEIC.
Penyempurnaan pada multi-kamera
Android 10 menyempurnakan proses penggabungan beberapa kamera menjadi satu kamera logis, fitur yang telah diperkenalkan di Android 9 (API level 28). Hal-hal berikut ini ditambahkan ke API Camera2:
isSessionConfigurationSupported(SessionConfiguration sessionConfig)
— memungkinkan Anda untuk menanyakan apakah konfigurasi sesi yang diteruskan dapat digunakan untuk membuat sesi pengambilan gambar kamera.LOGICAL_MULTI_CAMERA_ACTIVE_PHYSICAL_ID
— memungkinkan Anda menentukan ID kamera fisik aktif yang mendukung perangkat kamera logis. Anda dapat menggunakan ID yang dikembalikan untuk meminta aliran logis dan aliran subkamera fisik untuk mencapai efisiensi daya yang lebih baik.
API layanan aksesibilitas
Android 10 memperkenalkan fitur dan API baru berikut untuk layanan aksesibilitas:
Tanda kunci entri AccessibilityNodeInfo
Dimulai dari Android 10, Anda dapat memanggil isTextEntryKey()
untuk menentukan apakah AccessibilityNodeInfo
tertentu merepresentasikan tombol entri teks yang merupakan bagian dari keyboard atau keypad.
Masukan lisan dialog aksesibilitas
Untuk situasi ketika pengguna perlu melakukan pintasan aksesibilitas guna memulai layanan aksesibilitas, Android 10 memungkinkan agar dialog tersebut disertai dengan perintah text-to-speech jika layanan memintanya.
Pintasan aksesibilitas saat navigasi gestur diaktifkan
Saat fitur navigasi gestur diaktifkan di Android 10, tombol aksesibilitas menjadi tidak terlihat atau tidak 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 bisa memicu pintasan aksesibilitas pada keyboard fisik dengan menekan Control+Alt+Z.
Penyempurnaan pengontrol keyboard virtual
Di Android 10, layanan aksesibilitas bisa meminta agar keyboard virtual tetap ditampilkan bahkan saat perangkat mendeteksi adanya keyboard fisik yang terpasang. Pengguna bisa mengganti perilaku ini.
Waktu tunggu aksesibilitas yang ditetapkan pengguna
Android 10 memperkenalkan API getRecommendedTimeoutMillis()
. Metode ini menyediakan dukungan untuk waktu tunggu yang ditentukan pengguna untuk elemen UI interaktif dan non-interaktif. Nilai yang dihasilkan 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 tanda FillRequest.FLAG_COMPATIBILITY_MODE_REQUEST
untuk menentukan apakah permintaan IsiOtomatis 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 bisa menampilkan dan menyembunyikan kolom sandi dalam dialog penyimpanan dengan menetapkan pemroses tindakan pada dialog dan mengubah visibilitas tampilan jarak jauh sandi yang terkait.
Dukungan untuk memperbarui set data
IsiOtomatis bisa memperbarui sandi yang sudah ada. Misalnya, jika pengguna sudah memiliki sandi, kemudian mereka menyimpan sandi baru, IsiOtomatis akan meminta mereka memperbarui sandi yang sudah ada, bukan menyimpan yang 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 satu nilai ke beberapa jenis ID kategori. Pada rilis sebelumnya, akan muncul pengecualian jika satu 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 spesifik aplikasi sepanjang durasi sesi.
Hal ini membantu layanan IsiOtomatis mendeteksi jenis kolom Anda dengan 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 penerapan JVMTI Android. Pada proses debug, fitur ini memungkinkan Anda menjalankan kembali fungsi setelah dijeda di titik henti sementara dan menyesuaikan setelan lokal, global, atau implementasi suatu fungsi. Untuk informasi lebih lanjut, lihat halaman referensi Pop Frame Oracle.
Surface control API
Android 10 menyediakan API SurfaceControl
untuk akses tingkat rendah ke compositor sistem (SurfaceFlinger
). Untuk sebagian besar pengguna, SurfaceView adalah cara yang tepat untuk memanfaatkan compositor. SurfaceControl
API dapat berguna dalam kasus tertentu, misalnya:
- Sinkronisasi beberapa permukaan
- Penyematan permukaan lintas proses
- Pengelolaan masa aktif level rendah
API SurfaceControl
tersedia dalam binding SDK dan NDK.
Implementasi NDK mencakup API untuk pertukaran buffer secara manual dengan compositor. Hal ini memberikan alternatif bagi pengguna yang dihadapkan pada batasan BufferQueue
.
Deteksi perender hung WebView
Android 10 memperkenalkan class abstrak WebViewRenderProcessClient
, yang dapat digunakan aplikasi untuk mendeteksi jika WebView
menjadi tidak responsif. Untuk menggunakan class ini:
- Tentukan subclass Anda sendiri, lalu terapkan metode
onRenderProcessResponsive()
danonRenderProcessUnresponsive()
. - Lampirkan instance
WebViewRenderProcessClient
Anda ke satu atau beberapa objekWebView
. - Jika
WebView
menjadi tidak responsif, sistem akan memanggil metodeonRenderProcessUnresponsive()
klien, meneruskanWebView
danWebViewRenderProcess
. (JikaWebView
adalah proses tunggal, parameterWebViewRenderProcess
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 mengambil tindakan lain.
Jika WebView
menjadi responsif
lagi, sistem akan memanggil onRenderProcessResponsive()
satu kali.
Panel setelan
Android 10 memperkenalkan Panel Setelan, yaitu API yang memungkinkan aplikasi Anda menampilkan setelan kepada pengguna dalam konteks aplikasinya. Pengguna pun tidak perlu lagi membuka Setelan untuk mengubah hal-hal seperti NFC atau Data seluler agar bisa menggunakan aplikasi.


Contoh, misalkan pengguna membuka browser web saat perangkat dalam mode pesawat. Sebelum Android 10, aplikasi hanya bisa menampilkan pesan umum yang meminta pengguna membuka Setelan untuk mengaktifkan kembali konektivitas. Dengan Android 10, aplikasi browser bisa menampilkan panel langsung yang memperlihatkan setelan konektivitas utama, seperti mode pesawat, Wi-Fi (termasuk jaringan di sekitar), dan data seluler. Dengan panel ini, pengguna bisa memulihkan konektivitas tanpa harus menutup 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 terkait 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 menjalankan operasi upload dan download berukuran besar.
ACTION_NFC
- Menampilkan semua setelan yang terkait dengan komunikasi nirkabel jarak dekat (NFC).
ACTION_VOLUME
- Menampilkan setelan volume untuk semua aliran audio.
Kami berencana untuk memperkenalkan wrapper AndroidX untuk fungsionalitas ini. Saat dipanggil di perangkat yang menjalankan Android 9 (API level 28) atau yang lebih rendah, wrapper akan membuka halaman yang paling sesuai pada aplikasi Setelan.
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 secara lebih awal, bukan mengambil hasil secara reaktif sesuai permintaan. Seperti inilah cara kerja ShortcutManager
.
Karena kedua API ini serupa, kami telah memperluas API ShortcutInfo
untuk mempermudah penggunaan kedua fitur tersebut. Dengan Sharing Shortcuts API, Anda bisa langsung menentukan kategori atau orang pada target berbagi. Target berbagi tetap ada di dalam sistem hingga aplikasi yang sama memperbaruinya atau aplikasi tersebut di-uninstal.
Mekanisme Berbagi Langsung yang lebih lama masih berfungsi, tetapi aplikasi yang menggunakannya memiliki prioritas lebih rendah daripada aplikasi yang menggunakan Sharing Shortcuts API.
ShortcutInfo.Builder
menambah dan menyempurnakan 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 API AndroidX baru yang menyediakan kompatibilitas mundur dengan DirectShare API yang lama. Cara ini pun lebih baik 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
Pelajari lebih lanjut
Untuk mengetahui informasi selengkapnya tentang cara aplikasi berbagi data, lihat Mengirim data sederhana ke aplikasi lain dan Menerima data sederhana dari aplikasi lain
Tema gelap
Android 10 menawarkan Tema gelap baru yang bisa diterapkan pada 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 disertakan dalam definisi beberapa layanan tertentu. Meskipun biasanya kurang sesuai, Anda bisa menetapkan beberapa jenis layanan latar depan ke layanan tertentu.
Tabel berikut ini menunjukkan berbagai jenis layanan latar depan dan layanan yang sesuai untuk mendeklarasikan jenis yang spesifik:
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 memperluas cakupan anotasi nullability dalam SDK untuk API libcore. Dengan anotasi ini, developer aplikasi yang menggunakan analisis nullability Kotlin atau Java di Android Studio bisa mendapatkan informasi nullness saat berinteraksi dengan API ini.
Pada umumnya, pelanggaran ketentuan nullability di Kotlin akan mengakibatkan error kompilasi. Untuk memastikan kompatibilitas dengan kode yang sudah ada, hanya anotasi @RecentlyNullable
dan @RecentlyNonNull
yang akan ditambahkan. Artinya, pelanggaran nullability akan memunculkan peringatan, bukan error.
Selain itu, setiap anotasi @RecentlyNullable
atau @RecentlyNonNull
yang telah ditambahkan di Android 9 akan berubah menjadi @Nullable
dan @NonNull
secara berurutan.
Artinya, di Android 10 dan yang lebih tinggi, pelanggaran nullability akan menghasilkan error dan bukan peringatan.
Untuk mengetahui informasi selengkapnya tentang perubahan anotasi, lihat SDK Android Pie 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 yang akan memudahkan Anda menemukan dan memperbaiki masalah kepemilikan deskriptor file.
Bug yang terkait dengan kesalahan penanganan kepemilikan deskriptor file, yang cenderung bermanifestasi sebagai use-after-close dan double-close, bisa dianalogikan dengan bug alokasi memori use-after-free dan double-free, tetapi jauh lebih sulit untuk didiagnosis dan diperbaiki. fdsan berupaya mendeteksi dan/atau mencegah kesalahan pengelolaan deskriptor file dengan memberlakukan kepemilikan deskriptor file.
Untuk informasi lebih lanjut tentang error yang terkait dengan masalah ini, lihat Error yang terdeteksi oleh fdsan. Untuk informasi lebih lanjut tentang fdsan, lihat halaman Googlesource terkait fdsan.
ELF TLS
Aplikasi yang di-build menggunakan NDK dengan minimum API level 29 bisa menggunakan ELF TLS sebagai ganti emutls
. Dukungan linker dinamis dan statis telah ditambahkan untuk mendukung metode penanganan variabel lokal thread ini.
Bagi aplikasi yang di-build untuk API level 28 dan yang lebih rendah, peningkatan telah diimplementasikan untuk libgcc/compiler-rt
guna mengatasi beberapa masalah emutls
.
Untuk informasi lebih lanjut, lihat perubahan Android untuk developer NDK.
Waktu proses
Android 10 menghadirkan perubahan berikut ini untuk waktu proses.
Pemicuan pembersihan sampah memori berbasis Mallinfo
Saat objek Java platform kecil mereferensikan objek besar dalam heap C++, objek C++ biasanya hanya dapat diklaim kembali jika objek Java tersebut dikumpulkan dan difinalisasi. Pada rilis sebelumnya, platform memperkirakan ukuran 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 ketika proses tersebut harus dilakukan.
Di Android 10, pembersih sampah memori (GC) mencatat 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 akan 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
Dimulai dari Android 10, Anda bisa menentukan batas untuk ukuran dan durasi rekaman aktivitas saat Anda melakukan perekaman aktivitas sistem di perangkat. Saat Anda menentukan salah satu nilai, sistem akan melakukan perekaman aktivitas panjang; menyalin buffer perekaman secara berkala ke file tujuan selagi melakukan perekaman aktivitas. Perekaman selesai ketika batas ukuran atau durasi yang Anda tentukan tercapai.
Gunakan parameter tambahan ini untuk menguji kasus penggunaan yang berbeda dengan yang biasanya Anda uji dengan perekaman aktivitas standar. Misalnya, Anda mungkin mendiagnosis bug performa yang hanya terjadi setelah aplikasi berjalan untuk waktu yang lama. Dalam hal ini, Anda bisa merekam aktivitas yang cukup panjang satu hari penuh, kemudian menganalisis penjadwal CPU, aktivitas disk, thread aplikasi, dan data lainnya dalam laporan untuk membantu menentukan penyebab bug.
Di Android 10 dan yang lebih tinggi, file rekaman aktivitas disimpan dalam format yang bisa dibuka dengan Perfetto, sebuah proyek open-source untuk instrumentasi performa dan perekaman aktivitas. Anda bisa mengonversi file rekaman aktivitas Perfetto ke dalam format Systrace.
Penyempurnaan TextClassifier
Android 10 menghadirkan fungsionalitas 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 mengembalikan objek TextLanguage
.
Objek TextLanguage
terdiri dari daftar pasangan yang sudah ditentukan. Setiap pasangan berisi lokal dan skor keyakinan yang sesuai untuk klasifikasi.
Tindakan percakapan yang disarankan
Cara kerja metode suggestConversationActions()
ini mirip dengan metode klasifikasi yang sudah ada. Metode ini menerima objek ConversationActions.Request
dan mengembalikan objek ConversationActions
.
Objek ConversationActions
terdiri dari daftar objek ConversationAction
. Setiap objek ConversationAction
mencakup 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. Selanjutnya, platform ini bisa menghasilkan saran ini secara otomatis. Aplikasi tetap bisa memberikan sarannya sendiri, atau memilih untuk tidak menggunakan saran yang dihasilkan sistem.API yang digunakan untuk membuat balasan ini merupakan bagian dari TextClassifier
, dan sudah diberikan secara langsung kepada para developer di Android 10.
Silakan baca bagian tentang peningkatan TextClassifier untuk mengetahui informasi selengkapnya.
Jika aplikasi Anda memiliki saran sendiri, platform tidak akan menghasilkan saran otomatis apa pun. Jika Anda 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()
.