Ringkasan Fitur dan API

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.

Produktivitas developer

UI salin dan tempel baru

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.

Ikon aplikasi bertema

Pengguna memilih ikon aplikasi bertema
Gambar 1: Memilih ikon aplikasi bertema di Android 13

Mulai Android 13, pengguna dapat memilih untuk ikut serta dalam ikon aplikasi bertema. Dengan fitur ini, ikon aplikasi di peluncur Android yang didukung akan 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

Spesifikasi

Ikon aplikasi monokromatik harus memenuhi spesifikasi berikut:

  • Ikon harus berupa VectorDrawable.
  • Sebaiknya logo pas dalam area 44 x 44 dp di dalam penampung 108 x 108 dp. Jika logo harus lebih besar, maksimum 72 x 72 dp.
  • Kami menyarankan logo datar; jika logo Anda adalah tiga dimensi, Anda dapat menggunakan gradien alfa.

Anda dapat mengarahkan atribut monokrom ke VectorDrawable sama yang digunakan oleh lapisan latar depan ikon aplikasi adaptif, atau menggunakan kembali vektor drawable yang digunakan untuk notifikasi.

Contoh berikut menunjukkan ikon aplikasi monokromatik untuk aplikasi Google, dengan garis putus-putus yang mewakili batas antara area logo dan penampung. Batas ini ditampilkan di sini hanya untuk ilustrasi dan tidak berskala.

Spesifikasi desain monokrom untuk ikon aplikasi bertema: ikon di
 sebelah kiri memiliki garis putus-putus yang mewakili pengukuran, dengan
 garis putus-putus luar yang berlabel &#39;1&#39; dan mewakili penampung ikon,
 dan titik internal baris berlabel &#39;2&#39; dan merepresentasikan area logo; Ikon di sebelah kanan adalah contoh tampilan yang sebenarnya tanpa
 garis putus-putus yang ditambahkan
Gambar 2: Pengukuran ikon aplikasi bertema

1 Area penampung (108 x 108 dp).

2 Area logo (direkomendasikan 44 x 44 dp, maksimum 72 x 72 dp).

Mengimplementasikan ikon aplikasi bertema

Tambahkan atribut monochrome android:drawable ke elemen <adaptive-icon>. Misalnya, dalam res/mipmap-anydpi-v26/ic_launcher.xml:

<adaptive-icon >
    <background android:drawable="..." />
    <foreground android:drawable="..." />
    <monochrome android:drawable="@drawable/myicon" />
</adaptive-icon>

Dalam file manifes, tentukan ikon menggunakan android:icon:

<application
    …
    android:icon="@mipmap/ic_launcher"
    …>
</application>

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.

Dukungan yang lebih baik untuk pengguna multibahasa

Android 13 memperkenalkan beberapa fitur untuk meningkatkan pengalaman aplikasi bagi pengguna multibahasa, yang dijelaskan di bagian berikut:

Preferensi bahasa per aplikasi

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, Mandarin, 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 yang memungkinkan pengguna memilih bahasa pilihan untuk setiap aplikasi di lokasi terpusat.

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

  • API yang memungkinkan aplikasi untuk menyetel bahasa lain saat runtime untuk digunakan di antarmuka pengguna.

    Aplikasi yang menggunakan alat pilih bahasa kustom dalam aplikasi harus menggunakan API baru ini untuk memastikan bahwa pengguna memiliki pengalaman pengguna yang konsisten, di mana pun mereka memilih preferensi bahasa mereka. API baru ini tidak hanya membantu Anda mengurangi jumlah kode boilerplate, tetapi juga mendukung APK terpisah dan Auto Backup untuk Aplikasi untuk menyimpan setelan bahasa pengguna tingkat aplikasi.

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

    Untuk mempelajari lebih lanjut, lihat petunjuk untuk menerapkan API baru.

Penggabungan teks bahasa Jepang yang ditingkatkan

TextView kini dapat menggabungkan teks menurut 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).

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).

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.

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.

Tanda hubung yang lebih cepat

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

Font vektor warna

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

Android 13 menambahkan dukungan rendering untuk font COLR versi 1 (COLRv1) dan mengupdate emoji sistem ke format COLRv1. COLRv1 adalah format font baru dan 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.

Audio LE Bluetooth

Audio Hemat Energi (LE) adalah audio nirkabel generasi berikutnya yang dibuat untuk menggantikan Bluetooth klasik, dan memungkinkan kasus penggunaan serta topologi koneksi baru. 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. Android 13 menambahkan dukungan bawaan untuk Audio LE, sehingga developer mendapatkan kemampuan baru secara gratis di perangkat yang kompatibel.

MIDI 2.0

Android 13 menambahkan dukungan untuk standar MIDI 2.0 baru, termasuk kemampuan untuk menghubungkan hardware MIDI 2.0 melalui USB. Standar terbaru 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.

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) menyertakan pengalaman pemilih foto baru. Saat aplikasi meluncurkan pemilih 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.

Alat pilih 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, 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 developer yang dapat didowngrade

Mulai Android 13, aplikasi Anda dapat mencabut akses ke izin runtime yang sebelumnya diberikan oleh sistem atau pengguna. 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.

Untuk mencabut izin runtime tertentu, teruskan nama izin tersebut ke revokeSelfPermissionOnKill(). Untuk mencabut sekelompok izin runtime secara bersamaan, teruskan kumpulan nama izin ke revokeSelfPermissionsOnKill(). Pencabutan terjadi secara asinkron dan menghentikan semua proses yang terkait dengan UID aplikasi Anda.

Agar sistem dapat mencabut izin, semua proses yang terkait dengan aplikasi Anda harus dihentikan. Saat Anda memanggil API, sistem akan menentukan kapan waktu yang aman untuk menghentikan proses ini. Biasanya, sistem akan menunggu hingga aplikasi Anda menghabiskan banyak waktu untuk berjalan di latar belakang, bukan di latar depan.

Untuk segera mencabut izin, aplikasi Anda harus menghentikan semua proses terkait secara manual. Kami tidak merekomendasikannya. karena tindakan ini menciptakan pengalaman pengguna yang tidak diinginkan.

Untuk memberi tahu pengguna bahwa izin aplikasi Anda dicabut, tampilkan dialog saat pengguna meluncurkan aplikasi lagi. Dialog ini dapat menyertakan daftar izin yang dicabut.

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 baru 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 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 yang baru 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 di-build berdasarkan pengoptimalan tablet yang diperkenalkan di Android 12 dan update fitur baru 12L, seperti pengoptimalan untuk UI sistem, multitasking yang lebih baik, dan mode kompatibilitas yang lebih baik. 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.

Android 13 menambahkan dukungan untuk objek RuntimeShader yang dapat diprogram, dengan perilaku yang ditetapkan 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, dangulung ke atas, dan Android 13 memungkinkan Anda membuat efek lanjutan yang serupa untuk aplikasi Anda.

Media

Pemilihan rute audio antisipatif

Untuk membantu aplikasi media mengidentifikasi cara pemilihan rute audio, kami telah menambahkan API rute audio baru di class AudioManager. Dengan API getAudioDevicesForAttributes() baru, Anda dapat mengambil daftar perangkat yang dapat digunakan untuk memutar audio yang ditentukan, menambahkan API getDirectProfilesForAttributes() untuk membantu Anda memahami apakah streaming audio dapat diputar secara langsung atau tidak. Gunakan API baru 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.