Komponen Sistem dan Alur Pengguna

Diagram berikut menggambarkan komponen yang berinteraksi dengan Media.

Komponen sistem

Gambar 1. Komponen sistem

Unsur-unsur dalam gambar ini dijelaskan di bawah ini:

Komponen Keterangan
Tampilan depan Mewakili permukaan 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).
Sistem UI Menyediakan fungsionalitas yang mencakup opsi navigasi UI global seperti menavigasi ke Media.
asisten Android menyediakan mekanisme untuk aplikasi asisten suara yang berbeda untuk berinteraksi dengan sistem. Aplikasi ini dapat berinteraksi dengan Sumber Media di latar belakang (misalnya, memutar lagu sebagai hasil dari perintah suara), atau menavigasi ke Media di latar depan (misalnya, saat aplikasi asisten suara diperintahkan untuk menampilkan UI dari Sumber Media tertentu).
Peluncur Aplikasi Semua aplikasi Android dimulai di Peluncur Aplikasi, termasuk Sumber Media. Media dapat menampilkan pemilih Sumber Medianya sendiri, melengkapi atau menggantikan Peluncur Aplikasi sebagai tempat awal untuk media.
Google Play Store Saat GAS digunakan, di sinilah pengguna mencari dan menginstal aplikasi baru di perangkat Android. Untuk media, setelah aplikasi diinstal, pengguna diarahkan ke Media untuk menyelesaikan proses sign-in atau untuk mulai berinteraksi dengan aplikasi.
Manajer Sesi Media Layanan sistem Android yang melacak dan mengontrol sesi media dari semua sumber media. Ini menyediakan mekanisme untuk mendeteksi ketika Sumber Media menjadi sumber media latar depan . Media, dan semua aplikasi lain yang menampilkan sumber media yang sedang diputar (misalnya, layar Utama), gunakan Media Session Manager untuk mendeteksi peristiwa ini dan memperbarui UI yang sesuai. Media Sources berinteraksi dengan Media Session Manager melalui Media Session API .
Radio Aplikasi khusus untuk berinteraksi dengan perangkat keras radio. Radio mencari stasiun radio, dengan cepat memilih stasiun yang baru diidentifikasi dan beralih di antara pita radio. Komponen UI yang dibagikan oleh Radio dan Media memungkinkan pengguna untuk beralih di antara dua pengalaman.
Mesin Pengalih Penggerak Layanan sistem Android digunakan untuk memberlakukan pembatasan UX berdasarkan kondisi mengemudi mobil. Untuk sign-in sumber media dan pengaturan UX (di mana 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 bagaimana sistem bereaksi dalam situasi ini (misalnya, dengan menampilkan hamparan layar pemblokiran).

Arus Pengguna

Peluncuran aplikasi media

Proses peluncuran Media 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 ekstra untuk mewakili nama komponen yang diratakan dari MediaBrowserService dalam aplikasi media yang akan disambungkan oleh Media. Jika tidak tersedia, Media akan menampilkan aplikasi media yang dipilih saat ini. Intent ini digunakan dari titik masuk berikut:

    • Sistem UI. Digunakan untuk kembali ke pengalaman Media atau mulai menggunakannya untuk pertama kali. Dalam hal ini, Intent di atas akan digunakan tanpa tambahan apa pun sehingga menyebabkan Media menampilkan aplikasi media yang dipilih saat ini.

    • Layar Beranda, Asisten, dan Pusat Pemberitahuan. Pengguna dapat menavigasi ke Media untuk menampilkan aplikasi media yang dipilih saat ini. Dalam semua kasus, Intent implisit tanpa ekstra dipicu.

    • Peluncur Aplikasi. Saat pengguna memilih aplikasi media dari Peluncur Aplikasi, maksud di atas menyertakan tambahan CAR_EXTRA_MEDIA_COMPONENT , yang berisi aplikasi media yang dipilih. Media menunjuk ini sebagai aplikasi yang baru dipilih dan menghubungkannya. Untuk detailnya, lihat bagian di bawah, Peluncur Aplikasi ke integrasi Media.

Peluncur Aplikasi ke Integrasi Media

Aplikasi media tidak diizinkan untuk menyediakan 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 mengimplementasikan MediaBrowserService.SERVICE_INTERFACE . Untuk paket ini, Peluncur Aplikasi mengambil ikon layanan yang serupa dengan yang digunakan untuk mengambil aktivitas lain.

  • Peluncur Aplikasi kemudian menggabungkan paket ini dengan paket yang mengimplementasikan aktivitas android.intent.category.LAUNCHER . Jika aplikasi menyediakan implementasi MediaBrowserService dan aktivitas peluncur, layanan akan diutamakan.

    Pada tulisan ini, tidak ada aplikasi sumber media yang dapat menyediakan aktivitas peluncur.

  • Contoh logika ini dapat ditemukan dalam kode AOSP di AppLauncherUtils#getAllLauncherApps() .

Alur Masuk dan Opsi Konfigurasi

Aplikasi media dapat menyertakan Aktivitas Pengaturan yang dioptimalkan untuk kendaraan. Aktivitas tersebut dapat digunakan untuk mengimplementasikan alur pengguna yang tidak ditangani oleh Android Media API, misalnya:

  • Masuk
  • Keluar
  • Pergantian akun
  • Tampilan di mana pengguna saat ini masuk (jika ada)
  • Konfigurasi layanan

Aliran masuk

Gambar 3. Alur masuk

Aktivitas Pengaturan ini dideklarasikan oleh aplikasi media dengan filter maksud 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 dipilih saat ini menyertakan aktivitas dengan Filter Intent yang diberikan.

  • Jika demikian, izinkan pengguna menavigasi ke aktivitas.

  • Jika Pembatasan UX Mobil berlaku (misalnya, mobil bergerak), keterjangkauan ini harus dinonaktifkan karena Aktivitas Pengaturan bukan UI yang Dioptimalkan Pengemudi.

Penanganan Kesalahan 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 masuk dimulai saat aplikasi media mengubah PlaybackState menjadi STATE_ERROR , termasuk kode kesalahan tertentu (lihat detail di bawah). Ketika ini terjadi, Media menampilkan deskripsi kesalahan dan kemampuan untuk menavigasi ke Aktivitas masuk yang diterapkan oleh aplikasi media.

Aliran yang sama ini dapat digunakan oleh aplikasi untuk memberi sinyal situasi kesalahan lain (misalnya, kesalahan konektivitas server).

Penanganan kesalahan

Gambar 4. Penanganan kesalahan

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

  • Kode kesalahan PlaybackState sama dengan PlaybackStateCompat#ERROR_CODE_AUTHENTICATION_EXPIRED . Ini akan menandakan bahwa aplikasi media memerlukan masuk untuk melanjutkan operasi. Kode kesalahan lain dapat diterima, yang akan menunjukkan jenis situasi kesalahan lainnya.

  • Pesan kesalahan PlaybackState (diatur oleh aplikasi media menggunakan metode PlaybackStateCompat.Builder#setErrorMessage ) akan berisi penjelasan yang dapat dibaca manusia (misalnya "Anda belum masuk."). Pesan ini harus ditampilkan kepada pengguna dan harus mengemudi distraksi yang dioptimalkan (DO). Untuk detailnya, lihat Batasan Mengemudi UX.

  • Secara opsional, PlaybackState dapat menyertakan ekstra berikut (diatur oleh aplikasi media dengan metode PlaybackStateCompat.Builder#setExtras ) dengan kunci berikut.

    • android.media.extras.ERROR_RESOLUTION_ACTION_LABEL . Setel ke string yang berisi pesan yang dapat dibaca manusia untuk ditampilkan pada tombol yang disentuh oleh pengguna untuk memulai alur masuk.

    • android.media.extras.ERROR_RESOLUTION_ACTION_INTENT . Setel dengan PendingIntent untuk dipicu saat pengguna mengklik tombol yang disebutkan di atas. PendingIntent ini menunjuk ke Aktivitas masuk khusus yang diterapkan oleh aplikasi media yang sama.

  • Status PlaybackState sama dengan STATE_ERROR . Ini menandakan tidak ada operasi lain yang mungkin dilakukan hingga proses masuk selesai.