@Override public void onVideoPaused() { if (currentState == State.PAUSED) { NoPlayerLog.e("Tried calling onVideoPaused() but video is already paused."); return; } for (NoPlayer.StateChangedListener listener : listeners) { listener.onVideoPaused(); } currentState = State.PAUSED; }
private static String logMessage(String message, Throwable throwable) { StringBuilder detailedMessage = new StringBuilder(getDetailedLog(message)); if (throwable != null) { detailedMessage.append('\n').append(getStackTraceString(throwable)); } return detailedMessage.toString(); }
public static void d(String msg) { if (!isEnabled) { return; } android.util.Log.d(TAG, logMessage(msg, null)); }
@Before public void setUp() { NoPlayerLog.setLoggingEnabled(false); stateChangedListeners = new StateChangedListeners(); stateChangedListeners.add(stateChangedListener); }
List<PlayerSubtitleTrack> getSubtitleTracks() throws IllegalStateException { assertIsInPlaybackState(); NoPlayerLog.w("Tried to get subtitle tracks but has not been implemented for MediaPlayer."); return Collections.emptyList(); }
@Override public boolean onError(MediaPlayer mp, int what, int extra) { NoPlayerLog.d("Error: " + what + "," + extra); currentState = PlaybackState.ERROR; MediaPlayer.OnErrorListener onErrorForwarder = forwarder.onErrorListener(); if (onErrorForwarder == null) { throw new IllegalStateException("Should bind a OnErrorListener. Cannot forward events."); } return onErrorForwarder.onError(mediaPlayer, what, extra); } };
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); NoPlayerLog.setLoggingEnabled(true); setContentView(R.layout.activity_main); PlayerView playerView = findViewById(R.id.player_view); View videoSelectionButton = findViewById(R.id.button_video_selection); View audioSelectionButton = findViewById(R.id.button_audio_selection); View subtitleSelectionButton = findViewById(R.id.button_subtitle_selection); ControllerView controllerView = findViewById(R.id.controller_view); videoSelectionButton.setOnClickListener(showVideoSelectionDialog); audioSelectionButton.setOnClickListener(showAudioSelectionDialog); subtitleSelectionButton.setOnClickListener(showSubtitleSelectionDialog); DataPostingModularDrm drmHandler = new DataPostingModularDrm(EXAMPLE_MODULAR_LICENSE_SERVER_PROXY); player = new PlayerBuilder() .withWidevineModularStreamingDrm(drmHandler) .withDowngradedSecureDecoder() .build(this); demoPresenter = new DemoPresenter(controllerView, player, player.getListeners(), playerView); dialogCreator = new DialogCreator(this, player); player.getListeners().addDroppedVideoFrames(new NoPlayer.DroppedVideoFramesListener() { @Override public void onDroppedVideoFrames(int droppedFrames, long elapsedMsSinceLastDroppedFrames) { Log.v(getClass().toString(), "dropped frames: " + droppedFrames + " since: " + elapsedMsSinceLastDroppedFrames + "ms"); } }); }
private void reportCreationError(Exception ex, Uri videoUri) { NoPlayerLog.w(ex, "Unable to open content: " + videoUri); currentState = PlaybackState.ERROR; internalErrorListener.onError(mediaPlayer, MediaPlayer.MEDIA_ERROR_UNKNOWN, 0); }
@Before public void setUp() { NoPlayerLog.setLoggingEnabled(false); facade = new AndroidMediaPlayerFacade(context, forwarder, audioManager, trackSelector, playbackStateChecker, mediaPlayerCreator); given(mediaPlayerCreator.createMediaPlayer()).willReturn(mediaPlayer); given(playbackStateChecker.isInPlaybackState(eq(mediaPlayer), any(PlaybackStateChecker.PlaybackState.class))).willReturn(IS_IN_PLAYBACK_STATE); eitherSurface = Either.left(surface); givenSurfaceRequesterReturns(eitherSurface); given(forwarder.onPreparedListener()).willReturn(preparedListener); given(forwarder.onCompletionListener()).willReturn(completionListener); given(forwarder.onErrorListener()).willReturn(errorListener); given(forwarder.onSizeChangedListener()).willReturn(videoSizeChangedListener); }
public static void d(Throwable throwable, String msg) { if (!isEnabled) { return; } android.util.Log.d(TAG, logMessage(msg, throwable)); }
boolean clearAudioTrackSelection() { assertIsInPlaybackState(); NoPlayerLog.w("Tried to clear audio track selection but has not been implemented for MediaPlayer."); return false; }
@Override public void onVideoStopped() { if (currentState == State.STOPPED) { NoPlayerLog.e("Tried calling onVideoStopped() but video has already stopped."); return; } for (NoPlayer.StateChangedListener listener : listeners) { listener.onVideoStopped(); } currentState = State.STOPPED; } }
@Before public void setUp() { NoPlayerLog.setLoggingEnabled(false); SurfaceRequester surfaceRequester = mock(SurfaceRequester.class); given(playerView.getPlayerSurfaceHolder()).willReturn(playerSurfaceHolder);
public static void w(Throwable throwable, String msg) { if (!isEnabled) { return; } android.util.Log.w(TAG, logMessage(msg, throwable)); }
boolean clearSubtitleTrack() throws IllegalStateException { assertIsInPlaybackState(); NoPlayerLog.w("Tried to hide subtitle track but has not been implemented for MediaPlayer."); return false; }
@Override public void onVideoPlaying() { if (currentState == State.PLAYING) { NoPlayerLog.e("Tried calling onVideoPlaying() but video is already playing."); return; } for (NoPlayer.StateChangedListener listener : listeners) { listener.onVideoPlaying(); } currentState = State.PLAYING; }
public static void e(Throwable throwable, String msg) { if (!isEnabled) { return; } android.util.Log.e(TAG, logMessage(msg, throwable)); }
boolean selectSubtitleTrack(PlayerSubtitleTrack subtitleTrack) throws IllegalStateException { assertIsInPlaybackState(); NoPlayerLog.w("Tried to select subtitle track but has not been implemented for MediaPlayer."); return false; }
public static void i(Throwable throwable, String msg) { if (!isEnabled) { return; } android.util.Log.i(TAG, logMessage(msg, throwable)); }
boolean selectVideoTrack(PlayerVideoTrack videoTrack) { assertIsInPlaybackState(); NoPlayerLog.w("Tried to select a video track but has not been implemented for MediaPlayer."); return false; }