标签: android-accessibility

使用帮助辅助功能服务在其他应用程序上绘制视图的多个应用程序无法同时运行

我在设备上的两个不同应用程序中有两个辅助功能服务.他们每个人都对其他应用程序有一些看法.我面临以下问题:当启用2个辅助功能服务时,只有一个绘制视图,另一个不会获得任何事件.

事件配置如下:

 @Override
 protected void onServiceConnected() {
    AccessibilityServiceInfo info = new AccessibilityServiceInfo();
    info.eventTypes = AccessibilityEvent.TYPE_WINDOW_STATE_CHANGED;
    info.feedbackType = AccessibilityEvent.TYPES_ALL_MASK;
    info.notificationTimeout = TIMEOUT_IN_MS;
    setServiceInfo(info);
    super.onServiceConnected();
 }
Run Code Online (Sandbox Code Playgroud)

我可以在前Lollipop Android版本上重现它,也可以在Android M上重现.在Android O和N上,所有服务都可以正常工作.

有人可以向我解释它是如何发生的,也许从Android N开始有一些改进吗?如果有办法让它们同时工作,你能不能给我一个实现呢?

android accessibilityservice android-accessibility

5
推荐指数
1
解决办法
126
查看次数

根本没有调用onAccessibilityEvent

我正在努力实现一个AccessibilityService.我在下面分享了我的代码.当我从设置菜单打开我的辅助功能服务然后onServiceConnected()被调用但onAccessibiltyEvent()根本没有被调用.请指导我这个.

清单文件中的服务声明.

<service
            android:name=".MyAccessibilityService"
            android:enabled="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>
Run Code Online (Sandbox Code Playgroud)

XML文件

<accessibility-service xmlns:android="http://schemas.android.com/apk/res/android"
    android:description="@string/accessibility_service_description"
    android:accessibilityEventTypes="typeAllMask"
    android:canRequestFilterKeyEvents="true"
    android:accessibilityFlags="flagDefault"

    android:notificationTimeout="100"
    android:canRetrieveWindowContent="true"
    />
Run Code Online (Sandbox Code Playgroud)

MyAccessibiltyService.java

public class MyAccessibilityService extends AccessibilityService {


    @Override
    protected void onServiceConnected() {
        super.onServiceConnected();
        Log.d(TAG,"Service Connected");

    }

    @Override
    public void onAccessibilityEvent(AccessibilityEvent event) {
        System.out.println("Event Occurred");
        Log.d(TAG, "onAccessibilityEvent: event=" + event);
        AccessibilityNodeInfo nodeInfo = event.getSource();
        if (null == nodeInfo) return;


    }

    @Override
    public void onInterrupt() {
        Log.d(TAG,"Accessibility Interrupted" );

    } …
Run Code Online (Sandbox Code Playgroud)

android accessibility accessibility-api accessibilityservice android-accessibility

4
推荐指数
3
解决办法
2834
查看次数

如何让TalkBack自动读取TextView错误信息?

我目前正在使我的应用程序可访问,我的EditTexts有问题:

在每个EditText中,用户的输入在某个时刻被验证(例如,在按下按钮之后),如果输入无效,我会显示错误editText.setError("message").问题是如果TalkBack打开,它将不会自动聚焦并读取错误.此外,由于我无法得到错误的视图,我不能要求TalkBack通过它来关注它sendAccessibilityEvent.

我会很感激有关如何在仍然使用时解决此问题的任何想法editText.setError().

编辑1为@Abhishek V解决方案添加了代码:

public class BaseEditText extends EditText {

    ...
    ...

    @Override
    public void setError(CharSequence error) {
        super.setError(error);
        announceForAccessibility(error);
    }
}
Run Code Online (Sandbox Code Playgroud)

android accessibility textview talkback android-accessibility

4
推荐指数
1
解决办法
1610
查看次数

未通过 adb shell 启用对讲

我已经尝试adb shell settings put secure enabled_accessibility_services com.android.talkback/com.google.android.marvin.talkback.TalkBackService过从 adb shell 启用对讲的命令。它正在切换表示对讲状态的 ui 按钮,但实际上并没有启用对讲。我正在尝试以编程方式为 android 6.0 启用对讲。有没有其他彻底的方法可以启用它?

settings automation accessibilityservice talkback android-accessibility

4
推荐指数
2
解决办法
3631
查看次数

如何告诉TalkBack自定义视图被用作按钮

我正在使用自定义视图作为Android上的按钮,它不会继承android.widget.Button.告诉辅助服务这是一个按钮的最佳方式是什么?

只是打电话setClickable(true)给视图就够了吗?

使用标准Button,TalkBack附加单词"按钮"作为提示,但使用自定义视图它不会这样做.我应该在某处添加单词"button"作为提示吗?

在iOS上,我会在视图中添加一个"trait"按钮,而VoiceOver会将其作为按钮进行宣传.Android上有类似的东西吗?

android accessibility accessibilityservice talkback android-accessibility

3
推荐指数
1
解决办法
1128
查看次数

Android AccessibilityService getEventTime() 时间格式

AccessibilityService在 Android 7 上使用。可以AccessibilityEvent通过调用getEventTime(). 根据文档,此方法“获取发送此事件的时间”。

有人知道返回值getEventTime()是指什么吗?它似乎不是 Unix 时间。

android accessibilityservice android-accessibility

3
推荐指数
1
解决办法
359
查看次数

AccessibilityService 在真实设备上不起作用

我按照以下文档创建了一个 AccessibilityService:https : //developer.android.com/reference/android/accessibilityservice/AccessibilityService.html

我认为没有必要在此处复制代码,因为我一步一步地完成了所有操作,并且它在我尝试过的所有模拟器上都可以正常工作(在 19-25 个 API 之间),但在我的真实设备上却无法正常工作(API 25) . 在真实设备上,永远不会调用 onServiceConnected 方法。这是我拥有的唯一真正的设备。我可以尝试什么?什么会导致这个问题?

编辑:现在我已经在不同的真实设备(Android 4.4)上尝试过,它也适用。现在我真的很困惑。

android accessibilityservice android-accessibility

0
推荐指数
1
解决办法
882
查看次数

如何自动为Android启用辅助功能设置

我正在为我的应用程序使用AccessibilityService.问题是我需要手动从辅助功能设置启用它,有没有办法自动执行此操作,以便我的应用程序的用户不需要手动执行此操作?

android accessibilityservice android-accessibility

0
推荐指数
1
解决办法
753
查看次数