Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit aaa4f6f3 authored by Marie Janssen's avatar Marie Janssen Committed by android-build-merger
Browse files

Merge \"Fix AVRCP crash, position and state tracking\"

am: 5b8a0db9

Change-Id: Ic553fbdb7e2bbb2356b0525e8d54a2a59945d27e
parents cf8c1075 5b8a0db9
Loading
Loading
Loading
Loading
+11 −7
Original line number Original line Diff line number Diff line
@@ -147,6 +147,8 @@ public final class Avrcp {
        mSongLengthMs = 0L;
        mSongLengthMs = 0L;
        mPlaybackIntervalMs = 0L;
        mPlaybackIntervalMs = 0L;
        mPlayPosChangedNT = NOTIFICATION_TYPE_CHANGED;
        mPlayPosChangedNT = NOTIFICATION_TYPE_CHANGED;
        mNextPosMs = -1;
        mPrevPosMs = -1;
        mFeatures = 0;
        mFeatures = 0;
        mRemoteVolume = -1;
        mRemoteVolume = -1;
        mInitialRemoteVolume = -1;
        mInitialRemoteVolume = -1;
@@ -259,12 +261,10 @@ public final class Avrcp {
        mMediaController = controller;
        mMediaController = controller;
        if (mMediaController == null) {
        if (mMediaController == null) {
            updateMetadata(null);
            updateMetadata(null);
            updatePlaybackState(null);
            return;
            return;
        }
        }
        mMediaController.registerCallback(mMediaControllerCb, mHandler);
        mMediaController.registerCallback(mMediaControllerCb, mHandler);
        updateMetadata(mMediaController.getMetadata());
        updateMetadata(mMediaController.getMetadata());
        updatePlaybackState(mMediaController.getPlaybackState());
    }
    }


    /** Handles Avrcp messages. */
    /** Handles Avrcp messages. */
@@ -633,7 +633,6 @@ public final class Avrcp {
                         PlaybackState.PLAYBACK_POSITION_UNKNOWN, 0.0f).build();
                         PlaybackState.PLAYBACK_POSITION_UNKNOWN, 0.0f).build();
        }
        }


        int oldPlayStatus = convertPlayStateToPlayStatus(mCurrentPlayState);
        int newPlayStatus = convertPlayStateToPlayStatus(state);
        int newPlayStatus = convertPlayStateToPlayStatus(state);


        mCurrentPlayState = state;
        mCurrentPlayState = state;
@@ -641,7 +640,7 @@ public final class Avrcp {


        sendPlayPosNotificationRsp(false);
        sendPlayPosNotificationRsp(false);


        if ((mPlayStatusChangedNT == NOTIFICATION_TYPE_INTERIM) && (oldPlayStatus != newPlayStatus)) {
        if (mPlayStatusChangedNT == NOTIFICATION_TYPE_INTERIM) {
            mPlayStatusChangedNT = NOTIFICATION_TYPE_CHANGED;
            mPlayStatusChangedNT = NOTIFICATION_TYPE_CHANGED;
            registerNotificationRspPlayStatusNative(mPlayStatusChangedNT, newPlayStatus);
            registerNotificationRspPlayStatusNative(mPlayStatusChangedNT, newPlayStatus);
        }
        }
@@ -771,8 +770,13 @@ public final class Avrcp {
            Log.v(TAG, "MediaAttributes Changed to " + mMediaAttributes.toString());
            Log.v(TAG, "MediaAttributes Changed to " + mMediaAttributes.toString());
            mTrackNumber++;
            mTrackNumber++;


            // Update the play state, which sends a notification if needed.
            // Update the play state, which sends play state and play position
            // notifications if needed.
            if (mMediaController != null) {
              updatePlaybackState(mMediaController.getPlaybackState());
              updatePlaybackState(mMediaController.getPlaybackState());
            } else {
              updatePlaybackState(null);
            }


            if (mTrackChangedNT == NOTIFICATION_TYPE_INTERIM) {
            if (mTrackChangedNT == NOTIFICATION_TYPE_INTERIM) {
                mTrackChangedNT = NOTIFICATION_TYPE_CHANGED;
                mTrackChangedNT = NOTIFICATION_TYPE_CHANGED;
@@ -897,7 +901,7 @@ public final class Avrcp {
            return SystemClock.elapsedRealtime() - mLastStateUpdate + mCurrentPlayState.getPosition();
            return SystemClock.elapsedRealtime() - mLastStateUpdate + mCurrentPlayState.getPosition();
        }
        }


        return -1L;
        return mCurrentPlayState.getPosition();
    }
    }


    private int convertPlayStateToPlayStatus(PlaybackState state) {
    private int convertPlayStateToPlayStatus(PlaybackState state) {