Merge "[Output Switcher] Allow volume adjustment for Guest" into udc-dev
This commit is contained in:
@@ -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"
|
||||||
|
|||||||
@@ -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) {
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user