Android 14 memperkenalkan fitur dan API hebat untuk para 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 theLocaleConfig
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 theres
folders of your app modules and any library module dependencies to determine the locales to include in theLocaleConfig
file.Dynamic updates for an app's
localeConfig
: Use thesetOverrideLocaleConfig()
andgetOverrideLocaleConfig()
methods inLocaleManager
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
有 30 亿人在使用区分性别的语言,此类语言的语法类别(例如名词、动词、形容词和介词)会根据您交谈所涉及的人或物的性别而变化。传统上,许多区分性别的语言使用阳性语法性别作为默认或通用性别。
以错误的语法性别来称呼用户,例如以阳性语法性别来称呼女性,可能会对她们的表现和态度产生负面影响。相比之下,界面语言如果能正确反映用户的语法性别,就可以提高用户互动度,并提供更个性化、更自然的用户体验。
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
Preferensi regional memungkinkan pengguna mempersonalisasi satuan suhu, hari pertama dalam seminggu, dan sistem penomoran. Orang Eropa yang tinggal di Amerika Serikat mungkin lebih memilih satuan suhu dalam Celsius, bukan Fahrenheit, dan menginginkan aplikasi memperlakukan Senin sebagai awal minggu, bukan default Minggu seperti di Amerika.
Menu Setelan Android yang baru untuk preferensi ini memberi pengguna
lokasi yang dapat ditemukan dan terpusat untuk mengubah preferensi aplikasi. Preferensi
ini juga tetap ada melalui pencadangan dan pemulihan. Beberapa API dan
intent—seperti
getTemperatureUnit
dan
getFirstDayOfWeek
—
memberikan pembacaan aplikasi Anda akses ke preferensi pengguna, sehingga aplikasi dapat menyesuaikan cara
menampilkan informasi. Anda juga dapat mendaftarkan
BroadcastReceiver
di
ACTION_LOCALE_CHANGED
untuk menangani perubahan konfigurasi lokalitas saat preferensi regional berubah.
Untuk menemukan setelan ini, buka aplikasi Settings, lalu buka System > Languages & input > Regional preferences.


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

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:
- Buka aplikasi Settings dan buka Accessibility > Display size and text.
- 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

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.
Ekstensi 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:
- Estimasi latensi pemrosesan pengambilan gambar diam dinamis memberikan estimasi latensi pengambilan gambar diam yang jauh lebih akurat berdasarkan kondisi lingkungan dan situasi saat ini. Panggil
CameraExtensionSession.getRealtimeStillCaptureLatency()
untuk mendapatkan objekStillCaptureLatency
yang memiliki dua metode estimasi latensi. MetodegetCaptureLatency()
menampilkan estimasi latensi antaraonCaptureStarted
danonCaptureProcessStarted()
, dan metodegetProcessingLatency()
menampilkan estimasi latensi antaraonCaptureProcessStarted()
dan frame akhir yang diproses yang tersedia. - Dukungan untuk callback progres pengambilan sehingga aplikasi dapat menampilkan
progres saat ini dari operasi pemrosesan pengambilan gambar diam yang berjalan lama. Anda dapat memeriksa
apakah fitur ini tersedia dengan
CameraExtensionCharacteristics.isCaptureProcessProgressAvailable
, dan jika tersedia, Anda akan mengimplementasikan callbackonCaptureProcessProgressed()
, yang memiliki progres (dari 0 hingga 100) yang diteruskan sebagai parameter. Metadata khusus ekstensi, seperti
CaptureRequest.EXTENSION_STRENGTH
untuk menelepon jumlah efek ekstensi, seperti jumlah pemburaman latar belakang denganEXTENSION_BOKEH
.Fitur Postview untuk Still Capture di ekstensi kamera, yang memberikan gambar yang kurang diproses dengan lebih cepat daripada gambar akhir. Jika ekstensi telah meningkatkan latensi pemrosesan, gambar pasca-tampilan dapat diberikan sebagai placeholder untuk meningkatkan UX dan diganti nanti dengan gambar akhir. Anda dapat memeriksa apakah fitur ini tersedia dengan
CameraExtensionCharacteristics.isPostviewAvailable
. Kemudian, Anda dapat meneruskanOutputConfiguration
keExtensionSessionConfiguration.setPostviewOutputConfiguration
.Dukungan untuk
SurfaceView
yang memungkinkan jalur rendering pratinjau yang lebih dioptimalkan dan hemat daya.Dukungan untuk ketuk untuk memfokuskan dan melakukan zoom selama penggunaan ekstensi.
Zoom dalam sensor
当 CameraCharacteristics
中的 REQUEST_AVAILABLE_CAPABILITIES_STREAM_USE_CASE
包含 SCALER_AVAILABLE_STREAM_USE_CASES_CROPPED_RAW
时,您的应用可以使用高级传感器功能,将剪裁后的 RAW 数据流的像素与全视野范围相同,方法是将 CaptureRequest
与将数据流用例设置为 CameraMetadata.SCALER_AVAILABLE_STREAM_USE_CASES_CROPPED_RAW
的 RAW 目标搭配使用。通过实现请求替换控件,更新后的相机可让用户在其他相机控件准备就绪之前使用缩放控件。
Audio USB lossless
Android 14 mendapatkan dukungan untuk format audio lossless untuk pengalaman
level audiophile melalui headset berkabel USB. Anda dapat membuat kueri perangkat USB untuk
atribut mixer pilihannya, mendaftarkan pemroses untuk perubahan pada atribut
mixer pilihan, dan mengonfigurasi atribut mixer menggunakan
class AudioMixerAttributes
. Class ini mewakili
format, seperti mask saluran, frekuensi sampel, dan perilaku mixer audio. Class
ini memungkinkan audio dikirim langsung, tanpa pencampuran,
penyesuaian volume, atau efek pemrosesan.
Alat dan produktivitas developer
Pengelola Kredensial
Android 14 menambahkan Pengelola Kredensial sebagai API platform, dengan dukungan tambahan kembali ke perangkat Android 4.4 (API level 19) melalui Library Jetpack menggunakan layanan Google Play. Pengelola Kredensial bertujuan untuk mempermudah login bagi pengguna dengan API yang mengambil dan menyimpan kredensial dengan penyedia kredensial yang dikonfigurasi pengguna. Pengelola Kredensial mendukung beberapa metode login, termasuk nama pengguna dan sandi, kunci sandi, dan solusi login gabungan (seperti Login dengan Google) dalam satu API.
Kunci sandi memberikan banyak manfaat. Misalnya, kunci sandi dibuat berdasarkan standar industri, dapat berfungsi di berbagai sistem operasi dan ekosistem browser, serta dapat digunakan dengan situs dan aplikasi.
Untuk informasi selengkapnya, lihat dokumentasi Credential Manager dan kunci sandi serta postingan blog tentang Credential Manager dan kunci sandi.
Health Connect
Health Connect adalah repositori di perangkat untuk data kesehatan dan kebugaran pengguna. Fitur ini memungkinkan pengguna berbagi data antar-aplikasi favorit mereka, dengan satu tempat untuk mengontrol data yang ingin dibagikan kepada aplikasi ini.
Di perangkat yang menjalankan versi Android sebelum Android 14, Health Connect tersedia untuk didownload sebagai aplikasi di Google Play Store. Mulai Android 14, Health Connect adalah bagian dari platform dan menerima update melalui update sistem Google Play tanpa memerlukan download terpisah. Dengan demikian, Health Connect dapat sering diperbarui, dan aplikasi Anda dapat mengandalkan Health Connect yang tersedia di perangkat yang menjalankan Android 14 atau yang lebih tinggi. Pengguna dapat mengakses Health Connect dari Setelan di perangkat mereka, dengan kontrol privasi yang terintegrasi ke dalam setelan sistem.


Health Connect menyertakan beberapa fitur baru di Android 14, seperti rute olahraga, yang memungkinkan pengguna membagikan rute olahraga mereka yang dapat divisualisasikan di peta. Rute ditentukan sebagai daftar lokasi yang disimpan dalam periode waktu, dan aplikasi Anda dapat menyisipkan rute ke dalam sesi olahraga, yang menggabungkannya bersama-sama. Untuk memastikan pengguna memiliki kontrol penuh atas data sensitif ini, pengguna harus mengizinkan berbagi setiap rute dengan aplikasi lain.
Untuk informasi selengkapnya, lihat dokumentasi Health Connect dan postingan blog tentang Yang baru di Android Health.
Update OpenJDK 17
Android 14 continues the work of refreshing Android's core libraries to align with the features in the latest OpenJDK LTS releases, including both library updates and Java 17 language support for app and platform developers.
The following features and improvements are included:
- Updated approximately 300
java.base
classes to Java 17 support. - Text Blocks, which introduce multi-line string literals to the Java programming language.
- Pattern Matching for instanceof, which allows an object to
be treated as having a specific type in an
instanceof
without any additional variables. - Sealed classes, which allow you restrict which classes and interfaces can extend or implement them.
Thanks to Google Play system updates (Project Mainline), over 600 million devices are enabled to receive the latest Android Runtime (ART) updates that include these changes. This is part of our commitment to give apps a more consistent, secure environment across devices, and to deliver new features and capabilities to users independent of platform releases.
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
Peningkatan untuk app store
Android 14 memperkenalkan beberapa PackageInstaller
API yang
memungkinkan app store meningkatkan pengalaman pengguna mereka.
Meminta persetujuan penginstalan sebelum mendownload
Menginstal atau mengupdate aplikasi mungkin memerlukan persetujuan pengguna.
Misalnya, saat penginstal yang menggunakan izin
REQUEST_INSTALL_PACKAGES
mencoba menginstal
aplikasi baru. Pada versi Android sebelumnya, app store hanya dapat meminta persetujuan pengguna
setelah APK ditulis ke sesi penginstalan dan
sesi berkomitmen.
Mulai Android 14, metode requestUserPreapproval()
memungkinkan penginstal meminta persetujuan pengguna sebelum melakukan sesi
penginstalan. Peningkatan ini memungkinkan app store menunda download APK apa pun hingga
setelah penginstalan disetujui oleh pengguna. Selain itu, setelah pengguna
menyetujui penginstalan, app store dapat mendownload dan menginstal aplikasi di
latar belakang tanpa mengganggu pengguna.
Mengklaim tanggung jawab untuk update mendatang
Metode setRequestUpdateOwnership()
memungkinkan penginstal
memberi tahu sistem bahwa penginstal bermaksud bertanggung jawab atas update mendatang
untuk aplikasi yang diinstalnya. Kemampuan ini memungkinkan penerapan
kepemilikan update, yang berarti bahwa hanya pemilik update yang diizinkan
untuk menginstal update otomatis ke aplikasi. Penerapan
kepemilikan update membantu memastikan bahwa pengguna hanya menerima update dari app store
yang diharapkan.
Penginstal lainnya, termasuk yang menggunakan izin
INSTALL_PACKAGES
, harus menerima persetujuan eksplisit
pengguna untuk menginstal update. Jika pengguna memutuskan untuk melanjutkan update dari sumber lain, kepemilikan update akan hilang.
Mengupdate aplikasi pada waktu yang tidak terlalu mengganggu
App store biasanya ingin menghindari update aplikasi yang aktif digunakan karena hal ini menyebabkan proses aplikasi yang sedang berjalan dihentikan, yang berpotensi mengganggu aktivitas pengguna.
Mulai Android 14, InstallConstraints
API
memberi penginstal cara untuk memastikan update aplikasi mereka terjadi pada
momen yang tepat. Misalnya, app store dapat memanggil metode
commitSessionAfterInstallConstraintsAreMet()
untuk
memastikan update hanya dilakukan saat pengguna tidak lagi
berinteraksi dengan aplikasi yang dimaksud.
Menginstal pemisahan opsional dengan lancar
Dengan APK terpisah, fitur aplikasi dapat dikirimkan dalam file APK terpisah,
bukan sebagai APK monolitik. APK terpisah memungkinkan app store mengoptimalkan
pengiriman berbagai komponen aplikasi. Misalnya, app store dapat mengoptimalkan
berdasarkan properti perangkat target. PackageInstaller
API telah mendukung pemisahan sejak
diperkenalkan di API level 22.
Di Android 14, metode setDontKillApp()
memungkinkan
penginstal menunjukkan bahwa proses aplikasi yang sedang berjalan tidak boleh dihentikan saat
pemisahan baru diinstal. App store dapat menggunakan fitur ini untuk menginstal
fitur baru aplikasi dengan lancar ketika pengguna sedang menggunakan aplikasi.
Paket metadata aplikasi
Mulai Android 14, penginstal paket Android memungkinkan Anda menentukan metadata aplikasi, seperti praktik keamanan data, yang akan disertakan di halaman app store seperti Google Play.
Mendeteksi kapan pengguna mengambil screenshot perangkat
为了打造更加标准化的屏幕截图检测体验,Android 14 引入了可保护隐私的屏幕截图检测 API。借助此 API,应用可以按 activity 注册回调。如果用户在该 activity 可见时截取屏幕截图,系统会调用这些回调并通知用户。
Pengalaman pengguna
Tindakan kustom Sharesheet dan peringkat yang ditingkatkan
Android 14 更新了系统 Sharesheet,以便为用户提供自定义应用操作和信息更丰富的预览结果。
添加自定义操作
对于 Android 14,您的应用可以向其调用的系统 Sharesheet 添加自定义操作。

提高直接共享目标的排名
Android 14 根据来自应用的更多信号来确定直接共享目标的排名,以便为用户提供更实用的结果。为了提供最实用的排名信号,请遵循提高直接共享目标排名的准则。通讯应用还可以报告出站和入站消息的快捷方式使用情况。

Dukungan untuk animasi bawaan dan kustom untuk 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:
- Anda dapat menetapkan
android:enableOnBackInvokedCallback=true
untuk mengaktifkan animasi sistem kembali prediktif per Aktivitas, bukan untuk seluruh aplikasi. - Kami telah menambahkan animasi sistem baru untuk menyertai animasi "kembali ke layar utama" dari Android 13. Animasi sistem yang baru terdiri dari lintas aktivitas dan lintas tugas, yang Anda dapatkan secara otomatis setelah bermigrasi ke Kembali Prediktif.
- Kami telah menambahkan animasi Komponen Material baru untuk Sheet bawah, Sheet samping, dan Penelusuran.
- Kami telah membuat panduan desain untuk membuat animasi dan transisi kustom dalam aplikasi.
- Kami telah menambahkan API baru untuk mendukung animasi transisi kustom dalam aplikasi:
handleOnBackStarted
,handleOnBackProgressed
,handleOnBackCancelled
in
OnBackPressedCallback
onBackStarted
,onBackProgressed
,onBackCancelled
in
OnBackAnimationCallback
- Gunakan
overrideActivityTransition
, bukanoverridePendingTransition
, untuk transisi yang merespons saat pengguna menggeser kembali.
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 pengguna perangkat layar besar per aplikasi
Penggantian per aplikasi mengubah perilaku aplikasi di perangkat layar besar. Misalnya, penggantian produsen perangkat OVERRIDE_MIN_ASPECT_RATIO_LARGE
menetapkan rasio aspek aplikasi ke 16:9, terlepas dari konfigurasi aplikasi.
Android 14 QPR1 memungkinkan pengguna menerapkan penggantian per aplikasi melalui menu setelan baru di perangkat layar besar.
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
在搭载 12 月功能分块的 Pixel 8 Pro 设备上,开发者可以在 Gboard 中试用质量更高的智能回复,这些回复由在 Google Tensor 上运行的设备端大语言模型 (LLM) 提供支持。
此功能目前仅在 WhatsApp、Line 和 KakaoTalk 中以美式英语的形式提供给用户进行小范围测试。此功能需要使用 Pixel 8 Pro 设备,并将 Gboard 用作键盘。
如需试用此功能,请先依次前往设置 > 开发者选项 > AiCore 设置 > 启用 Aicore 持久性,启用该功能。
接下来,在受支持的应用中打开对话,即可在 Gboard 的建议栏中看到依托 LLM 的智能回复,以便回复收到的消息。
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:
val path = Path().apply { moveTo(1.0f, 1.0f) lineTo(2.0f, 2.0f) close() } val pathIterator = path.pathIterator
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:
for (segment in pathIterator) { println("segment: ${segment.verb}, ${segment.points}") }
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
:
val interpolatedResult = Path() if (path.isInterpolatable(otherPath)) { path.interpolate(otherPath, .5f, interpolatedResult) }
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 verteks dan fragmen
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 Kanvas
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.