Add volume dialog icons specific for tv
We add 3 new volume icons - when tv is muted, when the volume is low and when it is high. The threshold between low and high is 12 (i.e. maxVolume / 2). We introduce a new config - config_show_low_media_volume_icon. By default this is disabled. Only for tv it is enabled. The low volume icon for non-tv devices is the same as the normal media volume icon (ic_volume_media). Therefore, if the config is enabled on a non-tv device, there would be no visible change. Test: m && flash && check new icons are in place Change-Id: I07ffc24312a5aa59dc491f967042d4cb3685e101
This commit is contained in:
@@ -0,0 +1,26 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!--
|
||||
Copyright (C) 2020 The Android Open Source Project
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License
|
||||
-->
|
||||
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="24dp"
|
||||
android:height="24dp"
|
||||
android:viewportWidth="24.0"
|
||||
android:viewportHeight="24.0">
|
||||
<path
|
||||
android:fillColor="@color/tv_volume_dialog_accent"
|
||||
android:pathData="M3,9v6h4l5,5L12,4L7,9L3,9zM16.5,12c0,-1.77 -1.02,-3.29 -2.5,-4.03v8.05c1.48,-0.73 2.5,-2.25 2.5,-4.02zM14,3.23v2.06c2.89,0.86 5,3.54 5,6.71s-2.11,5.85 -5,6.71v2.06c4.01,-0.91 7,-4.49 7,-8.77s-2.99,-7.86 -7,-8.77z"/>
|
||||
</vector>
|
||||
@@ -0,0 +1,26 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!--
|
||||
Copyright (C) 2020 The Android Open Source Project
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License
|
||||
-->
|
||||
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="24dp"
|
||||
android:height="24dp"
|
||||
android:viewportWidth="24.0"
|
||||
android:viewportHeight="24.0">
|
||||
<path
|
||||
android:fillColor="@color/tv_volume_dialog_accent"
|
||||
android:pathData="M3,15V9H7L12,4V20L7,15H3ZM14,7.97C15.48,8.71 16.5,10.23 16.5,12C16.5,13.77 15.48,15.29 14,16.02V7.97Z"/>
|
||||
</vector>
|
||||
@@ -0,0 +1,27 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!--
|
||||
Copyright (C) 2020 The Android Open Source Project
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License
|
||||
-->
|
||||
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="24dp"
|
||||
android:height="24dp"
|
||||
android:viewportWidth="24.0"
|
||||
android:viewportHeight="24.0">
|
||||
<path
|
||||
android:fillColor="@color/tv_volume_dialog_accent"
|
||||
android:pathData="M16.5,12c0,-1.77 -1.02,-3.29 -2.5,-4.03v2.21l2.45,2.45c0.03,-0.2 0.05,-0.41 0.05,-0.63zM19,12c0,0.94 -0.2,1.82 -0.54,2.64l1.51,1.51C20.63,14.91 21,13.5 21,12c0,-4.28 -2.99,-7.86 -7,-8.77v2.06c2.89,0.86 5,3.54 5,6.71zM4.27,3L3,4.27 7.73,9L3,9v6h4l5,5v-6.73l4.25,4.25c-0.67,0.52 -1.42,0.93 -2.25,1.18v2.06c1.38,-0.31 2.63,-0.95 3.69,-1.81L19.73,21 21,19.73l-9,-9L4.27,3zM12,4L9.91,6.09 12,8.18L12,4z"/>
|
||||
</vector>
|
||||
|
||||
18
packages/SystemUI/res/drawable/ic_volume_media_low.xml
Normal file
18
packages/SystemUI/res/drawable/ic_volume_media_low.xml
Normal file
@@ -0,0 +1,18 @@
|
||||
<!--
|
||||
Copyright (C) 2020 The Android Open Source Project
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
-->
|
||||
<selector xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<item android:drawable="@drawable/ic_volume_media" />
|
||||
</selector>
|
||||
@@ -43,4 +43,7 @@
|
||||
<item>com.android.systemui.toast.ToastUI</item>
|
||||
<item>com.android.systemui.onehanded.OneHandedUI</item>
|
||||
</string-array>
|
||||
|
||||
<!-- Show a separate icon for low and high volume on the volume dialog -->
|
||||
<bool name="config_showLowMediaVolumeIcon">true</bool>
|
||||
</resources>
|
||||
|
||||
@@ -578,4 +578,6 @@
|
||||
<!-- Animation duration for translating of one handed when trigger / dismiss. -->
|
||||
<integer name="config_one_handed_translate_animation_duration">150</integer>
|
||||
|
||||
<!-- Show a separate icon for low and high volume on the volume dialog -->
|
||||
<bool name="config_showLowMediaVolumeIcon">false</bool>
|
||||
</resources>
|
||||
|
||||
@@ -150,6 +150,8 @@ public class VolumeDialogImpl implements VolumeDialog,
|
||||
private boolean mShowing;
|
||||
private boolean mShowA11yStream;
|
||||
|
||||
private final boolean mShowLowMediaVolumeIcon;
|
||||
|
||||
private int mActiveStream;
|
||||
private int mPrevActiveStream;
|
||||
private boolean mAutomute = VolumePrefs.DEFAULT_ENABLE_AUTOMUTE;
|
||||
@@ -175,6 +177,8 @@ public class VolumeDialogImpl implements VolumeDialog,
|
||||
mShowActiveStreamOnly = showActiveStreamOnly();
|
||||
mHasSeenODICaptionsTooltip =
|
||||
Prefs.getBoolean(context, Prefs.Key.HAS_SEEN_ODI_CAPTIONS_TOOLTIP, false);
|
||||
mShowLowMediaVolumeIcon =
|
||||
mContext.getResources().getBoolean(R.bool.config_showLowMediaVolumeIcon);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -1025,19 +1029,28 @@ public class VolumeDialogImpl implements VolumeDialog,
|
||||
final boolean iconEnabled = (mAutomute || ss.muteSupported) && !zenMuted;
|
||||
row.icon.setEnabled(iconEnabled);
|
||||
row.icon.setAlpha(iconEnabled ? 1 : 0.5f);
|
||||
final int iconRes =
|
||||
isRingVibrate ? R.drawable.ic_volume_ringer_vibrate
|
||||
: isRingSilent || zenMuted ? row.iconMuteRes
|
||||
: ss.routedToBluetooth
|
||||
? isStreamMuted(ss) ? R.drawable.ic_volume_media_bt_mute
|
||||
: R.drawable.ic_volume_media_bt
|
||||
: isStreamMuted(ss) ? row.iconMuteRes : row.iconRes;
|
||||
final int iconRes;
|
||||
if (isRingVibrate) {
|
||||
iconRes = R.drawable.ic_volume_ringer_vibrate;
|
||||
} else if (isRingSilent || zenMuted) {
|
||||
iconRes = row.iconMuteRes;
|
||||
} else if (ss.routedToBluetooth) {
|
||||
iconRes = isStreamMuted(ss) ? R.drawable.ic_volume_media_bt_mute
|
||||
: R.drawable.ic_volume_media_bt;
|
||||
} else if (isStreamMuted(ss)) {
|
||||
iconRes = row.iconMuteRes;
|
||||
} else {
|
||||
iconRes = mShowLowMediaVolumeIcon && ss.level * 2 < (ss.levelMax + ss.levelMin)
|
||||
? R.drawable.ic_volume_media_low : row.iconRes;
|
||||
}
|
||||
|
||||
row.icon.setImageResource(iconRes);
|
||||
row.iconState =
|
||||
iconRes == R.drawable.ic_volume_ringer_vibrate ? Events.ICON_STATE_VIBRATE
|
||||
: (iconRes == R.drawable.ic_volume_media_bt_mute || iconRes == row.iconMuteRes)
|
||||
? Events.ICON_STATE_MUTE
|
||||
: (iconRes == R.drawable.ic_volume_media_bt || iconRes == row.iconRes)
|
||||
: (iconRes == R.drawable.ic_volume_media_bt || iconRes == row.iconRes
|
||||
|| iconRes == R.drawable.ic_volume_media_low)
|
||||
? Events.ICON_STATE_UNMUTE
|
||||
: Events.ICON_STATE_UNKNOWN;
|
||||
if (iconEnabled) {
|
||||
|
||||
Reference in New Issue
Block a user