[Output Switcher] Set clickable on MediaMetadata section
Set clicklistener on Media Metadata section, to guide user to application when tap on it. Bug: 262013662 Test: atest MediaOutputAdapterTest MediaOutputControllerTest MediaOutputBaseDialogTest MediaOutputDialogTest Change-Id: I0f5fa36af6bfaa8d5b78f8bdab69dd43bcc70d6e
This commit is contained in:
committed by
Shaowei Shen
parent
90a438c690
commit
8027f4608d
@@ -24,6 +24,7 @@
|
|||||||
android:orientation="vertical">
|
android:orientation="vertical">
|
||||||
|
|
||||||
<LinearLayout
|
<LinearLayout
|
||||||
|
android:id="@+id/media_metadata_section"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:gravity="start|center_vertical"
|
android:gravity="start|center_vertical"
|
||||||
|
|||||||
@@ -95,6 +95,7 @@ public abstract class MediaOutputBaseDialog extends SystemUIDialog implements
|
|||||||
private RecyclerView mDevicesRecyclerView;
|
private RecyclerView mDevicesRecyclerView;
|
||||||
private LinearLayout mDeviceListLayout;
|
private LinearLayout mDeviceListLayout;
|
||||||
private LinearLayout mCastAppLayout;
|
private LinearLayout mCastAppLayout;
|
||||||
|
private LinearLayout mMediaMetadataSectionLayout;
|
||||||
private Button mDoneButton;
|
private Button mDoneButton;
|
||||||
private Button mStopButton;
|
private Button mStopButton;
|
||||||
private Button mAppButton;
|
private Button mAppButton;
|
||||||
@@ -240,6 +241,7 @@ public abstract class MediaOutputBaseDialog extends SystemUIDialog implements
|
|||||||
mHeaderSubtitle = mDialogView.requireViewById(R.id.header_subtitle);
|
mHeaderSubtitle = mDialogView.requireViewById(R.id.header_subtitle);
|
||||||
mHeaderIcon = mDialogView.requireViewById(R.id.header_icon);
|
mHeaderIcon = mDialogView.requireViewById(R.id.header_icon);
|
||||||
mDevicesRecyclerView = mDialogView.requireViewById(R.id.list_result);
|
mDevicesRecyclerView = mDialogView.requireViewById(R.id.list_result);
|
||||||
|
mMediaMetadataSectionLayout = mDialogView.requireViewById(R.id.media_metadata_section);
|
||||||
mDeviceListLayout = mDialogView.requireViewById(R.id.device_list);
|
mDeviceListLayout = mDialogView.requireViewById(R.id.device_list);
|
||||||
mDoneButton = mDialogView.requireViewById(R.id.done);
|
mDoneButton = mDialogView.requireViewById(R.id.done);
|
||||||
mStopButton = mDialogView.requireViewById(R.id.stop);
|
mStopButton = mDialogView.requireViewById(R.id.stop);
|
||||||
@@ -255,21 +257,17 @@ public abstract class MediaOutputBaseDialog extends SystemUIDialog implements
|
|||||||
mDevicesRecyclerView.setLayoutManager(mLayoutManager);
|
mDevicesRecyclerView.setLayoutManager(mLayoutManager);
|
||||||
mDevicesRecyclerView.setAdapter(mAdapter);
|
mDevicesRecyclerView.setAdapter(mAdapter);
|
||||||
mDevicesRecyclerView.setHasFixedSize(false);
|
mDevicesRecyclerView.setHasFixedSize(false);
|
||||||
// Init header icon
|
|
||||||
mHeaderIcon.setOnClickListener(v -> onHeaderIconClick());
|
|
||||||
// Init bottom buttons
|
// Init bottom buttons
|
||||||
mDoneButton.setOnClickListener(v -> dismiss());
|
mDoneButton.setOnClickListener(v -> dismiss());
|
||||||
mStopButton.setOnClickListener(v -> {
|
mStopButton.setOnClickListener(v -> {
|
||||||
mMediaOutputController.releaseSession();
|
mMediaOutputController.releaseSession();
|
||||||
dismiss();
|
dismiss();
|
||||||
});
|
});
|
||||||
mAppButton.setOnClickListener(v -> {
|
mAppButton.setOnClickListener(v -> mMediaOutputController.tryToLaunchMediaApplication());
|
||||||
mBroadcastSender.closeSystemDialogs();
|
if (mMediaOutputController.isAdvancedLayoutSupported()) {
|
||||||
if (mMediaOutputController.getAppLaunchIntent() != null) {
|
mMediaMetadataSectionLayout.setOnClickListener(
|
||||||
mContext.startActivity(mMediaOutputController.getAppLaunchIntent());
|
v -> mMediaOutputController.tryToLaunchMediaApplication());
|
||||||
}
|
}
|
||||||
dismiss();
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -560,7 +558,7 @@ public abstract class MediaOutputBaseDialog extends SystemUIDialog implements
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void dismissDialog() {
|
public void dismissDialog() {
|
||||||
dismiss();
|
mBroadcastSender.closeSystemDialogs();
|
||||||
}
|
}
|
||||||
|
|
||||||
void onHeaderIconClick() {
|
void onHeaderIconClick() {
|
||||||
|
|||||||
@@ -382,6 +382,15 @@ public class MediaOutputController implements LocalMediaManager.DeviceCallback,
|
|||||||
return mContext.getPackageManager().getLaunchIntentForPackage(mPackageName);
|
return mContext.getPackageManager().getLaunchIntentForPackage(mPackageName);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void tryToLaunchMediaApplication() {
|
||||||
|
Intent launchIntent = getAppLaunchIntent();
|
||||||
|
if (launchIntent != null) {
|
||||||
|
launchIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
|
||||||
|
mCallback.dismissDialog();
|
||||||
|
mContext.startActivity(launchIntent);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
CharSequence getHeaderTitle() {
|
CharSequence getHeaderTitle() {
|
||||||
if (mMediaController != null) {
|
if (mMediaController != null) {
|
||||||
final MediaMetadata metadata = mMediaController.getMetadata();
|
final MediaMetadata metadata = mMediaController.getMetadata();
|
||||||
|
|||||||
@@ -242,6 +242,13 @@ public class MediaOutputBaseDialogTest extends SysuiTestCase {
|
|||||||
verify(mMediaOutputBaseAdapter).notifyDataSetChanged();
|
verify(mMediaOutputBaseAdapter).notifyDataSetChanged();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void dismissDialog_closesDialogByBroadcastSender() {
|
||||||
|
mMediaOutputBaseDialogImpl.dismissDialog();
|
||||||
|
|
||||||
|
verify(mBroadcastSender).closeSystemDialogs();
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void whenBroadcasting_verifyLeBroadcastServiceCallBackIsRegisteredAndUnregistered() {
|
public void whenBroadcasting_verifyLeBroadcastServiceCallBackIsRegisteredAndUnregistered() {
|
||||||
when(mLocalBluetoothProfileManager.getLeAudioBroadcastProfile()).thenReturn(
|
when(mLocalBluetoothProfileManager.getLeAudioBroadcastProfile()).thenReturn(
|
||||||
|
|||||||
@@ -251,6 +251,13 @@ public class MediaOutputControllerTest extends SysuiTestCase {
|
|||||||
verify(mNearbyMediaDevicesManager).unregisterNearbyDevicesCallback(any());
|
verify(mNearbyMediaDevicesManager).unregisterNearbyDevicesCallback(any());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void tryToLaunchMediaApplication_nullIntent_skip() {
|
||||||
|
mMediaOutputController.tryToLaunchMediaApplication();
|
||||||
|
|
||||||
|
verify(mCb, never()).dismissDialog();
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void onDevicesUpdated_unregistersNearbyDevicesCallback() throws RemoteException {
|
public void onDevicesUpdated_unregistersNearbyDevicesCallback() throws RemoteException {
|
||||||
mMediaOutputController.start(mCb);
|
mMediaOutputController.start(mCb);
|
||||||
|
|||||||
Reference in New Issue
Block a user