Loading packages/MediaComponents/src/com/android/widget/MediaControlView2Impl.java +68 −57 Original line number Diff line number Diff line Loading @@ -56,7 +56,6 @@ public class MediaControlView2Impl implements MediaControlView2Provider { private static final int MAX_PROGRESS = 1000; private static final int DEFAULT_PROGRESS_UPDATE_TIME_MS = 1000; private static final int DEFAULT_TIMEOUT_MS = 2000; private static final int REWIND_TIME_MS = 10000; private static final int FORWARD_TIME_MS = 30000; Loading @@ -72,6 +71,8 @@ public class MediaControlView2Impl implements MediaControlView2Provider { private TextView mTitleView; private int mDuration; private int mPrevState; private int mCurrentVisibility; private long mTimeout; private long mPlaybackActions; private boolean mShowing; private boolean mDragging; Loading Loading @@ -115,6 +116,9 @@ public class MediaControlView2Impl implements MediaControlView2Provider { // Inflate MediaControlView2 from XML View root = makeControllerView(); mInstance.addView(root); // Set default timeout mTimeout = 2000; } @Override Loading @@ -133,51 +137,9 @@ public class MediaControlView2Impl implements MediaControlView2Provider { } } @Override public void show_impl() { mInstance.show(DEFAULT_TIMEOUT_MS); } @Override public void show_impl(long timeout) { if (!mShowing) { setProgress(); if (mPlayPauseButton != null) { mPlayPauseButton.requestFocus(); } disableUnsupportedButtons(); mInstance.setVisibility(View.VISIBLE); mShowing = true; } // cause the progress bar to be updated even if mShowing // was already true. This happens, for example, if we're // paused with the progress bar showing the user hits play. mInstance.post(mShowProgress); if (timeout != 0 && !mAccessibilityManager.isTouchExplorationEnabled()) { mInstance.removeCallbacks(mFadeOut); mInstance.postDelayed(mFadeOut, timeout); } } @Override public boolean isShowing_impl() { return mShowing; } @Override public void hide_impl() { if (mShowing) { try { mInstance.removeCallbacks(mShowProgress); // Remove existing call to mFadeOut to avoid from being called later. mInstance.removeCallbacks(mFadeOut); mInstance.setVisibility(View.GONE); } catch (IllegalArgumentException ex) { Log.w(TAG, "already removed"); } mShowing = false; } return (mInstance.getVisibility() == View.VISIBLE) ? true : false; } @Override Loading Loading @@ -247,6 +209,46 @@ public class MediaControlView2Impl implements MediaControlView2Provider { } } @Override public void requestPlayButtonFocus_impl() { if (mPlayPauseButton != null) { mPlayPauseButton.requestFocus(); } } @Override public void setTimeout_impl(long timeout) { mTimeout = timeout; } @Override public long getTimeout_impl() { return mTimeout; } @Override public void onVisibilityAggregated_impl(boolean invisible) { int visibility = mInstance.getVisibility(); if (mCurrentVisibility != visibility) { mInstance.setVisibility(visibility); mCurrentVisibility = visibility; if (visibility == View.VISIBLE) { setProgress(); disableUnsupportedButtons(); // cause the progress bar to be updated even if mShowing // was already true. This happens, for example, if we're // paused with the progress bar showing the user hits play. mInstance.post(mShowProgress); resetFadeOutRunnable(); } else if (visibility == View.GONE) { mInstance.removeCallbacks(mShowProgress); // Remove existing call to mFadeOut to avoid from being called later. mInstance.removeCallbacks(mFadeOut); } } } @Override public void onAttachedToWindow_impl() { mSuperProvider.onAttachedToWindow_impl(); Loading @@ -270,7 +272,7 @@ public class MediaControlView2Impl implements MediaControlView2Provider { // TODO: Should this function be removed? @Override public boolean onTrackballEvent_impl(MotionEvent ev) { mInstance.show(DEFAULT_TIMEOUT_MS); resetFadeOutRunnable(); return false; } Loading Loading @@ -483,7 +485,7 @@ public class MediaControlView2Impl implements MediaControlView2Provider { @Override public void run() { if (isPlaying()) { mInstance.hide(); mInstance.setVisibility(View.GONE); } } }; Loading @@ -499,6 +501,13 @@ public class MediaControlView2Impl implements MediaControlView2Provider { } }; private void resetFadeOutRunnable() { if (mTimeout != 0 && !mAccessibilityManager.isTouchExplorationEnabled()) { mInstance.removeCallbacks(mFadeOut); mInstance.postDelayed(mFadeOut, mTimeout); } } private String stringForTime(int timeMs) { int totalSeconds = timeMs / 1000; Loading Loading @@ -572,9 +581,9 @@ public class MediaControlView2Impl implements MediaControlView2Provider { if (!mSeekAvailable) { return; } mInstance.show(3600000); mDragging = true; mInstance.removeCallbacks(mFadeOut); // By removing these pending progress messages we make sure // that a) we won't update the progress while the user adjusts Loading Loading @@ -622,7 +631,8 @@ public class MediaControlView2Impl implements MediaControlView2Provider { mDragging = false; setProgress(); mInstance.show(DEFAULT_TIMEOUT_MS); resetFadeOutRunnable(); // Ensure that progress is properly updated in the future, // the call to show() does not guarantee this because it is a Loading @@ -635,7 +645,7 @@ public class MediaControlView2Impl implements MediaControlView2Provider { @Override public void onClick(View v) { togglePausePlayState(); mInstance.show(DEFAULT_TIMEOUT_MS); resetFadeOutRunnable(); } }; Loading @@ -646,7 +656,7 @@ public class MediaControlView2Impl implements MediaControlView2Provider { mControls.seekTo(pos); setProgress(); mInstance.show(DEFAULT_TIMEOUT_MS); resetFadeOutRunnable(); } }; Loading @@ -657,7 +667,7 @@ public class MediaControlView2Impl implements MediaControlView2Provider { mControls.seekTo(pos); setProgress(); mInstance.show(DEFAULT_TIMEOUT_MS); resetFadeOutRunnable(); } }; Loading @@ -665,7 +675,7 @@ public class MediaControlView2Impl implements MediaControlView2Provider { @Override public void onClick(View v) { mControls.skipToNext(); mInstance.show(DEFAULT_TIMEOUT_MS); resetFadeOutRunnable(); } }; Loading @@ -673,7 +683,7 @@ public class MediaControlView2Impl implements MediaControlView2Provider { @Override public void onClick(View v) { mControls.skipToPrevious(); mInstance.show(DEFAULT_TIMEOUT_MS); resetFadeOutRunnable(); } }; Loading @@ -693,7 +703,7 @@ public class MediaControlView2Impl implements MediaControlView2Provider { mController.sendCommand(MediaControlView2.COMMAND_HIDE_SUBTITLE, null, null); mSubtitleIsEnabled = false; } mInstance.show(DEFAULT_TIMEOUT_MS); resetFadeOutRunnable(); } }; Loading @@ -715,7 +725,7 @@ public class MediaControlView2Impl implements MediaControlView2Provider { mController.sendCommand(MediaControlView2.COMMAND_SET_FULLSCREEN, args, null); mIsFullScreen = isEnteringFullScreen; mInstance.show(DEFAULT_TIMEOUT_MS); resetFadeOutRunnable(); } }; Loading @@ -724,7 +734,7 @@ public class MediaControlView2Impl implements MediaControlView2Provider { public void onClick(View v) { mBasicControls.setVisibility(View.GONE); mExtraControls.setVisibility(View.VISIBLE); mInstance.show(DEFAULT_TIMEOUT_MS); resetFadeOutRunnable(); } }; Loading @@ -733,6 +743,7 @@ public class MediaControlView2Impl implements MediaControlView2Provider { public void onClick(View v) { mBasicControls.setVisibility(View.VISIBLE); mExtraControls.setVisibility(View.GONE); resetFadeOutRunnable(); } }; Loading Loading @@ -830,7 +841,7 @@ public class MediaControlView2Impl implements MediaControlView2Provider { // TODO: Currently, we are just sending extras that came from session. // Is it the right behavior? mControls.sendCustomAction(actionString, action.getExtras()); mInstance.show(DEFAULT_TIMEOUT_MS); mInstance.setVisibility(View.VISIBLE); } }); mCustomButtons.addView(button); Loading packages/MediaComponents/src/com/android/widget/VideoView2Impl.java +9 −6 Original line number Diff line number Diff line Loading @@ -452,7 +452,7 @@ public class VideoView2Impl implements VideoView2Provider, VideoViewInterface.Su + ", mTargetState=" + mTargetState + ", " + view.toString()); } if (mMediaControlView != null) { mMediaControlView.hide(); mMediaControlView.setVisibility(View.GONE); } } Loading Loading @@ -674,9 +674,9 @@ public class VideoView2Impl implements VideoView2Provider, VideoViewInterface.Su private void toggleMediaControlViewVisibility() { if (mMediaControlView.isShowing()) { mMediaControlView.hide(); mMediaControlView.setVisibility(View.GONE); } else { mMediaControlView.show(); mMediaControlView.setVisibility(View.VISIBLE); } } Loading Loading @@ -763,14 +763,17 @@ public class VideoView2Impl implements VideoView2Provider, VideoViewInterface.Su if (needToStart()) { mMediaController.getTransportControls().play(); if (mMediaControlView != null) { mMediaControlView.show(); mMediaControlView.setVisibility(View.VISIBLE); } } else if (!(isInPlaybackState() && mMediaPlayer.isPlaying()) && (seekToPosition != 0 || mMediaPlayer.getCurrentPosition() > 0)) { if (mMediaControlView != null) { // Show the media controls when we're paused into a video and // make them stick. mMediaControlView.show(0); long currTimeout = mMediaControlView.getTimeout(); mMediaControlView.setTimeout(0L); mMediaControlView.setVisibility(View.VISIBLE); mMediaControlView.setTimeout(currTimeout); } } } else { Loading Loading @@ -834,7 +837,7 @@ public class VideoView2Impl implements VideoView2Provider, VideoViewInterface.Su updatePlaybackState(); if (mMediaControlView != null) { mMediaControlView.hide(); mMediaControlView.setVisibility(View.GONE); } /* If an error handler has been supplied, use it and finish. */ Loading Loading
packages/MediaComponents/src/com/android/widget/MediaControlView2Impl.java +68 −57 Original line number Diff line number Diff line Loading @@ -56,7 +56,6 @@ public class MediaControlView2Impl implements MediaControlView2Provider { private static final int MAX_PROGRESS = 1000; private static final int DEFAULT_PROGRESS_UPDATE_TIME_MS = 1000; private static final int DEFAULT_TIMEOUT_MS = 2000; private static final int REWIND_TIME_MS = 10000; private static final int FORWARD_TIME_MS = 30000; Loading @@ -72,6 +71,8 @@ public class MediaControlView2Impl implements MediaControlView2Provider { private TextView mTitleView; private int mDuration; private int mPrevState; private int mCurrentVisibility; private long mTimeout; private long mPlaybackActions; private boolean mShowing; private boolean mDragging; Loading Loading @@ -115,6 +116,9 @@ public class MediaControlView2Impl implements MediaControlView2Provider { // Inflate MediaControlView2 from XML View root = makeControllerView(); mInstance.addView(root); // Set default timeout mTimeout = 2000; } @Override Loading @@ -133,51 +137,9 @@ public class MediaControlView2Impl implements MediaControlView2Provider { } } @Override public void show_impl() { mInstance.show(DEFAULT_TIMEOUT_MS); } @Override public void show_impl(long timeout) { if (!mShowing) { setProgress(); if (mPlayPauseButton != null) { mPlayPauseButton.requestFocus(); } disableUnsupportedButtons(); mInstance.setVisibility(View.VISIBLE); mShowing = true; } // cause the progress bar to be updated even if mShowing // was already true. This happens, for example, if we're // paused with the progress bar showing the user hits play. mInstance.post(mShowProgress); if (timeout != 0 && !mAccessibilityManager.isTouchExplorationEnabled()) { mInstance.removeCallbacks(mFadeOut); mInstance.postDelayed(mFadeOut, timeout); } } @Override public boolean isShowing_impl() { return mShowing; } @Override public void hide_impl() { if (mShowing) { try { mInstance.removeCallbacks(mShowProgress); // Remove existing call to mFadeOut to avoid from being called later. mInstance.removeCallbacks(mFadeOut); mInstance.setVisibility(View.GONE); } catch (IllegalArgumentException ex) { Log.w(TAG, "already removed"); } mShowing = false; } return (mInstance.getVisibility() == View.VISIBLE) ? true : false; } @Override Loading Loading @@ -247,6 +209,46 @@ public class MediaControlView2Impl implements MediaControlView2Provider { } } @Override public void requestPlayButtonFocus_impl() { if (mPlayPauseButton != null) { mPlayPauseButton.requestFocus(); } } @Override public void setTimeout_impl(long timeout) { mTimeout = timeout; } @Override public long getTimeout_impl() { return mTimeout; } @Override public void onVisibilityAggregated_impl(boolean invisible) { int visibility = mInstance.getVisibility(); if (mCurrentVisibility != visibility) { mInstance.setVisibility(visibility); mCurrentVisibility = visibility; if (visibility == View.VISIBLE) { setProgress(); disableUnsupportedButtons(); // cause the progress bar to be updated even if mShowing // was already true. This happens, for example, if we're // paused with the progress bar showing the user hits play. mInstance.post(mShowProgress); resetFadeOutRunnable(); } else if (visibility == View.GONE) { mInstance.removeCallbacks(mShowProgress); // Remove existing call to mFadeOut to avoid from being called later. mInstance.removeCallbacks(mFadeOut); } } } @Override public void onAttachedToWindow_impl() { mSuperProvider.onAttachedToWindow_impl(); Loading @@ -270,7 +272,7 @@ public class MediaControlView2Impl implements MediaControlView2Provider { // TODO: Should this function be removed? @Override public boolean onTrackballEvent_impl(MotionEvent ev) { mInstance.show(DEFAULT_TIMEOUT_MS); resetFadeOutRunnable(); return false; } Loading Loading @@ -483,7 +485,7 @@ public class MediaControlView2Impl implements MediaControlView2Provider { @Override public void run() { if (isPlaying()) { mInstance.hide(); mInstance.setVisibility(View.GONE); } } }; Loading @@ -499,6 +501,13 @@ public class MediaControlView2Impl implements MediaControlView2Provider { } }; private void resetFadeOutRunnable() { if (mTimeout != 0 && !mAccessibilityManager.isTouchExplorationEnabled()) { mInstance.removeCallbacks(mFadeOut); mInstance.postDelayed(mFadeOut, mTimeout); } } private String stringForTime(int timeMs) { int totalSeconds = timeMs / 1000; Loading Loading @@ -572,9 +581,9 @@ public class MediaControlView2Impl implements MediaControlView2Provider { if (!mSeekAvailable) { return; } mInstance.show(3600000); mDragging = true; mInstance.removeCallbacks(mFadeOut); // By removing these pending progress messages we make sure // that a) we won't update the progress while the user adjusts Loading Loading @@ -622,7 +631,8 @@ public class MediaControlView2Impl implements MediaControlView2Provider { mDragging = false; setProgress(); mInstance.show(DEFAULT_TIMEOUT_MS); resetFadeOutRunnable(); // Ensure that progress is properly updated in the future, // the call to show() does not guarantee this because it is a Loading @@ -635,7 +645,7 @@ public class MediaControlView2Impl implements MediaControlView2Provider { @Override public void onClick(View v) { togglePausePlayState(); mInstance.show(DEFAULT_TIMEOUT_MS); resetFadeOutRunnable(); } }; Loading @@ -646,7 +656,7 @@ public class MediaControlView2Impl implements MediaControlView2Provider { mControls.seekTo(pos); setProgress(); mInstance.show(DEFAULT_TIMEOUT_MS); resetFadeOutRunnable(); } }; Loading @@ -657,7 +667,7 @@ public class MediaControlView2Impl implements MediaControlView2Provider { mControls.seekTo(pos); setProgress(); mInstance.show(DEFAULT_TIMEOUT_MS); resetFadeOutRunnable(); } }; Loading @@ -665,7 +675,7 @@ public class MediaControlView2Impl implements MediaControlView2Provider { @Override public void onClick(View v) { mControls.skipToNext(); mInstance.show(DEFAULT_TIMEOUT_MS); resetFadeOutRunnable(); } }; Loading @@ -673,7 +683,7 @@ public class MediaControlView2Impl implements MediaControlView2Provider { @Override public void onClick(View v) { mControls.skipToPrevious(); mInstance.show(DEFAULT_TIMEOUT_MS); resetFadeOutRunnable(); } }; Loading @@ -693,7 +703,7 @@ public class MediaControlView2Impl implements MediaControlView2Provider { mController.sendCommand(MediaControlView2.COMMAND_HIDE_SUBTITLE, null, null); mSubtitleIsEnabled = false; } mInstance.show(DEFAULT_TIMEOUT_MS); resetFadeOutRunnable(); } }; Loading @@ -715,7 +725,7 @@ public class MediaControlView2Impl implements MediaControlView2Provider { mController.sendCommand(MediaControlView2.COMMAND_SET_FULLSCREEN, args, null); mIsFullScreen = isEnteringFullScreen; mInstance.show(DEFAULT_TIMEOUT_MS); resetFadeOutRunnable(); } }; Loading @@ -724,7 +734,7 @@ public class MediaControlView2Impl implements MediaControlView2Provider { public void onClick(View v) { mBasicControls.setVisibility(View.GONE); mExtraControls.setVisibility(View.VISIBLE); mInstance.show(DEFAULT_TIMEOUT_MS); resetFadeOutRunnable(); } }; Loading @@ -733,6 +743,7 @@ public class MediaControlView2Impl implements MediaControlView2Provider { public void onClick(View v) { mBasicControls.setVisibility(View.VISIBLE); mExtraControls.setVisibility(View.GONE); resetFadeOutRunnable(); } }; Loading Loading @@ -830,7 +841,7 @@ public class MediaControlView2Impl implements MediaControlView2Provider { // TODO: Currently, we are just sending extras that came from session. // Is it the right behavior? mControls.sendCustomAction(actionString, action.getExtras()); mInstance.show(DEFAULT_TIMEOUT_MS); mInstance.setVisibility(View.VISIBLE); } }); mCustomButtons.addView(button); Loading
packages/MediaComponents/src/com/android/widget/VideoView2Impl.java +9 −6 Original line number Diff line number Diff line Loading @@ -452,7 +452,7 @@ public class VideoView2Impl implements VideoView2Provider, VideoViewInterface.Su + ", mTargetState=" + mTargetState + ", " + view.toString()); } if (mMediaControlView != null) { mMediaControlView.hide(); mMediaControlView.setVisibility(View.GONE); } } Loading Loading @@ -674,9 +674,9 @@ public class VideoView2Impl implements VideoView2Provider, VideoViewInterface.Su private void toggleMediaControlViewVisibility() { if (mMediaControlView.isShowing()) { mMediaControlView.hide(); mMediaControlView.setVisibility(View.GONE); } else { mMediaControlView.show(); mMediaControlView.setVisibility(View.VISIBLE); } } Loading Loading @@ -763,14 +763,17 @@ public class VideoView2Impl implements VideoView2Provider, VideoViewInterface.Su if (needToStart()) { mMediaController.getTransportControls().play(); if (mMediaControlView != null) { mMediaControlView.show(); mMediaControlView.setVisibility(View.VISIBLE); } } else if (!(isInPlaybackState() && mMediaPlayer.isPlaying()) && (seekToPosition != 0 || mMediaPlayer.getCurrentPosition() > 0)) { if (mMediaControlView != null) { // Show the media controls when we're paused into a video and // make them stick. mMediaControlView.show(0); long currTimeout = mMediaControlView.getTimeout(); mMediaControlView.setTimeout(0L); mMediaControlView.setVisibility(View.VISIBLE); mMediaControlView.setTimeout(currTimeout); } } } else { Loading Loading @@ -834,7 +837,7 @@ public class VideoView2Impl implements VideoView2Provider, VideoViewInterface.Su updatePlaybackState(); if (mMediaControlView != null) { mMediaControlView.hide(); mMediaControlView.setVisibility(View.GONE); } /* If an error handler has been supplied, use it and finish. */ Loading