diff --git a/api/current.txt b/api/current.txt
index 4f8938639e322..2802062433826 100644
--- a/api/current.txt
+++ b/api/current.txt
@@ -37464,6 +37464,7 @@ package android.view.accessibility {
field public static final deprecated int MAX_TEXT_LENGTH = 500; // 0x1f4
field public static final int TYPES_ALL_MASK = -1; // 0xffffffff
field public static final int TYPE_ANNOUNCEMENT = 16384; // 0x4000
+ field public static final int TYPE_ASSIST_READING_CONTEXT = 16777216; // 0x1000000
field public static final int TYPE_GESTURE_DETECTION_END = 524288; // 0x80000
field public static final int TYPE_GESTURE_DETECTION_START = 262144; // 0x40000
field public static final int TYPE_NOTIFICATION_STATE_CHANGED = 64; // 0x40
diff --git a/api/system-current.txt b/api/system-current.txt
index 4a665dc3a21e6..5713af21c413b 100644
--- a/api/system-current.txt
+++ b/api/system-current.txt
@@ -39762,6 +39762,7 @@ package android.view.accessibility {
field public static final deprecated int MAX_TEXT_LENGTH = 500; // 0x1f4
field public static final int TYPES_ALL_MASK = -1; // 0xffffffff
field public static final int TYPE_ANNOUNCEMENT = 16384; // 0x4000
+ field public static final int TYPE_ASSIST_READING_CONTEXT = 16777216; // 0x1000000
field public static final int TYPE_GESTURE_DETECTION_END = 524288; // 0x80000
field public static final int TYPE_GESTURE_DETECTION_START = 262144; // 0x40000
field public static final int TYPE_NOTIFICATION_STATE_CHANGED = 64; // 0x40
diff --git a/core/java/android/view/accessibility/AccessibilityEvent.java b/core/java/android/view/accessibility/AccessibilityEvent.java
index 87706ef64a551..1464bb5cff970 100644
--- a/core/java/android/view/accessibility/AccessibilityEvent.java
+++ b/core/java/android/view/accessibility/AccessibilityEvent.java
@@ -688,6 +688,11 @@ public final class AccessibilityEvent extends AccessibilityRecord implements Par
*/
public static final int TYPE_VIEW_CONTEXT_CLICKED = 0x00800000;
+ /**
+ * Represents the event of the assistant currently reading the users screen context.
+ */
+ public static final int TYPE_ASSIST_READING_CONTEXT = 0x01000000;
+
/**
* Change type for {@link #TYPE_WINDOW_CONTENT_CHANGED} event:
* The type of change is not defined.
@@ -1413,6 +1418,13 @@ public final class AccessibilityEvent extends AccessibilityRecord implements Par
}
builder.append("TYPE_VIEW_CONTEXT_CLICKED");
eventTypeCount++;
+ }
+ case TYPE_ASSIST_READING_CONTEXT: {
+ if (eventTypeCount > 0) {
+ builder.append(", ");
+ }
+ builder.append("TYPE_ASSIST_READING_CONTEXT");
+ eventTypeCount++;
}
break;
}
diff --git a/core/res/res/values/attrs.xml b/core/res/res/values/attrs.xml
index fd47d49df4710..b1925ba2bc63c 100644
--- a/core/res/res/values/attrs.xml
+++ b/core/res/res/values/attrs.xml
@@ -3124,6 +3124,8 @@ i
+
+
diff --git a/packages/SystemUI/src/com/android/systemui/assist/AssistDisclosure.java b/packages/SystemUI/src/com/android/systemui/assist/AssistDisclosure.java
index 585f9ba63fce7..c3a8f2e73d78a 100644
--- a/packages/SystemUI/src/com/android/systemui/assist/AssistDisclosure.java
+++ b/packages/SystemUI/src/com/android/systemui/assist/AssistDisclosure.java
@@ -32,6 +32,7 @@ import android.graphics.PorterDuffXfermode;
import android.os.Handler;
import android.view.View;
import android.view.WindowManager;
+import android.view.accessibility.AccessibilityEvent;
import android.view.animation.AnimationUtils;
/**
@@ -166,6 +167,7 @@ public class AssistDisclosure {
super.onAttachedToWindow();
startAnimation();
+ sendAccessibilityEvent(AccessibilityEvent.TYPE_ASSIST_READING_CONTEXT);
}
@Override
diff --git a/services/accessibility/java/com/android/server/accessibility/AccessibilityManagerService.java b/services/accessibility/java/com/android/server/accessibility/AccessibilityManagerService.java
index 7bcbcfb5427ec..57769e709bc3a 100644
--- a/services/accessibility/java/com/android/server/accessibility/AccessibilityManagerService.java
+++ b/services/accessibility/java/com/android/server/accessibility/AccessibilityManagerService.java
@@ -3351,6 +3351,8 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub {
case AccessibilityEvent.TYPE_TOUCH_INTERACTION_END:
case AccessibilityEvent.TYPE_VIEW_HOVER_ENTER:
case AccessibilityEvent.TYPE_VIEW_HOVER_EXIT:
+ // Also always dispatch the event that assist is reading context.
+ case AccessibilityEvent.TYPE_ASSIST_READING_CONTEXT:
// Also windows changing should always be anounced.
case AccessibilityEvent.TYPE_WINDOWS_CHANGED: {
return true;