I am developing an application which is supposed to collect user's interaction with Android device (touch related data) similar to this SO post.
I've tried all of the answer's suggested approaches starting from an app overlay with and without WATCH_OUTSIDE_TOUCH
flag. getevent
approach is also not an option for me as it requires root or external storage (as the answer states).
So I've created an AccessibilityService
and now I am able to detect such events as: VIEW_CLICKED
, VIEW_SCROLLED
. However in the documentation I've encountered also GESTURE_DETECTION_START
, GESTURE_DETECTION_END
, TOUCH_INTERACTION_START
and TOUCH_INTERACTION_END
. I would like to use them to measure the interaction time. Unfortunately my service is not retrieving this events at all despite proper (?) configuration. My current configuration looks like:
AndroidManifest.xml:
...
<service
android:name=".accessibility.MyAccessibilityService"
android:label="@string/accessibility_service_label"
android:permission="android.permission.BIND_ACCESSIBILITY_SERVICE">
<intent-filter>
<action android:name="android.accessibilityservice.AccessibilityService" />
</intent-filter>
<meta-data
android:name="android.accessibilityervice"
android:resource="@xml/accessibility_config" />
</service>
...
accessibility_config.xml:
<?xml version="1.0" encoding="utf-8"?>
<accessibility-service xmlns:android="http://schemas.android.com/apk/res/android"
android:accessibilityEventTypes="typeAllMask"
android:accessibilityFeedbackType="feedbackAllMask"
android:description="@string/accessibility_service_description"
android:notificationTimeout="5"
android:summary="@string/accessibility_service_description" />
Summing up, my service is starting and retrieving some events properly, but it lacks gesture and touch start/end events. I've tried many other configurations including all capabilities and flags enabled but without any effect. Also I tried overriding a method AccessibilityService::onGesture
but it's never called. Are this events available only in touch exploration mode?
I've described my problem maybe a little too broad, but I would appreciate any help or suggestions even not related strictly to AccessibilityService approach.