首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >检索TYPE_TOUCH和TYPE_GESTURE中的AccessibilityService

检索TYPE_TOUCH和TYPE_GESTURE中的AccessibilityService
EN

Stack Overflow用户
提问于 2018-06-01 21:15:55
回答 1查看 2K关注 0票数 0

我正在开发一个应用程序,它应该收集用户与安卓设备的交互(与触摸相关的数据),类似于这是如此的帖子

我尝试了所有的答案建议的方法,从一个应用程序覆盖和没有WATCH_OUTSIDE_TOUCH标志。对于我来说,getevent方法也不是一种选择,因为它需要根存储或外部存储(正如答案所述)。

所以我创建了一个AccessibilityService,现在我能够检测到这样的事件:VIEW_CLICKEDVIEW_SCROLLED。然而,在文档中,我也遇到了GESTURE_DETECTION_STARTGESTURE_DETECTION_ENDTOUCH_INTERACTION_STARTTOUCH_INTERACTION_END。我想用它们来测量互动时间。不幸的是,我的服务根本没有检索这个事件,尽管(?)配置。我的当前配置如下:

AndroidManifest.xml

代码语言:javascript
复制
...
<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

代码语言:javascript
复制
<?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" />

总之,我的服务正在正确地启动和检索一些事件,但它缺少手势和触摸开始/结束事件。我尝试过许多其他配置,包括启用了所有功能和标志,但没有任何效果。此外,我试图重写一个方法AccessibilityService::onGesture,但它从未被调用。此事件是否仅适用于触摸探索模式?

我已经描述了我的问题可能有点过于宽泛,但我希望得到任何帮助或建议,即使与AccessibilityService方法没有严格的关系。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-06-05 19:32:33

经过一番挣扎后,我发现了问题(或一组问题)是什么:

  • 我的accessibility_config.xml文件无效,因为它包含<?xml version="1.0" encoding="utf-8"?>标记,并且根据文档

此元数据必须引用包含标记的XML资源。

因此,我扣除了它需要这个,只有这个标签才能正确工作。

  • GESTURE_DETECTION_STARTGESTURE_DETECTION_ENDTOUCH_INTERACTION_STARTTOUCH_INTERACTION_END是只有在触摸探索模式下才能使用的事件。

所以android:canRequestTouchExplorationMode="true"android:accessibilityFlags="flagRequestTouchExplorationMode"在我的配置中丢失了。文档将这些事件登记在探测类型下。

编辑:共享最终的accessibility_settings.xml文件:

代码语言:javascript
复制
<accessibility-service xmlns:android="http://schemas.android.com/apk/res/android"
    android:accessibilityEventTypes="typeViewTextChanged|typeViewFocused|typeViewLongClicked|typeViewClicked|typeViewScrolled|typeWindowStateChanged"
    android:accessibilityFeedbackType="feedbackHaptic"
    android:accessibilityFlags="flagIncludeNotImportantViews"
    android:canRetrieveWindowContent="true"
    android:description="@string/accessibility_service_description"
    android:notificationTimeout="10"
    android:settingsActivity="org.example.ExampleActivity" />
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50651083

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档