Reputation: 354
I want to detect touch or swipe on phone's home screen. After detection i need to perform my action. I am using Accessibility service for this. But unable to detect touch or swipe on phone home screen. Can anyone please help me. Below is the my code
global_accessibility_service.xml
<accessibility-service xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:accessibilityEventTypes="typeAllMask"
android:accessibilityFeedbackType="feedbackAllMask"
android:accessibilityFlags="flagDefault"
android:canPerformGestures="true"
android:canRequestTouchExplorationMode="true"
android:canRetrieveWindowContent="true"
android:description="@string/accessibility_service_description"
android:notificationTimeout="100"
tools:ignore="UnusedAttribute" />
Service class
public class GlobalAccessibilityService extends AccessibilityService {
FrameLayout mLayout;
@SuppressLint("MissingPermission")
@Override
public void onCreate() {
}
@SuppressLint("InlinedApi")
@Override
protected void onServiceConnected() {
super.onServiceConnected();
}
@SuppressLint("SwitchIntDef")
@Override
public void onAccessibilityEvent(AccessibilityEvent event) {
final int eventType = event.getEventType();
String eventText = null;
switch (eventType) {
case AccessibilityEvent.TYPE_VIEW_CLICKED:
eventText = "Clicked: ";
break;
case AccessibilityEvent.TYPE_VIEW_FOCUSED:
eventText = "Focused: ";
break;
case AccessibilityEvent.TYPE_VIEW_ACCESSIBILITY_FOCUS_CLEARED:
eventText = "ACCESSIBILITY_FOCUS_CLEARED: ";
break;
case AccessibilityEvent.TYPE_VIEW_ACCESSIBILITY_FOCUSED:
eventText = "ACCESSIBILITY_FOCUS: ";
break;
case AccessibilityEvent.TYPE_VIEW_CONTEXT_CLICKED:
eventText = "CONTEXT_CLICKED: ";
break;
case AccessibilityEvent.TYPE_VIEW_HOVER_ENTER:
eventText = "HOVER_ENTER: ";
break;
case AccessibilityEvent.TYPE_VIEW_HOVER_EXIT:
eventText = "HOVER_EXIT: ";
break;
case AccessibilityEvent.TYPE_VIEW_LONG_CLICKED:
eventText = "LONG_CLICKED: ";
break;
case AccessibilityEvent.TYPE_VIEW_SCROLLED:
eventText = "SCROLLED: ";
break;
case AccessibilityEvent.TYPE_VIEW_SELECTED:
eventText = "SELECTED: ";
break;
case AccessibilityEvent.TYPE_VIEW_TEXT_CHANGED:
eventText = "TEXT_CHANGED: ";
break;
case AccessibilityEvent.TYPE_VIEW_TEXT_SELECTION_CHANGED:
eventText = "TEXT_SELECTION_CHANGED: ";
break;
case AccessibilityEvent.TYPE_VIEW_TEXT_TRAVERSED_AT_MOVEMENT_GRANULARITY:
eventText = "TRAVERSED_AT_MOVEMENT_GRANULARITY: ";
break;
case AccessibilityEvent.TYPE_ANNOUNCEMENT:
eventText = "ANNOUNCEMENT: ";
break;
case AccessibilityEvent.TYPES_ALL_MASK:
eventText = "ALL_MASK: ";
break;
case AccessibilityEvent.TYPE_WINDOW_STATE_CHANGED:
eventText = "WINDOW_STATE_CHANGED: ";
break;
case AccessibilityEvent.TYPE_WINDOW_CONTENT_CHANGED:
eventText = "WINDOW_CONTENT_CHANGED: ";
break;
case AccessibilityEvent.TYPE_TOUCH_INTERACTION_START:
eventText = "TOUCH_INTERACTION_START: ";
break;
case AccessibilityEvent.TYPE_TOUCH_INTERACTION_END:
eventText = "TOUCH_INTERACTION_END: ";
break;
case AccessibilityEvent.TYPE_TOUCH_EXPLORATION_GESTURE_START:
eventText = "TOUCH_EXPLORATION_GESTURE_START: ";
break;
case AccessibilityEvent.TYPE_TOUCH_EXPLORATION_GESTURE_END:
eventText = "TOUCH_EXPLORATION_GESTURE_END: ";
break;
}
eventText = eventText + event.getContentDescription();
}
@Override
public void onInterrupt() {
}
}
manifest
<service
android:name=".GlobalAccessibilityService"
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.accessibilityservice"
android:resource="@xml/global_accessibility_service" />
</service>
Upvotes: 1
Views: 822
Reputation: 21
No, it's not possible. We can't detect touch or swipe on home screen even via accessibility service.
Upvotes: 2