Mem-build aplikasi media dengan template

Aplikasi media berbasis template masih dalam versi beta
Saat ini, siapa saja dapat memublikasikan aplikasi media berbasis template ke jalur pengujian internal dan pengujian tertutup di Google 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 media sambil memastikan pengalaman 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. Car App Library memberi Anda kemampuan untuk mengganti pengalaman dalam aplikasi dengan template, bukan yang dibuat menggunakan struktur data Membangun aplikasi media untuk mobil MediaBrowser. Anda tetap harus memberikan MediaSession untuk kontrol pemutaran, dan MediaBrowserService, yang digunakan untuk rekomendasi dan pengalaman smart lainnya.

Mengonfigurasi manifes aplikasi Anda

Selain langkah-langkah yang dijelaskan dalam Menggunakan Library Aplikasi Android untuk Mobil, berikut adalah persyaratan untuk aplikasi media berbasis 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 di resource xml Anda. Hasilnya 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 dibuat 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 untuk mengetahui petunjuk penerapan yang lebih mendetail. Dengan aplikasi media yang dibuat menggunakan template, jika Anda menerima perintah suara, Anda tidak perlu mengupdate MediaBrowserService dengan hasil penelusuran. Sebagai gantinya, pertimbangkan untuk menambahkan tindakan di template pemutaran media Anda agar pengguna dapat menemukan lebih banyak konten berdasarkan kueri penelusuran atau pemutaran tersebut. Dukungan perintah suara diperlukan untuk memenuhi pedoman kualitas VC-1.

Buat Template Pemutaran Anda

MediaPlaybackTemplate menampilkan informasi pemutaran media di aplikasi media Car App Library Anda. Template ini memungkinkan setelan 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 sedang bermain gitar.

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

Contoh kode ini menunjukkan cara membuat 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 Anda. Jika tidak dilakukan, 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 yang akan dijelajahi seperti lagu atau album, sebaiknya gunakan SectionedItemTemplate, yang memungkinkan Anda menggunakan GridSection dan RowSection bersama-sama 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 gambar 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 dengan 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 mengetahui detail selengkapnya tentang cara mendesain antarmuka pengguna aplikasi media menggunakan template ini, lihat Aplikasi media.

Saat menjelajahi media, penting bagi pengguna untuk dapat membuka MediaPlaybackTemplate dengan cepat dan tanpa gangguan. 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 mengarahkan Anda ke layar pemutaran media. Untuk template lain, tindakan header adalah cara lain untuk melakukannya.