Ringkasan Fitur dan API

Android 14 memperkenalkan fitur dan API yang hebat untuk developer. Berikut ini bantuan untuk mempelajari fitur-fitur yang tersedia untuk aplikasi Anda, serta mulai menggunakan API yang terkait.

Untuk melihat daftar mendetail tentang API yang ditambahkan, diubah, dan dihapus, baca laporan perbedaan API. Untuk mengetahui detail tentang API yang ditambahkan, buka referensi API Android — untuk Android 14, cari API yang ditambahkan di API level 34. Untuk mempelajari area tempat perubahan platform dapat memengaruhi aplikasi Anda, pastikan untuk memeriksa perubahan perilaku Android 14 untuk aplikasi yang menargetkan Android 14 dan untuk semua aplikasi.

Internasionalisasi

Preferensi bahasa per aplikasi

Android 14 expands on the per-app language features that were introduced in Android 13 (API level 33) with these additional capabilities:

  • Automatically generate an app's localeConfig: Starting with Android Studio Giraffe Canary 7 and AGP 8.1.0-alpha07, you can configure your app to support per-app language preferences automatically. Based on your project resources, the Android Gradle plugin generates the LocaleConfig file and adds a reference to it in the final manifest file, so you no longer have to create or update the file manually. AGP uses the resources in the res folders of your app modules and any library module dependencies to determine the locales to include in the LocaleConfig file.

  • Dynamic updates for an app's localeConfig: Use the setOverrideLocaleConfig() and getOverrideLocaleConfig() methods in LocaleManager to dynamically update your app's list of supported languages in the device's system settings. Use this flexibility to customize the list of supported languages per region, run A/B experiments, or provide an updated list of locales if your app utilizes server-side pushes for localization.

  • App language visibility for input method editors (IMEs): IMEs can utilize the getApplicationLocales() method to check the language of the current app and match the IME language to that language.

Grammatical Inflection API

Tiga miliar orang menggunakan bahasa bergender: bahasa yang kategori gramatikalnya—seperti kata benda, kata kerja, kata sifat, dan preposisi—diterapkan dengan gender orang dan objek yang Anda ajak bicara atau Anda bicarakan. Secara tradisional, banyak bahasa bergender menggunakan gender gramatikal maskulin sebagai gender default atau generik.

Menjangkau pengguna dalam gender gramatikal yang salah, seperti menyapa perempuan dengan gender gramatikal yang maskulin, dapat memberi dampak negatif pada performa dan sikap mereka. Sebaliknya, UI dengan bahasa yang mencerminkan gender gramatikal pengguna dengan benar dapat meningkatkan interaksi pengguna dan memberikan pengalaman pengguna yang lebih personal dan terdengar alami.

Guna membantu Anda mem-build UI yang berorientasi pengguna untuk bahasa-bahasa bergender, Android 14 memperkenalkan Grammatical Inflection API, yang memungkinkan Anda menambahkan dukungan untuk gender gramatikal tanpa perlu memfaktorkan ulang aplikasi.

Preferensi regional

Regional preferences enable users to personalize temperature units, the first day of the week, and numbering systems. A European living in the United States might prefer temperature units to be in Celsius rather than Fahrenheit and for apps to treat Monday as the beginning of the week instead of the US default of Sunday.

New Android Settings menus for these preferences provide users with a discoverable and centralized location to change app preferences. These preferences also persist through backup and restore. Several APIs and intents—such as getTemperatureUnit and getFirstDayOfWeek— grant your app read access to user preferences, so your app can adjust how it displays information. You can also register a BroadcastReceiver on ACTION_LOCALE_CHANGED to handle locale configuration changes when regional preferences change.

To find these settings, open the Settings app and navigate to System > Languages & input > Regional preferences.

Regional preferences screen in Android system settings.
Temperature options for regional preferences in Android system settings.

Aksesibilitas

Penskalaan font non-linear ke 200%

Mulai Android 14, sistem mendukung penskalaan font hingga 200%, yang memberikan opsi aksesibilitas tambahan kepada pengguna yang mengalami gangguan penglihatan, sesuai dengan Pedoman Aksesibilitas Konten Web (WCAG).

Agar elemen teks besar di layar tidak diskalakan terlalu besar, sistem akan menerapkan kurva penskalaan non-linear. Strategi penskalaan ini berarti teks besar tidak diskalakan pada kecepatan yang sama dengan teks yang lebih kecil. Penskalaan font non-linear membantu mempertahankan hierarki proporsional antara elemen dengan ukuran yang berbeda, sekaligus memitigasi masalah dengan penskalaan teks linear pada derajat yang tinggi (seperti teks terpotong atau teks yang menjadi lebih sulit dibaca karena ukuran layar yang sangat besar).

Menguji aplikasi dengan penskalaan font nonlinear

Aktifkan ukuran font maksimum di setelan aksesibilitas perangkat untuk menguji aplikasi Anda.

Jika Anda sudah menggunakan unit piksel (sp) yang diskalakan untuk menentukan ukuran teks, opsi tambahan dan peningkatan penskalaan ini akan diterapkan secara otomatis ke teks di aplikasi Anda. Namun, Anda tetap harus melakukan pengujian UI dengan ukuran font maksimum yang diaktifkan (200%) untuk memastikan aplikasi Anda menerapkan ukuran font dengan benar dan dapat mengakomodasi ukuran font yang lebih besar tanpa memengaruhi kegunaan.

Untuk mengaktifkan ukuran font 200%, ikuti langkah-langkah berikut:

  1. Buka aplikasi Settings dan buka Accessibility > Display size and text.
  2. Untuk opsi Font size, ketuk ikon plus (+) hingga setelan ukuran font maksimum diaktifkan, seperti yang ditunjukkan dalam gambar yang menyertai bagian ini.

Menggunakan satuan piksel yang diskalakan (sp) untuk ukuran teks

Ingatlah untuk selalu menentukan ukuran teks dalam unit sp. Saat aplikasi Anda menggunakan unit sp, Android dapat menerapkan ukuran teks pilihan pengguna dan menskalakannya dengan benar.

Jangan gunakan unit sp untuk padding atau menentukan tinggi tampilan dengan asumsi padding implisit: dengan penskalaan font non-linear, dimensi sp mungkin tidak proporsional, sehingga 4sp + 20sp mungkin tidak sama dengan 24sp.

Mengonversi satuan piksel yang diskalakan (sp)

Gunakan TypedValue.applyDimension() untuk mengonversi dari unit sp ke piksel, dan gunakan TypedValue.deriveDimension() untuk mengonversi piksel ke sp. Metode ini menerapkan kurva penskalaan nonlinear yang sesuai secara otomatis.

Hindari persamaan hardcode menggunakan Configuration.fontScale atau DisplayMetrics.scaledDensity. Karena penskalaan font nonlinear, kolom scaledDensity tidak lagi akurat. fontScale harus digunakan untuk tujuan informasi hanya karena font tidak lagi diskalakan dengan satu nilai skalar.

Menggunakan unit sp untuk lineHeight

Selalu tentukan android:lineHeight menggunakan unit sp, bukan dp, sehingga tinggi baris diskalakan bersama dengan teks Anda. Jika tidak, jika teks Anda adalah sp, tetapi lineHeight Anda dalam dp atau px, teks tidak akan diskalakan dan terlihat sempit. TextView otomatis mengoreksi lineHeight sehingga proporsi yang Anda inginkan dipertahankan, tetapi hanya jika textSize dan lineHeight ditentukan dalam satuan sp.

Kamera dan media

Ultra HDR untuk gambar

Ilustrasi kualitas gambar Standard Dynamic Range (SDR) versus High Dynamic Range (HDR).

Android 14 menambahkan dukungan untuk gambar Rentang Dinamis Tinggi (HDR) yang mempertahankan lebih banyak informasi dari sensor saat mengambil foto, yang memungkinkan warna yang cerah dan kontras yang lebih besar. Android menggunakan format Ultra HDR, yang sepenuhnya kompatibel dengan gambar JPEG, sehingga aplikasi dapat berinteraksi dengan lancar dengan gambar HDR, menampilkannya dalam Rentang Dinamis Standar (SDR) sesuai kebutuhan.

Merender gambar ini di UI dalam HDR dilakukan secara otomatis oleh framework saat aplikasi Anda memilih untuk menggunakan UI HDR untuk Jendela Aktivitasnya, baik melalui entri manifes atau saat runtime dengan memanggil Window.setColorMode(). Anda juga dapat mengambil gambar diam Ultra HDR yang dikompresi di perangkat yang didukung. Dengan lebih banyak warna yang dipulihkan dari sensor, pengeditan pasca-produksi dapat lebih fleksibel. Gainmap yang terkait dengan gambar Ultra HDR dapat digunakan untuk merendernya menggunakan OpenGL atau Vulkan.

Zoom, Fokus, Postview, dan lainnya di ekstensi kamera

Android 14 mengupgrade dan meningkatkan ekstensi kamera, sehingga aplikasi dapat menangani waktu pemrosesan yang lebih lama, yang memungkinkan gambar yang lebih baik menggunakan algoritma yang intensif komputasi seperti fotografi cahaya rendah di perangkat yang didukung. Fitur ini memberi pengguna pengalaman yang lebih andal saat menggunakan kemampuan ekstensi kamera. Contoh peningkatan ini mencakup:

Zoom dalam sensor

Jika REQUEST_AVAILABLE_CAPABILITIES_STREAM_USE_CASE di CameraCharacteristics berisi SCALER_AVAILABLE_STREAM_USE_CASES_CROPPED_RAW, aplikasi Anda dapat menggunakan kemampuan sensor lanjutan untuk memberikan streaming RAW yang dipangkas dengan piksel yang sama dengan bidang pandang penuh menggunakan CaptureRequest dengan target RAW yang memiliki kasus penggunaan streaming yang disetel ke CameraMetadata.SCALER_AVAILABLE_STREAM_USE_CASES_CROPPED_RAW. Dengan menerapkan kontrol penggantian permintaan, kamera yang diperbarui memberi pengguna kontrol zoom bahkan sebelum kontrol kamera lainnya siap.

Audio USB lossless

Android 14 gains support for lossless audio formats for audiophile-level experiences over USB wired headsets. You can query a USB device for its preferred mixer attributes, register a listener for changes in preferred mixer attributes, and configure mixer attributes using the AudioMixerAttributes class. This class represents the format, such as channel mask, sample rate, and behavior of the audio mixer. The class allows for audio to be sent directly, without mixing, volume adjustment, or processing effects.

Alat dan produktivitas developer

Credential Manager

Android 14 adds Credential Manager as a platform API, with additional support back to Android 4.4 (API level 19) devices through a Jetpack Library using Google Play services. Credential Manager aims to make sign-in easier for users with APIs that retrieve and store credentials with user-configured credential providers. Credential Manager supports multiple sign-in methods, including username and password, passkeys, and federated sign-in solutions (such as Sign-in with Google) in a single API.

Passkeys provide many advantages. For example, passkeys are built on industry standards, can work across different operating systems and browser ecosystems, and can be used with both websites and apps.

For more information, see the Credential Manager and passkeys documentation and the blogpost about Credential Manager and passkeys.

Health Connect

Health Connect is an on-device repository for user health and fitness data. It allows users to share data between their favorite apps, with a single place to control what data they want to share with these apps.

On devices running Android versions prior to Android 14, Health Connect is available to download as an app on the Google Play store. Starting with Android 14, Health Connect is part of the platform and receives updates through Google Play system updates without requiring a separate download. With this, Health Connect can be updated frequently, and your apps can rely on Health Connect being available on devices running Android 14 or higher. Users can access Health Connect from the Settings in their device, with privacy controls integrated into the system settings.

Users can get started using Health Connect without a separate app download on devices running Android 14 or higher.
Users can control which apps have access to their health and fitness data through system settings.

Health Connect includes several new features in Android 14, such as exercise routes, allowing users to share a route of their workout which can be visualized on a map. A route is defined as a list of locations saved within a window of time, and your app can insert routes into exercise sessions, tying them together. To ensure that users have complete control over this sensitive data, users must allow sharing individual routes with other apps.

For more information, see the Health Connection documentation and the blogpost on What's new in Android Health.

Update OpenJDK 17

Android 14 melanjutkan pekerjaan memuat ulang library inti Android agar selaras dengan fitur dalam rilis OpenJDK LTS terbaru, termasuk update library dan dukungan bahasa Java 17 untuk developer aplikasi dan platform.

Fitur dan peningkatan berikut disertakan:

  • Mengupdate sekitar 300 class java.base ke dukungan Java 17.
  • Pemblokiran Teks, yang memperkenalkan literal string multibaris ke bahasa pemrograman Java.
  • Pencocokan Pola untuk instance, yang memungkinkan objek diperlakukan sebagai memiliki jenis tertentu dalam instanceof tanpa variabel tambahan.
  • Class tertutup, yang memungkinkan Anda membatasi class dan antarmuka yang dapat memperluas atau menerapkannya.

Berkat update sistem Google Play (Project Mainline), lebih dari 600 juta perangkat diaktifkan untuk menerima update Android Runtime (ART) terbaru yang menyertakan perubahan ini. Ini adalah bagian dari komitmen kami untuk memberi aplikasi lingkungan yang lebih konsisten dan aman di seluruh perangkat, serta memberikan fitur dan kemampuan baru kepada pengguna, terlepas dari rilis platform.

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

Peningkatan untuk app store

Android 14 introduces several PackageInstaller APIs that allow app stores to improve their user experience.

Request install approval before downloading

Installing or updating an app might require user approval. For example, when an installer making use of the REQUEST_INSTALL_PACKAGES permission attempts to install a new app. In prior Android versions, app stores can only request user approval after APKs are written to the install session and the session is committed.

Starting with Android 14, the requestUserPreapproval() method lets installers request user approval before committing the install session. This improvement lets an app store defer downloading any APKs until after the installation has been approved by the user. Furthermore, once a user has approved installation, the app store can download and install the app in the background without interrupting the user.

Claim responsibility for future updates

The setRequestUpdateOwnership() method allows an installer to indicate to the system that it intends to be responsible for future updates to an app it is installing. This capability enables update ownership enforcement, meaning that only the update owner is permitted to install automatic updates to the app. Update ownership enforcement helps to ensure that users receive updates only from the expected app store.

Any other installer, including those making use of the INSTALL_PACKAGES permission, must receive explicit user approval in order to install an update. If a user decides to proceed with an update from another source, update ownership is lost.

Update apps at less-disruptive times

App stores typically want to avoid updating an app that is actively in use because this leads to the app's running processes being killed, which potentially interrupts what the user was doing.

Starting with Android 14, the InstallConstraints API gives installers a way to ensure that their app updates happen at an opportune moment. For example, an app store can call the commitSessionAfterInstallConstraintsAreMet() method to make sure that an update is only committed when the user is no longer interacting with the app in question.

Seamlessly install optional splits

With split APKs, features of an app can be delivered in separate APK files, rather than as a monolithic APK. Split APKs allow app stores to optimize the delivery of different app components. For example, app stores might optimize based on the properties of the target device. The PackageInstaller API has supported splits since its introduction in API level 22.

In Android 14, the setDontKillApp() method allows an installer to indicate that the app's running processes shouldn't be killed when new splits are installed. App stores can use this feature to seamlessly install new features of an app while the user is using the app.

Paket metadata aplikasi

Starting in Android 14, the Android package installer lets you specify app metadata, such as data safety practices, to include on app store pages such as Google Play.

Mendeteksi kapan pengguna mengambil screenshot perangkat

Untuk menciptakan pengalaman yang lebih standar dalam mendeteksi screenshot, Android 14 memperkenalkan API deteksi screenshot yang menjaga privasi. API ini memungkinkan aplikasi mendaftarkan callback per aktivitas. Callback ini dipanggil, dan pengguna akan diberi tahu saat pengguna mengambil screenshot ketika aktivitas itu terlihat.

Pengalaman pengguna

Tindakan kustom Sharesheet dan peringkat yang ditingkatkan

Android 14 mengupdate sharesheet sistem untuk mendukung tindakan aplikasi kustom dan hasil pratinjau yang lebih informatif bagi pengguna.

Menambahkan tindakan kustom

Dengan Android 14, aplikasi Anda dapat menambahkan tindakan kustom ke sharesheet sistem yang dipanggilnya.

Screenshot tindakan kustom di panel berbagi.

Meningkatkan peringkat target Berbagi Langsung

Android 14 menggunakan lebih banyak sinyal dari aplikasi untuk menentukan peringkat target langsung berbagi agar memberikan hasil yang lebih bermanfaat bagi pengguna. Untuk memberikan sinyal yang paling berguna untuk peringkat, ikuti panduan untuk meningkatkan peringkat target Berbagi Langsung. Aplikasi komunikasi juga dapat melaporkan penggunaan pintasan untuk pesan keluar dan masuk.

Baris Berbagi Langsung di sharesheet, seperti yang ditunjukkan oleh 1

Dukungan untuk animasi bawaan dan kustom untuk Kembali Prediktif

Video: Animasi kembali prediktif

Android 13 memperkenalkan animasi "kembali ke layar utama" prediktif di balik opsi developer. Saat digunakan pada aplikasi yang didukung dengan opsi developer yang diaktifkan, menggeser kembali akan menampilkan animasi yang menunjukkan bahwa gestur kembali akan menutup aplikasi untuk kembali ke layar utama.

Android 14 menyertakan beberapa peningkatan dan panduan baru untuk Kembali Prediktif:

Dengan rilis pratinjau Android 14 ini, semua fitur Kembali Prediktif tetap berada di balik opsi developer. Lihat panduan developer untuk memigrasikan aplikasi ke kembali prediktif, serta panduan developer untuk membuat transisi kustom dalam aplikasi.

Penggantian per aplikasi produsen perangkat layar besar

Penggantian per aplikasi memungkinkan produsen perangkat mengubah perilaku aplikasi di perangkat layar besar. Misalnya, penggantian FORCE_RESIZE_APP menginstruksikan sistem untuk mengubah ukuran aplikasi agar sesuai dengan dimensi tampilan (menghindari mode kompatibilitas ukuran) meskipun resizeableActivity="false" disetel dalam manifes aplikasi.

Ganti dimaksudkan untuk meningkatkan pengalaman pengguna di perangkat layar besar.

Properti manifes baru memungkinkan Anda menonaktifkan beberapa penggantian produsen perangkat untuk aplikasi Anda.

Penggantian per aplikasi pengguna perangkat layar besar

Per-app overrides change the behavior of apps on large screen devices. For example, the OVERRIDE_MIN_ASPECT_RATIO_LARGE device manufacturer override sets the app aspect ratio to 16:9 regardless of the app's configuration.

Android 14 QPR1 enables users to apply per‑app overrides by means of a new settings menu on large screen devices.

Berbagi layar aplikasi

Berbagi layar aplikasi memungkinkan pengguna berbagi jendela aplikasi, bukan seluruh layar perangkat selama perekaman konten layar.

Dengan berbagi layar aplikasi, status bar, menu navigasi, notifikasi, dan elemen UI sistem lainnya dikecualikan dari tampilan bersama. Hanya konten aplikasi yang dipilih yang dibagikan.

Berbagi layar aplikasi meningkatkan produktivitas dan privasi dengan memungkinkan pengguna menjalankan beberapa aplikasi, tetapi membatasi berbagi konten ke satu aplikasi.

Smart Reply yang didukung LLM di Gboard pada Pixel 8 Pro

Di perangkat Pixel 8 Pro dengan Feature Drop Desember, developer dapat mencoba smart reply berkualitas lebih tinggi di Gboard yang didukung oleh Model Bahasa Besar (LLM) di perangkat yang berjalan di Google Tensor.

Fitur ini tersedia sebagai pratinjau terbatas untuk bahasa Inggris Amerika Serikat di WhatsApp, Line, dan KakaoTalk. Fitur ini memerlukan penggunaan perangkat Pixel 8 Pro dengan Gboard sebagai keyboard Anda.

Untuk mencobanya, aktifkan fitur ini terlebih dahulu di Setelan > Opsi Developer > Setelan AICore > Aktifkan AIcore Persistent.

Selanjutnya, buka percakapan di aplikasi yang didukung untuk melihat Smart Reply yang didukung LLM di bilah saran Gboard sebagai respons terhadap pesan masuk.

Gboard menggunakan LLM di perangkat untuk memberikan balasan pintar berkualitas lebih tinggi.

Grafik

Jalur dapat dikueri dan dapat di-interpola

Android's Path API is a powerful and flexible mechanism for creating and rendering vector graphics, with the ability to stroke or fill a path, construct a path from line segments or quadratic or cubic curves, perform boolean operations to get even more complex shapes, or all of these simultaneously. One limitation is the ability to find out what is actually in a Path object; the internals of the object are opaque to callers after creation.

To create a Path, you call methods such as moveTo(), lineTo(), and cubicTo() to add path segments. But there has been no way to ask that path what the segments are, so you must retain that information at creation time.

Starting in Android 14, you can query paths to find out what's inside of them. First, you need to get a PathIterator object using the Path.getPathIterator API:

Kotlin

val path = Path().apply {
    moveTo(1.0f, 1.0f)
    lineTo(2.0f, 2.0f)
    close()
}
val pathIterator = path.pathIterator

Java

Path path = new Path();
path.moveTo(1.0F, 1.0F);
path.lineTo(2.0F, 2.0F);
path.close();
PathIterator pathIterator = path.getPathIterator();

Next, you can call PathIterator to iterate through the segments one by one, retrieving all of the necessary data for each segment. This example uses PathIterator.Segment objects, which packages up the data for you:

Kotlin

for (segment in pathIterator) {
    println("segment: ${segment.verb}, ${segment.points}")
}

Java

while (pathIterator.hasNext()) {
    PathIterator.Segment segment = pathIterator.next();
    Log.i(LOG_TAG, "segment: " + segment.getVerb() + ", " + segment.getPoints());
}

PathIterator also has a non-allocating version of next() where you can pass in a buffer to hold the point data.

One of the important use cases of querying Path data is interpolation. For example, you might want to animate (or morph) between two different paths. To further simplify that use case, Android 14 also includes the interpolate() method on Path. Assuming the two paths have the same internal structure, the interpolate() method creates a new Path with that interpolated result. This example returns a path whose shape is halfway (a linear interpolation of .5) between path and otherPath:

Kotlin

val interpolatedResult = Path()
if (path.isInterpolatable(otherPath)) {
    path.interpolate(otherPath, .5f, interpolatedResult)
}

Java

Path interpolatedResult = new Path();
if (path.isInterpolatable(otherPath)) {
    path.interpolate(otherPath, 0.5F, interpolatedResult);
}

The Jetpack graphics-path library enables similar APIs for earlier versions of Android as well.

Mesh kustom dengan shader fragmen dan vertex

Android telah lama mendukung mesh segitiga gambar dengan bayangan kustom, tetapi format mesh input telah dibatasi untuk beberapa kombinasi atribut yang telah ditentukan. Android 14 menambahkan dukungan untuk mesh kustom, yang dapat didefinisikan sebagai segitiga atau strip segitiga, dan dapat, secara opsional, diindeks. Mesh ini ditentukan dengan atribut kustom, langkah vertex, beragam, serta shader vertex dan fragmen yang ditulis dalam AGSL.

Vertex shader menentukan variasi, seperti posisi dan warna, sedangkan fragment shader secara opsional dapat menentukan warna untuk piksel, biasanya dengan menggunakan variasi yang dibuat oleh vertex shader. Jika warna disediakan oleh shader fragmen, warna tersebut akan digabungkan dengan warna Paint saat ini menggunakan mode gabungan yang dipilih saat menggambar mesh. Seragam dapat diteruskan ke shader fragmen dan vertex untuk fleksibilitas tambahan.

Perender buffer hardware untuk Canvas

Untuk membantu dalam penggunaan Canvas API Android untuk menggambar akselerasi hardware ke HardwareBuffer, Android 14 memperkenalkan HardwareBufferRenderer. API ini sangat berguna jika kasus penggunaan Anda melibatkan komunikasi dengan komponer sistem melalui SurfaceControl untuk gambar dengan latensi rendah.