Open abouda opened 11 months ago
There is no such functionality in Media3.
Who would be the consumer of the error messages?
The consumer for MediaSessionConnector.setCustomErrorMessage()
is AndroidAuto. It sends respective error messages to be displayed on the AndroidAuto screen when something goes wrong with a play action. (for example user not logged in, no book available for resumption, playback error custom message). Right now with media3, the error message just says "Source error" and I want it to be more user friendly.
The consumer for MediaSessionConnector.setErrorMessageProvider(PlayerErrorMessageProvider)
is the MediaControllerCompat in my app (I haven´t migrated that part to media3 yet). I map the PlaybackException to a respective error message that is user friendly, and display it in an alert dialog.
I see that media3 MediaController has a onPlayerError(PlaybackException) so I am guessing that could be the solution and handle the PlaybackException on the MediaBrowser side.
Also another point is although I could handle the error onPlayerError(PlaybackException)
in my app, it does not solve it for legacy controllers like AndroidAuto.
Yes, this is a regression compared with what's possible with the legacy API. We need to look into this. Marked as enhancement.
@marcbaechinger do you hav any news on this ?
Yeah, sorry no news yet.
I don't think this will be part of 1.3 I'm afraid. We will update this issue as soon as we pushed a change that adds this.
Our app update got rejected in playstore review because we didn't send error messages when using android auto. In other words this should be a blocker for many media app(s).
@marcbaechinger have you any update about this limitation ? Is it planned for the next version ?
This is planned for 1.4 which is the next release.
The commit above added an API to send non-fatal errors to a MediaController
.
When sent to all controllers or specifically to the media notification controller (MediaSession.getMediaNotificationControllerInfo()
), the error code, message and extras are included in the PlaybackStateCompat
with state=STATE_ERROR
(7) and sent to the platform/legacy session from where a platform or legacy controller (for instance Android Auto) can read it.
Hello!
Any updates on this?
Or any suggestion how to do authentication on Automotive OS with Media3: https://developer.android.com/training/cars/media/automotive-os#require-sign-in?
Thanks!
Is there a reason why a resource Id is necessary? Could the method not accept just a plain string as well?
This API has changed. The change that includes this is on its way into the main branch.
There will be a SessionError
instead of the three parameters: MediaSession.sendError(ControllerInfo, SessionError)
. The message argument of the constructor of MediaSession
is a String instead of a resource ID. Please use a localized string either way for the benefit of your users.
@marcbaechinger thats great! I do plan on using a localized string, only we dont use the android resources in our project, but an alternative solution
This is planned for 1.4 which is the next release.
Is there a potential release date for 1.4?
We are currently preparing the beta01. The stable release of 1.4.0 is expected to be in mid July.
Is there an equivalent in media3 for these?
MediaSessionConnector.setCustomErrorMessage()
to send a custom error message regardless of player state.MediaSessionConnector.setErrorMessageProvider(PlayerErrorMessageProvider)
to convert PlaybackException to a custom error message for connected controllers.