diff --git a/sky/shell/platform/android/org/domokit/sky/shell/FlutterSemanticsToAndroidAccessibilityBridge.java b/sky/shell/platform/android/org/domokit/sky/shell/FlutterSemanticsToAndroidAccessibilityBridge.java index 68b68445e950a98e579715df54f3c8ec94cda94d..7a56f747e74a6b5598425023c62d339979b72ae8 100644 --- a/sky/shell/platform/android/org/domokit/sky/shell/FlutterSemanticsToAndroidAccessibilityBridge.java +++ b/sky/shell/platform/android/org/domokit/sky/shell/FlutterSemanticsToAndroidAccessibilityBridge.java @@ -29,6 +29,7 @@ public class FlutterSemanticsToAndroidAccessibilityBridge extends AccessibilityN private Map mTreeNodes; private PlatformViewAndroid mOwner; private SemanticsServer.Proxy mSemanticsServer; + private boolean mAccessilibilyEnabled; private PersistentAccessibilityNode mFocusedNode; private PersistentAccessibilityNode mHoveredNode; @@ -41,6 +42,10 @@ public class FlutterSemanticsToAndroidAccessibilityBridge extends AccessibilityN mSemanticsServer.addSemanticsListener(this); } + public void setAccessibilityEnabled(boolean accessibilityEnabled) { + mAccessilibilyEnabled = accessibilityEnabled; + } + @Override public AccessibilityNodeInfo createAccessibilityNodeInfo(int virtualViewId) { @@ -213,6 +218,9 @@ public class FlutterSemanticsToAndroidAccessibilityBridge extends AccessibilityN } private void sendAccessibilityEvent(int virtualViewId, int eventType) { + if (!mAccessilibilyEnabled) { + return; + } if (virtualViewId == 0) { mOwner.sendAccessibilityEvent(eventType); } else { diff --git a/sky/shell/platform/android/org/domokit/sky/shell/PlatformViewAndroid.java b/sky/shell/platform/android/org/domokit/sky/shell/PlatformViewAndroid.java index 878d6ceaa78ff43d7fdef9016c5045bf054fcf7d..0e6bff6a40db201709642a6afe0c9964f3fb6094 100644 --- a/sky/shell/platform/android/org/domokit/sky/shell/PlatformViewAndroid.java +++ b/sky/shell/platform/android/org/domokit/sky/shell/PlatformViewAndroid.java @@ -342,13 +342,15 @@ public class PlatformViewAndroid extends SurfaceView // ACCESSIBILITY + private boolean mAccessibilityEnabled = false; private boolean mTouchExplorationEnabled = false; @Override protected void onAttachedToWindow() { super.onAttachedToWindow(); + mAccessibilityEnabled = mAccessibilityManager.isEnabled(); mTouchExplorationEnabled = mAccessibilityManager.isTouchExplorationEnabled(); - if (mAccessibilityManager.isEnabled() || mTouchExplorationEnabled) + if (mAccessibilityEnabled || mTouchExplorationEnabled) ensureAccessibilityEnabled(); mAccessibilityManager.addAccessibilityStateChangeListener(this); mAccessibilityManager.addTouchExplorationStateChangeListener(this); @@ -356,8 +358,15 @@ public class PlatformViewAndroid extends SurfaceView @Override public void onAccessibilityStateChanged(boolean enabled) { - if (enabled) + if (enabled) { + mAccessibilityEnabled = true; ensureAccessibilityEnabled(); + } else { + mAccessibilityEnabled = false; + } + if (mAccessibilityNodeProvider != null) { + mAccessibilityNodeProvider.setAccessibilityEnabled(mAccessibilityEnabled); + } } @Override