Add a11y focus on battery chart a11y node.
- Let Talkback annouce the a11y action `Double-tap to ativate`. Bug: 317001884 Test: Talkback Change-Id: Ic383c9639950eb6a69ed7b3e1537a5d95d18ea08
This commit is contained in:
@@ -767,6 +767,10 @@ public class BatteryChartView extends AppCompatImageView implements View.OnClick
|
|||||||
}
|
}
|
||||||
|
|
||||||
private class BatteryChartAccessibilityNodeProvider extends AccessibilityNodeProvider {
|
private class BatteryChartAccessibilityNodeProvider extends AccessibilityNodeProvider {
|
||||||
|
private static final int UNDEFINED = Integer.MIN_VALUE;
|
||||||
|
|
||||||
|
private int mAccessibilityFocusNodeViewId = UNDEFINED;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public AccessibilityNodeInfo createAccessibilityNodeInfo(int virtualViewId) {
|
public AccessibilityNodeInfo createAccessibilityNodeInfo(int virtualViewId) {
|
||||||
if (virtualViewId == AccessibilityNodeProvider.HOST_VIEW_ID) {
|
if (virtualViewId == AccessibilityNodeProvider.HOST_VIEW_ID) {
|
||||||
@@ -794,6 +798,7 @@ public class BatteryChartView extends AppCompatImageView implements View.OnClick
|
|||||||
R.string.battery_usage_time_info_and_battery_level,
|
R.string.battery_usage_time_info_and_battery_level,
|
||||||
slotTimeInfo,
|
slotTimeInfo,
|
||||||
batteryLevelInfo));
|
batteryLevelInfo));
|
||||||
|
childInfo.setAccessibilityFocused(virtualViewId == mAccessibilityFocusNodeViewId);
|
||||||
|
|
||||||
final Rect bounds = new Rect();
|
final Rect bounds = new Rect();
|
||||||
getBoundsOnScreen(bounds, true);
|
getBoundsOnScreen(bounds, true);
|
||||||
@@ -815,10 +820,14 @@ public class BatteryChartView extends AppCompatImageView implements View.OnClick
|
|||||||
return true;
|
return true;
|
||||||
|
|
||||||
case AccessibilityNodeInfo.ACTION_ACCESSIBILITY_FOCUS:
|
case AccessibilityNodeInfo.ACTION_ACCESSIBILITY_FOCUS:
|
||||||
|
mAccessibilityFocusNodeViewId = virtualViewId;
|
||||||
return sendAccessibilityEvent(
|
return sendAccessibilityEvent(
|
||||||
virtualViewId, AccessibilityEvent.TYPE_VIEW_ACCESSIBILITY_FOCUSED);
|
virtualViewId, AccessibilityEvent.TYPE_VIEW_ACCESSIBILITY_FOCUSED);
|
||||||
|
|
||||||
case AccessibilityNodeInfo.ACTION_CLEAR_ACCESSIBILITY_FOCUS:
|
case AccessibilityNodeInfo.ACTION_CLEAR_ACCESSIBILITY_FOCUS:
|
||||||
|
if (mAccessibilityFocusNodeViewId == virtualViewId) {
|
||||||
|
mAccessibilityFocusNodeViewId = UNDEFINED;
|
||||||
|
}
|
||||||
return sendAccessibilityEvent(
|
return sendAccessibilityEvent(
|
||||||
virtualViewId,
|
virtualViewId,
|
||||||
AccessibilityEvent.TYPE_VIEW_ACCESSIBILITY_FOCUS_CLEARED);
|
AccessibilityEvent.TYPE_VIEW_ACCESSIBILITY_FOCUS_CLEARED);
|
||||||
|
Reference in New Issue
Block a user