我正在尝试制作一个简单的屏幕阅读器,例如对讲。但我在激活触摸探索模式这一步卡住了。
使用
flagRequestTouchExplorationMode
标志启用服务时,设备会在以下屏幕上冻结(就好像已禁用触摸):
我怀疑我必须手动处理导航,但我不知道该怎么做。
服务:
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:canRequestTouchExplorationMode="true"` 这使得服务仅监听 accessibility_gestures 如果您执行移动设备中的辅助功能手势它将给出相应的响应。希望有帮助