diff options
author | RoboErik <epastern@google.com> | 2014-07-09 13:34:32 -0700 |
---|---|---|
committer | Erik Pasternak <roboerik@android.com> | 2014-07-10 22:39:03 +0000 |
commit | 5a4e01114361b7dad4fc5465b4da00fd444fc098 (patch) | |
tree | e589eeb34eea78fa29c02cf2f0d3ca2ed93dd1a0 /tests/OneMedia | |
parent | b3d91779cb8cbb78d703095e6c880a83ab20133e (diff) | |
download | frameworks_base-5a4e01114361b7dad4fc5465b4da00fd444fc098.zip frameworks_base-5a4e01114361b7dad4fc5465b4da00fd444fc098.tar.gz frameworks_base-5a4e01114361b7dad4fc5465b4da00fd444fc098.tar.bz2 |
Make PlaybackState immutable with a builder
bug:15862252
Change-Id: I8944b7753cd6a36a74b0091f71a386f77040c4ab
Diffstat (limited to 'tests/OneMedia')
-rw-r--r-- | tests/OneMedia/src/com/android/onemedia/PlayerSession.java | 48 | ||||
-rw-r--r-- | tests/OneMedia/src/com/android/onemedia/provider/OneMediaRouteProvider.java | 37 |
2 files changed, 53 insertions, 32 deletions
diff --git a/tests/OneMedia/src/com/android/onemedia/PlayerSession.java b/tests/OneMedia/src/com/android/onemedia/PlayerSession.java index a220107..af24438 100644 --- a/tests/OneMedia/src/com/android/onemedia/PlayerSession.java +++ b/tests/OneMedia/src/com/android/onemedia/PlayerSession.java @@ -25,6 +25,7 @@ import android.media.session.MediaSession; import android.media.session.MediaSessionManager; import android.media.session.PlaybackState; import android.os.Bundle; +import android.os.SystemClock; import android.util.Log; import android.view.KeyEvent; @@ -58,9 +59,9 @@ public class PlayerSession { mRenderer = new LocalRenderer(context, null); mCallback = new SessionCb(); mRenderListener = new RenderListener(); - mPlaybackState = new PlaybackState(); - mPlaybackState.setActions(PlaybackState.ACTION_PAUSE - | PlaybackState.ACTION_PLAY); + PlaybackState.Builder psBob = new PlaybackState.Builder(); + psBob.setActions(PlaybackState.ACTION_PAUSE | PlaybackState.ACTION_PLAY); + mPlaybackState = psBob.build(); mRenderer.registerListener(mRenderListener); @@ -118,7 +119,10 @@ public class PlayerSession { private void updateState(int newState) { float rate = newState == PlaybackState.STATE_PLAYING ? 1 : 0; long position = mRenderer == null ? -1 : mRenderer.getSeekPosition(); - mPlaybackState.setState(newState, position, rate); + PlaybackState.Builder bob = new PlaybackState.Builder(mPlaybackState); + bob.setState(newState, position, rate, SystemClock.elapsedRealtime()); + bob.setErrorMessage(null); + mPlaybackState = bob.build(); mSession.setPlaybackState(mPlaybackState); } @@ -131,10 +135,12 @@ public class PlayerSession { @Override public void onError(int type, int extra, Bundle extras, Throwable error) { Log.d(TAG, "Sending onError with type " + type + " and extra " + extra); - mPlaybackState.setState(PlaybackState.STATE_ERROR, -1, 0); + PlaybackState.Builder bob = new PlaybackState.Builder(mPlaybackState); + bob.setState(PlaybackState.STATE_ERROR, -1, 0, 0); if (error != null) { - mPlaybackState.setErrorMessage(error.getLocalizedMessage()); + bob.setErrorMessage(error.getLocalizedMessage()); } + mPlaybackState = bob.build(); mSession.setPlaybackState(mPlaybackState); if (mListener != null) { mListener.onPlayStateChanged(mPlaybackState); @@ -143,36 +149,41 @@ public class PlayerSession { @Override public void onStateChanged(int newState) { - if (newState != Renderer.STATE_ERROR) { - mPlaybackState.setErrorMessage(null); - } long position = -1; if (mRenderer != null) { position = mRenderer.getSeekPosition(); } + int pbState; + float rate = 0; + String errorMsg = null; switch (newState) { case Renderer.STATE_ENDED: case Renderer.STATE_STOPPED: - mPlaybackState.setState(PlaybackState.STATE_STOPPED, position, 0); + pbState = PlaybackState.STATE_STOPPED; break; case Renderer.STATE_INIT: case Renderer.STATE_PREPARING: - mPlaybackState.setState(PlaybackState.STATE_BUFFERING, position, 0); + pbState = PlaybackState.STATE_BUFFERING; break; case Renderer.STATE_ERROR: - mPlaybackState.setState(PlaybackState.STATE_ERROR, position, 0); + pbState = PlaybackState.STATE_ERROR; break; case Renderer.STATE_PAUSED: - mPlaybackState.setState(PlaybackState.STATE_PAUSED, position, 0); + pbState = PlaybackState.STATE_PAUSED; break; case Renderer.STATE_PLAYING: - mPlaybackState.setState(PlaybackState.STATE_PLAYING, position, 1); + pbState = PlaybackState.STATE_PLAYING; + rate = 1; break; default: - mPlaybackState.setState(PlaybackState.STATE_ERROR, position, 0); - mPlaybackState.setErrorMessage("unkown state"); + pbState = PlaybackState.STATE_ERROR; + errorMsg = "unknown state"; break; } + PlaybackState.Builder bob = new PlaybackState.Builder(mPlaybackState); + bob.setState(pbState, position, rate, SystemClock.elapsedRealtime()); + bob.setErrorMessage(errorMsg); + mPlaybackState = bob.build(); mSession.setPlaybackState(mPlaybackState); if (mListener != null) { mListener.onPlayStateChanged(mPlaybackState); @@ -187,7 +198,10 @@ public class PlayerSession { public void onFocusLost() { Log.d(TAG, "Focus lost, changing state to " + Renderer.STATE_PAUSED); long position = mRenderer == null ? -1 : mRenderer.getSeekPosition(); - mPlaybackState.setState(PlaybackState.STATE_PAUSED, position, 0); + PlaybackState.Builder bob = new PlaybackState.Builder(mPlaybackState); + bob.setState(PlaybackState.STATE_PAUSED, position, 0, SystemClock.elapsedRealtime()); + bob.setErrorMessage(null); + mPlaybackState = bob.build(); mSession.setPlaybackState(mPlaybackState); if (mListener != null) { mListener.onPlayStateChanged(mPlaybackState); diff --git a/tests/OneMedia/src/com/android/onemedia/provider/OneMediaRouteProvider.java b/tests/OneMedia/src/com/android/onemedia/provider/OneMediaRouteProvider.java index f2d691c..0284a03 100644 --- a/tests/OneMedia/src/com/android/onemedia/provider/OneMediaRouteProvider.java +++ b/tests/OneMedia/src/com/android/onemedia/provider/OneMediaRouteProvider.java @@ -28,6 +28,7 @@ import android.os.Bundle; import android.os.Handler; import android.os.Looper; import android.os.ResultReceiver; +import android.os.SystemClock; import android.util.Log; import com.android.onemedia.playback.LocalRenderer; @@ -60,9 +61,9 @@ public class OneMediaRouteProvider extends RouteProviderService { mRouteId = UUID.randomUUID().toString(); mRenderer = new LocalRenderer(this, null); mRenderListener = new RenderListener(); - mPlaybackState = new PlaybackState(); - mPlaybackState.setActions(PlaybackState.ACTION_PAUSE - | PlaybackState.ACTION_PLAY); + PlaybackState.Builder bob = new PlaybackState.Builder(); + bob.setActions(PlaybackState.ACTION_PAUSE | PlaybackState.ACTION_PLAY); + mPlaybackState = bob.build(); mRenderer.registerListener(mRenderListener); @@ -155,36 +156,41 @@ public class OneMediaRouteProvider extends RouteProviderService { @Override public void onStateChanged(int newState) { - if (newState != Renderer.STATE_ERROR) { - mPlaybackState.setErrorMessage(null); - } long position = -1; if (mRenderer != null) { position = mRenderer.getSeekPosition(); } + int pbState; + float rate = 0; + String errorMsg = null; switch (newState) { case Renderer.STATE_ENDED: case Renderer.STATE_STOPPED: - mPlaybackState.setState(PlaybackState.STATE_STOPPED, position, 0); + pbState = PlaybackState.STATE_STOPPED; break; case Renderer.STATE_INIT: case Renderer.STATE_PREPARING: - mPlaybackState.setState(PlaybackState.STATE_BUFFERING, position, 0); + pbState = PlaybackState.STATE_BUFFERING; break; case Renderer.STATE_ERROR: - mPlaybackState.setState(PlaybackState.STATE_ERROR, position, 0); + pbState = PlaybackState.STATE_ERROR; break; case Renderer.STATE_PAUSED: - mPlaybackState.setState(PlaybackState.STATE_PAUSED, position, 0); + pbState = PlaybackState.STATE_PAUSED; break; case Renderer.STATE_PLAYING: - mPlaybackState.setState(PlaybackState.STATE_PLAYING, position, 1); + pbState = PlaybackState.STATE_PLAYING; + rate = 1; break; default: - mPlaybackState.setState(PlaybackState.STATE_ERROR, position, 0); - mPlaybackState.setErrorMessage("unkown state"); + pbState = PlaybackState.STATE_ERROR; + errorMsg = "unknown state"; break; } + PlaybackState.Builder bob = new PlaybackState.Builder(mPlaybackState); + bob.setState(pbState, position, rate, SystemClock.elapsedRealtime()); + bob.setErrorMessage(errorMsg); + mPlaybackState = bob.build(); mControls.sendPlaybackChangeEvent(mPlaybackState.getState()); } @@ -195,8 +201,9 @@ public class OneMediaRouteProvider extends RouteProviderService { @Override public void onFocusLost() { - Log.d(TAG, "Focus lost, changing state to " + Renderer.STATE_PAUSED); - mPlaybackState.setState(PlaybackState.STATE_PAUSED, mRenderer.getSeekPosition(), 0); + Log.d(TAG, "Focus lost, pausing"); + // Don't update state here, we'll get a separate call to + // onStateChanged when it pauses mRenderer.onPause(); } |