
The library already maintains the subscribed controllers internally. This change adds `MediaLibrarySession.getSubscribedControllers(mediaId)` to access subscribed controllers for a given media ID. To accept a subscription, `MediaLibraryService.Callback.onSubscribe` is required to return `RESULT_SUCCESS`. So far, this isn't the case for the default implementation of the library. This change implements `Callback.onSubscribe` to conditionally provide `RESULT_SUCCESS`. The default calls `Callback.onGetItem(mediaId)` to assess the availability of the media item. If the app retruns `RESULT_SUCCESS` with a browsable item, the subscription is accepted. If receiving a valid item fails, the subscription is rejected. Issue: androidx/media#561 PiperOrigin-RevId: 568925079
Media session demo
This app demonstrates use of media sessions. It's a reference app written in Kotlin, which demonstrates best practices for media apps that want to advertise media sessions.
See the demos README for instructions on how to build and run this demo.