Ringkasan Fitur dan API

Tetap teratur dengan koleksi Simpan dan kategorikan konten berdasarkan preferensi Anda.

Android 13 memperkenalkan fitur dan API baru yang hebat untuk para developer. Bagian di bawah ini membantu Anda mempelajari fitur-fitur yang tersedia untuk aplikasi Anda, serta mulai menggunakan API yang terkait.

Untuk melihat daftar mendetail tentang API yang baru, diubah, dan dihapus, baca laporan perbedaan API. Untuk mengetahui detail tentang API baru, kunjungi referensi API Android — API baru ditandai agar lebih mudah dilihat. Selain itu, untuk mempelajari area mana saja dalam aplikasi Anda yang dapat terpengaruh oleh perubahan, baca tentang perubahan perilaku Android 13 untuk aplikasi yang menargetkan Android 13 dan untuk semua aplikasi.

Alat dan produktivitas developer

Ikon aplikasi bertema

Pengguna memilih ikon aplikasi bertema
Memilih ikon aplikasi bertema di Android 13

Mulai Android 13, Anda dapat memilih untuk ikut serta dalam ikon aplikasi bertema. Dengan fitur ini, ikon aplikasi di peluncur Android yang didukung diberi warna untuk mewarisi warna wallpaper yang dipilih pengguna dan tema lainnya.

Untuk mendukung fitur ini, aplikasi Anda harus menyediakan ikon adaptif dan ikon aplikasi monokromatik, serta mengarah ke ikon aplikasi monokromatik dari elemen <adaptive-icon> di manifes. Jika pengguna telah mengaktifkan ikon aplikasi bertema (dengan kata lain, mengaktifkan tombol ikon Bertema di setelan sistem), dan peluncur mendukung fitur ini, sistem akan menggunakan warna pada wallpaper dan tema yang dipilih pengguna untuk menentukan warna tint, yang kemudian akan berlaku untuk ikon aplikasi monokromatik.

Layar utama TIDAK menampilkan ikon aplikasi bertema—dan sebagai gantinya menampilkan ikon aplikasi adaptif atau standar—dalam salah satu skenario berikut:

  • Jika pengguna belum mengaktifkan ikon aplikasi bertema
  • Jika aplikasi Anda tidak menyediakan ikon aplikasi monokromatik
  • Jika peluncur tidak mendukung ikon aplikasi bertema

Untuk mengetahui detail dan petunjuk selengkapnya, lihat Ikon adaptif.

Preferensi bahasa per aplikasi

Bahasa per aplikasi di setelan sistem

Dalam banyak kasus, pengguna multibahasa menyetel bahasa sistemnya ke satu bahasa, seperti bahasa Inggris, tetapi mereka ingin memilih bahasa lain untuk aplikasi tertentu, seperti Belanda, China, atau Hindi. Untuk membantu aplikasi memberikan pengalaman yang lebih baik bagi pengguna ini, Android 13 memperkenalkan fitur berikut untuk aplikasi yang mendukung beberapa bahasa:

  • Setelan sistem: Lokasi terpusat tempat pengguna dapat memilih bahasa pilihan untuk setiap aplikasi.

    Aplikasi harus mendeklarasikan atribut android:localeConfig dalam manifes aplikasi untuk memberi tahu sistem bahwa aplikasi mendukung beberapa bahasa. Untuk mempelajari lebih lanjut, lihat petunjuk untuk membuat file resource dan mendeklarasikannya di file manifes aplikasi.

  • API tambahan: API publik ini, seperti metode setApplicationLocales() dan getApplicationLocales() di LocaleManager, memungkinkan aplikasi untuk menyetel bahasa yang berbeda dari bahasa sistem saat runtime.

    API ini otomatis disinkronkan dengan setelan sistem; oleh karena itu, aplikasi yang menggunakan API ini untuk membuat pemilih bahasa kustom dalam aplikasi akan memastikan penggunanya memiliki pengalaman pengguna yang konsisten, di mana pun mereka memilih preferensi bahasa mereka. API publik ini tidak hanya membantu Anda mengurangi jumlah kode boilerplate, tetapi juga mendukung APK terpisah dan Auto Backup untuk Aplikasi guna menyimpan setelan bahasa pengguna tingkat aplikasi.

    Untuk kompatibilitas mundur dengan versi Android sebelumnya, API setara juga tersedia di AndroidX. Sebaiknya gunakan API yang ditambahkan di Appcompat 1.6.0-beta01 atau yang lebih tinggi.

Aplikasi yang tidak mendukung banyak bahasa tidak terpengaruh oleh perubahan ini.

Peningkatan dukungan teks dan bahasa

Android 13 menyertakan beberapa peningkatan fitur teks dan bahasa yang membantu Anda memberikan pengalaman yang lebih baik, yang dijelaskan di bagian berikut:

Tanda hubung yang lebih cepat

Tanda hubung membuat teks yang digabungkan lebih mudah dibaca dan membantu membuat UI Anda lebih adaptif. Di Android 13, performa tanda hubung dioptimalkan hingga 200% sehingga Anda dapat mengaktifkannya di TextView tanpa memengaruhi performa rendering. Untuk memungkinkan penggunaan tanda hubung yang lebih cepat, gunakan frekuensi fullFast atau normalFast di setHyphenationFrequency().

API Konversi Teks

Orang-orang yang berbicara dalam bahasa seperti Jepang dan China menggunakan metode input penulisan fonetik, yang sering kali memperlambat penelusuran dan fitur seperti pelengkapan otomatis. Di Android 13, aplikasi dapat memanggil API konversi teks yang baru agar pengguna dapat menemukan apa yang mereka cari dengan lebih cepat dan lebih mudah. Sebelumnya, misalnya, penelusuran mengharuskan pengguna berbahasa Jepang untuk melakukan langkah-langkah ini:

  1. Memasukkan Hiragana sebagai pengucapan fonetik istilah penelusuran mereka (seperti tempat atau nama aplikasi)
  2. Menggunakan keyboard untuk mengonversi karakter Hiragana menjadi Kanji
  3. Menelusuri ulang menggunakan karakter Kanji
  4. Terakhir, mendapatkan hasil penelusuran mereka

Dengan API konversi teks baru, pengguna berbahasa Jepang dapat mengetik karakter Hiragana dan langsung melihat hasil penelusuran Kanji secara langsung, serta melewati langkah 2 dan 3.

Tinggi baris yang ditingkatkan untuk skrip non-latin

Android 13 meningkatkan tampilan skrip non-Latin (seperti Tamil, Burma, Telugu, dan Tibet) dengan menggunakan tinggi baris yang disesuaikan untuk setiap bahasa. Tinggi baris yang baru mencegah karakter terpotong dan memperbaiki posisinya. Aplikasi Anda dapat memanfaatkan peningkatan ini hanya dengan menargetkan Android 13. Pastikan untuk menguji aplikasi Anda saat menggunakan spasi baris baru karena perubahan tersebut dapat memengaruhi UI Anda dalam bahasa non-Latin.

Tinggi baris yang terpotong di Android 12 (di atas) yang sekarang diposisikan dengan lebih baik dan tidak terpotong di Android 13 (di bawah).

Penggabungan teks bahasa Jepang yang ditingkatkan

Mulai dari Android 13, TextView dapat menggabungkan teks dengan Bunsetsu (unit kata terkecil yang terdengar alami) atau frasa, bukan menurut karakter, untuk aplikasi bahasa Jepang yang lebih rapi dan dapat dibaca. Anda dapat memanfaatkan penggabungan ini menggunakan android:lineBreakWordStyle="phrase" dengan TextView.

Penggabungan teks bahasa Jepang dengan gaya frasa diaktifkan (di bawah) dan dinonaktifkan (di atas).

Update library Unicode

Android 13 menambahkan peningkatan (kualitas), perbaikan, dan perubahan terbaru yang disertakan dalam Unicode ICU 70, Unicode CLDR 40, dan Unicode 14.0.

Berikut adalah beberapa perubahan penting:

  • Inggris (Kanada) en‑CA dan Inggris (Republik Filipina) en‑PH sama-sama menggunakan referensi terjemahan bahasa Inggris (Amerika Serikat) en jika tidak ada referensi terjemahan yang tersedia selain bahasa Inggris (Inggris Raya) en‑GB.
  • Kategori jamak many telah diperkenalkan untuk bahasa Spanyol es, Italia it, Portugis pt, dan Portugis (Portugal) pt‑PT. Serupa dengan bahasa Prancis yang diperkenalkan dalam CLDR v38, ini digunakan untuk jumlah yang besar.

Font vektor warna

Emoji vektor COLRv1 (kiri) dan emoji bitmap (kanan)

Mulai dari Android 13, sistem menyertakan dukungan rendering untuk font COLR versi 1 (COLRv1) dan mengupdate emoji sistem ke format COLRv1. COLRv1 adalah format font yang sangat rapat yang dirender dengan cepat dan jelas pada berbagai ukuran.

Untuk sebagian besar aplikasi, sistem menangani semuanya dan COLRv1 berfungsi dengan baik. Namun, jika aplikasi Anda menerapkan rendering teksnya sendiri dan menggunakan font sistem, sebaiknya pengujian rendering emoji dilakukan.

Untuk mempelajari COLRv1 lebih lanjut, lihat referensi berikut.

API penempatan Setelan Cepat

Setelan Cepat di menu notifikasi adalah cara praktis bagi pengguna untuk mengubah setelan atau mengambil tindakan cepat tanpa meninggalkan konteks aplikasi. Untuk aplikasi yang menyediakan kartu kustom, kami mempermudah pengguna untuk menemukan dan menambahkan kartu Anda ke Setelan Cepat. Dengan menggunakan API penempatan kartu yang baru, aplikasi Anda kini dapat meminta pengguna untuk langsung menambahkan kartu kustom ke kumpulan kotak Setelan Cepat yang aktif. Dialog sistem baru memungkinkan pengguna menambahkan kartu dalam satu langkah, tanpa keluar dari aplikasi Anda, tanpa harus membuka Setelan Cepat untuk menambahkan kartu.

Dialog yang menanyakan apakah pengguna ingin menambahkan kartu ke
          Setelan Cepatnya atau tidak.

Pratinjau papan klip

Mulai dari Android 13, sistem akan menampilkan konfirmasi visual standar saat konten ditambahkan ke papan klip. Konfirmasi baru akan melakukan hal berikut:

  • Mengonfirmasi bahwa konten berhasil disalin.
  • Memberikan pratinjau konten yang disalin.

Fitur ini menstandarkan berbagai notifikasi yang ditampilkan oleh aplikasi setelah menyalin dan menawarkan pengguna kontrol lebih atas papan klip. Untuk informasi tambahan, buka halaman fitur Salin dan Tempel.

Widget Salin/Tempel
UI baru ditampilkan saat konten memasuki papan klip.

Gestur kembali prediktif

Android 13 memperkenalkan gestur kembali prediktif untuk perangkat Android seperti ponsel, perangkat layar besar, dan perangkat foldable. Untuk mendukung fitur ini, Anda harus mengupdate aplikasi.

Untuk melihat dokumentasi lengkap, lihat Mengupdate aplikasi untuk mendukung gestur kembali prediktif. Anda juga dapat mencoba codelab kami.

Bluetooth LE Audio

Audio Hemat Energi (LE) adalah audio nirkabel yang dibuat untuk menggantikan Bluetooth klasik, dan memungkinkan kasus penggunaan serta topologi koneksi tertentu. Dengan begitu, pengguna dapat berbagi dan menyiarkan audionya ke teman dan keluarga, atau berlangganan siaran publik untuk mendapatkan informasi, hiburan, atau aksesibilitas. Fitur ini dirancang untuk memastikan bahwa pengguna dapat menerima audio high fidelity tanpa mengorbankan masa pakai baterai dan dapat beralih dengan lancar di antara berbagai kasus penggunaan yang tidak mungkin dilakukan dengan Bluetooth Klasik. Mulai dari Android 13, sistem menyertakan dukungan bawaan untuk Audio LE, sehingga developer menerima kemampuan ini secara gratis di perangkat yang kompatibel.

MIDI 2.0

Mulai dari Android 13, sistem menyertakan dukungan untuk standar MIDI 2.0, termasuk kemampuan untuk menghubungkan hardware MIDI 2.0 melalui USB. Standar ini menawarkan fitur seperti peningkatan resolusi untuk pengontrol, dukungan yang lebih baik untuk intonasi non-Barat, dan performa yang lebih ekspresif menggunakan pengontrol per catatan.

Peningkatan efisiensi layar pembuka

Android 13 meningkatkan efisiensi layar pembuka animasi di Splash Screen API:

  • Sistem menyimpulkan durasi animasi langsung dari AnimatedVectorDrawable. Sebelum Android 13, Anda perlu menyetel windowSplashScreenAnimationDuration secara langsung.

  • Gunakan atribut windowSplashScreenBehavior baru untuk mendapatkan kontrol lebih besar terhadap apakah aplikasi Anda selalu menampilkan ikon di layar pembuka di Android 13 dan yang lebih tinggi.

Untuk melihat dokumentasi mendetail, lihat Layar Pembuka.

Privasi dan keamanan

Mengekspor penerima yang terdaftar dalam konteks dengan lebih aman

Untuk membantu membuat penerima runtime lebih aman, Android 13 memungkinkan Anda untuk menentukan apakah penerima siaran tertentu di aplikasi Anda harus diekspor dan terlihat oleh aplikasi lain di perangkat. Jika penerima siaran diekspor, aplikasi lain dapat mengirim siaran yang tidak dilindungi ke aplikasi Anda. Konfigurasi ekspor ini, yang tersedia di aplikasi yang menargetkan Android 13 atau yang lebih tinggi, dapat membantu mencegah timbulnya salah satu sumber utama kerentanan aplikasi.

Pada versi Android sebelumnya, aplikasi apa pun di perangkat dapat mengirim siaran yang tidak dilindungi ke penerima yang terdaftar secara dinamis, kecuali penerima tersebut dilindungi dengan izin tanda tangan.

Untuk menerapkan langkah peningkatan keamanan ini, lakukan langkah berikut:

  1. Aktifkan perubahan framework kompatibilitas DYNAMIC_RECEIVER_EXPLICIT_EXPORT_REQUIRED.
  2. Di setiap penerima siaran aplikasi Anda, tunjukkan secara eksplisit apakah aplikasi lain dapat mengirim siaran ke aplikasi tersebut, seperti yang ditampilkan dalam cuplikan kode berikut:

    Kotlin

    // This broadcast receiver should be able to receive broadcasts from other apps.
    // This option causes the same behavior as setting the broadcast receiver's
    // "exported" attribute to true in your app's manifest.
    context.registerReceiver(sharedBroadcastReceiver, intentFilter,
        RECEIVER_EXPORTED)
    
    // For app safety reasons, this private broadcast receiver should **NOT**
    // be able to receive broadcasts from other apps.
    context.registerReceiver(privateBroadcastReceiver, intentFilter,
        RECEIVER_NOT_EXPORTED)

    Java

    // This broadcast receiver should be able to receive broadcasts from other apps.
    // This option causes the same behavior as setting the broadcast receiver's
    // "exported" attribute to true in your app's manifest.
    context.registerReceiver(sharedBroadcastReceiver, intentFilter,
        RECEIVER_EXPORTED);
    
    // For app safety reasons, this private broadcast receiver should **NOT**
    // be able to receive broadcasts from other apps.
    context.registerReceiver(privateBroadcastReceiver, intentFilter,
        RECEIVER_NOT_EXPORTED);

Pemilih foto

Android 13 (API level 33) dan yang lebih baru menyertakan pengalaman pemilih foto. Saat aplikasi meluncurkan alat pilih foto, pengguna memilih gambar dan video tertentu untuk dibagikan dengan aplikasi Anda, seperti foto profil, bukan memberi aplikasi Anda akses untuk melihat seluruh library media. Ini adalah cara yang direkomendasikan untuk mengakses foto dan video pengguna.

Pemilih foto memberikan privasi yang ditingkatkan (kualitasnya) bagi pengguna karena aplikasi Anda tidak perlu mendeklarasikan izin runtime apa pun. Selain itu, alat pilih foto menyediakan UI standar bawaan untuk aplikasi, yang menciptakan pengalaman pengguna yang lebih konsisten.

Izin runtime baru untuk perangkat Wi-Fi di sekitar

Android 13 (API level 33) memperkenalkan izin runtime baru di grup izin NEARBY_DEVICES untuk aplikasi yang mengelola koneksi perangkat ke titik akses terdekat melalui Wi-Fi. Aplikasi ini harus mendeklarasikan izin baru, NEARBY_WIFI_DEVICES, saat memanggil beberapa API Wi-Fi yang berbeda. Selain itu, selama aplikasi tidak memperoleh lokasi fisik dari API Wi-Fi, aplikasi tidak perlu mendeklarasikan izin ACCESS_FINE_LOCATION saat menargetkan Android 13 atau yang lebih tinggi.

Pelajari izin perangkat Wi-Fi di sekitar lebih lanjut.

Izin baru untuk menggunakan alarm yang tepat

Jika aplikasi menargetkan Android 13 atau versi yang lebih tinggi, Anda dapat menggunakan izin USE_EXACT_ALARM yang secara otomatis diberikan ke aplikasi. Namun, agar aplikasi Anda dapat menggunakan izin ini, aplikasi harus memenuhi setidaknya salah satu kriteria berikut:

  • Aplikasi Anda adalah aplikasi jam alarm atau aplikasi timer.
  • Aplikasi Anda adalah aplikasi kalender yang menampilkan notifikasi untuk acara mendatang.

Jika aplikasi Anda menyetel alarm yang tepat, tetapi tidak memenuhi salah satu kasus yang ditampilkan dalam daftar sebelumnya, lanjutkan untuk mendeklarasikan izin SCHEDULE_EXACT_ALARM, dan persiapkan diri menghadapi situasi saat pengguna menolak akses ke aplikasi Anda.

Izin yang dapat di-downgrade oleh developer

Mulai Android 13, aplikasi Anda dapat mencabut akses ke izin runtime yang tidak digunakan. API ini memungkinkan aplikasi melakukan tugas-tugas yang meningkatkan privasi seperti berikut:

  • Menghapus izin yang tidak digunakan.
  • Mematuhi praktik terbaik izin yang akan meningkatkan kepercayaan pengguna. Sebaiknya Anda mempertimbangkan untuk menampilkan dialog kepada pengguna yang menampilkan izin yang telah dicabut secara proaktif.

APK Signature Scheme v3.1

Android 13 menambahkan dukungan untuk APK Signature Scheme v3.1, yang meningkatkan APK Signature Scheme v3 yang sudah ada. Skema ini membahas beberapa masalah umum pada APK Signature Scheme v3 terkait rotasi. Secara khusus, skema tanda tangan v3.1 memungkinkan aplikasi untuk mendukung penanda tangan asli dan dirotasi dalam satu APK. Skema tanda tangan v3.1 juga mendukung penargetan versi SDK, yang memungkinkan rotasi untuk menargetkan rilis platform selanjutnya.

Skema tanda tangan v3.1 menggunakan ID blok yang tidak dikenali pada 12L atau yang lebih rendah. Oleh karena itu, platform ini menerapkan perilaku penanda tangan berikut ini:

  • Perangkat yang menjalankan Android 13 atau yang lebih baru menggunakan penanda tangan yang dirotasi di blok v3.1.
  • Perangkat yang menjalankan versi Android yang lebih lama mengabaikan penanda tangan yang dirotasi dan menggunakan penanda tangan asli dalam blok v3.0.

Aplikasi yang belum merotasi kunci penandatanganannya tidak memerlukan tindakan tambahan. Setiap kali aplikasi ini memilih untuk merotasi, sistem akan menerapkan skema tanda tangan v3.1 secara default.

Aplikasi yang telah merotasi dan ingin terus menggunakan kunci penandatanganan yang dirotasi di blok penandatanganan v3.0 perlu mengupdate pemanggilan apksigner:

apksigner sign --ks keystore.jks |
  --key key.pk8 --cert cert.x509.pem
  --rotation-min-sdk-version API_LEVEL
  [signer_options] app-name.apk

...dengan API_LEVEL adalah 32 atau lebih rendah.

Pelaporan error yang lebih baik di Keystore dan KeyMint

Untuk aplikasi yang membuat kunci, sekarang Keystore dan KeyMint menyediakan indikator error yang lebih detail dan akurat. Kami telah menambahkan hierarki class pengecualian pada java.security.ProviderException, dengan pengecualian khusus Android yang menyertakan kode error Keystore/KeyMint, dan apakah error tersebut dapat dicoba lagi. Anda juga dapat mengubah metode pembuatan dan penggunaan kunci (penandatanganan, enkripsi) untuk menampilkan pengecualian baru. Pelaporan error yang lebih baik tidak terbatas pada pembuatan kunci dan sekarang seharusnya dapat memberikan berbagai hal yang Anda butuhkan untuk mencoba kembali pembuatan kunci.

Dukungan tablet dan perangkat layar besar

Android 13 dibuat berdasarkan pengoptimalan tablet yang diperkenalkan di Android 12 dan update fitur baru 12L, seperti pengoptimalan untuk UI sistem, multitasking yang lebih baik, dan mode peningkatan kompatibilitas. Sebagai bagian dari pengujian, pastikan aplikasi Anda terlihat sempurna di tablet dan perangkat layar besar lainnya.

Untuk informasi selengkapnya tentang hal baru dan apa saja yang harus diuji, lihat halaman Dukungan tablet dan perangkat layar besar .

Grafik

Shader yang dapat diprogram

Shader animasi AGSL, yang diadaptasi dari GLSL Shader ini.

Mulai dari Android 13, sistem menyertakan dukungan untuk objek RuntimeShader yang dapat diprogram, dengan perilaku yang ditentukan menggunakan Android Graphics Shading Language (AGSL ). AGSL berbagi banyak sintaksisnya dengan GLSL, tetapi berfungsi dalam mesin rendering Android untuk menyesuaikan proses menggambar dalam kanvas Android serta pemfilteran konten Tampilan. Android secara internal menggunakan shader tersebut untuk menerapkan efek riak ,buram , dan gulung ke atas. Android 13 dan yang lebih tinggi memungkinkan Anda membuat efek lanjutan yang serupa untuk aplikasi Anda.

Peningkatan koreografer

Android 13 memperkenalkan metode API publik untuk Choreographer dan ASurfaceControl yang memberikan informasi lebih lanjut tentang kemungkinan linimasa frame ke aplikasi dan menambahkan lebih banyak konteks ke SurfaceFlinger terkait siklus proses frame. Serupa dengan sebelumnya, aplikasi dapat memposting callback ke Choreographer dan menerima informasi linimasa frame. Di Android 13 (API level 33), Choreographer menampilkan beberapa kemungkinan waktu presentasi dan batas waktu frame yang sesuai. Aplikasi dapat memilih waktu presentasi dan kemudian memberi tahu SurfaceFlinger pilihan. SurfaceFlinger kemudian tidak berupaya menerapkan transaksi atau mengaitkan buffer sebelum waktu presentasi yang diinginkan.

Jika aplikasi Anda menggunakan metode Choreographer dan SurfaceControl baru, Anda dapat melihat siklus proses frame aplikasi di trace Perfetto.

Kamera

Perekaman video HDR

Mulai di Android 13, Camera2 API mendukung perekaman video Rentang Dinamis Tinggi (HDR), yang memungkinkan Anda melihat pratinjau dan merekam konten video HDR menggunakan kamera. Dibandingkan dengan Standar Dynamic Range (SDR), HDR menawarkan rentang warna yang lebih luas dan meningkatkan rentang dinamis komponen luminans (dari 100 cd/m2 saat ini menjadi 1000-an cd/m2). Hal ini menghasilkan kualitas video yang lebih cocok dengan kehidupan nyata, dengan warna yang lebih kaya, sorotan yang lebih cerah, dan bayangan yang lebih gelap.

Untuk mempelajari perekaman video HDR lebih lanjut, lihat dokumentasi Perekaman video HDR.

Media

Pemilihan rute audio antisipatif

Untuk membantu aplikasi media mengidentifikasi cara audio akan dirutekan, Android 13 memperkenalkan API rute audio di class AudioManager. API getAudioDevicesForAttributes() memungkinkan Anda mengambil daftar perangkat yang dapat digunakan untuk memutar audio yang ditentukan, dan getDirectProfilesForAttributes() API membantu Anda memahami apakah streaming audio dapat diputar secara langsung. Gunakan API ini untuk menentukan AudioFormat terbaik yang akan digunakan untuk trek audio Anda.

Aksesibilitas

Deskripsi audio

Android 13 (API level 33) memperkenalkan preferensi aksesibilitas baru di seluruh sistem yang memungkinkan pengguna mengaktifkan deskripsi audio di semua aplikasi. Deskripsi audio adalah trek narasi tambahan yang terdiri dari narator yang berbicara melalui presentasi dan menjelaskan adegan di layar selama jeda alami dalam audio. Aplikasi dapat mengikuti preferensi pengguna untuk jalur deskripsi audio dengan mengirimkan kueri menggunakan isAudioDescriptionRequested(), seperti yang ditunjukkan dalam cuplikan kode berikut:

Kotlin


private lateinit var accessibilityManager: AccessibilityManager

// In onCreate():
accessibilityManager = getSystemService(AccessibilityManager::class.java)

// Where your media player is initialized
if (accessibilityManager.isAudioDescriptionRequested) {
    // User has requested to enable audio descriptions
}

Java


private AccessibilityManager accessibilityManager;

// In onCreate():
accessibilityManager = getSystemService(AccessibilityManager.class);

// Where your media player is initialized
if(accessibilityManager.isAudioDescriptionRequested()) {
    // User has requested to enable audio descriptions
}

Aplikasi dapat memantau perubahan preferensi pengguna dengan menambahkan pemroses ke AccessbilityManager:

Kotlin

private val listener =
    AccessibilityManager.AudioDescriptionRequestedChangeListener { enabled ->
        // Preference changed; reflect its state in your media player
    }

override fun onStart() {
    super.onStart()

    accessibilityManager.addAudioDescriptionRequestedChangeListener(mainExecutor, listener)
}

override fun onStop() {
    super.onStop()

    accessibilityManager.removeAudioDescriptionRequestedChangeListener(listener)
}

Java

private AccessibilityManager.AudioDescriptionRequestedChangeListener listener = enabled -> {
    // Preference changed; reflect its state in your media player
};

@Override
protected void onStart() {
    super.onStart();

    accessibilityManager.addAudioDescriptionRequestedChangeListener(getMainExecutor(), listener);
}

@Override
protected void onStop() {
    super.onStop();

    accessibilityManager.removeAudioDescriptionRequestedChangeListener(listener);
}

Fungsi inti

Update OpenJDK 11

Android 13 memulai pekerjaan memuat ulang library inti Android agar selaras dengan rilis OpenJDK 11 LTS dengan update library dan dukungan bahasa Java 11 untuk developer aplikasi dan platform. Perubahan library inti yang diperkenalkan di Android 13 juga akan tersedia untuk perangkat Android 12 melalui update sistem Google Play untuk Modul ART Utama.

Android 13 menyertakan perubahan berikut ke library inti:

  • Dukungan untuk kata kunci var untuk variabel lokal dan sebagai lambda parameter.
  • Metode baru di class String:

    • isBlank()
    • lines()
    • repeat()
    • strip()
    • stripLeading()
    • stripTrailing()
  • Dukungan untuk Collection.toArray(IntFunction) agar lebih mudah untuk menyesuaikan koleksi ke array.

  • Dukungan untuk ifPresentOrElse(), isEmpty(), orElseThrow(), dan stream() dalam class java.util Optional, OptionalDouble, OptionalInt, dan OptionalLong.

  • Dukungan yang diperluas untuk SocketOptions termasuk penggunaan kembali soket.

  • Fungsi NullReader, NullWriter, InputStream, OutputStream, dan transferTo() Reader yang mentransfer karakter baca ke Writer.

  • Menambahkan fungsi untuk encoding dan decoding URL menggunakan Charsets.

  • Fungsi Charset untuk FileReader, FileWriter, PrintStream, dan PrintWriter.

  • Fungsi transferTo(), readNBytes(), readAllBytes(), dan writeBytes() baru untuk ByteArrayInput atau OutputStream dan Input atau OutputStream.

  • Dukungan runtime dan compiler untuk java.lang.invoke.VarHandle.

  • Mengupdate java.util.concurrent ke API OpenJDK 11 menggunakan VarHandle secara internal.

Java dan OpenJDK adalah merek dagang atau merek dagang terdaftar dari Oracle dan/atau afiliasinya.