Kompatibilitas layar mobil memungkinkan aplikasi ponsel dan tablet berperforma baik di perangkat otomotif.
Fiturnya meliputi:
- Penskalaan DPI: Menskalakan elemen UI aplikasi berdasarkan DPI layar.
- Area aman untuk rendering aplikasi: Berisi konten aplikasi dalam area aman, sehingga tidak tertutup oleh elemen UI sistem.
- Logika klasifikasi aplikasi: Mengidentifikasi aplikasi yang memerlukan Kompatibilitas Layar Mobil.
Fitur kompatibilitas
Platform ini menyediakan beberapa mekanisme untuk mengoptimalkan rendering dan penskalaan aplikasi pada layar otomotif.
Penskalaan DPI
Fitur penskalaan DPI memungkinkan produsen perangkat menskalakan DPI kepadatan aplikasi individual atau semua aplikasi yang memerlukan Kompatibilitas Layar Mobil.
Untuk mengonfigurasi penskalaan kepadatan aplikasi:
Tambahkan file konfigurasi
/product/etc/display_compat_config.xml:<?xml version="1.0" encoding="utf-8"?> <!-- Each scale factor can have the following attributes display (required) Specifies the displayId to which this scale factor will be applied. packageName (optional) Specifies the packageName to which the scale factor will be applied. If omitted, the scaling will apply to all packages. For example: <scale display="0" packageName="com.android.car.media.localmediaplayer">0.5</scale> This means that only package `com.android.car.media.localmediaplayer` on display `0` will be scaled. --> <config> <scale display="0">1.0</scale> </config>Untuk menetapkan nilai skala default bagi semua aplikasi yang memerlukan Kompatibilitas Layar Mobil, ubah skala default untuk layar 0 menjadi
<scale display="0">1.0</scale>. Nilainya adalah nilai skala terbalik. Misalnya, untuk menskalakan aplikasi yang memerlukan Kompatibilitas Layar Mobil hingga 1,5x, tetapkan nilai skala ke(1 / 1.5) = 0.67:<config> <scale display="0">0.67</scale> </config>Untuk menetapkan nilai skala untuk aplikasi tertentu, tambahkan elemen
scalebaru ke config. Dalam contoh ini, YouTube Automotive diskalakan menjadi 1,43x (misalnya,(1 / 1.43) = 0.7).<config> <scale display="0">0.67</scale> <scale display="0" packageName="com.google.android.apps.automotive.youtube">0.7</scale> </config>
Jika sistem sedang berjalan saat Anda mengubah
/product/etc/display_compat_config.xml, Anda harus menghapus cache agar konfigurasi
baru dapat diterapkan. Gunakan makro ini untuk menghapus cache:
SECURE_SETTING_KEY="android.software.car.display_compatibility:settings:secure"
USER_ID_LIST=$(adb shell cmd user list -v | grep 'id=' | cut -d'=' -f2 | cut -d',' -f1)
for USER_ID in $USER_ID_LIST; do
echo "Deleting Display Compat config for user: $USER_ID"
adb shell settings delete secure --user $USER_ID $SECURE_SETTING_KEY
sleep 1
echo
done
Tambahkan file konfigurasi dan deklarasi fitur ke build AAOS, misalnya, di
vendor/OEM_NAME/products/displaycompat:# File: vendor/OEM_NAME/products/displaycompat/Android.bp prebuilt_etc { name: "display_compat_config", filename: "display_compat_config.xml", src: "display_compat_config.xml", product_specific: true, }
Area aplikasi yang aman
Aplikasi ponsel dan tablet sering kali tidak dirancang untuk kolom sistem besar yang ada di Automotive. Aplikasi ini harus dibatasi agar tidak menggambar konten di bawah kolom sistem atau overlay sistem. Jika tidak, elemen interaktif mungkin dirender di area yang terhalang dari pengguna akhir.
Area aplikasi yang aman diimplementasikan menggunakan UI yang Dapat Diskalakan SafeBounds.
Logika klasifikasi aplikasi
Anda dapat menggunakan CarPackageManager.requiresDisplayCompat(..) untuk membangun fungsionalitas tambahan yang meningkatkan kompatibilitas aplikasi. Misalnya, Anda dapat menggunakan fungsi ini untuk menambahkan tombol kembali atau UI tambahan.
Developer aplikasi dapat memilih untuk mengaktifkan kompatibilitas layar mobil dengan menyertakan metadata dalam manifes aplikasi:
<meta-data
android:name="android.software.car.display_compatibility"
android:value="true" />
Sistem mengevaluasi apakah aplikasi memerlukan fitur kompatibilitas tampilan mobil menggunakan logika berikut (dievaluasi secara berurutan):
- Metadata manifes
android.software.car.display_compatibility:- Jika
android:value="true"→ Aplikasi memerlukan compat - Jika
android:value="false"→ Aplikasi tidak memerlukan kompatibilitas - Jika metadata tidak ada, lanjutkan ke pemeriksaan berikutnya.
- Jika
- Menggunakan fitur
android.hardware.type.automotive:- Jika fitur dideklarasikan (terlepas dari apakah
android:requiredadalahtrueataufalse) → Aplikasi tidak memerlukan kompatibilitas - Jika fitur tidak ada, lanjutkan ke pemeriksaan berikutnya.
- Jika fitur dideklarasikan (terlepas dari apakah
- Aktivitas aplikasi:
- Jika aplikasi tidak memiliki aktivitas (seperti RRO, aplikasi headless, atau layanan) → Aplikasi tidak memerlukan kompatibilitas
- Jika aplikasi memiliki aktivitas, lanjutkan ke pemeriksaan berikutnya.
- Info aplikasi:
- Jika aplikasi memiliki hak istimewa → Aplikasi tidak memerlukan kompatibilitas
- Jika aplikasi adalah aplikasi sistem (
FLAG_SYSTEM) → Aplikasi tidak memerlukan kompatibilitas - Jika tidak, lanjutkan ke pemeriksaan berikutnya.
- Info tanda tangan:
- Jika aplikasi ditandatangani platform (ditandatangani dengan tanda tangan yang sama dengan framework Android) → Aplikasi tidak memerlukan kompatibilitas
- Jika tidak, lanjutkan ke pemeriksaan berikutnya.
- Keputusan penggantian:
- Jika semua pemeriksaan lolos tanpa memilih tidak ikut → Aplikasi memerlukan kompatibilitas
Lihat
CarDisplayCompatScaleProviderUpdatableImpl.requiresDisplayCompatNotCachedLocked.
Dukungan perangkat
Perangkat yang mendukung kompatibilitas layar mobil harus mendeklarasikan dukungan menggunakan deklarasi fitur:
<feature name="android.software.car.display_compatibility" />