Android Automotive OS memungkinkan pengguna menjalankan aplikasi video di sistem infotainmen mobil saat mobil diparkir.
Menguji aplikasi yang ada di emulator Android Automotive OS
Untuk mulai mem-build aplikasi untuk Android Automotive OS, uji terlebih dahulu aplikasi seluler yang ada di emulator Android Automotive OS. Untuk menyiapkan emulator, ikuti langkah-langkah di Menguji aplikasi Android untuk mobil. Selanjutnya, Anda dapat menjalankan aplikasi dengan mengikuti petunjuk di Menjalankan aplikasi di emulator.
Saat menjalankan aplikasi, perhatikan masalah kompatibilitas, seperti berikut:
- Layar infotainment memiliki orientasi tetap. Untuk memenuhi pedoman kualitas aplikasi mobil, aplikasi harus mendukung orientasi potret dan lanskap.
- API yang tersedia pada perangkat lain mungkin tidak tersedia di Android Automotive OS. Misalnya, beberapa API Layanan Google Play tidak tersedia di Android Automotive OS. Lihat bagian Menonaktifkan fitur untuk mengetahui detail tentang cara menangani masalah ini.
Mengonfigurasi file manifes aplikasi Anda
Untuk menargetkan Android Automotive OS, aplikasi Anda harus memiliki entri manifes tertentu. Dengan entri tersebut, aplikasi yang menargetkan Android Automotive OS akan dikirimkan ke Play Store menggunakan jenis rilis Automotive terpisah. Aplikasi tersebut akan menjalani proses peninjauan manual untuk membantu memastikannya aman digunakan di dalam mobil. Lihat Mendistribusikan aplikasi Android untuk mobil untuk mengetahui detail selengkapnya.
Fitur Android Automotive OS yang diperlukan
Agar tercantum di Play Store di mobil, aplikasi video yang di-build untuk Android Automotive OS
harus menyertakan elemen <uses-feature>
dan <uses-library>
berikut di file AndroidManifest.xml
:
<manifest ...>
...
<uses-feature
android:name="android.hardware.type.automotive"
android:required="true" />
...
<application ...>
...
<uses-library
android:name="android-automotive-video"
android:required="true"/>
...
</application>
</manifest>
Aplikasi yang dikirim ke jalur non-otomotif tidak dapat mendeklarasikan elemen <uses-feature>
yang ditampilkan dalam contoh kode sebelumnya, karena tidak dapat bergantung pada
hardware khusus mobil. Jadi, untuk mengirimkan
aplikasi yang sama bagi perangkat otomotif maupun non-otomotif, Anda harus membuat
minimal dua ragam dari aplikasi Anda: satu untuk perangkat otomotif dan satu untuk perangkat
seluler. Untuk mengetahui informasi selengkapnya tentang
cara membuat ragam terpisah ini, lihat dokumentasi berikut:
Kedua ragam aplikasi dapat memiliki nama paket yang sama, tetapi harus memiliki kode versi yang berbeda karena akan diupload ke jalur Play Store secara terpisah.
Atau, daripada menggunakan ragam terpisah, Anda dapat menggunakan nama paket terpisah untuk APK atau App Bundle seluler dan otomotif. Untuk memahami konsekuensi setiap pendekatan, lihat Nama paket dalam panduan developer aplikasi media.
Selain elemen yang ditampilkan dalam contoh kode sebelumnya, aplikasi yang di-build untuk Android
Automotive OS harus menyertakan elemen <uses-feature>
berikut di
elemen <manifest>
root:
<uses-feature
android:name="android.hardware.wifi"
android:required="false"/>
<uses-feature
android:name="android.hardware.screen.portrait"
android:required="false"/>
<uses-feature
android:name="android.hardware.screen.landscape"
android:required="false"/>
Menyetel fitur ini secara eksplisit ke tidak wajib akan membantu memastikan aplikasi Anda tidak bentrok dengan fitur hardware yang tersedia di perangkat Android Automotive OS.
Menandai aplikasi Anda sebagai aplikasi video
Untuk menunjukkan bahwa aplikasi otomotif Anda mendukung video, tambahkan file XML
bernama automotive_app_desc.xml
ke direktori res/xml/
di project Anda.
Dalam file ini, sertakan konten berikut:
<automotiveApp>
<uses name="video"/>
</automotiveApp>
Kemudian, dalam elemen <application>
di manifes Anda, tambahkan elemen
<meta-data>
berikut yang mereferensikan file XML:
<meta-data
android:name="com.android.automotive"
android:resource="@xml/automotive_app_desc"/>
Jangan sertakan aktivitas distraksi dioptimalkan
Aplikasi video hanya dimaksudkan untuk penggunaan saat parkir. Dengan demikian, jangan
sertakan elemen <meta-data>
berikut
dalam elemen <activity>
apa pun:
<!-- NOT ALLOWED -->
<meta-data
android:name="distractionOptimized"
android:value="true"/>
Tanpa metadata ini, aktivitas aplikasi Anda akan diblokir secara otomatis
oleh OS saat mobil memasuki mode mengemudi untuk mengurangi gangguan bagi pengemudi.
Hal ini terjadi sebagai callback siklus proses onPause
,
dan selama itu Anda harus menjeda pemutaran video dan audio
dari aplikasi Anda.
Mengoptimalkan aplikasi untuk Android Automotive OS
Untuk memberi pengguna pengalaman terbaik, Anda mungkin perlu mengaktifkan atau menonaktifkan fungsi tertentu, bergantung pada apakah aplikasi berjalan di mobil.
Menonaktifkan fitur
Jika Anda menyediakan aplikasi seluler di Android Automotive OS, fitur dan fungsi tertentu mungkin tidak relevan atau tidak tersedia. Misalnya, mobil biasanya tidak menyediakan akses ke kamera. Selain itu, hanya sebagian layanan Google Play yang tersedia di Android Automotive OS. Lihat Layanan Google Play untuk mobil untuk detail selengkapnya.
Anda dapat menggunakan PackageManager.hasSystemFeature
API untuk mendeteksi apakah aplikasi berjalan di Android Automotive OS dengan memeriksa
fitur FEATURE_AUTOMOTIVE
,
seperti ditunjukkan pada contoh berikut:
Kotlin
val packageManager: PackageManager = ... // Get a PackageManager from a Context val isCar = packageManager.hasSystemFeature(PackageManager.FEATURE_AUTOMOTIVE) if (isCar) { // Enable or disable a given feature }
Java
PackageManager packageManager = ... // Get a PackageManager from a Context boolean isCar = packageManager.hasSystemFeature(PackageManager.FEATURE_AUTOMOTIVE) if (isCar) { // Enable or disable a given feature }
Atau, jika aplikasi Anda juga memiliki komponen Android Auto, Anda dapat menggunakan CarConnection API dari Library Aplikasi Android untuk Mobil untuk mendeteksi apakah aplikasi berjalan di Android Automotive OS atau Android Auto—atau apakah aplikasi tidak terhubung ke mobil sama sekali.
Untuk Picture-in-Picture (PiP), ikuti praktik terbaik yang telah ditetapkan untuk memeriksa apakah fitur ini tersedia dan bereaksi dengan tepat.
Menangani skenario offline
Meskipun mobil menjadi terus-menerus terhubung ke internet, aplikasi dapat berjalan tanpa koneksi internet, seperti dalam kasus berikut:
- Pengguna dapat memilih untuk tidak menggunakan data seluler yang ditawarkan sebagai bagian dari paket langganan dari produsen mobil.
- Akses ke data seluler mungkin dibatasi di area tertentu.
- Mobil dengan radio Wi-Fi mungkin berada di luar jangkauan Wi-Fi, atau OEM mungkin menonaktifkan Wi-Fi dan mengutamakan jaringan seluler.
Bersiaplah untuk menangani skenario ini di aplikasi Anda dengan melakukan degradasi halus pada fungsi yang bergantung pada akses internet, misalnya dengan menawarkan konten offline. Untuk mengetahui informasi selengkapnya, lihat praktik terbaik untuk mengoptimalkan jaringan.
Menggunakan resource alternatif
Guna membantu menyesuaikan aplikasi untuk mobil, Anda dapat menggunakan penentu resource car
untuk menyediakan
resource alternatif
saat berjalan di kendaraan Android Automotive OS Google. Misalnya, jika menggunakan
Resource dimensi untuk menyimpan
nilai padding, Anda dapat menggunakan nilai yang lebih besar untuk set resource car
untuk membuat
target sentuh lebih besar.
Menguji Aplikasi Video di Android Automotive OS
Secara umum, ikuti petunjuk yang tersedia di
Menguji aplikasi Android untuk mobil. Hanya emulator SDK 30
dan 32 yang tersedia melalui Android Studio yang menyertakan
library android-automotive-video
, jadi gunakan keduanya untuk menguji
build Automotive OS aplikasi Anda. Emulator SDK yang lebih rendah tidak memiliki library,
sehingga penginstalan adb
aplikasi yang memerlukannya akan gagal. Library dapat
disertakan di kendaraan produksi di tingkat OS yang lebih rendah.
Pertanyaan umum (FAQ)
Apakah Widevine DRM didukung?
Ya, Widevine DRM L3 didukung di Android Automotive OS.