Komponen sistem dan alur pengguna

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 Mewakili permukaan lain di UI mobil yang menampilkan dan mengontrol musik yang sedang diputar lainnya. Dalam AOSP, layar ini adalah layar utama yang ditampilkan saat sistem dimulai. Dari layar ini, pengguna dapat melihat detail item media yang sedang diputar dan menjalankan serangkaian dan tindakan kustom (misalnya, Putar dan Jeda).
UI Sistem Menyediakan fungsionalitas yang menyertakan opsi navigasi UI global seperti untuk menavigasi ke Media.
Asisten Android menyediakan mekanisme untuk berbagai aplikasi asisten suara untuk berinteraksi dengan sistem. Aplikasi ini bisa berinteraksi dengan Sumber Media di latar belakang (misalnya, memutar lagu sebagai hasil dari perintah suara), atau navigasikan ke Media di latar depan (misalnya, saat aplikasi asisten suara diinstruksikan untuk menampilkan UI Sumber Media tertentu).
Peluncur Aplikasi Semua aplikasi Android dimulai di Peluncur Aplikasi, termasuk Sumber Media. Media dapat menghadirkan pemilih Sumber Media-nya sendiri, yang melengkapi atau menggantikan Peluncur Aplikasi sebagai sebagai titik awal untuk media.
Google Play Store Saat GAS digunakan, di sinilah pengguna mencari dan menginstal aplikasi baru perangkat Android. Untuk media, setelah aplikasi diinstal, pengguna akan diarahkan ke Media untuk menyelesaikan proses masuk atau mulai berinteraksi dengan aplikasi.
Pengelola Sesi Media Layanan sistem Android yang melacak dan mengontrol sesi media dari semua sumber media. Ini menyediakan mekanisme untuk mendeteksi saat Sumber Media menjadi media latar depan sumber. Media, dan semua aplikasi lain yang menampilkan sumber media yang sedang diputar (untuk misalnya, Layar utama), gunakan Pengelola Sesi Media untuk mendeteksi peristiwa ini dan mengupdate UI sebagaimana mestinya. Sumber Media berinteraksi dengan Pengelola Sesi Media melalui Media API Sesi.
Radio Aplikasi khusus untuk berinteraksi dengan hardware radio. Penelusuran radio untuk radio stasiun radio, memilih stasiun yang baru-baru ini teridentifikasi dan beralih antar-band radio. Komponen UI yang dibagikan oleh Radio dan Media memungkinkan pengguna beralih di antara keduanya pengalaman yang lancar bagi developer.
Mesin Pengganggu bagi Pengemudi Layanan sistem Android yang digunakan untuk menerapkan pembatasan UX berdasarkan status mengemudi mobil. Untuk UX login dan setelan sumber media (dengan layar dikontrol langsung oleh sumber media), layanan ini memastikan tidak ada konten 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 pemblokir).

Alur penggunaan

Peluncuran aplikasi media

Proses yang meluncurkan Media muncul di bawah ini.

Peluncuran aplikasi media

Gambar 2. Peluncuran aplikasi media

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

  • android.car.intent.extra.MEDIA_COMPONENT (opsional). Ekstra string untuk mewakili nama komponen yang diratakan dari MediaBrowserService di aplikasi media yang akan disambungkan dengan Media. Jika tidak diberikan, Media akan menampilkan aplikasi media yang sedang dipilih. Intent ini digunakan dari titik masuk:

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

    • Layar Utama, Asisten, dan Pusat Notifikasi. Pengguna dapat buka Media untuk menampilkan aplikasi media yang sedang dipilih. Dalam semua kasus, Intent implisit tanpa tambahan akan dipicu.

    • Peluncur Aplikasi. Saat pengguna memilih aplikasi media dari Peluncur Aplikasi, intent di atas mencakup CAR_EXTRA_MEDIA_COMPONENT tambahan, yang berisi aplikasi media yang dipilih. Media menetapkan ini sebagai aplikasi yang dipilih dan terhubung ke aplikasi tersebut. Untuk detailnya, lihat bagian di bawah ini, Aplikasi Integrasi Peluncur ke Media.

Integrasi peluncur aplikasi ke Media

Aplikasi media tidak diizinkan untuk menyediakan aktivitas apa pun yang dianotasikan dengan Kategori android.intent.category.LAUNCHER. Akibatnya, Peluncur Aplikasi (atau 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 Anda.

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

    Saat penulisan ini, tidak ada aplikasi sumber media yang dapat menyediakan aktivitas peluncur.

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

Alur login dan opsi konfigurasi

Aplikasi media dapat menyertakan aktivitas Setelan yang dioptimalkan untuk kendaraan. Kegiatan semacam itu dapat digunakan untuk mengimplementasikan alur pengguna yang tidak ditangani oleh Android Media API, misalnya:

  • Login
  • Logout
  • Beralih akun
  • Tampilan tempat pengguna saat ini login (jika ada)
  • Konfigurasi layanan

Alur masuk

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:

  • Periksa apakah aplikasi media yang dipilih saat ini menyertakan aktivitas dengan elemen yang ditentukan Filter Intent.

  • Jika demikian, izinkan pengguna untuk membuka aktivitas.

  • Jika Pembatasan UX Mobil diberlakukan (misalnya, mobil bergerak), kemampuan ini harus dinonaktifkan karena aktivitas Setelan bukan UI yang Dioptimalkan untuk Pengemudi.

Penanganan error dan wajib login

Media berinteraksi dengan aplikasi media melalui Android Media Session API. Sebagai bagian dari API, Media menerima PlaybackState , yang mengomunikasikan status aplikasi media saat ini.

Proses login dimulai saat aplikasi media berubah PlaybackState dapat STATE_ERROR, termasuk kode error tertentu (lihat detailnya di bawah). Jika terjadi, Media menampilkan deskripsi error dan affordance untuk membuka aktivitas login yang diimplementasikan oleh aplikasi media.

Alur yang sama ini dapat digunakan oleh aplikasi untuk menandakan situasi error lainnya (misalnya, konektivitas server error).

Penanganan error

Gambar 4. Penanganan error

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

  • PlaybackState kode error sama dengan PlaybackStateCompat#ERROR_CODE_AUTHENTICATION_EXPIRED. Hal ini menandakan aplikasi media memerlukan login untuk melanjutkan operasi. Kode {i>error <i}lainnya dapat diterima, yang akan menunjukkan jenis situasi kesalahan lainnya.

  • Pesan error PlaybackState (ditetapkan oleh aplikasi media menggunakan PlaybackStateCompat.Builder#setErrorMessage ) berisi sebuah penjelasan yang dapat dibaca manusia (misalnya, "Anda tidak login."). Pesan ini harus ditampilkan ke pengguna dan itu harus mengarahkan distraksi dioptimalkan (DO).

  • Secara opsional, PlaybackState dapat menyertakan tambahan berikut (disetel oleh media aplikasi dengan 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 pada tombol yang disentuh oleh pengguna untuk memulai alur login.

    • android.media.extras.ERROR_RESOLUTION_ACTION_INTENT. Setel dengan PendingIntent menjadi dipicu saat pengguna mengklik tombol yang disebutkan di atas. Ini PendingIntent mengarah ke aktivitas login kustom yang diimplementasikan oleh aplikasi media yang sama.

  • Status PlaybackState sama dengan STATE_ERROR. Hal ini menandakan bahwa tidak ada operasi lain yang dapat dilakukan hingga proses login selesai.