Merge "a11y edits to dnd dialog and volume ring toggle" into pi-dev
am: 478e0805a0
Change-Id: Iad1b606e04a9a27093eebfbce7eca8db1df87d4f
This commit is contained in:
committed by
android-build-merger
commit
92be8661c3
@@ -185,6 +185,7 @@ public class EnableZenModeDialog {
|
|||||||
@VisibleForTesting
|
@VisibleForTesting
|
||||||
protected void bind(final Condition condition, final View row, final int rowId) {
|
protected void bind(final Condition condition, final View row, final int rowId) {
|
||||||
if (condition == null) throw new IllegalArgumentException("condition must not be null");
|
if (condition == null) throw new IllegalArgumentException("condition must not be null");
|
||||||
|
|
||||||
final boolean enabled = condition.state == Condition.STATE_TRUE;
|
final boolean enabled = condition.state == Condition.STATE_TRUE;
|
||||||
final ConditionTag tag = row.getTag() != null ? (ConditionTag) row.getTag() :
|
final ConditionTag tag = row.getTag() != null ? (ConditionTag) row.getTag() :
|
||||||
new ConditionTag();
|
new ConditionTag();
|
||||||
@@ -207,7 +208,6 @@ public class EnableZenModeDialog {
|
|||||||
MetricsLogger.action(mContext,
|
MetricsLogger.action(mContext,
|
||||||
MetricsProto.MetricsEvent.QS_DND_CONDITION_SELECT);
|
MetricsProto.MetricsEvent.QS_DND_CONDITION_SELECT);
|
||||||
updateAlarmWarningText(tag.condition);
|
updateAlarmWarningText(tag.condition);
|
||||||
announceConditionSelection(tag);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@@ -328,6 +328,7 @@ public class EnableZenModeDialog {
|
|||||||
boolean enabled, int rowId, Uri conditionId) {
|
boolean enabled, int rowId, Uri conditionId) {
|
||||||
if (tag.lines == null) {
|
if (tag.lines == null) {
|
||||||
tag.lines = row.findViewById(android.R.id.content);
|
tag.lines = row.findViewById(android.R.id.content);
|
||||||
|
tag.lines.setAccessibilityLiveRegion(View.ACCESSIBILITY_LIVE_REGION_POLITE);
|
||||||
}
|
}
|
||||||
if (tag.line1 == null) {
|
if (tag.line1 == null) {
|
||||||
tag.line1 = (TextView) row.findViewById(android.R.id.text1);
|
tag.line1 = (TextView) row.findViewById(android.R.id.text1);
|
||||||
@@ -450,16 +451,6 @@ public class EnableZenModeDialog {
|
|||||||
bind(newCondition, row, rowId);
|
bind(newCondition, row, rowId);
|
||||||
updateAlarmWarningText(tag.condition);
|
updateAlarmWarningText(tag.condition);
|
||||||
tag.rb.setChecked(true);
|
tag.rb.setChecked(true);
|
||||||
announceConditionSelection(tag);
|
|
||||||
}
|
|
||||||
|
|
||||||
private void announceConditionSelection(ConditionTag tag) {
|
|
||||||
// condition will always be priority-only
|
|
||||||
String modeText = mContext.getString(R.string.zen_interruption_level_priority);
|
|
||||||
if (tag.line1 != null) {
|
|
||||||
mZenRadioGroupContent.announceForAccessibility(mContext.getString(
|
|
||||||
R.string.zen_mode_and_condition, modeText, tag.line1.getText()));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void updateAlarmWarningText(Condition condition) {
|
private void updateAlarmWarningText(Condition condition) {
|
||||||
|
|||||||
@@ -203,8 +203,14 @@ public class ZenDurationDialog {
|
|||||||
|
|
||||||
|
|
||||||
private void setupUi(ConditionTag tag, View row) {
|
private void setupUi(ConditionTag tag, View row) {
|
||||||
tag.lines = row.findViewById(android.R.id.content);
|
if (tag.lines == null) {
|
||||||
tag.line1 = (TextView) row.findViewById(android.R.id.text1);
|
tag.lines = row.findViewById(android.R.id.content);
|
||||||
|
tag.lines.setAccessibilityLiveRegion(View.ACCESSIBILITY_LIVE_REGION_POLITE);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (tag.line1 == null) {
|
||||||
|
tag.line1 = (TextView) row.findViewById(android.R.id.text1);
|
||||||
|
}
|
||||||
|
|
||||||
// text2 is not used in zen duration dialog
|
// text2 is not used in zen duration dialog
|
||||||
row.findViewById(android.R.id.text2).setVisibility(View.GONE);
|
row.findViewById(android.R.id.text2).setVisibility(View.GONE);
|
||||||
|
|||||||
@@ -1363,6 +1363,13 @@
|
|||||||
<string name="volume_stream_content_description_vibrate_a11y">%1$s. Tap to set to vibrate.</string>
|
<string name="volume_stream_content_description_vibrate_a11y">%1$s. Tap to set to vibrate.</string>
|
||||||
<string name="volume_stream_content_description_mute_a11y">%1$s. Tap to mute.</string>
|
<string name="volume_stream_content_description_mute_a11y">%1$s. Tap to mute.</string>
|
||||||
|
|
||||||
|
<!-- Hint for accessibility. For example: double tap to mute [CHAR_LIMIT=NONE] -->
|
||||||
|
<string name="volume_ringer_hint_mute">mute</string>
|
||||||
|
<!-- Hint for accessibility. For example: double tap to unmute [CHAR_LIMIT=NONE] -->
|
||||||
|
<string name="volume_ringer_hint_unmute">unmute</string>
|
||||||
|
<!-- Hint for accessibility. For example: double tap to vibrate [CHAR_LIMIT=NONE] -->
|
||||||
|
<string name="volume_ringer_hint_vibrate">vibrate</string>
|
||||||
|
|
||||||
<string name="volume_dialog_title">%s volume controls</string>
|
<string name="volume_dialog_title">%s volume controls</string>
|
||||||
|
|
||||||
<string name="volume_dialog_ringer_guidance_ring">Calls and notifications will ring (<xliff:g id="volume level" example="56">%1$s</xliff:g>)</string>
|
<string name="volume_dialog_ringer_guidance_ring">Calls and notifications will ring (<xliff:g id="volume level" example="56">%1$s</xliff:g>)</string>
|
||||||
|
|||||||
@@ -71,6 +71,7 @@ import android.view.Window;
|
|||||||
import android.view.WindowManager;
|
import android.view.WindowManager;
|
||||||
import android.view.accessibility.AccessibilityEvent;
|
import android.view.accessibility.AccessibilityEvent;
|
||||||
import android.view.accessibility.AccessibilityManager.AccessibilityServicesStateChangeListener;
|
import android.view.accessibility.AccessibilityManager.AccessibilityServicesStateChangeListener;
|
||||||
|
import android.view.accessibility.AccessibilityNodeInfo;
|
||||||
import android.view.animation.DecelerateInterpolator;
|
import android.view.animation.DecelerateInterpolator;
|
||||||
import android.widget.FrameLayout;
|
import android.widget.FrameLayout;
|
||||||
import android.widget.ImageButton;
|
import android.widget.ImageButton;
|
||||||
@@ -627,35 +628,32 @@ public class VolumeDialogImpl implements VolumeDialog {
|
|||||||
switch (mState.ringerModeInternal) {
|
switch (mState.ringerModeInternal) {
|
||||||
case AudioManager.RINGER_MODE_VIBRATE:
|
case AudioManager.RINGER_MODE_VIBRATE:
|
||||||
mRingerIcon.setImageResource(R.drawable.ic_volume_ringer_vibrate);
|
mRingerIcon.setImageResource(R.drawable.ic_volume_ringer_vibrate);
|
||||||
|
addAccessibilityDescription(mRingerIcon, RINGER_MODE_VIBRATE,
|
||||||
|
mContext.getString(R.string.volume_ringer_hint_mute));
|
||||||
mRingerIcon.setTag(Events.ICON_STATE_VIBRATE);
|
mRingerIcon.setTag(Events.ICON_STATE_VIBRATE);
|
||||||
break;
|
break;
|
||||||
case AudioManager.RINGER_MODE_SILENT:
|
case AudioManager.RINGER_MODE_SILENT:
|
||||||
mRingerIcon.setImageResource(R.drawable.ic_volume_ringer_mute);
|
mRingerIcon.setImageResource(R.drawable.ic_volume_ringer_mute);
|
||||||
mRingerIcon.setContentDescription(mContext.getString(
|
|
||||||
R.string.volume_stream_content_description_unmute,
|
|
||||||
getStreamLabelH(ss)));
|
|
||||||
mRingerIcon.setTag(Events.ICON_STATE_MUTE);
|
mRingerIcon.setTag(Events.ICON_STATE_MUTE);
|
||||||
|
addAccessibilityDescription(mRingerIcon, RINGER_MODE_SILENT,
|
||||||
|
mContext.getString(R.string.volume_ringer_hint_unmute));
|
||||||
break;
|
break;
|
||||||
case AudioManager.RINGER_MODE_NORMAL:
|
case AudioManager.RINGER_MODE_NORMAL:
|
||||||
default:
|
default:
|
||||||
boolean muted = (mAutomute && ss.level == 0) || ss.muted;
|
boolean muted = (mAutomute && ss.level == 0) || ss.muted;
|
||||||
if (!isZenMuted && muted) {
|
if (!isZenMuted && muted) {
|
||||||
mRingerIcon.setImageResource(R.drawable.ic_volume_ringer_mute);
|
mRingerIcon.setImageResource(R.drawable.ic_volume_ringer_mute);
|
||||||
mRingerIcon.setContentDescription(mContext.getString(
|
addAccessibilityDescription(mRingerIcon, RINGER_MODE_NORMAL,
|
||||||
R.string.volume_stream_content_description_unmute,
|
mContext.getString(R.string.volume_ringer_hint_unmute));
|
||||||
getStreamLabelH(ss)));
|
|
||||||
mRingerIcon.setTag(Events.ICON_STATE_MUTE);
|
mRingerIcon.setTag(Events.ICON_STATE_MUTE);
|
||||||
} else {
|
} else {
|
||||||
mRingerIcon.setImageResource(R.drawable.ic_volume_ringer);
|
mRingerIcon.setImageResource(R.drawable.ic_volume_ringer);
|
||||||
if (mController.hasVibrator()) {
|
if (mController.hasVibrator()) {
|
||||||
mRingerIcon.setContentDescription(mContext.getString(
|
addAccessibilityDescription(mRingerIcon, RINGER_MODE_NORMAL,
|
||||||
mShowA11yStream
|
mContext.getString(R.string.volume_ringer_hint_vibrate));
|
||||||
? R.string.volume_stream_content_description_vibrate_a11y
|
|
||||||
: R.string.volume_stream_content_description_vibrate,
|
|
||||||
getStreamLabelH(ss)));
|
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
mRingerIcon.setContentDescription(getStreamLabelH(ss));
|
addAccessibilityDescription(mRingerIcon, RINGER_MODE_NORMAL,
|
||||||
|
mContext.getString(R.string.volume_ringer_hint_mute));
|
||||||
}
|
}
|
||||||
mRingerIcon.setTag(Events.ICON_STATE_UNMUTE);
|
mRingerIcon.setTag(Events.ICON_STATE_UNMUTE);
|
||||||
}
|
}
|
||||||
@@ -664,6 +662,31 @@ public class VolumeDialogImpl implements VolumeDialog {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void addAccessibilityDescription(View view, int currState, String hintLabel) {
|
||||||
|
int currStateResId;
|
||||||
|
switch (currState) {
|
||||||
|
case RINGER_MODE_SILENT:
|
||||||
|
currStateResId = R.string.volume_ringer_status_silent;
|
||||||
|
break;
|
||||||
|
case RINGER_MODE_VIBRATE:
|
||||||
|
currStateResId = R.string.volume_ringer_status_vibrate;
|
||||||
|
break;
|
||||||
|
case RINGER_MODE_NORMAL:
|
||||||
|
default:
|
||||||
|
currStateResId = R.string.volume_ringer_status_normal;
|
||||||
|
}
|
||||||
|
|
||||||
|
view.setContentDescription(mContext.getString(currStateResId));
|
||||||
|
|
||||||
|
view.setAccessibilityDelegate(new AccessibilityDelegate() {
|
||||||
|
public void onInitializeAccessibilityNodeInfo(View host, AccessibilityNodeInfo info) {
|
||||||
|
super.onInitializeAccessibilityNodeInfo(host, info);
|
||||||
|
info.addAction(new AccessibilityNodeInfo.AccessibilityAction(
|
||||||
|
AccessibilityNodeInfo.ACTION_CLICK, hintLabel));
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Toggles enable state of views in a VolumeRow (not including seekbar or icon)
|
* Toggles enable state of views in a VolumeRow (not including seekbar or icon)
|
||||||
* Hides/shows zen icon
|
* Hides/shows zen icon
|
||||||
|
|||||||
Reference in New Issue
Block a user