Aplikacje do multimediów często zawierają kolekcje elementów multimedialnych uporządkowane według hierarchii. Na przykład utwory z albumu lub odcinki programów telewizyjnych na playliście. Ta hierarchia Elementy multimedialne to biblioteka multimediów.
MediaLibraryService
udostępnia ustandaryzowany interfejs API do obsługi i uzyskiwania dostępu do
biblioteki multimediów. Może to być pomocne na przykład przy dodawaniu obsługi
Android Auto do aplikacji do multimediów, która udostępnia własną
bezpieczne dla sterownika do biblioteki multimediów.
Utwórz MediaLibraryService
Implementacja MediaLibraryService
przebiega podobnie do
zaimplementowanie MediaSessionService
,
poza tym w metodzie onGetSession()
należy
zwraca MediaLibrarySession
zamiast MediaSession
.
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(); } }
Pamiętaj, aby zadeklarować Service
i wymagane uprawnienia w pliku manifestu.
oraz:
<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" />
Użyj formy płatności MediaLibrarySession
Interfejs API MediaLibraryService
oczekuje, że biblioteka multimediów będzie uporządkowana
z jednym węzłem głównym i węzłami podrzędnymi, które mogą
z możliwością gry
lub dodatkowo można je przeglądać.
MediaLibrarySession
Rozszerza interfejs API MediaSession
o interfejsy API przeglądania treści. W porównaniu z
MediaSession
oddzwonienie,
MediaLibrarySession
oddzwonienie
dodaje metody, takie jak:
onGetLibraryRoot()
gdy klient żąda głównego elementuMediaItem
drzewa treścionGetChildren()
dla sytuacji, gdy klient żąda elementów podrzędnychMediaItem
w drzewie treścionGetSearchResult()
w przypadku, gdy klient zażąda wyników wyszukiwania z drzewa treści dla danego zapytanie
Odpowiednie metody wywołania zwrotnego obejmują LibraryParams
obiekt z dodatkowymi sygnałami dotyczącymi typu drzewa treści, które aplikacja kliencka
w Twojej okolicy.