Avrcp: cache playback state
PlaybackState may become null while processing to avoid such
scenario cache PlaybackState before using in updateCurrentMediaState
function.
CRs-Fixed: 2713120
Change-Id: Ia0ea1fdf3b8d1d1c15796899721771e195346fc3
diff --git a/packages_apps_bluetooth_ext/src/avrcp/Avrcp_ext.java b/packages_apps_bluetooth_ext/src/avrcp/Avrcp_ext.java
index 32fc833..49768e3 100644
--- a/packages_apps_bluetooth_ext/src/avrcp/Avrcp_ext.java
+++ b/packages_apps_bluetooth_ext/src/avrcp/Avrcp_ext.java
@@ -2233,6 +2233,8 @@
boolean isPlaying = false;
PlaybackState newState = new PlaybackState.Builder().setState(PlaybackState.STATE_NONE,
PlaybackState.PLAYBACK_POSITION_UNKNOWN, 0.0f).build();
+ PlaybackState playbackState = new PlaybackState.Builder().setState(PlaybackState.STATE_NONE,
+ PlaybackState.PLAYBACK_POSITION_UNKNOWN, 0.0f).build();
boolean updateA2dpPlayState = false;
Log.v(TAG,"updateCurrentMediaState: mMediaController: " + mMediaController);
Log.v(TAG,"isMusicActive: " + mAudioManager.isMusicActive() + " getBluetoothPlayState: " + getBluetoothPlayState(mCurrentPlayerState));
@@ -2245,6 +2247,9 @@
} else {
isPlaying = (mA2dpState == BluetoothA2dp.STATE_PLAYING) && mAudioManager.isMusicActive();
}
+ if (mMediaController != null) {
+ playbackState = mMediaController.getPlaybackState();
+ }
Log.v(TAG,"updateCurrentMediaState: isPlaying = " + isPlaying);
// Use A2DP state if we don't have a MediaControlller
PlaybackState.Builder builder = new PlaybackState.Builder();
@@ -2255,14 +2260,14 @@
builder.setState(PlaybackState.STATE_PAUSED,
PlaybackState.PLAYBACK_POSITION_UNKNOWN, 0.0f);
}
- if (mMediaController != null && mMediaController.getPlaybackState() != null) {
- int mMediaPlayState = mMediaController.getPlaybackState().getState();
+ if (playbackState != null) {
+ int mMediaPlayState = playbackState.getState();
if (isPlaying) {
builder.setState(PlaybackState.STATE_PLAYING,
- mMediaController.getPlaybackState().getPosition(), 1.0f);
+ playbackState.getPosition(), 1.0f);
} else {
builder.setState(PlaybackState.STATE_PAUSED,
- mMediaController.getPlaybackState().getPosition(), 0.0f);
+ playbackState.getPosition(), 0.0f);
}
}
newState = builder.build();