Komponen sistem dan aliran pengguna

Diagram berikut menggambarkan komponen yang berinteraksi dengan Media:

Komponen sistem

Gambar 1. Komponen sistem

Elemen-elemen pada gambar ini dijelaskan dalam tabel:

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 dijalankan. Dari layar ini, pengguna dapat melihat detail item media yang sedang diputar dan menjalankan serangkaian tindakan standar dan kustom terbatas (misalnya, Putar dan Jeda).
UI Sistem Menyediakan fungsionalitas yang mencakup opsi navigasi UI global seperti untuk menavigasi ke Media.
Asisten Android menyediakan mekanisme untuk 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 menavigasi ke Media di latar depan (misalnya, saat aplikasi asisten suara diperintahkan untuk menampilkan UI dari suatu Sumber Media tertentu).
Peluncur Aplikasi Semua aplikasi Android dimulai di Peluncur Aplikasi, termasuk Sumber Media. Media dapat menghadirkan pemilih Sumber Medianya sendiri, melengkapi atau menggantikan Peluncur Aplikasi sebagai tempat awal untuk media.
Google Play Toko Saat GAS digunakan, di sinilah pengguna mencari dan memasang aplikasi baru di perangkat Android. Untuk media, setelah aplikasi diinstal, pengguna diarahkan ke Media untuk menyelesaikan proses masuk atau 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 kapan Sumber Media menjadi sumber media latar depan . Media, dan semua aplikasi lain yang menampilkan sumber media yang sedang diputar (misalnya, layar Beranda), gunakan Media Session Manager untuk mendeteksi peristiwa ini dan memperbarui UI yang sesuai. Sumber Media 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 antar band radio. Komponen UI yang digunakan bersama oleh Radio dan Media memungkinkan pengguna untuk beralih di antara dua pengalaman tersebut.
Mesin Pengalih perhatian Pengemudi Layanan sistem Android digunakan untuk menerapkan pembatasan UX berdasarkan kondisi mengemudi mobil. Untuk masuk 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 yang meluncurkan Media muncul di bawah.

Peluncuran aplikasi media

Gambar 2. Peluncuran aplikasi media

Media harus diluncurkan menggunakan CAR_INTENT_ACTION_MEDIA_TEMPLATE implisit berikut. Maksud ini dapat memiliki informasi berikut sebagai tambahan :

  • android.car.intent.extra.MEDIA_COMPONENT ( opsional ). String ekstra untuk mewakili nama komponen MediaBrowserService yang diratakan di aplikasi media yang akan dihubungkan dengan Media. Jika tidak tersedia, Media akan menampilkan aplikasi media yang dipilih saat ini. Maksud ini digunakan dari titik masuk berikut:

    • UI Sistem. Digunakan untuk kembali ke pengalaman Media atau untuk 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 tambahan akan 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 menetapkan ini sebagai aplikasi yang baru dipilih dan menghubungkannya. Untuk detailnya, lihat bagian di bawah, Integrasi Peluncur Aplikasi ke Media.

Peluncur aplikasi untuk integrasi Media

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

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

    Saat tulisan ini dibuat, 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 seperti ini dapat digunakan untuk mengimplementasikan alur pengguna yang tidak ditangani oleh Android Media API, misalnya:

  • Masuk
  • Keluar
  • Peralihan akun
  • Tampilan dimana pengguna sedang login (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 ya, izinkan pengguna menavigasi ke aktivitas tersebut.

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

Penanganan kesalahan dan perlu masuk

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 ketika aplikasi media mengubah PlaybackState menjadi STATE_ERROR , termasuk kode kesalahan tertentu (lihat detailnya di bawah). Jika hal ini terjadi, Media menampilkan deskripsi kesalahan dan kemampuan untuk menavigasi ke aktivitas masuk yang diterapkan oleh aplikasi media.

Alur yang sama ini dapat digunakan oleh aplikasi untuk menandakan situasi kesalahan lainnya (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 menandakan bahwa aplikasi media memerlukan proses masuk untuk melanjutkan pengoperasian. Kode kesalahan lain dapat diterima, yang menunjukkan jenis situasi kesalahan lainnya.

  • Pesan kesalahan PlaybackState (disetel oleh aplikasi media menggunakan metode PlaybackStateCompat.Builder#setErrorMessage ) berisi penjelasan yang dapat dibaca manusia (misalnya, "Anda belum masuk."). Pesan ini harus ditampilkan kepada pengguna dan harus mengoptimalkan gangguan (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 . 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 . Atur dengan PendingIntent yang akan dipicu ketika 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 dapat dilakukan hingga proses masuk selesai.