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
This commit is contained in:
@@ -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();
|
||||
}
|
||||
}
|
||||
|
||||
|
@@ -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();
|
||||
}
|
||||
}
|
||||
};
|
||||
}
|
||||
|
@@ -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();
|
||||
}
|
||||
|
@@ -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());
|
||||
});
|
||||
}
|
||||
|
Reference in New Issue
Block a user