【问题标题】:Detect Touch or Swipe on Android Phone Home Screen在 Android 手机主屏幕上检测触摸或滑动
【发布时间】:2019-03-14 09:32:54
【问题描述】:

我想检测手机主屏幕上的触摸或滑动。检测后我需要执行我的操作。我为此使用辅助功能服务。但无法检测到手机主屏幕上的触摸或滑动。谁能帮帮我吗。下面是我的代码

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" />

服务类

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() {

   }
}

清单

<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>

【问题讨论】:

    标签: android touch swipe accessibilityservice


    【解决方案1】:

    不,这是不可能的。即使通过无障碍服务,我们也无法检测到主屏幕上的触摸或滑动。

    【讨论】:

      猜你喜欢
      • 2018-05-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-03-02
      • 2016-01-15
      • 1970-01-01
      • 2022-08-08
      • 1970-01-01
      相关资源
      最近更新 更多