Medya uygulamaları genellikle bir hiyerarşiye göre düzenlenmiş medya öğesi koleksiyonlarını içerir. Örneğin, bir albümdeki şarkılar veya oynatma listesindeki TV bölümleri. Bu hiyerarşisi medya öğeleri, medya kitaplığı olarak bilinir.
MediaLibraryService
, sizinle çalışmak ve bunlara erişmek için standart
medya kitaplığını kullanabilirsiniz. Bu, örneğin yeni bir ekip için destek eklerken
Android Auto'yu medya uygulamanıza yükleyin. Bu,
medya kitaplığınız için sürücü güvenli kullanıcı arayüzü.
Bir MediaLibraryService
oluşturun
MediaLibraryService
uygulamak,
bir MediaSessionService
uygulamak,
Bunun dışında, onGetSession()
yönteminde
MediaSession
yerine MediaLibrarySession
döndür.
Kotlin
class PlaybackService : MediaLibraryService() { var mediaLibrarySession: MediaLibrarySession? = null var callback: MediaLibrarySession.Callback = object : MediaLibrarySession.Callback {...} // If desired, validate the controller before returning the media library session override fun onGetSession(controllerInfo: MediaSession.ControllerInfo): MediaLibrarySession? = mediaLibrarySession // Create your player and media library session in the onCreate lifecycle event override fun onCreate() { super.onCreate() val player = ExoPlayer.Builder(this).build() mediaLibrarySession = MediaLibrarySession.Builder(this, player, callback).build() } // Remember to release the player and media library session in onDestroy override fun onDestroy() { mediaLibrarySession?.run { player.release() release() mediaLibrarySession = null } super.onDestroy() } }
Java
class PlaybackService extends MediaLibraryService { MediaLibrarySession mediaLibrarySession = null; MediaLibrarySession.Callback callback = new MediaLibrarySession.Callback() {...}; @Override public MediaLibrarySession onGetSession(MediaSession.ControllerInfo controllerInfo) { // If desired, validate the controller before returning the media library session return mediaLibrarySession; } // Create your player and media library session in the onCreate lifecycle event @Override public void onCreate() { super.onCreate(); ExoPlayer player = new ExoPlayer.Builder(this).build(); mediaLibrarySession = new MediaLibrarySession.Builder(this, player, callback).build(); } // Remember to release the player and media library session in onDestroy @Override public void onDestroy() { if (mediaLibrarySession != null) { mediaLibrarySession.getPlayer().release(); mediaLibrarySession.release(); mediaLibrarySession = null; } super.onDestroy(); } }
Manifest dosyasında Service
ayarlarınızı ve gerekli izinleri belirtmeyi unutmayın
ayrıca:
<service
android:name=".PlaybackService"
android:foregroundServiceType="mediaPlayback"
android:exported="true">
<intent-filter>
<action android:name="androidx.media3.session.MediaSessionService"/>
</intent-filter>
</service>
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
<!-- For targetSdk 34+ -->
<uses-permission android:name="android.permission.FOREGROUND_SERVICE_MEDIA_PLAYBACK" />
intent-filter
MediaLibrarySession
kullan
MediaLibraryService
API, medya kitaplığınızın
ağaç biçiminde, tek bir kök düğüme ve
oynanabilir
veya daha fazla göz atılabilir.
MediaLibrarySession
MediaSession
API'yi genişleterek içerik tarama API'leri ekler. Şuna kıyasla:
MediaSession
geri arama,
MediaLibrarySession
geri arama
aşağıdaki gibi yöntemler ekler:
onGetLibraryRoot()
(müşteri içerik ağacının kökMediaItem
'sini istediğinde kullanılır)onGetChildren()
istemci, içerik ağacındaki birMediaItem
öğesinin alt öğelerini istediğindeonGetSearchResult()
belirli bir sorgu için içerik ağacından arama sonuçları istediğinde sorgu
İlgili geri çağırma yöntemleri bir LibraryParams
içerir
istemci uygulamasının topladığı içerik ağacı türüyle ilgili ek sinyaller içeren nesne
yardımcı olur.