Diagram berikut mengilustrasikan komponen yang berinteraksi dengan Media:
Gambar 1. Komponen sistem
Elemen dalam gambar ini dijelaskan dalam tabel:
Komponen | Deskripsi |
---|---|
Layar Utama | Merepresentasikan platform lain di UI mobil yang menampilkan dan mengontrol media yang sedang diputar. Di AOSP, ini adalah layar utama yang ditampilkan saat sistem dimulai. Dari layar ini, pengguna dapat melihat detail item media yang diputar dan menjalankan serangkaian tindakan standar dan kustom yang terbatas (misalnya, Putar dan Jeda). |
UI Sistem | Memberikan fungsi yang mencakup opsi navigasi UI global seperti untuk membuka Media. |
Asisten | Android menyediakan mekanisme bagi berbagai aplikasi asisten suara untuk berinteraksi dengan sistem. Aplikasi ini dapat berinteraksi dengan Sumber Media di latar belakang (misalnya, memutar lagu sebagai hasil perintah suara), atau membuka Media di latar depan (misalnya, saat aplikasi asisten suara diperintahkan untuk menampilkan UI Sumber Media tertentu). |
Peluncur Aplikasi | Semua aplikasi Android dimulai di Peluncur Aplikasi, termasuk Sumber Media. Media dapat menampilkan pemilih Sumber Media-nya sendiri, yang melengkapi atau menggantikan Peluncur Aplikasi sebagai tempat awal untuk media. |
Google Play Store | Saat GAS digunakan, di sinilah pengguna menemukan dan menginstal aplikasi baru di perangkat Android. Untuk media, setelah aplikasi diinstal, pengguna akan diarahkan ke Media untuk menyelesaikan proses login atau mulai berinteraksi dengan aplikasi. |
Pengelola Sesi Media | Layanan sistem Android yang melacak dan mengontrol sesi media dari semua sumber media. Class ini menyediakan mekanisme untuk mendeteksi kapan Sumber Media menjadi sumber media latar depan. Media, dan semua aplikasi lain yang menampilkan sumber media yang sedang diputar (misalnya, Layar utama), gunakan Pengelola Sesi Media untuk mendeteksi peristiwa ini dan memperbarui UI sebagaimana mestinya. Sumber Media berinteraksi dengan Pengelola Sesi Media melalui Media Session API. |
Radio | Aplikasi khusus untuk berinteraksi dengan hardware radio. Radio menelusuri stasiun radio, memilih stasiun yang baru diidentifikasi dengan cepat, dan beralih di antara band radio. Komponen UI yang digunakan bersama oleh Radio dan Media memungkinkan pengguna beralih antara kedua pengalaman tersebut. |
Mesin Gangguan bagi Pengemudi | Layanan sistem Android yang digunakan untuk menerapkan pembatasan UX berdasarkan status mengemudi mobil. Untuk UX setelan dan login sumber media (saat layar dikontrol langsung oleh sumber media), layanan ini memastikan tidak ada konten yang tidak aman yang ditampilkan saat mobil dalam status mengemudi. OEM dapat menyesuaikan definisi status ini dan cara sistem bereaksi dalam situasi ini (misalnya, dengan menampilkan overlay layar pemblokiran). |
Alur penggunaan
Peluncuran aplikasi media
Proses yang meluncurkan Media akan muncul di bawah.
Gambar 2. Peluncuran aplikasi media
Media harus diluncurkan menggunakan CAR_INTENT_ACTION_MEDIA_TEMPLATE
implisit berikut.
Intent ini dapat memiliki informasi berikut sebagai tambahan:
-
android.car.intent.extra.MEDIA_COMPONENT
(opsional). String tambahan untuk mewakili nama komponen yang diratakan dariMediaBrowserService
di aplikasi media tempat Media akan terhubung. Jika tidak diberikan, Media akan menampilkan aplikasi media yang saat ini dipilih. Intent ini digunakan dari titik entri berikut:-
UI sistem. Digunakan untuk kembali ke pengalaman Media atau untuk mulai menggunakannya untuk pertama kalinya. Dalam hal ini, Intent di atas akan digunakan tanpa tambahan apa pun sehingga menyebabkan Media menampilkan aplikasi media yang saat ini dipilih.
-
Layar Utama, Asisten, dan Pusat Notifikasi. Pengguna dapat membuka Media untuk menampilkan aplikasi media yang saat ini dipilih. Dalam semua kasus, Intent implisit tanpa tambahan akan dipicu.
-
Peluncur Aplikasi. Saat pengguna memilih aplikasi media dari Peluncur Aplikasi, intent di atas menyertakan
CAR_EXTRA_MEDIA_COMPONENT
tambahan, yang berisi aplikasi media yang dipilih. Media menetapkan ini sebagai aplikasi yang baru dipilih dan terhubung ke aplikasi tersebut. Untuk mengetahui detailnya, lihat bagian di bawah, Integrasi Peluncur Aplikasi ke Media.
-
Integrasi peluncur aplikasi ke Media
Aplikasi media tidak diizinkan untuk memberikan aktivitas apa pun yang dianotasi dengan
kategori android.intent.category.LAUNCHER
. Akibatnya, Peluncur Aplikasi (atau
yang setara) harus menerapkan logika khusus untuk menangani integrasi sumber media:
-
Peluncur Aplikasi harus memindai sistem untuk menemukan paket yang menerapkan
MediaBrowserService.SERVICE_INTERFACE
. Untuk paket ini, Peluncur Aplikasi mengambil ikon layanan yang mirip dengan yang digunakan untuk mengambil aktivitas lainnya. -
Peluncur Aplikasi kemudian menggabungkan paket ini dengan paket yang menerapkan aktivitas
android.intent.category.LAUNCHER
. Jika aplikasi menyediakan implementasiMediaBrowserService
dan aktivitas peluncur, layanan akan diprioritaskan.Saat ini, tidak ada aplikasi sumber media yang dapat menyediakan aktivitas peluncur.
- Contoh logika ini dapat ditemukan dalam kode AOSP di
AppLauncherUtils#getAllLauncherApps()
.
Opsi konfigurasi dan alur login
Aplikasi media dapat menyertakan aktivitas Setelan yang dioptimalkan untuk kendaraan. Aktivitas tersebut dapat digunakan untuk menerapkan alur penggunaan yang tidak ditangani oleh Android Media API, misalnya:
- Login
- Logout
- Beralih akun
- Menampilkan tempat pengguna saat ini login (jika ada)
- Konfigurasi layanan
Gambar 3. Alur login
Aktivitas Setelan ini dideklarasikan oleh aplikasi media dengan filter intent berikut:
<activity android:name=".AppSettingsActivity" android:exported="true android:theme="@style/SettingsActivity" android:label="@string/app_settings_activity_title"> <intent-filter> <action android:name="android.intent.action.APPLICATION_PREFERENCES"/> </intent-filter> </activity>
Media harus menerapkan logika berikut:
-
Pastikan aplikasi media yang saat ini dipilih menyertakan aktivitas dengan Intent Filter yang diberikan.
-
Jika ya, izinkan pengguna membuka aktivitas.
-
Jika Pembatasan UX Mobil berlaku (misalnya, mobil sedang bergerak), kemampuan ini harus dinonaktifkan karena aktivitas Setelan bukan UI yang Dioptimalkan Pengemudi.
Penanganan error dan login yang diperlukan
Media berinteraksi dengan aplikasi media melalui Android Media Session API. Sebagai bagian dari
API ini, Media menerima objek
PlaybackState
, yang menyampaikan status aplikasi media saat ini.
Proses login dimulai saat aplikasi media mengubah
PlaybackState
menjadi
STATE_ERROR
,
termasuk kode error tertentu (lihat detail di bawah). Jika hal ini
terjadi, Media akan menampilkan deskripsi error dan kemampuan untuk membuka aktivitas login
yang diterapkan oleh aplikasi media.
Alur yang sama ini dapat digunakan oleh aplikasi untuk menandakan situasi error lainnya (misalnya, error konektivitas server).
Gambar 4. Penanganan error
Sebagai bagian dari penanganan error PlaybackState
normal, Media harus memeriksa input berikut.
-
Kode error
PlaybackState
sama denganPlaybackStateCompat#ERROR_CODE_AUTHENTICATION_EXPIRED
. Hal ini menandakan bahwa aplikasi media memerlukan login untuk melanjutkan operasi. Kode error lainnya dapat diterima, yang akan menunjukkan jenis situasi error lainnya. -
Pesan error
PlaybackState
(ditetapkan oleh aplikasi media menggunakan metodePlaybackStateCompat.Builder#setErrorMessage
) berisi penjelasan yang dapat dibaca manusia (misalnya, "Anda belum login"). Pesan ini harus ditampilkan kepada pengguna dan harus dioptimalkan untuk mengurangi gangguan saat mengemudi (DO). -
Secara opsional,
PlaybackState
dapat menyertakan tambahan berikut (ditetapkan oleh aplikasi media dengan metodePlaybackStateCompat.Builder#setExtras
) dengan kunci berikut.-
android.media.extras.ERROR_RESOLUTION_ACTION_LABEL
. Tetapkan ke string yang berisi pesan yang dapat dibaca manusia untuk ditampilkan di tombol yang disentuh oleh pengguna untuk memulai alur login. -
android.media.extras.ERROR_RESOLUTION_ACTION_INTENT
. Tetapkan denganPendingIntent
untuk dipicu saat pengguna mengklik tombol yang disebutkan di atas.PendingIntent
ini menunjuk ke aktivitas login kustom yang diterapkan oleh aplikasi media yang sama.
-
-
Status
PlaybackState
sama denganSTATE_ERROR
. Hal ini menandakan bahwa tidak ada operasi lain yang dapat dilakukan hingga login selesai.