mSongLengthMs = 0L;
mPlaybackIntervalMs = 0L;
mPlayPosChangedNT = NOTIFICATION_TYPE_CHANGED;
+ mNextPosMs = -1;
+ mPrevPosMs = -1;
mFeatures = 0;
mRemoteVolume = -1;
mInitialRemoteVolume = -1;
mMediaController = controller;
if (mMediaController == null) {
updateMetadata(null);
- updatePlaybackState(null);
return;
}
mMediaController.registerCallback(mMediaControllerCb, mHandler);
updateMetadata(mMediaController.getMetadata());
- updatePlaybackState(mMediaController.getPlaybackState());
}
/** Handles Avrcp messages. */
PlaybackState.PLAYBACK_POSITION_UNKNOWN, 0.0f).build();
}
- int oldPlayStatus = convertPlayStateToPlayStatus(mCurrentPlayState);
int newPlayStatus = convertPlayStateToPlayStatus(state);
mCurrentPlayState = state;
sendPlayPosNotificationRsp(false);
- if ((mPlayStatusChangedNT == NOTIFICATION_TYPE_INTERIM) && (oldPlayStatus != newPlayStatus)) {
+ if (mPlayStatusChangedNT == NOTIFICATION_TYPE_INTERIM) {
mPlayStatusChangedNT = NOTIFICATION_TYPE_CHANGED;
registerNotificationRspPlayStatusNative(mPlayStatusChangedNT, newPlayStatus);
}
Log.v(TAG, "MediaAttributes Changed to " + mMediaAttributes.toString());
mTrackNumber++;
- // Update the play state, which sends a notification if needed.
- updatePlaybackState(mMediaController.getPlaybackState());
+ // Update the play state, which sends play state and play position
+ // notifications if needed.
+ if (mMediaController != null) {
+ updatePlaybackState(mMediaController.getPlaybackState());
+ } else {
+ updatePlaybackState(null);
+ }
if (mTrackChangedNT == NOTIFICATION_TYPE_INTERIM) {
mTrackChangedNT = NOTIFICATION_TYPE_CHANGED;
return SystemClock.elapsedRealtime() - mLastStateUpdate + mCurrentPlayState.getPosition();
}
- return -1L;
+ return mCurrentPlayState.getPosition();
}
private int convertPlayStateToPlayStatus(PlaybackState state) {