mirror of
https://github.com/samsonjs/media.git
synced 2026-04-14 12:45:47 +00:00
Make StyledPlayerView depend on PlaybackException
PiperOrigin-RevId: 377480089
This commit is contained in:
parent
cc3cd702ff
commit
536f7c8dbe
2 changed files with 24 additions and 26 deletions
|
|
@ -456,35 +456,33 @@ public class PlayerActivity extends AppCompatActivity
|
|||
}
|
||||
}
|
||||
|
||||
private class PlayerErrorMessageProvider implements ErrorMessageProvider<ExoPlaybackException> {
|
||||
private class PlayerErrorMessageProvider implements ErrorMessageProvider<PlaybackException> {
|
||||
|
||||
@Override
|
||||
@NonNull
|
||||
public Pair<Integer, String> getErrorMessage(@NonNull ExoPlaybackException e) {
|
||||
public Pair<Integer, String> getErrorMessage(@NonNull PlaybackException e) {
|
||||
String errorString = getString(R.string.error_generic);
|
||||
if (e.type == ExoPlaybackException.TYPE_RENDERER) {
|
||||
Exception cause = e.getRendererException();
|
||||
if (cause instanceof DecoderInitializationException) {
|
||||
// Special case for decoder initialization failures.
|
||||
DecoderInitializationException decoderInitializationException =
|
||||
(DecoderInitializationException) cause;
|
||||
if (decoderInitializationException.codecInfo == null) {
|
||||
if (decoderInitializationException.getCause() instanceof DecoderQueryException) {
|
||||
errorString = getString(R.string.error_querying_decoders);
|
||||
} else if (decoderInitializationException.secureDecoderRequired) {
|
||||
errorString =
|
||||
getString(
|
||||
R.string.error_no_secure_decoder, decoderInitializationException.mimeType);
|
||||
} else {
|
||||
errorString =
|
||||
getString(R.string.error_no_decoder, decoderInitializationException.mimeType);
|
||||
}
|
||||
} else {
|
||||
Throwable cause = e.getCause();
|
||||
if (cause instanceof DecoderInitializationException) {
|
||||
// Special case for decoder initialization failures.
|
||||
DecoderInitializationException decoderInitializationException =
|
||||
(DecoderInitializationException) cause;
|
||||
if (decoderInitializationException.codecInfo == null) {
|
||||
if (decoderInitializationException.getCause() instanceof DecoderQueryException) {
|
||||
errorString = getString(R.string.error_querying_decoders);
|
||||
} else if (decoderInitializationException.secureDecoderRequired) {
|
||||
errorString =
|
||||
getString(
|
||||
R.string.error_instantiating_decoder,
|
||||
decoderInitializationException.codecInfo.name);
|
||||
R.string.error_no_secure_decoder, decoderInitializationException.mimeType);
|
||||
} else {
|
||||
errorString =
|
||||
getString(R.string.error_no_decoder, decoderInitializationException.mimeType);
|
||||
}
|
||||
} else {
|
||||
errorString =
|
||||
getString(
|
||||
R.string.error_instantiating_decoder,
|
||||
decoderInitializationException.codecInfo.name);
|
||||
}
|
||||
}
|
||||
return Pair.create(0, errorString);
|
||||
|
|
|
|||
|
|
@ -48,8 +48,8 @@ import androidx.annotation.RequiresApi;
|
|||
import androidx.core.content.ContextCompat;
|
||||
import com.google.android.exoplayer2.C;
|
||||
import com.google.android.exoplayer2.ControlDispatcher;
|
||||
import com.google.android.exoplayer2.ExoPlaybackException;
|
||||
import com.google.android.exoplayer2.Format;
|
||||
import com.google.android.exoplayer2.PlaybackException;
|
||||
import com.google.android.exoplayer2.Player;
|
||||
import com.google.android.exoplayer2.Player.DiscontinuityReason;
|
||||
import com.google.android.exoplayer2.Timeline;
|
||||
|
|
@ -306,7 +306,7 @@ public class StyledPlayerView extends FrameLayout implements AdViewProvider {
|
|||
@Nullable private Drawable defaultArtwork;
|
||||
private @ShowBuffering int showBuffering;
|
||||
private boolean keepContentOnPlayerReset;
|
||||
@Nullable private ErrorMessageProvider<? super ExoPlaybackException> errorMessageProvider;
|
||||
@Nullable private ErrorMessageProvider<? super PlaybackException> errorMessageProvider;
|
||||
@Nullable private CharSequence customErrorMessage;
|
||||
private int controllerShowTimeoutMs;
|
||||
private boolean controllerAutoShow;
|
||||
|
|
@ -760,7 +760,7 @@ public class StyledPlayerView extends FrameLayout implements AdViewProvider {
|
|||
* @param errorMessageProvider The error message provider.
|
||||
*/
|
||||
public void setErrorMessageProvider(
|
||||
@Nullable ErrorMessageProvider<? super ExoPlaybackException> errorMessageProvider) {
|
||||
@Nullable ErrorMessageProvider<? super PlaybackException> errorMessageProvider) {
|
||||
if (this.errorMessageProvider != errorMessageProvider) {
|
||||
this.errorMessageProvider = errorMessageProvider;
|
||||
updateErrorMessage();
|
||||
|
|
@ -1414,7 +1414,7 @@ public class StyledPlayerView extends FrameLayout implements AdViewProvider {
|
|||
errorMessageView.setVisibility(View.VISIBLE);
|
||||
return;
|
||||
}
|
||||
@Nullable ExoPlaybackException error = player != null ? player.getPlayerError() : null;
|
||||
@Nullable PlaybackException error = player != null ? player.getPlayerError() : null;
|
||||
if (error != null && errorMessageProvider != null) {
|
||||
CharSequence errorMessage = errorMessageProvider.getErrorMessage(error).second;
|
||||
errorMessageView.setText(errorMessage);
|
||||
|
|
|
|||
Loading…
Reference in a new issue