Ringkasan Fitur dan API

Android 14 memperkenalkan fitur dan API baru yang hebat untuk para developer. Bagian berikut membantu Anda 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 level API 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 扩展了 Android 13(API 级别 33)中引入的按应用设定语言功能,并包含以下额外功能:

  • 自动生成应用的 localeConfig:从 Android Studio Giraffe Canary 7 和 AGP 8.1.0-alpha07 开始,您可以将应用配置为自动支持各应用语言偏好设定。Android Gradle 插件会根据您的项目资源生成 LocaleConfig 文件,并在最终清单文件中添加对该文件的引用,这样您就不再需要手动创建或更新该文件。AGP 使用应用模块的 res 文件夹中的资源以及任何库模块依赖项来确定要在 LocaleConfig 文件中添加的语言区域。

  • 动态更新应用的 localeConfig:使用 LocaleManager 方法中的 setOverrideLocaleConfig()getOverrideLocaleConfig() 可以在设备的系统设置中动态更新应用的受支持语言列表。有了这种灵活性,您可以按区域自定义支持的语言列表、运行 A/B 实验,或者如果您的应用通过服务器端推送进行本地化,则可以提供更新后的语言区域列表。

  • 输入法 (IME) 的应用语言可见性:IME 可以利用 getApplicationLocales() 方法查看当前应用的语言,并将 IME 语言与该语言进行匹配。

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.

为帮助您针对区分性别的语言构建以用户为中心的界面,Android 14 引入了 Grammatical Inflection API,让您无需重构应用便能添加对语法性别的支持。

Preferensi regional

用户可通过地区偏好设置对温度单位、一周的第一天和编号系统进行个性化设置。居住在美国的欧洲用户可能更希望使用摄氏度,而不是华氏度,并且希望应用将星期一视为一周的开始,而不是像美国那样默认从星期日开始。

新 Android 设置菜单包含这些偏好设置,使用户能够在一个位置集中发现这些应用更改偏好设置。这些偏好设置在备份和恢复设备后也会保持不变。多个 API 和 intent(例如 getTemperatureUnitgetFirstDayOfWeek)会为您的应用授予读取权限来访问用户偏好设置,因此您的应用可以调整其显示信息的方式。您还可以在 ACTION_LOCALE_CHANGED 上注册 BroadcastReceiver,以便在地区偏好设置发生更改时处理语言区域配置更改。

如需找到这些设置,请打开“设置”应用,然后依次前往系统 > 语言和输入法 > 地区偏好设置

Android 系统设置中的地区偏好设置界面。
Android 系统中地区偏好设置的温度选项 设置。

Aksesibilitas

Penskalaan font non-linear ke 200%

Mulai Android 14, sistem mendukung penskalaan font hingga 200%, yang memberikan opsi aksesibilitas tambahan kepada pengguna.

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 Anda dengan penskalaan font nonlinear

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

Jika Anda sudah menggunakan unit piksel skalabel (sp) 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 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 tentukan 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 non-linear yang benar secara otomatis.

Hindari persamaan hardcode menggunakan Configuration.fontScale atau DisplayMetrics.scaledDensity. Karena penskalaan font bersifat non-linear, kolom scaledDensity tidak lagi akurat. Kolom fontScale hanya boleh digunakan untuk tujuan informasi karena font tidak lagi disesuaikan dengan satu nilai skalar.

Menggunakan satuan 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 tetap dipertahankan, tetapi hanya jika textSize dan lineHeight ditentukan dalam unit sp.

Kamera dan media

Ultra HDR untuk gambar

标准动态范围 (SDR) 与高动态范围 (HDR) 图片质量对比示意图。

Android 14 新增了对高动态范围 (HDR) 图片的支持,可在拍摄照片时保留更多来自传感器的信息,从而实现鲜艳的色彩和更高的对比度。Android 使用 Ultra HDR 格式,该格式与 JPEG 图片完全向后兼容,可让应用与 HDR 图片无缝互操作,并根据需要以标准动态范围 (SDR) 显示这些图片。

当您的应用选择为其 activity 窗口使用 HDR 界面(通过清单条目或通过在运行时调用 Window.setColorMode())时,框架会自动在界面中以 HDR 格式渲染这些图片。您还可以在受支持的设备上拍摄压缩的 Ultra HDR 静态图片。从传感器中恢复的颜色越多,后期编辑的灵活性就越高。与 Ultra HDR 图片关联的 Gainmap 可用于使用 OpenGL 或 Vulkan 渲染这些图片。

Zoom, Fokus, Postview, dan lainnya di ekstensi kamera

Android 14 升级并改进了相机扩展程序,让应用能够处理更长的处理时间,从而支持在受支持的设备上使用计算密集型算法(例如弱光摄影)来改善图片。这些功能可让用户在使用相机扩展功能时获得更出色的体验。这些改进的示例包括:

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 支持无损音频格式,可通过 USB 有线耳机提供发烧友级体验。您可以查询 USB 设备的首选混音器属性,注册监听器以监听首选混音器属性的更改,以及使用 AudioMixerAttributes 类配置混音器属性。此类表示音频混音器的格式,例如声道掩码、采样率和行为。该类允许直接发送音频,而无需混音、调节音量或处理效果。

Alat dan produktivitas developer

Credential Manager

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 是用户健康与健身数据的设备端仓库。借助该功能,用户可以在一个位置控制要与这些应用共享哪些数据,并在自己喜爱的应用之间共享数据。

在搭载 Android 14 之前的 Android 版本的设备上,Health Connect 可作为应用从 Google Play 商店下载。从 Android 14 开始,Health Connect 将成为 Android 平台的一部分,并通过 Google Play 系统更新接收更新,而无需单独下载。这样一来,Health Connect 就可以频繁更新,您的应用可以依赖于搭载 Android 14 或更高版本的设备上提供的 Health Connect。用户可以通过设备的“设置”访问 Health Connect,隐私控制功能集成到系统设置中。

用户无需在搭载 Android 14 或更高版本的设备上单独下载应用,即可开始使用 Health Connect。
用户可以通过系统设置控制哪些应用可以访问其健康与健身数据。

Health Connect 在 Android 14 中包含多项新功能,例如锻炼路线,可让用户分享可在地图上直观呈现的锻炼路线。路线定义为在一定时间范围内保存的位置列表,您的应用可以将路线插入锻炼时段,将它们关联起来。为确保用户能够完全控制此类敏感数据,用户必须允许与其他应用共享单个路线。

如需了解详情,请参阅 Health Connect 文档以及有关 Android Health 中的新功能的博文。

Update OpenJDK 17

Android 14 将继续更新 Android 的核心库,以与最新 OpenJDK LTS 版本中的功能保持一致,包括适合应用和平台开发者的库更新和 Java 17 语言支持。

其中包含以下功能和改进:

  • 将大约 300 个 java.base 类更新为支持 Java 17。
  • 文本块 - 为 Java 编程语言引入了多行字符串字面量。
  • instanceof 模式匹配:可让对象在 instanceof 中被视为具有特定类型,而无需任何额外的变量。
  • 密封类:允许您限制哪些类和接口可以扩展或实现它们。

得益于 Google Play 系统更新 (Project Mainline),6 亿多台设备能够接收包含这些更改的最新 Android 运行时 (ART) 更新。我们致力于为应用提供更加一致、安全的跨设备环境,并为用户提供独立于平台版本的新功能。

Java 和 OpenJDK 是 Oracle 及/或其关联公司的商标或注册商标。

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

从 Android 14 开始,Android 软件包安装程序可让您指定应用元数据(例如数据安全做法),以在 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 根据来自应用的更多信号来确定直接共享目标的排名,以便为用户提供更实用的结果。为了提供最实用的排名信号,请遵循提高直接共享目标排名的准则。通讯应用还可以报告出站和入站消息的快捷方式使用情况

共享表单中的“直接分享”行,如 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

按应用替换项会更改应用在大屏设备上的行为。例如,无论应用的配置如何,OVERRIDE_MIN_ASPECT_RATIO_LARGE 设备制造商替换项都会将应用宽高比设置为 16:9。

借助 Android 14 QPR1,用户可以在大屏设备上通过新的设置菜单应用按应用替换项。

Berbagi layar 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 的智能回复,以便回复收到的消息。

Gboard 利用设备端 LLM 提供更高质量的智能回复。

Grafik

Jalur dapat dikueri dan diinterpolasi

Path API Android adalah mekanisme yang andal dan fleksibel untuk membuat dan merender grafik vektor, dengan kemampuan untuk membuat goresan atau mengisi jalur, membuat jalur dari segmen garis atau kurva kuadrat atau kubik, melakukan operasi boolean untuk mendapatkan bentuk yang lebih kompleks, atau semuanya secara bersamaan. Salah satu keterbatasannya adalah kemampuan untuk mengetahui apa yang sebenarnya ada di objek Path; bagian dalam objek bersifat buram bagi pemanggil setelah dibuat.

Untuk membuat Path, panggil metode seperti moveTo(), lineTo(), dan cubicTo() untuk menambahkan segmen jalur. Namun, belum ada cara untuk menanyakan kepada jalur tersebut tentang segmennya, jadi Anda harus menyimpan informasi tersebut pada waktu pembuatan.

Mulai Android 14, Anda dapat mengkueri jalur untuk mencari tahu apa yang ada di dalamnya. Pertama, Anda perlu mendapatkan objek PathIterator menggunakan 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();

Selanjutnya, Anda dapat memanggil PathIterator untuk melakukan iterasi melalui segmen satu per satu, mengambil semua data yang diperlukan untuk setiap segmen. Contoh ini menggunakan objek PathIterator.Segment, yang mengemas data untuk Anda:

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 juga memiliki versi next() yang tidak mengalokasikan, tempat Anda dapat meneruskan buffer untuk menyimpan data titik.

Salah satu kasus penggunaan yang penting untuk mengkueri data Path adalah interpolasi. Misalnya, Anda mungkin ingin menganimasikan (atau mengubah) antara dua jalur berbeda. Untuk lebih menyederhanakan kasus penggunaan tersebut, Android 14 juga menyertakan metode interpolate() di Path. Dengan asumsi bahwa kedua jalur memiliki struktur internal yang sama, metode interpolate() akan membuat Path baru dengan hasil interpolasi tersebut. Contoh ini menampilkan jalur yang bentuknya setengah (interpolasi linier 0,5) antara path dan 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);
}

Library graphics-path Jetpack juga memungkinkan API serupa untuk versi Android yang lebih lama.

Mesh kustom dengan shader verteks dan fragmen

Android 长期以来一直支持使用自定义着色绘制三角网格,但输入网格格式仅限于一些预定义的属性组合。Android 14 增加了对自定义网格的支持,可将其定义为三角形三角形条,并且可以选择是否编入索引。这些网格是使用自定义属性、顶点步长、可变以及使用 AGSL 编写的顶点着色器和片段着色器指定的。

顶点着色器定义了位置和颜色等变量,而片段着色器可以选择为像素定义颜色,通常是使用顶点着色器创建的变量。如果片段着色器提供颜色,则系统会使用绘制网格时选择的混合模式将其与当前 Paint 颜色混合。Uniform 可以传递到片段着色器和顶点着色器,以提高灵活性。

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.