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

Commit 36c49494 authored by Tim Peng's avatar Tim Peng
Browse files

Output switcher header is not updated with the latest media content

-Register media controller callback
-Update panel header when medadata changes
-Add test cases

Bug: 151396986
Test: make -j50 RunSettingsRoboTests
Change-Id: Id0b8f997899a96c0c94ca6bf099e624a9e87795b
parent 8ee5045d
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -148,7 +148,7 @@ public class MediaOutputGroupPanel implements PanelContent, LocalMediaManager.De
    @Override
    public void onDeviceListUpdate(List<MediaDevice> devices) {
        if (mCallback != null) {
            mCallback.onGroupChanged();
            mCallback.onHeaderChanged();
        }
    }

+25 −14
Original line number Diff line number Diff line
@@ -82,20 +82,6 @@ public class MediaOutputPanel implements PanelContent, LocalMediaManager.DeviceC
    private MediaOutputPanel(Context context, String packageName) {
        mContext = context.getApplicationContext();
        mPackageName = TextUtils.isEmpty(packageName) ? "" : packageName;

        if (!TextUtils.isEmpty(mPackageName)) {
            mMediaSessionManager = mContext.getSystemService(MediaSessionManager.class);
            for (MediaController controller : mMediaSessionManager.getActiveSessions(null)) {
                if (TextUtils.equals(controller.getPackageName(), mPackageName)) {
                    mMediaController = controller;
                    break;
                }
            }
        }

        if (mMediaController == null) {
            Log.e(TAG, "Unable to find " + mPackageName + " media controller");
        }
    }

    @Override
@@ -228,6 +214,19 @@ public class MediaOutputPanel implements PanelContent, LocalMediaManager.DeviceC

    @OnLifecycleEvent(ON_START)
    public void onStart() {
        if (!TextUtils.isEmpty(mPackageName)) {
            mMediaSessionManager = mContext.getSystemService(MediaSessionManager.class);
            for (MediaController controller : mMediaSessionManager.getActiveSessions(null)) {
                if (TextUtils.equals(controller.getPackageName(), mPackageName)) {
                    mMediaController = controller;
                    mMediaController.registerCallback(mCb);
                    break;
                }
            }
        }
        if (mMediaController == null) {
            Log.d(TAG, "No media controller for " + mPackageName);
        }
        if (mLocalMediaManager == null) {
            mLocalMediaManager = new LocalMediaManager(mContext, mPackageName, null);
        }
@@ -237,6 +236,9 @@ public class MediaOutputPanel implements PanelContent, LocalMediaManager.DeviceC

    @OnLifecycleEvent(ON_STOP)
    public void onStop() {
        if (mMediaController != null) {
            mMediaController.unregisterCallback(mCb);
        }
        mLocalMediaManager.unregisterCallback(this);
        mLocalMediaManager.stopScan();
    }
@@ -245,4 +247,13 @@ public class MediaOutputPanel implements PanelContent, LocalMediaManager.DeviceC
    public int getViewType() {
        return PanelContent.VIEW_TYPE_SLIDER;
    }

    private final MediaController.Callback mCb = new MediaController.Callback() {
        @Override
        public void onMetadataChanged(MediaMetadata metadata) {
            if (mCallback != null) {
                mCallback.onHeaderChanged();
            }
        }
    };
}
+2 −2
Original line number Diff line number Diff line
@@ -28,8 +28,8 @@ public interface PanelContentCallback {
    void onCustomizedButtonStateChanged();

    /**
     * It will be called when group content is changed. For example, to add/remove a device into
     * It will be called when header content is changed. For example, to add/remove a device into
     * a group
     */
    void onGroupChanged();
    void onHeaderChanged();
}
+3 −1
Original line number Diff line number Diff line
@@ -426,8 +426,10 @@ public class PanelFragment extends Fragment {
        }

        @Override
        public void onGroupChanged() {
        public void onHeaderChanged() {
            ThreadUtils.postOnMainThread(() -> {
                mTitleIcon.setImageIcon(mPanel.getIcon().toIcon(getContext()));
                mHeaderTitle.setText(mPanel.getTitle());
                mHeaderSubtitle.setText(mPanel.getSubTitle());
            });
        }
+10 −5
Original line number Diff line number Diff line
@@ -42,6 +42,7 @@ public class FakePanelContent implements PanelContent {

    public static final Intent INTENT = new Intent();

    private CharSequence mTitle = TITLE;
    private CharSequence mSubTitle;
    private IconCompat mIcon;
    private int mViewType;
@@ -51,22 +52,26 @@ public class FakePanelContent implements PanelContent {
        return mIcon;
    }

    public void setIcon(IconCompat icon) {
        mIcon = icon;
    }

    @Override
    public CharSequence getSubTitle() {
        return mSubTitle;
    }

    public void setIcon(IconCompat icon) {
        mIcon = icon;
    }

    public void setSubTitle(CharSequence subTitle) {
        mSubTitle = subTitle;
    }

    @Override
    public CharSequence getTitle() {
        return TITLE;
        return mTitle;
    }

    public void setTitle(CharSequence title) {
        mTitle = title;
    }

    @Override
Loading