Rahul Arora
Rahul Arora

Reputation: 354

Detect Touch or Swipe on Android Phone Home Screen

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

Answers (1)

David
David

Reputation: 21

No, it's not possible. We can't detect touch or swipe on home screen even via accessibility service.

Upvotes: 2

Related Questions