public NoPlayer createMediaPlayer(Context context) { AndroidMediaPlayerImpl player = internalCreator.create(context); player.initialise(); return player; }
@Override public String getName() { return "MediaPlayer: " + mediaPlayerTypeReader.getPlayerType().getName(); } }
boolean selectAudioTrack(PlayerAudioTrack playerAudioTrack) throws IllegalStateException { assertIsInPlaybackState(); return trackSelector.selectAudioTrack(mediaPlayer, playerAudioTrack); }
static AndroidMediaPlayerFacade newInstance(Context context, MediaPlayerForwarder forwarder) { TrackInfosFactory trackInfosFactory = new TrackInfosFactory(); AndroidMediaPlayerAudioTrackSelector trackSelector = new AndroidMediaPlayerAudioTrackSelector(trackInfosFactory); PlaybackStateChecker playbackStateChecker = new PlaybackStateChecker(); AudioManager audioManager = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE); MediaPlayerCreator mediaPlayerCreator = new MediaPlayerCreator(); return new AndroidMediaPlayerFacade(context, forwarder, audioManager, trackSelector, playbackStateChecker, mediaPlayerCreator); }
@Test public void givenPositionThatDiffersFromPlayheadPosition_whenStartingPlayAtVideoPosition_thenSeeksToVideoPosition() { long differentPositionInMillis = givenPositionThatDiffersFromPlayheadPosition(); player.playAt(differentPositionInMillis); ArgumentCaptor<DelayedActionExecutor.Action> argumentCaptor = ArgumentCaptor.forClass(DelayedActionExecutor.Action.class); verify(delayedActionExecutor).performAfterDelay(argumentCaptor.capture(), eq(DELAY_MILLIS)); argumentCaptor.getValue().perform(); verify(mediaPlayer).seekTo(differentPositionInMillis); }
public static NoPlayerMediaPlayerCreator newInstance(Handler handler) { InternalCreator internalCreator = new InternalCreator(handler); return new NoPlayerMediaPlayerCreator(internalCreator); }
@Override public long playheadPositionInMillis() throws IllegalStateException { return isSeeking() ? seekToPositionInMillis : mediaPlayer.currentPositionInMillis(); }
AudioTracks getAudioTracks() throws IllegalStateException { assertIsInPlaybackState(); return trackSelector.getAudioTracks(mediaPlayer); }
@Test public void givenPositionThatDiffersFromPlayheadPosition_whenStartingPlayAtVideoPosition_thenInitialisesPlaybackForSeeking() { long differentPositionInMillis = givenPositionThatDiffersFromPlayheadPosition(); player.playAt(differentPositionInMillis); thenInitialisesPlaybackForSeeking(); }
@Override public void seekTo(long positionInMillis) throws IllegalStateException { seekToPositionInMillis = positionInMillis; mediaPlayer.seekTo(positionInMillis); }
@Override public void onSurfaceReady(Either<Surface, SurfaceHolder> surface) { mediaPlayer.prepareVideo(uri, surface); } });
void preventVideoDriverBug(NoPlayer player, View containerView) { if (videoDriverCanBeBuggy()) { attemptToCorrectMediaPlayerStatus(player, containerView); } }
@SuppressWarnings("checkstyle:parameternumber") // Checkstyle should not complain about interface methods. No way to workaround this. @Override public void onLayoutChange(View v, int left, int top, int right, int bottom, int oldLeft, int oldTop, int oldRight, int oldBottom) { if (statusMightBeCorrupted()) { forceAlignNativeMediaPlayerStatus(); } }
private AndroidMediaPlayerType getPlayerTypePreLollipop() throws SystemProperties.MissingSystemPropertiesException { // NuPlayer is disabled if property is false or absent // http://androidxref.com/4.4.4_r1/xref/frameworks/av/media/libmediaplayerservice/MediaPlayerFactory.cpp#63 return getBooleanProp(PROP_USE_NU_PLAYER) ? AndroidMediaPlayerType.NU : AndroidMediaPlayerType.AWESOME; }
float getVolume() { assertIsInPlaybackState(); return volume; } }
AndroidMediaPlayerType getPlayerType() { AndroidMediaPlayerType playerType; try { playerType = getMediaPlayerType(); } catch (SystemProperties.MissingSystemPropertiesException e) { playerType = AndroidMediaPlayerType.UNKNOWN; } return playerType; }
@Override public void onBufferStart() { for (CheckBufferHeartbeatCallback.BufferListener listener : listeners) { listener.onBufferStart(); } }
@Override public void onBufferComplete() { for (CheckBufferHeartbeatCallback.BufferListener listener : listeners) { listener.onBufferComplete(); } } }
private AndroidMediaPlayerType getPlayerTypeLollipop() throws SystemProperties.MissingSystemPropertiesException { // NuPlayer is enabled if property is false or absent // http://androidxref.com/5.0.0_r2/xref/frameworks/av/media/libmediaplayerservice/MediaPlayerFactory.cpp#63 boolean isAwesomePlayerEnabled = getBooleanProp(PROP_USE_AWESOME_PLAYER_PERSIST) || getBooleanProp(PROP_USE_AWESOME_PLAYER_MEDIA); return isAwesomePlayerEnabled ? AndroidMediaPlayerType.AWESOME : AndroidMediaPlayerType.NU; }