【问题标题】:Android - onGesture method not getting called in AccessibilityServiceAndroid - 在 AccessibilityService 中未调用 onGesture 方法
【发布时间】:2017-12-20 14:59:54
【问题描述】:

这是我的无障碍资源的元数据资源:

<accessibility-service xmlns:android="http://schemas.android.com/apk/res/android"
android:accessibilityFeedbackType="feedbackAllMask"
android:accessibilityEventTypes="typeAllMask"
android:accessibilityFlags="flagIncludeNotImportantViews"
android:canRetrieveWindowContent="true"
android:canRequestTouchExplorationMode="true"
android:canRequestFilterKeyEvents="true"
/>

我的无障碍服务类代码

public class MyAccessibilityService extends AccessibilityService {

@Override
protected void onServiceConnected() {
    super.onServiceConnected();
    Log.d("caller","service connected");
}

@Override
public void onAccessibilityEvent(AccessibilityEvent accessibilityEvent) {
    Log.d("caller","onAccessibilityEvent Called");
}
@Override
protected boolean onGesture(int gestureId) {
    Log.d("caller","on guesture called");
    return super.onGesture(gestureId);
}

我尝试将 accessebilityFlags 设置为 flagRequestFingerprintGestures 仍然没有用。

【问题讨论】:

    标签: android android-service accessibilityservice


    【解决方案1】:

    手势事件仅在触摸探索模式下发送。我看到您在 xml 中启用了此功能,但我没有看到您实际请求启用它的代码。

    这是您需要添加到 xml 中的标志

    android:accessibilityFlags="flagIncludeNotImportantViews|flagRequestTouchExplorationMode"
    

    【讨论】:

    • OK,但是点击事件不会触发到android。此代码使触摸屏被阻止。如何让事件和手势传递和捕捉
    • 如何通过透明层获取触摸事件,并让它们传播到下面的视图。(不消耗事件)
    • onGesture 消费事件,这就是问题所在。如何让它不消耗
    • 这是一个不同的问题!问它并链接它。
    • @Duna 学习一些 OOP 的基础知识,仔细看看 onGesture 的返回类型 return super.onGesture(gestureId);
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-08
    • 1970-01-01
    相关资源
    最近更新 更多