Merge "[Output Switcher] Allow volume adjustment for Guest" into udc-dev am: 0a2ecf1cfb am: 3a1da8a4cb

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/23831003

Change-Id: I10c19725cdd621b713f8034c0cbd4ea7a852f975
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
Shaowei Shen
2023-06-30 03:35:38 +00:00
committed by Automerger Merge Worker
3 changed files with 30 additions and 38 deletions

View File

@@ -164,7 +164,6 @@
/> />
<ImageView <ImageView
android:id="@+id/media_output_item_end_click_icon" android:id="@+id/media_output_item_end_click_icon"
android:src="@drawable/media_output_status_edit_session"
android:layout_width="24dp" android:layout_width="24dp"
android:layout_height="24dp" android:layout_height="24dp"
android:focusable="false" android:focusable="false"

View File

@@ -20,6 +20,7 @@ import static com.android.settingslib.media.MediaDevice.SelectionBehavior.SELECT
import static com.android.settingslib.media.MediaDevice.SelectionBehavior.SELECTION_BEHAVIOR_NONE; import static com.android.settingslib.media.MediaDevice.SelectionBehavior.SELECTION_BEHAVIOR_NONE;
import static com.android.settingslib.media.MediaDevice.SelectionBehavior.SELECTION_BEHAVIOR_TRANSFER; import static com.android.settingslib.media.MediaDevice.SelectionBehavior.SELECTION_BEHAVIOR_TRANSFER;
import android.annotation.DrawableRes;
import android.content.Context; import android.content.Context;
import android.content.res.ColorStateList; import android.content.res.ColorStateList;
import android.graphics.drawable.AnimatedVectorDrawable; import android.graphics.drawable.AnimatedVectorDrawable;
@@ -181,27 +182,23 @@ public class MediaOutputAdapter extends MediaOutputBaseAdapter {
mController.getSelectedMediaDevice(), device))); mController.getSelectedMediaDevice(), device)));
boolean isHost = device.isHostForOngoingSession() boolean isHost = device.isHostForOngoingSession()
&& isActiveWithOngoingSession; && isActiveWithOngoingSession;
if (isHost) { if (isActiveWithOngoingSession) {
mCurrentActivePosition = position; mCurrentActivePosition = position;
updateTitleIcon(R.drawable.media_output_icon_volume, updateTitleIcon(R.drawable.media_output_icon_volume,
mController.getColorItemContent()); mController.getColorItemContent());
mSubTitleText.setText(device.getSubtextString()); mSubTitleText.setText(device.getSubtextString());
updateTwoLineLayoutContentAlpha(DEVICE_CONNECTED_ALPHA); updateTwoLineLayoutContentAlpha(DEVICE_CONNECTED_ALPHA);
updateEndClickAreaAsSessionEditing(device); updateEndClickAreaAsSessionEditing(device,
isHost ? R.drawable.media_output_status_edit_session
: R.drawable.ic_sound_bars_anim);
setTwoLineLayout(device, null /* title */, true /* bFocused */, setTwoLineLayout(device, null /* title */, true /* bFocused */,
true /* showSeekBar */, false /* showProgressBar */, true /* showSeekBar */, false /* showProgressBar */,
true /* showSubtitle */, false /* showStatus */, true /* showSubtitle */, false /* showStatus */,
true /* showEndTouchArea */, false /* isFakeActive */); true /* showEndTouchArea */, false /* isFakeActive */);
initSeekbar(device, isCurrentSeekbarInvisible); initSeekbar(device, isCurrentSeekbarInvisible);
} else { } else {
if (isActiveWithOngoingSession) { if (currentlyConnected) {
//Selected device which has ongoing session, disable seekbar since we
//only allow volume control on Host
mCurrentActivePosition = position; mCurrentActivePosition = position;
}
boolean showSeekbar =
(!device.hasOngoingSession() && currentlyConnected);
if (showSeekbar) {
updateTitleIcon(R.drawable.media_output_icon_volume, updateTitleIcon(R.drawable.media_output_icon_volume,
mController.getColorItemContent()); mController.getColorItemContent());
initSeekbar(device, isCurrentSeekbarInvisible); initSeekbar(device, isCurrentSeekbarInvisible);
@@ -222,10 +219,10 @@ public class MediaOutputAdapter extends MediaOutputBaseAdapter {
updateClickActionBasedOnSelectionBehavior(device) updateClickActionBasedOnSelectionBehavior(device)
? DEVICE_CONNECTED_ALPHA : DEVICE_DISCONNECTED_ALPHA); ? DEVICE_CONNECTED_ALPHA : DEVICE_DISCONNECTED_ALPHA);
setTwoLineLayout(device, currentlyConnected /* bFocused */, setTwoLineLayout(device, currentlyConnected /* bFocused */,
showSeekbar /* showSeekBar */, currentlyConnected /* showSeekBar */,
false /* showProgressBar */, true /* showSubtitle */, false /* showProgressBar */, true /* showSubtitle */,
deviceStatusIcon != null /* showStatus */, deviceStatusIcon != null /* showStatus */,
isActiveWithOngoingSession /* isFakeActive */); false /* isFakeActive */);
} }
} else if (device.getState() == MediaDeviceState.STATE_CONNECTING_FAILED) { } else if (device.getState() == MediaDeviceState.STATE_CONNECTING_FAILED) {
setUpDeviceIcon(device); setUpDeviceIcon(device);
@@ -267,25 +264,16 @@ public class MediaOutputAdapter extends MediaOutputBaseAdapter {
setSingleLineLayout(getItemTitle(device)); setSingleLineLayout(getItemTitle(device));
} else if (device.hasOngoingSession()) { } else if (device.hasOngoingSession()) {
mCurrentActivePosition = position; mCurrentActivePosition = position;
if (device.isHostForOngoingSession()) { updateTitleIcon(R.drawable.media_output_icon_volume,
updateTitleIcon(R.drawable.media_output_icon_volume, mController.getColorItemContent());
mController.getColorItemContent()); updateEndClickAreaAsSessionEditing(device, device.isHostForOngoingSession()
updateEndClickAreaAsSessionEditing(device); ? R.drawable.media_output_status_edit_session
mEndClickIcon.setVisibility(View.VISIBLE); : R.drawable.ic_sound_bars_anim);
setSingleLineLayout(getItemTitle(device), true /* showSeekBar */, mEndClickIcon.setVisibility(View.VISIBLE);
false /* showProgressBar */, false /* showCheckBox */, setSingleLineLayout(getItemTitle(device), true /* showSeekBar */,
true /* showEndTouchArea */); false /* showProgressBar */, false /* showCheckBox */,
initSeekbar(device, isCurrentSeekbarInvisible); true /* showEndTouchArea */);
} else { initSeekbar(device, isCurrentSeekbarInvisible);
updateDeviceStatusIcon(mContext.getDrawable(
R.drawable.ic_sound_bars_anim));
mStatusIcon.setVisibility(View.VISIBLE);
updateSingleLineLayoutContentAlpha(
updateClickActionBasedOnSelectionBehavior(device)
? DEVICE_CONNECTED_ALPHA : DEVICE_DISCONNECTED_ALPHA);
setSingleLineLayout(getItemTitle(device));
initFakeActiveDevice();
}
} else if (mController.isCurrentConnectedDeviceRemote() } else if (mController.isCurrentConnectedDeviceRemote()
&& !mController.getSelectableMediaDevice().isEmpty()) { && !mController.getSelectableMediaDevice().isEmpty()) {
//If device is connected and there's other selectable devices, layout as //If device is connected and there's other selectable devices, layout as
@@ -362,7 +350,7 @@ public class MediaOutputAdapter extends MediaOutputBaseAdapter {
mStatusIcon.setAlpha(alphaValue); mStatusIcon.setAlpha(alphaValue);
} }
private void updateEndClickAreaAsSessionEditing(MediaDevice device) { private void updateEndClickAreaAsSessionEditing(MediaDevice device, @DrawableRes int id) {
mEndClickIcon.setOnClickListener(null); mEndClickIcon.setOnClickListener(null);
mEndTouchArea.setOnClickListener(null); mEndTouchArea.setOnClickListener(null);
updateEndClickAreaColor(mController.getColorSeekbarProgress()); updateEndClickAreaColor(mController.getColorSeekbarProgress());
@@ -371,6 +359,11 @@ public class MediaOutputAdapter extends MediaOutputBaseAdapter {
mEndClickIcon.setOnClickListener( mEndClickIcon.setOnClickListener(
v -> mController.tryToLaunchInAppRoutingIntent(device.getId(), v)); v -> mController.tryToLaunchInAppRoutingIntent(device.getId(), v));
mEndTouchArea.setOnClickListener(v -> mEndClickIcon.performClick()); mEndTouchArea.setOnClickListener(v -> mEndClickIcon.performClick());
Drawable drawable = mContext.getDrawable(id);
mEndClickIcon.setImageDrawable(drawable);
if (drawable instanceof AnimatedVectorDrawable) {
((AnimatedVectorDrawable) drawable).start();
}
} }
public void updateEndClickAreaColor(int color) { public void updateEndClickAreaColor(int color) {

View File

@@ -291,13 +291,13 @@ public class MediaOutputAdapterTest extends SysuiTestCase {
assertThat(mViewHolder.mTitleText.getVisibility()).isEqualTo(View.VISIBLE); assertThat(mViewHolder.mTitleText.getVisibility()).isEqualTo(View.VISIBLE);
assertThat(mViewHolder.mTitleText.getText().toString()).isEqualTo(TEST_DEVICE_NAME_1); assertThat(mViewHolder.mTitleText.getText().toString()).isEqualTo(TEST_DEVICE_NAME_1);
assertThat(mViewHolder.mStatusIcon.getVisibility()).isEqualTo(View.VISIBLE); assertThat(mViewHolder.mStatusIcon.getVisibility()).isEqualTo(View.GONE);
assertThat(mViewHolder.mSubTitleText.getVisibility()).isEqualTo(View.GONE); assertThat(mViewHolder.mSubTitleText.getVisibility()).isEqualTo(View.GONE);
assertThat(mViewHolder.mProgressBar.getVisibility()).isEqualTo(View.GONE); assertThat(mViewHolder.mProgressBar.getVisibility()).isEqualTo(View.GONE);
assertThat(mViewHolder.mCheckBox.getVisibility()).isEqualTo(View.GONE); assertThat(mViewHolder.mCheckBox.getVisibility()).isEqualTo(View.GONE);
assertThat(mViewHolder.mTwoLineLayout.getVisibility()).isEqualTo(View.GONE); assertThat(mViewHolder.mTwoLineLayout.getVisibility()).isEqualTo(View.GONE);
assertThat(mViewHolder.mSeekBar.getVisibility()).isEqualTo(View.GONE); assertThat(mViewHolder.mSeekBar.getVisibility()).isEqualTo(View.VISIBLE);
assertThat(mViewHolder.mEndTouchArea.getVisibility()).isEqualTo(View.GONE); assertThat(mViewHolder.mEndTouchArea.getVisibility()).isEqualTo(View.VISIBLE);
} }
@Test @Test
@@ -525,16 +525,16 @@ public class MediaOutputAdapterTest extends SysuiTestCase {
mMediaOutputAdapter.onBindViewHolder(mViewHolder, 0); mMediaOutputAdapter.onBindViewHolder(mViewHolder, 0);
assertThat(mViewHolder.mTitleText.getVisibility()).isEqualTo(View.GONE); assertThat(mViewHolder.mTitleText.getVisibility()).isEqualTo(View.GONE);
assertThat(mViewHolder.mSeekBar.getVisibility()).isEqualTo(View.GONE); assertThat(mViewHolder.mSeekBar.getVisibility()).isEqualTo(View.VISIBLE);
assertThat(mViewHolder.mProgressBar.getVisibility()).isEqualTo(View.GONE); assertThat(mViewHolder.mProgressBar.getVisibility()).isEqualTo(View.GONE);
assertThat(mViewHolder.mCheckBox.getVisibility()).isEqualTo(View.GONE); assertThat(mViewHolder.mCheckBox.getVisibility()).isEqualTo(View.GONE);
assertThat(mViewHolder.mStatusIcon.getVisibility()).isEqualTo(View.VISIBLE); assertThat(mViewHolder.mStatusIcon.getVisibility()).isEqualTo(View.GONE);
assertThat(mViewHolder.mSubTitleText.getVisibility()).isEqualTo(View.VISIBLE); assertThat(mViewHolder.mSubTitleText.getVisibility()).isEqualTo(View.VISIBLE);
assertThat(mViewHolder.mTwoLineTitleText.getVisibility()).isEqualTo(View.VISIBLE); assertThat(mViewHolder.mTwoLineTitleText.getVisibility()).isEqualTo(View.VISIBLE);
assertThat(mViewHolder.mSubTitleText.getText().toString()).isEqualTo(TEST_CUSTOM_SUBTEXT); assertThat(mViewHolder.mSubTitleText.getText().toString()).isEqualTo(TEST_CUSTOM_SUBTEXT);
assertThat(mViewHolder.mTwoLineTitleText.getText().toString()).isEqualTo( assertThat(mViewHolder.mTwoLineTitleText.getText().toString()).isEqualTo(
TEST_DEVICE_NAME_1); TEST_DEVICE_NAME_1);
assertThat(mViewHolder.mContainerLayout.hasOnClickListeners()).isTrue(); assertThat(mViewHolder.mContainerLayout.hasOnClickListeners()).isFalse();
} }
@Test @Test