Mem-build aplikasi media dengan template (original) (raw)

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 MediaSessionuntuk kontrol pemutaran, dan MediaBrowserService, yang digunakan untuk rekomendasi dan pengalaman smart lainnya.

Mengonfigurasi manifes aplikasi

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

Mendeklarasikan dukungan kategori dalam manifes Anda

Aplikasi Anda harus mendeklarasikankategori aplikasi mobil androidx.car.app.category.MEDIA dalam filter intentCarAppService.

<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.

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 statusMediaSession 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 diCarAppService. Jika tidak, error akan ditampilkan saatMediaPlaybackTemplate 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.

Untuk mengatur media untuk dijelajahi seperti lagu atau album, sebaiknya gunakanSectionedItemTemplate, yang memungkinkan Anda menggunakan GridSection danRowSection 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 RowSectiondiikuti dengan GridSection

Menggunakan SectionedItemTemplate di dalam TabTemplate

Salah satu cara mudah untuk mengategorikan media dalam aplikasi Anda adalah menggunakanSectionedItemTemplate di dalamTabTemplate.

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.

Membuka kontrol pemutaran

Saat menjelajahi media, pengguna harus dapat membukaMediaPlaybackTemplate dengan cepat dan gangguan minimal. Untuk memenuhi persyaratan kualitas MFT-1, aplikasi Anda harus memiliki cara untuk mengaksesMediaPlaybackTemplate 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.