Mem-build aplikasi media dengan template

Aplikasi media dengan template masih dalam versi beta
Saat ini, siapa pun dapat memublikasikan aplikasi media dengan template ke jalur pengujian internal dan pengujian tertutup di Play Store. Publikasi ke jalur terbuka dan jalur produksi akan diizinkan pada lain waktu.

Aplikasi media yang menggunakan template Library Aplikasi Mobil dapat menyesuaikan pengalaman penjelajahan dan pemutaran medianya sekaligus memastikan pengalaman tersebut dioptimalkan untuk layar mobil dan meminimalkan gangguan saat mengemudi.

Panduan ini mengasumsikan bahwa Anda sudah memiliki aplikasi media yang memutar audio di ponsel dan aplikasi media Anda sesuai dengan arsitektur aplikasi media Android. Library Aplikasi Mobil memberi Anda kemampuan untuk mengganti pengalaman dalam aplikasi dengan template, bukan yang dibuat menggunakan struktur data MediaBrowser Mem-build aplikasi media untuk mobil. Anda tetap harus menyediakan MediaSession untuk kontrol pemutaran, dan MediaBrowserService, yang digunakan untuk rekomendasi dan pengalaman smart lainnya.

Mengonfigurasi manifes aplikasi

Selain langkah-langkah yang dijelaskan dalam Menggunakan Library Aplikasi Android untuk Mobil, hal berikut diperlukan untuk aplikasi media dengan template:

Mendeklarasikan dukungan kategori dalam manifes Anda

Aplikasi Anda harus mendeklarasikan kategori aplikasi mobil androidx.car.app.category.MEDIA dalam filter intent CarAppService.

<application>
    ...
   <service
       ...
        android:name=".MyCarAppService"
        android:exported="true">
      <intent-filter>
        <action android:name="androidx.car.app.CarAppService" />
        <category android:name="androidx.car.app.category.MEDIA"/>
      </intent-filter>
    </service>
    ...
<application>

Untuk mendapatkan akses ke MediaPlaybackTemplate, aplikasi Anda juga harus mendeklarasikan izin androidx.car.app.MEDIA_TEMPLATES dalam file manifesnya:

<manifest ...>
  ...
  <uses-permission android:name="androidx.car.app.MEDIA_TEMPLATES"/>
  ...
</manifest>

Menetapkan level API aplikasi mobil minimum

Aplikasi media yang menggunakan MediaPlaybackTemplate hanya didukung di CAL API 8, pastikan Car App API level minimum Anda ditetapkan ke 8.

<application ...>
  ...
  <meta-data
    android:name="androidx.car.app.minCarApiLevel"
    android:value="8"/>
  ...
</application>

Mendeklarasikan dukungan Android Auto

Pastikan hal berikut disertakan dalam manifes aplikasi Anda:

<application>
  ...
  <meta-data android:name="com.google.android.gms.car.application"
      android:resource="@xml/automotive_app_desc"/>
  ...
</application>

Kemudian, tambahkan deklarasi template ke automotive_app_desc.xml dalam resource xml Anda. Tampilannya akan terlihat seperti berikut:

<automotiveApp xmlns:android="http://schemas.android.com/apk/res/android">
 <uses name="media"/>
 <uses name="template"/>
</automotiveApp>

Memberikan ikon atribusi

Pastikan untuk menambahkan ikon atribusi untuk aplikasi media yang di-build menggunakan Library Aplikasi Mobil.

Mendukung voice action

Aktifkan suara di aplikasi Anda untuk memungkinkan pengguna menyelesaikan tindakan umum secara handsfree. Lihat mendukung voice action untuk media guna mengetahui petunjuk penerapan yang lebih mendetail. Dengan aplikasi media template, jika Anda menerima perintah suara, Anda tidak perlu memperbarui MediaBrowserService dengan hasil penelusuran. Sebagai gantinya, pertimbangkan untuk menambahkan tindakan dalam template pemutaran media agar pengguna dapat menemukan lebih banyak konten berdasarkan kueri pemutaran atau penelusuran tersebut. Dukungan perintah suara diperlukan untuk memenuhi pedoman kualitas VC-1.

Membuat Template Pemutaran

MediaPlaybackTemplate menampilkan informasi pemutaran media di aplikasi media Library Aplikasi Mobil Anda. Template ini memungkinkan penetapan header dengan judul dan tindakan yang dapat disesuaikan, sementara informasi media dan kontrol pemutaran diisi oleh host berdasarkan status MediaSession aplikasi Anda.

Pemutar musik menampilkan Sounds of Spring oleh Summer Fielding dengan
     potret persegi seorang wanita yang bermain gitar.

Gambar 1: MediaPlaybackTemplate dengan tindakan header untuk membuka antrean di bagian atas.

Contoh kode ini menunjukkan cara mem-build contoh template pemutaran yang menetapkan tindakan header yang memungkinkan pengguna membuka layar dengan antrean lagu.

val playbackTemplate = MediaPlaybackTemplate.Builder()
      .setHeader(
        Header.Builder()
          .setStartHeaderAction(Action.BACK)
          .addEndHeaderAction(
                Action.Builder()
                  .setTitle(model.context.getString(R.string.queue_button_title))
                  .setIcon(
                    CarIcon.Builder(
                        IconCompat.createWithResource(
                          model.context,
                          R.drawable.gs_queue_music_vd_theme_24,
                        ))
                      .build())
                  .setOnClickListener(showQueueScreen())
                  .build())
          .setTitle(model.context.getString(R.string.media_playback_view_title))
          .build())
      .build()

Saat Anda menggunakan MediaPlaybackTemplate, daftarkan token MediaSession menggunakan MediaPlaybackManager di CarAppService. Jika tidak, error akan ditampilkan saat MediaPlaybackTemplate dikirim ke host.

import androidx.car.app.media.MediaPlaybackManager


override fun onCreateSession(sessionInfo: SessionInfo): Session {
    return object : Session() {
        

        init {
          lifecycle.addObserver(
            LifecycleEventObserver { _, event ->
              if (event == ON_CREATE) {
                val token = ... // MediaSessionCompat.Token
                (carContext.getCarService(CarContext.MEDIA_PLAYBACK_SERVICE) as MediaPlaybackManager)
                  .registerMediaPlaybackToken(token)
              }
              ...
            }
          )
        }
    }
}

.registerMediaPlaybackToken diperlukan untuk mengekspos informasi dan kontrol pemutaran media ke Android Auto. Hal ini juga penting bagi host untuk membuat notifikasi khusus media.

Mengatur media menggunakan template

Untuk mengatur media untuk dijelajahi seperti lagu atau album, sebaiknya gunakan SectionedItemTemplate, yang memungkinkan Anda menggunakan GridSection dan RowSection secara bersamaan untuk membuat tata letak yang menggabungkan daftar gambar dan item teks.

Antarmuka aplikasi musik menampilkan lagu dan album yang baru diputar,
     termasuk dua baris vertikal dan tiga potret poster album horizontal.

Gambar 2: SectionedItemTemplate yang berisi RowSection diikuti dengan GridSection

Menggunakan SectionedItemTemplate di dalam TabTemplate

Salah satu cara mudah untuk mengategorikan media dalam aplikasi Anda adalah menggunakan SectionedItemTemplate di dalam TabTemplate.

val template =
      SectionedItemTemplate.Builder()...build();
val tabTemplate = 
      TabTemplate.Builder(tabCallback)
          .setTabContents(TabContents.Builder(template).build)
          .setHeaderAction(Action.APP_ICON)
          
          .build();

Untuk detail selengkapnya tentang cara mendesain antarmuka pengguna aplikasi media menggunakan template ini, lihat Aplikasi media.

Saat menjelajahi media, pengguna harus dapat membuka MediaPlaybackTemplate dengan cepat dan gangguan minimal. Untuk memenuhi persyaratan kualitas MFT-1, aplikasi Anda harus memiliki cara untuk mengakses MediaPlaybackTemplate dari semua layar penjelajahan media.

Jika menggunakan SectionedItemTemplate, Anda dapat melakukannya dengan menambahkan tombol tindakan mengambang yang memandu Anda ke layar pemutaran media. Untuk template lain, tindakan header adalah cara lain untuk melakukannya.