Şablonlu medya uygulaması oluşturma

Şablonlu medya uygulamaları beta sürümündedir
Şu anda herkes, şablonlu medya uygulamalarını Play Store'daki dahili test ve kapalı test kanallarında yayınlayabilir. Açık kanallara ve üretim kanallarına yayınlamaya daha sonra izin verilecek.

Araç Uygulama Kitaplığı şablonlarını kullanan medya uygulamaları, medya tarama ve oynatma deneyimlerini özelleştirebilir. Bu sayede, deneyimin araç ekranları için optimize edildiğinden ve sürüş sırasında dikkat dağıtıcı unsurların en aza indirildiğinden emin olabilirler.

Bu kılavuzda, telefonda ses çalan bir medya uygulamanızın olduğu ve medya uygulamanızın Android medya uygulaması mimarisine uygun olduğu varsayılmaktadır. Araba Uygulama Kitaplığı, Arabalar için medya uygulamaları oluşturma MediaBrowser veri yapısı kullanılarak oluşturulan uygulama içi deneyimi şablonlarla değiştirmenize olanak tanır. Oynatma kontrolleri için bir MediaSession ve öneriler ile diğer akıllı deneyimler için kullanılan bir MediaBrowserService sağlamanız gerekir.

Uygulamanızın manifest dosyasını yapılandırma

Arabalar için Android uygulama kitaplığını kullanma bölümünde açıklanan adımlara ek olarak, şablonlu medya uygulamalarında aşağıdakiler gereklidir:

Manifest'inizde kategori desteğini belirtme

Uygulamanızın, CarAppService manifest dosyasının intent filtresinde androidx.car.app.category.MEDIA araç uygulaması kategorisini beyan etmesi gerekir.

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

MediaPlaybackTemplate özelliğine erişmek için uygulamanızın manifest dosyasında androidx.car.app.MEDIA_TEMPLATES iznini de beyan etmesi gerekir:

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

Minimum araba uygulaması API düzeyini ayarlama

MediaPlaybackTemplate kullanan medya uygulamaları yalnızca CAL API 8'de desteklenir. Minimum Car App API level sürümünüzün 8 olarak ayarlandığından emin olun.

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

Android Auto desteğini beyan etme

Uygulamanızın manifest dosyasına aşağıdakilerin dahil edildiğinden emin olun:

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

Ardından, xml kaynaklarınızdaki automotive_app_desc.xml öğesine template beyanını ekleyin. Aşağıdaki gibi görünmelidir:

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

İlişkilendirme simgesi sağlama

Araba Uygulama Kitaplığı kullanılarak oluşturulan medya uygulamaları için bir ilişkilendirme simgesi eklediğinizden emin olun.

Sesli işlemleri destekleme

Kullanıcıların sık yapılan işlemleri ellerini kullanmadan tamamlamasına izin vermek için uygulamanızı sesli olarak etkinleştirin. Daha ayrıntılı uygulama talimatları için medya için sesli işlemleri destekleme başlıklı makaleyi inceleyin. Şablonlu bir medya uygulamasında sesli komut alırsanız MediaBrowserService'inizi arama sonuçlarıyla güncellemeniz gerekmez. Bunun yerine, kullanıcının bu oynatma veya arama sorgusuna göre daha fazla içerik bulmasına olanak tanımak için medya oynatma şablonunuza bir işlem ekleyebilirsiniz. VC-1 kalite kuralını karşılamak için sesli komutları desteklemeniz gerekir.

Oynatma şablonunuzu oluşturma

MediaPlaybackTemplate, Car App Library medya uygulamanızda medya oynatma bilgilerini gösterir. Bu şablon, bir başlık ve özelleştirilebilir işlemler içeren bir başlık ayarlamanıza olanak tanır. Medya bilgileri ve oynatma kontrolleri ise uygulamanızın MediaSession durumuna göre ana makine tarafından doldurulur.

Bir müzik çalar, Summer Fielding&#39;in Sounds of Spring adlı şarkısını ve gitar çalan bir kadının kare portresini gösteriyor.

Şekil 1: Üst taraftaki kuyruğu açmak için bir başlık işlemi içeren MediaPlaybackTemplate.

Bu kod örneğinde, kullanıcının şarkı kuyruğunun bulunduğu bir ekrana gitmesine olanak tanıyan bir başlık işlemi ayarlayan örnek bir oynatma şablonunun nasıl oluşturulacağı gösterilmektedir.

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()

MediaPlaybackTemplate'u kullandığınızda CarAppService hesabınızdaki MediaPlaybackManager'i kullanarak bir MediaSession jetonu kaydedin. Bunu yapmazsanız ana makineye bir MediaPlaybackTemplate gönderildiğinde hata görüntülenir.

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, medya oynatma bilgilerini ve kontrollerini Android Auto'ya göstermek için gereklidir. Bu, ev sahibinin medyaya özel bildirimler oluşturması için de önemlidir.

Şablonları kullanarak medyayı düzenleme

Şarkı veya albüm gibi medya öğelerine göz atabilmeniz için öğeleri düzenlemenizi sağlayan SectionedItemTemplate öğesini kullanmanızı öneririz. Bu öğe, resim ve metin öğelerinin listelerini bir araya getiren düzenler oluşturmak için GridSection ve RowSection öğelerini birlikte kullanmanıza olanak tanır.

İki dikey satır ve üç yatay albüm kapaklı portre içeren bir müzik uygulaması arayüzü.

Şekil 2: RowSection ve ardından GridSection içeren bir SectionedItemTemplate

SectionedItemTemplate'ı TabTemplate içinde kullanma

Uygulamanızdaki medyayı kategorilere ayırmanın kullanışlı bir yolu, TabTemplate içinde SectionedItemTemplate kullanmaktır.

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

Bu şablonları kullanarak medya uygulamanızın kullanıcı arayüzünü tasarlama hakkında daha fazla bilgi edinmek için Medya uygulamaları başlıklı makaleyi inceleyin.

Medyaya göz atarken kullanıcının dikkati en aza indirilerek MediaPlaybackTemplate'e hızlıca gidebiliyor olması önemlidir. MFT-1 kalite şartını karşılamak için uygulamanızda, tüm medya tarama ekranlarından MediaPlaybackTemplate'a erişmenin bir yolu olmalıdır.

SectionedItemTemplate kullanıyorsanız medya oynatma ekranına geçmenizi sağlayan bir yüzen işlem düğmesi ekleyerek bunu yapabilirsiniz. Diğer şablonlarda bunu yapmanın bir diğer yolu da başlık işlemidir.