Assuming you have setup your AndroidManifest
to recognise an AccessibilityService
, I am adding the other required code here just in case someone wants a direct answer.
Accessibility service configuration file:
<?xml version="1.0" encoding="utf-8"?>
<accessibility-service xmlns:android= "http://schemas.android.com/apk/res/android"
android:description="@string/accessibility_service_description"
android:accessibilityEventTypes="typeWindowStateChanged|typeViewTextChanged"
android:accessibilityFlags="flagDefault"
android:accessibilityFeedbackType="feedbackSpoken"
android:notificationTimeout="100"
android:canRetrieveWindowContent="true"
android:settingsActivity="com.example.android.accessibility.ServiceSettingsActivity"/>
Note the android:accessibilityEventTypes
are as needed. If you limit the package in xml you won't get the TYPE_WINDOW_STATE_CHANGED
as rightly pointed out in the question.
So, you also need to make changes in your implementation of the AccessibilityService
.
public class VoiceAccessibilityService extends android.accessibilityservice.AccessibilityService {
private static String TAG = VoiceAccessibilityService.class.getName();
@Override
public void onAccessibilityEvent(AccessibilityEvent event) {
if (event.getEventType() == AccessibilityEvent.TYPE_VIEW_TEXT_CHANGED && event.getPackageName().equals("Your package names")) {
Logger.d(TAG + " SHOW " + event.toString());
}
}
@Override
public void onInterrupt() {
Logger.d(TAG + " interrupt");
}
}
Hope it helps!