如何在 AccessibilityService 上启用触摸探索模式

问题描述 投票:0回答:1

我正在尝试制作一个简单的屏幕阅读器,例如对讲。但我在激活触摸探索模式这一步卡住了。

使用

flagRequestTouchExplorationMode
标志启用服务时,设备会在以下屏幕上冻结(就好像已禁用触摸):

device frozen after activating service

我怀疑我必须手动处理导航,但我不知道该怎么做。

服务:

class ScreenReaderService : AccessibilityService() {

    override fun onAccessibilityEvent(event: AccessibilityEvent) {

    }

    override fun onInterrupt() {

    }
}

服务配置:

<accessibility-service xmlns:android="http://schemas.android.com/apk/res/android"
    android:accessibilityEventTypes="typeAllMask"
    android:accessibilityFeedbackType="feedbackSpoken|feedbackAudible|feedbackGeneric|feedbackHaptic"
    android:accessibilityFlags="flagDefault|flagRequestTouchExplorationMode|flagIncludeNotImportantViews"
    android:canRequestTouchExplorationMode="true"
    android:canRetrieveWindowContent="true"
    android:notificationTimeout="100" />

AndroidManifest:

...
<service
    android:name=".ScreenReaderService"
    android:exported="true"
    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/accessibility_service_config" />
</service>
...

我基于 android 文档

我希望它的表现或多或少像对讲。

编辑1:

我找到了对讲项目,我要去研究一下。

android kotlin accessibility android-service talkback
1个回答
0
投票

我遇到了同样的问题,但后来我明白设备没有冻结,它不处理正常的触摸手势,因为我设置了 android:canRequestTouchExplorationMode="true"` 这使得服务仅监听 accessibility_gestures 如果您执行移动设备中的辅助功能手势它将给出相应的响应。希望有帮助

© www.soinside.com 2019 - 2024. All rights reserved.