Komponen yang berinteraksi dengan Media dijelaskan dalam tabel:
| Komponen | Deskripsi |
|---|---|
| Layar Utama | Mewakili 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 sedang diputar dan menjalankan serangkaian tindakan standar dan kustom yang terbatas (misalnya, Putar dan Jeda). |
| UI Sistem | Menyediakan 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 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. API ini menyediakan mekanisme untuk mendeteksi saat Sumber Media menjadi sumber media latar depan. Media, dan semua aplikasi lain yang menampilkan sumber media yang sedang diputar (misalnya, Layar utama), menggunakan Pengelola Sesi Media untuk mendeteksi peristiwa ini dan memperbarui UI dengan tepat. 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 saja diidentifikasi dengan cepat, dan beralih antar-band radio. Komponen UI yang digunakan bersama oleh Radio dan Media memungkinkan pengguna beralih di antara dua pengalaman. |
| Driver Distraction Engine | Layanan sistem Android yang digunakan untuk menerapkan pembatasan UX berdasarkan kondisi mengemudi mobil. Untuk UX setelan dan login sumber media (tempat layar dikontrol langsung oleh sumber media), layanan ini memastikan tidak ada konten tidak aman yang ditampilkan saat mobil dalam kondisi 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
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). Ekstra string untuk merepresentasikan nama komponen yang diratakan dariMediaBrowserServicedi aplikasi media yang akan dihubungkan oleh Media. 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 ekstra 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 ekstra dipicu.
-
Peluncur Aplikasi. Saat pengguna memilih aplikasi media dari Peluncur Aplikasi, intent di atas menyertakan ekstra
CAR_EXTRA_MEDIA_COMPONENT, 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 menyediakan aktivitas apa pun yang diberi anotasi dengan kategori android.intent.category.LAUNCHER. Akibatnya, Peluncur Aplikasi (atau yang setara) harus menerapkan logika khusus untuk mengatasi 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 serupa 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 implementasiMediaBrowserServicedan aktivitas peluncur, layanan akan diprioritaskan.Saat penulisan 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 pengguna yang tidak ditangani oleh Android Media API, misalnya:
- Login
- Logout
- Beralih akun
- Akun yang saat ini digunakan pengguna untuk login (jika ada)
- Konfigurasi layanan
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:
-
Periksa apakah aplikasi media yang saat ini dipilih menyertakan aktivitas dengan Filter Intent yang diberikan.
-
Jika ya, izinkan pengguna membuka aktivitas.
-
Jika Pembatasan UX Mobil diberlakukan (misalnya, mobil sedang bergerak), kemampuan ini harus dinonaktifkan karena aktivitas Setelan bukan UI yang Dioptimalkan untuk 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 mengomunikasikan 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).
Sebagai bagian dari penanganan error PlaybackState normal, Media harus memeriksa input berikut.
-
Kode error
PlaybackStatesama denganPlaybackStateCompat#ERROR_CODE_AUTHENTICATION_EXPIRED. Hal ini menandakan bahwa aplikasi media memerlukan login untuk melanjutkan pengoperasian. 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 (DO). -
Jika perlu,
PlaybackStatedapat menyertakan tambahan berikut (ditetapkan oleh aplikasi media dengan metodePlaybackStateCompat.Builder#setExtras) dengan kunci berikut.-
android.media.extras.ERROR_RESOLUTION_ACTION_LABEL. Setel ke string yang berisi pesan yang dapat dibaca manusia untuk ditampilkan di tombol yang disentuh pengguna untuk memulai alur login. -
android.media.extras.ERROR_RESOLUTION_ACTION_INTENT. Ditetapkan denganPendingIntentyang akan dipicu saat pengguna mengklik tombol yang disebutkan di atas.PendingIntentini mengarah ke aktivitas login kustom yang diterapkan oleh aplikasi media yang sama.
-
-
Status
PlaybackStatesama denganSTATE_ERROR. Hal ini menandakan bahwa tidak ada operasi lain yang dapat dilakukan hingga login selesai.