Android 9 (API level 28) memperkenalkan berbagai fitur dan kemampuan baru yang luar biasa bagi pengguna dan
developer. Dokumen ini menyoroti hal-hal baru untuk developer.
Untuk mengetahui tentang API baru, baca laporan perbedaan API atau kunjungi referensi Android API. Pastikan juga memeriksa Perubahan Perilaku Android 9 untuk mengetahui tentang area pada aplikasi Anda yang mungkin terpengaruh oleh perubahan platform.
Android 9 menambahkan dukungan platform untuk protokol
Wi-Fi IEEE 802.11mc—juga dikenal sebagai Wi-Fi Round-Trip-Time (RTT)—sehingga Anda bisa memanfaatkan
pemosisian dalam ruangan di aplikasi Anda.
Pada perangkat yang menjalankan Android 9 dengan dukungan hardware, aplikasi Anda bisa menggunakan RTT API untuk mengukur jarak ke access points (AP) Wi-Fi berkemampuan RTT terdekat. Perangkat harus mengaktifkan layanan lokasi dan pemindaian Wi-Fi (dalam Settings > Location), dan aplikasi Anda harus memiliki izin
Bila perangkat Anda mengukur jarak ke 3 atau beberapa access point, Anda bisa menggunakan algoritme multilaterasi untuk memperkirakan posisi perangkat yang paling tepat berdasarkan pengukuran tersebut. Hasilnya biasanya akurat 1 hingga 2 meter.
Dengan tingkat keakuratan ini, Anda bisa build pengalaman baru seperti navigasi dalam bangunan dan layanan berbasis lokasi yang bagus seperti kontrol suara yang jelas (misalnya, "Hidupkan lampu ini"), dan informasi berbasis lokasi (seperti "Adakah penawaran spesial untuk produk ini?").
Android 9 menawarkan dukungan bagi layar tepi-ke-tepi terbaru
yang berisi cutout tampilan untuk kamera dan speaker. Class
Atribut layout jendela baru,
Penyempurnaan lain pada kamera termasuk parameter Session tambahan yang membantu mengurangi penundaan selama pengambilan awal, dan surface sharing yang memungkinkan klien kamera menangani berbagai kasus penggunaan tanpa harus berhenti dan memulai streaming kamera. Kami juga menambahkan API untuk dukungan flash berbasis tampilan dan akses ke stempel waktu OIS untuk efek khusus dan stabilisasi gambar tingkat aplikasi.
Di Android 9, multi-camera API mendukung kamera monokrom untuk perangkat dengan kemampuan
Android 9 juga mengaktifkan dukungan untuk kamera UVC/USB eksternal pada perangkat yang didukung.
Ada berbagai metode yang bisa Anda gunakan untuk menyetel properti gambar:
Catatan: Ketika Anda melakukan pascaproses
Sebuah
Android 9 menambahkan dukungan encoding gambar HEIF (heic) ke platform. Contoh gambar HEIF didukung dalam class
Metrik media juga tersedia dari class
Android 9 menambahkan metode ke class
Di Android 9, AAudio API menyertakan atribut AAudioStream untuk penggunaan, tipe konten, dan preset masukan. Dengan menggunakan atribut ini, Anda bisa membuat streaming yang disesuaikan untuk aplikasi camcorder atau VoIP. Anda juga bisa menyetel SessionID untuk menghubungkan streaming AAudio dengan submix yang dapat berisi efek. Gunakan
Android 9 menyertakan AudioEffect API untuk DynamicsProcessing. Dengan class ini Anda bisa build efek audio berbasis saluran yang terdiri dari beberapa tahap dari berbagai jenis termasuk equalization, kompresi multifrekuensi, dan limiter. Jumlah frekuensi dan tahapan aktif bisa dikonfigurasi, dan sebagian besar parameter dapat dikontrol secara real time.
Tugas bisa menyatakan perkiraan ukuran data, pemuatan dini sinyal, dan menentukan persyaratan jaringan secara detail.
Ketika menambahkan tugas, pastikan menggunakan
Selain itu, API ini juga memperkenalkan fungsi baru,
Jika pengguna menerima pernyataan tersebut, Android Keystore akan menerima dan menyimpan tanda tangan kriptografik yang dilindungi oleh kode autentikasi pesan hash berkunci (HMAC). Setelah Android Keystore mengonfirmasi validitas pesan, aplikasi Anda bisa menggunakan kunci yang dihasilkan dari
Untuk panduan tentang menambahkan dukungan bagi Android Protected Confirmation, lihat panduan Android Protected Confirmation .
Bila aplikasi Anda menggunakan
Catatan: Sebelum menggunakan
Untuk mempelajari lebih lanjut tentang penggunaan Strongbox Keymaster, lihat Modul Keamanan Hardware.
Catatan: Fitur ini hanya didukung pada perangkat yang dilengkapi dengan Keymaster 4 atau yang lebih tinggi.
Pelajari lebih lanjut tentang cara Mengimpor kunci dienkripsi secara lebih aman.
Catatan: Perangkat yang menjalankan Android 8.1 (API level 27) atau yang lebih rendah tidak mendukung perubahan sertifikat penandatanganan. Bila
Pelajari lebih lanjut tentang cara merotasi kunci menggunakan
Catatan: Ketika flag
Untuk menjaga keamanan kunci dari dekripsi saat perangkat terkunci, aktifkan flag dengan meneruskan
Untuk mempelajari lebih lanjut tentang cara membuat aplikasi Anda agar lebih aman, lihat Keamanan untuk Developer Android.
Untuk mempelajari lebih lanjut tentang melakukan backup data di perangkat Android, lihat Ringkasan Backup Data.
Misalnya, dalam aplikasi belanja, pembaca layar bisa membantu pengguna menuju langsung dari satu kategori transaksi ke kategori berikutnya, tanpa pembaca layar harus membaca semua item dalam kategori sebelum beralih ke kategori berikutnya.
Di Android 9, Anda bisa memberikan judul panel aksesibilitas, atau judul yang dapat diidentifikasi secara individual, untuk panel ini. Bila sebuah panel memiliki judul panel aksesibilitas, layanan aksesibilitas akan menerima informasi lebih terperinci ketika panel berubah. Kemampuan ini memungkinkan layanan memberikan informasi yang lebih terperinci kepada pengguna tentang apa yang berubah dalam UI.
Untuk menentukan judul panel, gunakan atribut
Di Android 8.1 dan yang lebih rendah, Anda harus menandai setiap objek
Mulai Android 9, Anda bisa menggunakan atribut
Bila suatu aplikasi telah menetapkan judul panel aksesibilitas untuk objek
Dampak kompatibilitas bagi aplikasi sangat minim dalam banyak kasus. Namun, bila aplikasi Anda memiliki perilaku rotasi yang disesuaikan atau menggunakan setelan orientasi layar yang tidak biasa, Anda mungkin mengalami masalah yang tidak diketahui sebelumnya, ketika preferensi rotasi pengguna selalu disetel ke potret. Kami anjurkan Anda untuk melihat perilaku rotasi di semua aktivitas utama aplikasi dan memastikan bahwa semua setelan orientasi layar memberikan pengalaman yang optimal.
Untuk detail selengkapnya, lihat perubahan perilaku yang terkait.
Peningkatan ini sangat menguntungkan perangkat low-end dengan kecepatan I/O disk yang lebih lambat.
Dengan mengumpulkan rekaman aktivitas ini, Anda bisa mengambil data waktu yang terkait dengan proses dan thread aplikasi serta melihat tipe status perangkat global yang signifikan lainnya.
Catatan: Anda tidak perlu memperlengkapi kode untuk merekam aktivitas, tetapi hal ini bisa membantu Anda melihat bagian kode aplikasi mana yang mungkin berkontribusi terhadap thread menggantung atau kelambanan UI.
Untuk mempelajari lebih lanjut tentang fitur ini, lihat Melakukan pelacakan sistem di perangkat.
Source :
Fitur dan API Android 9
Untuk mengetahui tentang API baru, baca laporan perbedaan API atau kunjungi referensi Android API. Pastikan juga memeriksa Perubahan Perilaku Android 9 untuk mengetahui tentang area pada aplikasi Anda yang mungkin terpengaruh oleh perubahan platform.
Pemosisian dalam ruangan dengan Wi-Fi RTT
Pada perangkat yang menjalankan Android 9 dengan dukungan hardware, aplikasi Anda bisa menggunakan RTT API untuk mengukur jarak ke access points (AP) Wi-Fi berkemampuan RTT terdekat. Perangkat harus mengaktifkan layanan lokasi dan pemindaian Wi-Fi (dalam Settings > Location), dan aplikasi Anda harus memiliki izin
ACCESS_FINE_LOCATION
.
Perangkat tidak perlu terhubung ke access point untuk menggunakan RTT.
Untuk menjaga privasi, hanya ponsel yang bisa menentukan jarak ke
access point; access point tidak memiliki informasi ini.Bila perangkat Anda mengukur jarak ke 3 atau beberapa access point, Anda bisa menggunakan algoritme multilaterasi untuk memperkirakan posisi perangkat yang paling tepat berdasarkan pengukuran tersebut. Hasilnya biasanya akurat 1 hingga 2 meter.
Dengan tingkat keakuratan ini, Anda bisa build pengalaman baru seperti navigasi dalam bangunan dan layanan berbasis lokasi yang bagus seperti kontrol suara yang jelas (misalnya, "Hidupkan lampu ini"), dan informasi berbasis lokasi (seperti "Adakah penawaran spesial untuk produk ini?").
Dukungan cutout tampilan
DisplayCutout
memungkinkan Anda mengetahui lokasi dan bentuk area nonfungsional di mana
isi tidak boleh ditampilkan. Untuk menentukan keberadaan dan penempatan
area cutout ini, gunakan metode
getDisplayCutout()
.Atribut layout jendela baru,
layoutInDisplayCutoutMode
,
memungkinkan aplikasi Anda untuk meletakkan isinya di sekitar cutout perangkat. Anda bisa menyetel
atribut ini ke salah satu nilai berikut:LAYOUT_IN_DISPLAY_CUTOUT_MODE_DEFAULT
LAYOUT_IN_DISPLAY_CUTOUT_MODE_SHORT_EDGES
LAYOUT_IN_DISPLAY_CUTOUT_MODE_NEVER
- Aktifkan developer options.
- Di layar Developer options, scroll ke bawah ke bagian Drawing dan pilih Simulate a display with a cutout.
- Pilih ukuran cutout.
Notifikasi
Android 9 memperkenalkan beberapa penyempurnaan ke notifikasi, semuanya tersedia untuk developer yang menargetkan API level 28 dan di atasnya.Pengalaman messaging yang disempurnakan
Mulai Android 7.0 (API level 24), Anda bisa menambahkan aksi untuk membalas pesan atau memasukkan teks lain langsung dari notifikasi. Android 9 menyempurnakan fitur ini dengan penyempurnaan berikut:- Penyederhanaan dukungan untuk peserta percakapan: Class
Person
digunakan untuk mengidentifikasi orang-orang yang terlibat dalam percakapan, termasuk avatar dan URI mereka. Banyak API lain, sepertiaddMessage()
, sekarang memanfaatkan classPerson
sebagai gantiCharSequence
. ClassPerson
juga mendukung pola desain Builder. - Dukungan gambar: Android 9 sekarang menampilkan gambar dalam Notifikasi Messaging
di ponsel. Anda bisa menggunakan
setData()
pada pesan untuk menampilkan gambar. Cuplikan kode berikut menunjukkan cara membuatPerson
dan pesan yang berisi gambar.
// Create new Person.
Person sender = new Person()
.setName(name)
.setUri(uri)
.setIcon(null)
.build();
// Create image message.
Message message = new Message("Picture", time, sender)
.setData("image/", imageUri);
Notification.MessagingStyle style = new Notification.MessagingStyle(getUser())
.addMessage("Check this out!", 0, sender)
.addMessage(message);
- Menyimpan balasan sebagai draf: Aplikasi Anda bisa mengambil kembali
EXTRA_REMOTE_INPUT_DRAFT
yang dikirim oleh sistem ketika pengguna secara tidak sengaja menutup notifikasi messaging. Anda bisa menggunakan tambahan ini untuk mengisi terlebih dahulu kolom teks di dalam aplikasi sehingga pengguna dapat menyelesaikan balasannya. - Mengidentifikasi bila suatu percakapan adalah percakapan grup: Anda bisa menggunakan
setGroupConversation()
dengan tujuan untuk mengidentifikasi percakapan sebagai percakapan grup atau nongrup. - Menyetel aksi semantik untuk sebuah intent: Metode
setSemanticAction()
memungkinkan Anda memberi makna semantik pada suatu aksi, seperti "mark as read," "delete," "reply," dan seterusnya. - SmartReply: Android 9 mendukung saran balasan yang sama yang tersedia di
aplikasi messaging Anda. Gunakan
RemoteInput.setChoices()
untuk memberikan berbagai respons standar kepada pengguna.
Setelan saluran, siaran, dan Jangan Ganggu
Android 8.0 memperkenalkan Saluran Notifikasi, yang memungkinkan Anda membuat saluran yang dapat dikustomisasi pengguna untuk setiap jenis notifikasi yang ingin ditampilkan. Android 9 menyederhanakan setelan saluran notifikasi dengan perubahan ini:- Memblokir grup saluran: Pengguna kini bisa memblokir seluruh grup saluran
dalam pengaturan notifikasi untuk suatu aplikasi. Anda bisa menggunakan metode
isBlocked()
untuk mengidentifikasi saat sebuah grup diblokir dan, berakibat, tidak mengirimkan notifikasi apa pun untuk saluran dalam grup tersebut.
Selain itu, aplikasi Anda bisa meminta setelan grup saluran saat ini menggunakan metodegetNotificationChannelGroup()
baru. - Tipe intent siaran baru: Sistem Android sekarang mengirimkan intent siaran
ketika status pemblokiran saluran notifikasi dan grup saluran berubah.
Aplikasi yang memiliki saluran atau grup yang diblokir bisa mendengarkan intent ini dan
bereaksi sesuai dengan keadaan. Untuk informasi selengkapnya tentang tindakan dan ekstra intent ini,
lihat daftar konstanta terupdate dalam referensi
NotificationManager
. Untuk informasi tentang respons terhadap intent siaran, lihat Siaran. NotificationManager.Policy
memiliki tiga kategori prioritas Do-Not-Disturb baru:
PRIORITY_CATEGORY_ALARMS
memprioritaskan alarm.PRIORITY_CATEGORY_MEDIA
memprioritaskan suara dari sumber media, seperti media dan navigasi suara.PRIORITY_CATEGORY_SYSTEM
memprioritaskan suara sistem.
NotificationManager.Policy
juga memiliki tujuh konstanta Do-Not-Disturb baru yang bisa Anda gunakan untuk meminimalkan gangguan visual:
SUPPRESSED_EFFECT_FULL_SCREEN_INTENT
mencegah notifikasi meluncurkan aktivitas layar penuh.SUPPRESSED_EFFECT_LIGHTS
memblokir lampu notifikasi.SUPPRESSED_EFFECT_PEEK
mencegah notifikasi agar tidak muncul sekilas ke tampilan ("mengintip").SUPPRESSED_EFFECT_STATUS_BAR
mencegah notifikasi agar tidak muncul pada status bar di perangkat yang mendukung status bar.SUPPRESSED_EFFECT_BADGE
memblokir badge di perangkat yang mendukung pemberian badge. Untuk informasi selengkapnya, lihat Memodifikasi badge notifikasi.SUPPRESSED_EFFECT_AMBIENT
memblokir notifikasi di perangkat yang mendukung tampilan standby.SUPPRESSED_EFFECT_NOTIFICATION_LIST
mencegah notifikasi agar tidak muncul dalam tampilan daftar di perangkat yang mendukung tampilan daftar, seperti menu notifikasi atau kunci layar.
Dukungan multikamera dan update kamera
Pada perangkat yang menjalankan Android 9, Anda bisa mengakses streaming secara bersamaan dari dua atau beberapa kamera. Pada perangkat dengan kamera dual-depan atau dual-belakang, Anda bisa membuat fitur inovatif yang tidak mungkin dilakukan dengan hanya satu kamera saja, seperti zoom yang mulus, bokeh, dan stereo vision. API ini juga memungkinkan Anda memanggil streaming kamera logis atau tergabung yang bisa secara otomatis beralih di antara dua atau beberapa kamera.Penyempurnaan lain pada kamera termasuk parameter Session tambahan yang membantu mengurangi penundaan selama pengambilan awal, dan surface sharing yang memungkinkan klien kamera menangani berbagai kasus penggunaan tanpa harus berhenti dan memulai streaming kamera. Kami juga menambahkan API untuk dukungan flash berbasis tampilan dan akses ke stempel waktu OIS untuk efek khusus dan stabilisasi gambar tingkat aplikasi.
Di Android 9, multi-camera API mendukung kamera monokrom untuk perangkat dengan kemampuan
FULL
atau
LIMITED
.
Keluaran monokrom dicapai melalui format
YUV_420_888
dengan Y sebagai grayscale, U (Cb) sebagai 128, dan V (Cr) sebagai 128.Android 9 juga mengaktifkan dukungan untuk kamera UVC/USB eksternal pada perangkat yang didukung.
ImageDecoder untuk sumber daya dapat digambar dan bitmap
Android 9 memperkenalkan classImageDecoder
, yang menyediakan pendekatan modern untuk decoding gambar. Gunakan class ini
sebagai ganti API BitmapFactory
dan BitmapFactory.Options
.ImageDecoder
memungkinkan Anda membuat
Drawable
atau
Bitmap
dari buffer byte, file,
atau URI. Untuk mendekode gambar, panggil terlebih dahulu
createSource()
dengan sumber gambar yang dienkode. Kemudian, panggil
decodeDrawable()
atau decodeBitmap()
dengan meneruskan objek ImageDecoder.Source
untuk membuat Drawable
] atau Bitmap
. Untuk mengubah
setelan default, berikan OnHeaderDecodedListener
ke
decodeDrawable()
atau decodeBitmap()
. ImageDecoder
memanggil
onHeaderDecoded()
dengan lebar dan tinggi default gambar, setelah diketahui.
Bila gambar yang dienkode adalah GIF atau WebP animasi, decodeDrawable()
menampilkan
Drawable
yang merupakan instance dari class
AnimatedImageDrawable
.Ada berbagai metode yang bisa Anda gunakan untuk menyetel properti gambar:
- Untuk menskalakan gambar yang didekode ke ukuran yang tepat, berikan dimensi target ke dalam
setTargetSize()
. Anda juga bisa menskalakan gambar menggunakan ukuran contoh. Berikan ukuran contoh langsung kesetTargetSampleSize()
. - Untuk memangkas gambar dalam rentang gambar yang diskalakan, panggil
setCrop()
. - Untuk membuat bitmap yang bisa berubah, berikan
true
kesetMutableRequired()
.
ImageDecoder
juga memungkinkan Anda menambahkan efek yang rumit dan disesuaikan pada gambar
seperti sudut membulat atau
masker melingkar. Gunakan
setPostProcessor()
dengan instance class
PostProcessor
untuk menjalankan perintah gambar apa pun yang diinginkan.Catatan: Ketika Anda melakukan pascaproses
AnimatedImageDrawable
,
efek akan muncul di semua bingkai animasi.Animasi
Android 9 memperkenalkan classAnimatedImageDrawable
untuk menggambar dan menampilkan gambar animasi GIF dan WebP.
AnimatedImageDrawable
bekerja secara sama dengan
AnimatedVectorDrawable
dalam hal render thread yang mendorong animasi AnimatedImageDrawable
.
Render thread juga menggunakan thread pekerja untuk melakukan dekode, sehingga proses dekode tidak
mengganggu operasi lain pada render thread. Implementasi ini memungkinkan
aplikasi Anda menampilkan gambar animasi tanpa mengelola update atau
mengganggu event lain pada UI thread aplikasi Anda.Sebuah
AnimatedImageDrawable
bisa didekode menggunakan instance
ImageDecoder
. Cuplikan
kode berikut menunjukkan cara menggunakan ImageDecoder
untuk mendekode
AnimatedImageDrawable
Anda:private void decodeImage() throws IOException {
Drawable decodedAnimation = ImageDecoder.decodeDrawable(
ImageDecoder.createSource(getResources(), R.drawable.my_drawable));
if (decodedAnimation instanceof AnimatedImageDrawable) {
// Prior to start(), the first frame is displayed.
((AnimatedImageDrawable) decodedAnimation).start();
}
}
ImageDecoder
memiliki beberapa metode yang memungkinkan Anda untuk memodifikasi gambar lebih lanjut.
Misalnya, Anda bisa menggunakan metode
setPostProcessor()
untuk memodifikasi tampilan gambar, seperti mengaplikasikan masker melingkar atau
sudut membulat.HDR VP9 Video, kompresi gambar HEIF, dan Media API
Android 9 menambahkan dukungan bawaan untuk High Dynamic Range (HDR) VP9 Profile 2, sehingga kini Anda bisa menghadirkan film berkemampuan HDR kepada pengguna YouTube, Play Movies, dan sumber lainnya pada perangkat berkemampuan HDR.Android 9 menambahkan dukungan encoding gambar HEIF (heic) ke platform. Contoh gambar HEIF didukung dalam class
MediaMuxer
dan MediaExtractor
HEIF meningkatkan kompresi untuk menghemat penyimpanan dan data
jaringan. Dengan dukungan platform pada perangkat Android 9, kini
mengirim dan menggunakan gambar HEIF dari server backend Anda bisa
dilakukan dengan mudah. Setelah memastikan bahwa aplikasi Anda
kompatibel dengan format data ini untuk dibagikan dan ditampilkan,
cobalah HEIF sebagai format penyimpanan gambar di aplikasi Anda. Anda
bisa melakukan konversi jpeg-ke-heic menggunakan ImageDecoder atau BitmapFactory untuk menghasilkan bitmap dari jpeg, dan Anda dapat menggunakan HeifWriter untuk menulis gambar HEIF dari buffer byte YUV, Surface, atau Bitmap.Metrik media juga tersedia dari class
AudioTrack
, AudioRecord
,
dan MediaDrm
.Android 9 menambahkan metode ke class
MediaDRM
untuk mendapatkan metrik, tingkat
HDCP, tingkat keamanan dan jumlah sesi, dan untuk menambahkan lebih banyak kontrol atas
tingkat keamanan dan perhentian aman. Lihat Laporan Perbedaan API untuk detailnya.Di Android 9, AAudio API menyertakan atribut AAudioStream untuk penggunaan, tipe konten, dan preset masukan. Dengan menggunakan atribut ini, Anda bisa membuat streaming yang disesuaikan untuk aplikasi camcorder atau VoIP. Anda juga bisa menyetel SessionID untuk menghubungkan streaming AAudio dengan submix yang dapat berisi efek. Gunakan
AudioEffect API
untuk mengontrol efeknya.Android 9 menyertakan AudioEffect API untuk DynamicsProcessing. Dengan class ini Anda bisa build efek audio berbasis saluran yang terdiri dari beberapa tahap dari berbagai jenis termasuk equalization, kompresi multifrekuensi, dan limiter. Jumlah frekuensi dan tahapan aktif bisa dikonfigurasi, dan sebagian besar parameter dapat dikontrol secara real time.
Sensitivitas biaya data di JobScheduler
Mulai Android 9,JobScheduler
bisa menggunakan sinyal status jaringan yang disediakan oleh operator untuk meningkatkan penanganan
tugas yang terkait dengan jaringan.Tugas bisa menyatakan perkiraan ukuran data, pemuatan dini sinyal, dan menentukan persyaratan jaringan secara detail.
JobScheduler
kemudian mengelola tugas sesuai dengan
status jaringan. Misalnya, ketika sinyal jaringan menandakan bahwa jaringan sedang padat,
JobScheduler
mungkin menunda permintaan jaringan berukuran besar. Bila berada pada
jaringan tidak dibatasi, JobScheduler
bisa menjalankan tugas prefetch untuk
meningkatkan pengalaman pengguna, seperti dengan memuat awal judul utama.Ketika menambahkan tugas, pastikan menggunakan
setEstimatedNetworkBytes()
,
setPrefetch()
,
dan setRequiredNetwork()
pada saat yang tepat untuk membantu
JobScheduler
menangani pekerjaan dengan benar. Ketika tugas Anda dijalankan,
pastikan untuk menggunakan objek Network
yang
ditunjukkan oleh
JobParameters.getNetwork()
.
Jika tidak, Anda secara tidak langsung menggunakan jaringan default perangkat yang
mungkin tidak memenuhi persyaratan Anda, menyebabkan penggunaan data yang tidak diinginkan.Neural Networks API 1.1
Neural Networks API diperkenalkan di Android 8.1 (API level 27) untuk mempercepat machine learning pada perangkat di Android. Android 9 memperluas dan meningkatkan API, menambahkan dukungan untuk sembilan operasi baru:- Operasi matematis element-wise:
- Operasi array:
Masalah yang dikenal : Ketika memberikan tensor
ANEURALNETWORKS_TENSOR_QUANT8_ASYMM
ke operasi
ANEURALNETWORKS_PAD
, yang tersedia di Android 9 dan yang lebih tinggi,
keluaran dari NNAPI mungkin tidak cocok dengan keluaran dari framework machine
learning tingkat tinggi, seperti
TensorFlow Lite. Anda
sebaiknya hanya memberikan
ANEURALNETWORKS_TENSOR_FLOAT32
sampai masalahnya teratasi.
Selain itu, API ini juga memperkenalkan fungsi baru,
ANeuralNetworksModel_relaxComputationFloat32toFloat16()
,
yang memungkinkan Anda menentukan apakah akan menghitung
ANEURALNETWORKS_TENSOR_FLOAT32
dengan kisaran dan presisi serendah format
floating-point IEEE 754 16-bit.Framework IsiOtomatis
Android 9 memperkenalkan beberapa penyempurnaan yang bisa diterapkan layanan IsiOtomatis untuk semakin meningkatkan pengalaman pengguna saat mengisi formulir. Untuk mempelajari lebih lanjut tentang cara menggunakan fitur IsiOtomatis di aplikasi Anda, lihat panduan Framework IsiOtomatis.Penyempurnaan keamanan
Android 9 memperkenalkan sejumlah fitur keamanan, yang dirangkum dalam bagian berikut:Android Protected Confirmation
Perangkat yang didukung yang menjalankan Android 9 atau yang lebih tinggi memberi Anda kemampuan untuk menggunakan Android Protected Confirmation. Saat menggunakan alur kerja ini, aplikasi Anda menampilkan peringatan ke pengguna, meminta mereka untuk menyetujui pernyataan singkat. Pernyataan ini memungkinkan aplikasi untuk menegaskan bahwa pengguna ingin menyelesaikan transaksi yang sensitif, misalnya melakukan pembayaran.Jika pengguna menerima pernyataan tersebut, Android Keystore akan menerima dan menyimpan tanda tangan kriptografik yang dilindungi oleh kode autentikasi pesan hash berkunci (HMAC). Setelah Android Keystore mengonfirmasi validitas pesan, aplikasi Anda bisa menggunakan kunci yang dihasilkan dari
trustedConfirmationRequired
di trusted
execution environment (TEE) untuk menandatangani pesan yang diterima pengguna. Tanda
tangan tersebut menunjukkan, dengan keyakinan sangat tinggi, bahwa pengguna telah melihat
pernyataan tersebut dan telah menyetujuinya.
Perhatian: Android Protected Confirmation tidak menyediakan
saluran informasi aman untuk pengguna. Aplikasi Anda tidak bisa menganggap bahwa ada
jaminan kerahasiaan selain yang ditawarkan oleh platform Android. Secara
khusus, jangan gunakan alur kerja ini untuk menampilkan informasi sensitif yang biasanya tidak akan Anda
tampilkan pada perangkat pengguna.
Untuk panduan tentang menambahkan dukungan bagi Android Protected Confirmation, lihat panduan Android Protected Confirmation .
Dialog autentikasi biometrik terpadu
Di Android 9, sistem menyediakan dialog autentikasi biometrik atas nama aplikasi Anda. Fungsionalitas ini menghasilkan penampilan, cara kerja, dan penempatan yang terstandardisasi untuk dialog, yang lebih memberikan keyakinan kepada pengguna bahwa mereka melakukan autentikasi terhadap pemeriksa kredensial biometrik yang tepercaya.Bila aplikasi Anda menggunakan
FingerprintManager
untuk menampilkan dialog autentikasi sidik jari kepada pengguna, beralihlah menggunakan
BiometricPrompt
sebagai gantinya. BiometricPrompt
bergantung pada sistem untuk menampilkan dialog
autentikasi. Ia juga mengubah perilakunya untuk menyesuaikan dengan tipe autentikasi
biometrik yang telah dipilih pengguna.Catatan: Sebelum menggunakan
BiometricPrompt
di aplikasi, terlebih dahulu Anda harus menggunakan metode
hasSystemFeature()
untuk memastikan bahwa perangkat mendukung FEATURE_FINGERPRINT
, FEATURE_IRIS
,
atau FEATURE_FACE
. Jika perangkat tidak mendukung autentikasi biometrik, Anda bisa
melakukan fallback untuk memverifikasi PIN, pola, atau sandi pengguna dengan menggunakan metode
createConfirmDeviceCredentialIntent()
.Modul keamanan hardware
Perangkat didukung yang menjalankan Android 9 atau yang lebih tinggi telah terinstal bisa memiliki StrongBox Keymaster, suatu implementasi Keymaster HAL yang berada dalam modul keamanan hardware. Modul ini berisi hal-hal berikut:- CPU-nya sendiri.
- Penyimpanan aman.
- Generator nomor-acak yang sesungguhnya.
- Mekanisme tambahan untuk meredam gangguan package dan sideloading aplikasi yang tidak diizinkan.
Untuk mempelajari lebih lanjut tentang penggunaan Strongbox Keymaster, lihat Modul Keamanan Hardware.
Impor kunci aman ke dalam Keystore
Android 9 menyediakan keamanan dekripsi kunci tambahan dengan menambahkan kemampuan untuk mengimpor kunci dienkripsi secara aman ke dalam Keystore dengan menggunakan format kunci yang dienkode dengan ASN.1‑. Keymaster kemudian mendekripsi kunci dalam Keystore, sehingga isi kunci tidak pernah muncul sebagai teks biasa dalam memori host perangkat.Catatan: Fitur ini hanya didukung pada perangkat yang dilengkapi dengan Keymaster 4 atau yang lebih tinggi.
Pelajari lebih lanjut tentang cara Mengimpor kunci dienkripsi secara lebih aman.
Skema tanda tangan APK dengan rotasi kunci
Android 9 menambahkan dukungan untuk APK Signature Scheme v3. Skema ini memiliki opsi untuk menyertakan record bukti rotasi dalam blok penandatangannya bagi setiap sertifikat penandatanganan. Kemampuan ini memungkinkan aplikasi Anda ditandatangani dengan sertifikat penandatanganan baru dengan menautkan sertifikat penandatanganan sebelumnya milik file APK tersebut ke sertifikat penandatanganan yang kini digunakan untuk menandatanganinya.Catatan: Perangkat yang menjalankan Android 8.1 (API level 27) atau yang lebih rendah tidak mendukung perubahan sertifikat penandatanganan. Bila
minSdkVersion
aplikasi Anda 27
atau
yang lebih rendah, gunakan sertifikat penandatanganan lama untuk menandatangani aplikasi di samping tanda tangan
baru.Pelajari lebih lanjut tentang cara merotasi kunci menggunakan
apksigner
.Opsi untuk mengizinkan dekripsi kunci hanya pada perangkat yang tidak terkunci
Android 9 memperkenalkan flagunlockedDeviceRequired
. Opsi ini menentukan
apakah Keystore mengharuskan layar untuk dibuka kuncinya sebelum mengizinkan
dekripsi data yang disimpan atau sedang berjalan menggunakan kunci yang ditetapkan. Tipe-tipe
kunci ini sangat cocok untuk mengenkripsi data sensitif untuk disimpan di disk, seperti data
kesehatan atau perusahaan. Flag menyediakan jaminan yang lebih tinggi kepada pengguna bahwa
data tidak dapat didekripsi saat perangkat terkunci bila ponsel mereka hilang
atau dicuri.Catatan: Ketika flag
unlockedDeviceRequired
diaktifkan, enkripsi dan
verifikasi tanda tangan masih bisa terjadi kapan saja. Flag mencegah data hanya
dekripsi saat perangkat dibuka kuncinya.Untuk menjaga keamanan kunci dari dekripsi saat perangkat terkunci, aktifkan flag dengan meneruskan
true
ke metode setUnlockedDeviceRequired()
. Setelah melakukan langkah ini, ketika layar pengguna terkunci, setiap
upaya untuk mendekripsi atau menandatangani data menggunakan kunci ini akan gagal. Perangkat yang dikunci memerlukan
PIN, sandi, sidik jari, atau beberapa faktor tepercaya lainnya sebelum bisa
diakses.Dukungan enkripsi lama
Perangkat Android 9 yang dilengkapi dengan Keymaster 4 mendukung Triple Data Encryption Algorithm, atau Triple DES. Jika aplikasi Anda berinteroperasi dengan sistem lama yang membutuhkan Triple DES, gunakan jenis cipher ini saat mengenkripsi kredensial yang sensitif.Untuk mempelajari lebih lanjut tentang cara membuat aplikasi Anda agar lebih aman, lihat Keamanan untuk Developer Android.
Backup Android
Android 9 menambahkan fungsionalitas dan opsi developer baru yang terkait dengan backup dan restore. Detail tentang perubahan ini bisa dilihat di bagian berikut.Backup enkripsi sisi-klien
Android 9 menambahkan dukungan untuk mengenkripsi backup Android dengan rahasia sisi-klien. Dukungan ini diaktifkan secara otomatis bila persyaratan berikut terpenuhi:- Pengguna telah mengaktifkan backup menggunakan Android 9 atau yang lebih tinggi.
- Pengguna telah menyetel kunci layar untuk perangkat yang membutuhkan PIN, pola, atau sandi untuk membuka kunci.
Menetapkan persyaratan perangkat yang diperlukan untuk melakukan backup
Bila data aplikasi Anda berisi informasi atau preferensi sensitif, Android 9 memberikan Anda kemampuan untuk menetapkan persyaratan perangkat di mana data aplikasi Anda dimasukkan dalam backup pengguna, seperti ketika enkripsi sisi-klien diaktifkan atau transfer perangkat-ke-perangkat lokal sedang berlangsung.Untuk mempelajari lebih lanjut tentang melakukan backup data di perangkat Android, lihat Ringkasan Backup Data.
Aksesibilitas
Android 9 menghadirkan penyempurnaan bagi framework aksesibilitas yang mempermudah Anda dalam memberikan pengalaman yang lebih baik kepada pengguna aplikasi.Semantik navigasi
Atribut yang ditambahkan di Android 9 memudahkan Anda untuk menentukan bagaimana layanan aksesibilitas, terutama pembaca layar, menuju dari satu bagian layar ke bagian yang lain. Atribut ini bisa membantu pengguna yang mengalami gangguan penglihatan untuk dengan cepat membaca teks di UI aplikasi Anda dan memungkinkan mereka membuat pilihan.Misalnya, dalam aplikasi belanja, pembaca layar bisa membantu pengguna menuju langsung dari satu kategori transaksi ke kategori berikutnya, tanpa pembaca layar harus membaca semua item dalam kategori sebelum beralih ke kategori berikutnya.
Judul panel aksesibilitas
Di Android 8.1 (API level 27) dan lebih rendah, layanan aksesibilitas tidak selalu bisa menentukan kapan panel tertentu dari layar diupdate, seperti ketika suatu aktivitas menggantikan satu fragmen dengan fragmen yang lain. Panel terdiri dari elemen UI yang dikelompokkan secara logis dan berhubungan secara visual yang biasanya terdiri dari sebuah fragmen.Di Android 9, Anda bisa memberikan judul panel aksesibilitas, atau judul yang dapat diidentifikasi secara individual, untuk panel ini. Bila sebuah panel memiliki judul panel aksesibilitas, layanan aksesibilitas akan menerima informasi lebih terperinci ketika panel berubah. Kemampuan ini memungkinkan layanan memberikan informasi yang lebih terperinci kepada pengguna tentang apa yang berubah dalam UI.
Untuk menentukan judul panel, gunakan atribut
android:accessibilityPaneTitle
. Anda juga bisa mengupdate judul panel UI yang digantikan saat
waktu proses menggunakan setAccessibilityPaneTitle()
.
Misalnya, Anda bisa memberikan judul untuk area konten suatu objek
Fragment
.Navigasi berbasis heading
Bila aplikasi Anda menampilkan konten tekstual yang menyertakan heading logis, setel atributandroid:accessibilityHeading
ke true
untuk instance
View
yang mewakili heading tersebut. Dengan
menambahkan heading ini, Anda mengizinkan layanan aksesibilitas untuk membantu pengguna menuju
langsung dari satu heading ke heading berikutnya. Semua layanan aksesibilitas bisa menggunakan kemampuan
ini untuk meningkatkan pengalaman navigasi UI pengguna.Navigasi grup dan keluaran
Pembaca layar biasanya menggunakan atributandroid:focusable
untuk
menentukan kapan mereka harus membaca
ViewGroup
, atau kumpulan objek
View
, sebagai satu kesatuan. Dengan begitu,
pengguna bisa memahami bahwa tampilan tersebut terkait secara logis satu sama lain.Di Android 8.1 dan yang lebih rendah, Anda harus menandai setiap objek
View
dalam
ViewGroup
sebagai non-focusable dan ViewGroup
sebagai focusable. Pengaturan
ini menyebabkan beberapa instance View
ditandai sebagai focusable sehingga
membuat navigasi keyboard menjadi lebih rumit.Mulai Android 9, Anda bisa menggunakan atribut
android:screenReaderFocusable
sebagai pengganti atribut android:focusable
dalam situasi ketika
membuat objek View
focusable menyebabkan konsekuensi yang tidak diharapkan. Pembaca layar
menempatkan fokus pada semua elemen yang telah menyetel baik android:screenReaderFocusable
atau android:focusable
ke true
.Tindakan kemudahan
Android 9 menambahkan dukungan untuk melakukan tindakan kemudahan atas nama pengguna:- Interaksi dengan tooltip
- Fitur yang ditambahkan dalam framework aksesibilitas memberi Anda akses ke
tooltip di UI aplikasi. Gunakan
getTooltipText()
untuk membaca teks tooltip, dan gunakanACTION_SHOW_TOOLTIP
sertaACTION_HIDE_TOOLTIP
untuk menginstruksikan instanceView
agar menampilkan atau menyembunyikan tooltip. - Menambahkan tindakan global
- Android 9 memperkenalkan dukungan untuk dua tindakan perangkat tambahan di class
AccessibilityService
. Layanan Anda bisa membantu pengguna mengunci perangkat dan mengambil screenshot menggunakan tindakanGLOBAL_ACTION_LOCK_SCREEN
danGLOBAL_ACTION_TAKE_SCREENSHOT
.
Detail perubahan jendela
Android 9 mempermudah pelacakan update jendela aplikasi saat aplikasi menggambar ulang beberapa jendela secara bersamaan. Ketika sebuah eventTYPE_WINDOWS_CHANGED
terjadi, gunakan API
getWindowChanges()
untuk menentukan bagaimana jendela berubah. Pada waktu update multijendela, setiap
jendela menghasilkan kumpulan event-nya sendiri.
Metode getSource()
)
menampilkan tampilan root jendela yang terkait dengan setiap event.Bila suatu aplikasi telah menetapkan judul panel aksesibilitas untuk objek
View
, layanan Anda bisa mengenali
kapan UI aplikasi diupdate. Ketika sebuah event
TYPE_WINDOW_STATE_CHANGED
terjadi, gunakan tipe yang ditunjukkan oleh
getContentChangeTypes()
untuk menentukan bagaimana jendela berubah. Misalnya, framework bisa
mendeteksi ketika panel memiliki judul baru, atau ketika panel menghilang.Rotasi
Untuk mencegah rotasi yang tidak disengaja, kami menambahkan mode yang menahan orientasi saat ini bahkan jika posisi perangkat berubah. Pengguna bisa memicu rotasi secara manual ketika diperlukan dengan menekan tombol di bilah sistem.Dampak kompatibilitas bagi aplikasi sangat minim dalam banyak kasus. Namun, bila aplikasi Anda memiliki perilaku rotasi yang disesuaikan atau menggunakan setelan orientasi layar yang tidak biasa, Anda mungkin mengalami masalah yang tidak diketahui sebelumnya, ketika preferensi rotasi pengguna selalu disetel ke potret. Kami anjurkan Anda untuk melihat perilaku rotasi di semua aktivitas utama aplikasi dan memastikan bahwa semua setelan orientasi layar memberikan pengalaman yang optimal.
Untuk detail selengkapnya, lihat perubahan perilaku yang terkait.
Teks
Android 9 menghadirkan fitur terkait teks berikut ke dalam platform:- Precomputed Text: Class
PrecomputedText
meningkatkan kinerja rendering teks dengan mengizinkan Anda terlebih dahulu menghitung dan meng-cache informasi yang diperlukan. Ini juga memungkinkan aplikasi Anda untuk melakukan layout teks di luar thread utama. - Magnifier: Class
Magnifier
adalah widget platform yang menyediakan magnifier API, yang memungkinkan pengalaman fitur magnifier yang konsisten di semua aplikasi. - Smart Linkify: Android 9 meningkatkan class
TextClassifier
, dengan memanfaatkan machine learning untuk mengidentifikasi beberapa entitas dalam teks yang dipilih dan menyarankan tindakan. Misalnya,TextClassifier
bisa mengaktifkan aplikasi Anda untuk mendeteksi bahwa pengguna telah memilih nomor ponsel. Aplikasi Anda kemudian bisa menyarankan bahwa pengguna melakukan panggilan ponsel menggunakan nomor tersebut. Fitur-fitur dalamTextClassifier
menggantikan fungsionalitas classLinkify
. - Text Layout: Beberapa atribut dan metode praktis mempermudah
penerapan desain UI Anda. Untuk detailnya, lihat dokumentasi referensi bagi
TextView
.
Konversi dini ART untuk file DEX
Pada perangkat yang menjalankan Android 9 atau yang lebih tinggi, compiler awal Waktu Proses Android (ART) semakin mengoptimalkan file Dalvik Executable format (DEX) yang dikompresi dengan mengonversi file DEX dalam package aplikasi menjadi representasi yang lebih ringkas. Perubahan ini memungkinkan aplikasi Anda untuk mulai dengan lebih cepat dan menggunakan lebih sedikit ruang disk dan RAM.Peningkatan ini sangat menguntungkan perangkat low-end dengan kecepatan I/O disk yang lebih lambat.
Pelacakan sistem di perangkat
Android 9 mengizinkan Anda merekam aktivitas sistem dari perangkat, kemudian membagikan laporan rekaman ini dengan tim pengembangan Anda. Laporan ini mendukung berbagai format, termasuk HTML.Dengan mengumpulkan rekaman aktivitas ini, Anda bisa mengambil data waktu yang terkait dengan proses dan thread aplikasi serta melihat tipe status perangkat global yang signifikan lainnya.
Catatan: Anda tidak perlu memperlengkapi kode untuk merekam aktivitas, tetapi hal ini bisa membantu Anda melihat bagian kode aplikasi mana yang mungkin berkontribusi terhadap thread menggantung atau kelambanan UI.
Untuk mempelajari lebih lanjut tentang fitur ini, lihat Melakukan pelacakan sistem di perangkat.
Source :
Fitur dan API Android 9
No comments:
Post a Comment