Membuat aplikasi video untuk Android Automotive OS

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.