Komponen sistem dan alur penggunaan

Diagram berikut mengilustrasikan komponen yang berinteraksi dengan Media:

Komponen sistem

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.

Peluncuran aplikasi media

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 dari MediaBrowserService 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 implementasi MediaBrowserService 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

Alur login

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).

Penanganan error

Gambar 4. Penanganan error

Sebagai bagian dari penanganan error PlaybackState normal, Media harus memeriksa input berikut.

  • Kode error PlaybackState sama dengan PlaybackStateCompat#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 metode PlaybackStateCompat.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 metode PlaybackStateCompat.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 dengan PendingIntent 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 dengan STATE_ERROR. Hal ini menandakan bahwa tidak ada operasi lain yang dapat dilakukan hingga login selesai.