Araba Uygulaması Kitaplığı şablonlarını kullanan medya uygulamaları, medya tarama ve oynatma deneyimlerini özelleştirebilir. Bu uygulamalar, deneyimin araba ekranları için optimize edilmesini ve sürüş sırasında dikkat dağıtıcı unsurların en aza indirilmesini sağlar.
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ığı, uygulama içi deneyimi Arabalar için medya uygulamaları geliştirme
MediaBrowser veri yapısı kullanılarak oluşturulanlar yerine şablonlarla değiştirmenize olanak tanır. Oynatma kontrolleri için MediaSession, öneriler ve diğer akıllı deneyimler için kullanılan MediaBrowserService sağlamanız gerekir.
Uygulamanızın manifest dosyasını yapılandırma
Arabalar için Android uygulama kitaplığını kullanma başlıklı makalede açıklanan adımlara ek olarak, şablonlu medya uygulamaları için aşağıdakiler gereklidir:
Manifest dosyanızda kategori desteğini bildirin
Uygulamanız, CarAppService manifest dosyasının intent filtresinde androidx.car.app.category.MEDIA
araba uygulaması kategorisini beyan etmelidir.
<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 erişimi için uygulamanızın manifesto dosyasında androidx.car.app.MEDIA_TEMPLATES iznini de bildirmesi 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 değerinizin 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 eklendiğ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 şablon bildirimini ekleyin. Şu şekilde görünmelidir:
<automotiveApp xmlns:android="http://schemas.android.com/apk/res/android">
<uses name="media"/>
<uses name="template"/>
</automotiveApp>
Bir ilişkilendirme simgesi sağlayın
Car App Library kullanılarak oluşturulan medya uygulamaları için atfetme simgesi eklediğinizden emin olun.
Sesli işlemleri destekleme
Kullanıcıların yaygın işlemleri ellerini kullanmadan tamamlamasına olanak tanımak için uygulamanızda sesli komut özelliğini 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 aldığınızda MediaBrowserService öğenizi arama sonuçlarıyla güncellemeniz gerekmez. Bunun yerine, medya oynatma şablonunuza kullanıcının bu oynatma veya arama sorgusuna göre daha fazla içerik bulmasına olanak tanıyan bir işlem eklemeyi düşünebilirsiniz. VC-1 kalite yönergesini karşılamak için sesli komutları desteklemeniz gerekir.
Oynatma şablonunuzu oluşturma
MediaPlaybackTemplate, medya oynatma bilgilerini Araba Uygulaması Kitaplığı'ndaki medya uygulamanızda gösterir. Bu şablon, başlık içeren bir üstbilgi ve özelleştirilebilir işlemler ayarlamaya olanak tanır. Medya bilgileri ve oynatma kontrolleri ise uygulamanızın MediaSession durumuna göre ana makine tarafından doldurulur.
Şekil 1:
Üst kısımda sırayı açmak için başlık işlemi içeren MediaPlaybackTemplate.
Bu kod örneğinde, kullanıcının şarkı sırasının bulunduğu bir ekrana gitmesine olanak tanıyan bir başlık işlemi ayarlayan örnek 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 kullanırken CarAppService cihazınızdaki MediaPlaybackManager ile MediaSession jetonu kaydedin. Bunu yapmamak, ana makineye MediaPlaybackTemplate gönderildiğinde bir hatanın gösterilmesine neden olur.
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'da göstermek için gereklidir. Bu, düzenleyenin medyaya özel bildirimler oluşturması için de önemlidir.
Şablonları kullanarak medyaları düzenleme
Şarkı veya albüm gibi göz atma amaçlı medyaları düzenlemek için SectionedItemTemplate özelliğini kullanmanızı öneririz. Bu özellik, GridSection ve RowSection öğelerini birlikte kullanarak resim listeleri ve metin öğelerini karıştıran düzenler oluşturmanıza olanak tanır.
Şekil 2: RowSection içeren bir SectionedItemTemplate
ardından GridSection
TabTemplate içinde SectionedItemTemplate kullanma
Uygulamanızdaki medyayı kategorilere ayırmanın kolay 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 için Medya uygulamaları başlıklı makaleyi inceleyin.
Oynatma kontrollerine gitme
Kullanıcının, medyaya göz atarken en az dikkat dağıtıcı unsurla MediaPlaybackTemplate bölümüne hızlıca gidebilmesi önemlidir. MFT-1 kalite şartını karşılamak için uygulamanızda tüm medya tarama ekranlarından MediaPlaybackTemplate erişilebilmelidir.
SectionedItemTemplate kullanıyorsanız sizi medya oynatma ekranına yönlendiren bir kayan işlem düğmesi ekleyerek bunu sağlayabilirsiniz. Diğer şablonlarda ise bu işlemi yapmak için üstbilgi işlemi de kullanılabilir.