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

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

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

am: 374b6165

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

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

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

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

        sendPlayPosNotificationRsp(false);

        if ((mPlayStatusChangedNT == NOTIFICATION_TYPE_INTERIM) && (oldPlayStatus != newPlayStatus)) {
        if (mPlayStatusChangedNT == NOTIFICATION_TYPE_INTERIM) {
            mPlayStatusChangedNT = NOTIFICATION_TYPE_CHANGED;
            registerNotificationRspPlayStatusNative(mPlayStatusChangedNT, newPlayStatus);
        }
@@ -771,8 +770,13 @@ public final class Avrcp {
            Log.v(TAG, "MediaAttributes Changed to " + mMediaAttributes.toString());
            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());
            } else {
              updatePlaybackState(null);
            }

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

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

    private int convertPlayStateToPlayStatus(PlaybackState state) {