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:
mxyyiyi
2024-05-23 10:39:49 +08:00
parent 9c0654daea
commit 1d134d6665

View File

@@ -767,6 +767,10 @@ public class BatteryChartView extends AppCompatImageView implements View.OnClick
}
private class BatteryChartAccessibilityNodeProvider extends AccessibilityNodeProvider {
private static final int UNDEFINED = Integer.MIN_VALUE;
private int mAccessibilityFocusNodeViewId = UNDEFINED;
@Override
public AccessibilityNodeInfo createAccessibilityNodeInfo(int virtualViewId) {
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,
slotTimeInfo,
batteryLevelInfo));
childInfo.setAccessibilityFocused(virtualViewId == mAccessibilityFocusNodeViewId);
final Rect bounds = new Rect();
getBoundsOnScreen(bounds, true);
@@ -815,10 +820,14 @@ public class BatteryChartView extends AppCompatImageView implements View.OnClick
return true;
case AccessibilityNodeInfo.ACTION_ACCESSIBILITY_FOCUS:
mAccessibilityFocusNodeViewId = virtualViewId;
return sendAccessibilityEvent(
virtualViewId, AccessibilityEvent.TYPE_VIEW_ACCESSIBILITY_FOCUSED);
case AccessibilityNodeInfo.ACTION_CLEAR_ACCESSIBILITY_FOCUS:
if (mAccessibilityFocusNodeViewId == virtualViewId) {
mAccessibilityFocusNodeViewId = UNDEFINED;
}
return sendAccessibilityEvent(
virtualViewId,
AccessibilityEvent.TYPE_VIEW_ACCESSIBILITY_FOCUS_CLEARED);