标签: android-a11y

Android中的辅助功能实现问题

我正在开发查看书籍的应用程序.有一个显示书籍的屏幕(活动).它具有自定义视图,类似于ViewSwitcher,每个页面都是由自定义视图呈现的位图.

现在我应该实现辅助功能 - 书应该通过电话(音频)读取.

我在这里阅读了"辅助功能"部分https://developer.android.com/guide/topics/ui/accessibility/index.html但这还不够清楚.

我使用SupportLibrary进行可访问性管理,现在我在ViewGroup(管理书页)中使用了此代码.代码1:

private class EditionPagesViewSwitcherAccessibilityDelegate extends AccessibilityDelegateCompat {

    private int mPageCount;
    private double[] mPageRange;

    @Override
    public void onInitializeAccessibilityEvent(final View host, final AccessibilityEvent event) {
        super.onInitializeAccessibilityEvent(host, event);
        event.setClassName(EditionPagesViewSwitcher.class.getName());
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.ICE_CREAM_SANDWICH) {
            event.setScrollable(canScroll());
        }
        if (event.getEventType() == AccessibilityEventCompat.TYPE_VIEW_SCROLLED && updatePageValues()) {
            event.setItemCount(mPageCount);
            // we use +1 because of user friendly numbers (from 1 not 0)
            event.setFromIndex((int) (mPageRange[0] + 1));
            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.ICE_CREAM_SANDWICH) {
                event.setToIndex((int) (mPageRange[1] + 1));
            }
        }
    }

    @Override …
Run Code Online (Sandbox Code Playgroud)

android accessibility android-a11y

27
推荐指数
1
解决办法
2214
查看次数

辅助功能和Android WebView

是否为Android WebView启用了辅助功能?任何人都可以告诉如何使WebView可访问?

android accessibility webview android-a11y

22
推荐指数
2
解决办法
1万
查看次数

检测Android上是否启用了"大文本"辅助功能选项

如何以编程方式检测Android上是否启用了"大文本"辅助功能选项?

android accessibility android-a11y

15
推荐指数
1
解决办法
2431
查看次数

修改辅助功能焦点顺序

是否可以更改辅助功能焦点顺序?例如,如果我有3个视图并排,使用ids view1,view2和view3,当用户从view1向右滑动时,是否有一种简单的方法可以将辅助功能焦点转到view3?

这是我尝试过的:

我在线性布局中有以下内容.

<ImageView
    android:layout_width="30dp"
    android:layout_height="30dp"
    android:id="@+id/imageView"
    android:focusable="true"
    android:nextFocusUp="@+id/imageView3"
    android:nextFocusDown="@+id/imageView3"
    android:nextFocusRight="@+id/imageView3"
    android:nextFocusLeft="@+id/imageView3"
    android:nextFocusForward="@+id/imageView3"
    android:src="@drawable/ic_launcher"/>

<ImageView
    android:layout_width="30dp"
    android:layout_height="30dp"
    android:id="@+id/imageView2"
    android:focusable="true"
    android:src="@drawable/ic_launcher"/>

<ImageView
    android:layout_width="30dp"
    android:layout_height="30dp"
    android:id="@+id/imageView3"
    android:focusable="true"
    android:nextFocusUp="@+id/imageView2"
    android:nextFocusDown="@+id/imageView2"
    android:nextFocusRight="@+id/imageView2"
    android:nextFocusLeft="@+id/imageView2"
    android:nextFocusForward="@+id/imageView2"
    android:src="@drawable/ic_launcher"/>
Run Code Online (Sandbox Code Playgroud)

然后,我启动它并将可访问性焦点放在第一个imageView上.在向右滑动以移动到下一个项目时,我希望它将可访问性焦点移动到imageView3,而是转到imageView2.

android accessibility android-a11y

12
推荐指数
1
解决办法
1万
查看次数

Facebook messenger可访问性

我正在编写一个辅助功能应用程序,它可以帮助用户使用语音控件和通过外部辅助工具提供的控件来浏览Android.它使用MonkeyTalk Java API来完成更重的工作.
为了帮助用户了解正在发生的事情,我们还使用了辅助功能服务,该服务会读取通知,以便用户可以更快地采取措施.

我被告知,当消息到达facebook messenger时,他们没有得到音频提示,并且检查日志我看到的是:

D/NotificationService(2665): package com.facebook.orcaText: []
Run Code Online (Sandbox Code Playgroud)

event.getText().size()返回0(在AccessibilityEvent事件上).
现在他们必须打开应用程序并将文本读取给他们,这是2个语音命令更多...
我正确地得到所有其他通知.我试着从facebook上寻找关于他们对可访问性的立场的文档,但我一无所获.
有没有办法从他们的通知中获取文本?

android accessibility facebook-messenger android-a11y

11
推荐指数
1
解决办法
1476
查看次数

如何更改双击和长按的Android对讲说明

我有一个有长按动作处理程序的视图.我使用内容描述来设置消息,当视图获得焦点时,Talkback会说话.

目前它在获得焦点后立即说出了我的内容描述,并在短暂停顿后说:

双击激活,双击并按住长按

我想将此消息更改为类似的内容

双击"动作1",双击并按住"动作2"

有办法吗?

我调查了onPopulateAccessibilityEvent(),它得到了TYPE_VIEW_ACCESSIBILITY_FOCUSED事件,但我无法更改所需的消息.

我错过了一些简单的事吗?

android accessibility talkback android-a11y

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

测试Android辅助功能服务?

我正在开发一个带有扩展服务的Android应用程序AccessibilityService.我希望能够在不模仿可访问性框架的情况下进行测试.

有没有人对最佳方法有一些建议?

我想设置一些不同的活动,在它们之间移动,并验证我的辅助功能服务是否正确响应.我尝试使用a ServiceTestCase,但不幸的是,这需要您自己设置服务.我不确定如何以类似于可访问性框架为我设置它的方式进行设置.

testing android accessibility android-a11y

8
推荐指数
1
解决办法
1074
查看次数

如何调试辅助功能服务?

调试AccessibilityService时遇到一些问题,无法找到解决方案 - 从Eclipse的每次部署/调试中,服务都不会自动重启,需要手动操作才能重启服务.

我现在被迫做的事情:

  1. 我正在添加一些新代码并使用Eclipse部署/调试.
  2. 正确部署并启动应用程序但未启动新版本的服务(未显示来自服务的消息且断点不起作用).
  3. 手动打开设置 - >辅助功能,看到我的服务运行.
  4. 手动停止并启动服务 - 现在服务正在运行.

我想以更快的方式做到这一点:

  • 我加入一些代码和部署,服务重新启动,然后断点工作没有任何人工无聊重启!

您能否建议如何在不手动重启的情况下调试辅助功能服务?

android accessibilityservice android-debug android-a11y

8
推荐指数
1
解决办法
899
查看次数

辅助功能服务说明

我写了一个非常简单的accessibilityService,我试图在Settings/accessibility /我的应用程序中显示该服务的描述.下面是我的所有代码,应将描述设置为"Hello!" 但设置仍显示"无可用说明"

在此输入图像描述

我的服务:

public class IdleService extends AccessibilityService{

    int interval = 100;
    int maxIdleTime = 20000;
    int idleTime = 0;
    Handler mHandler;
    String cProcess;

    @Override
    public void onServiceConnected(){

        mHandler = new Handler();

        AccessibilityServiceInfo info = new AccessibilityServiceInfo();
        // we are interested in all types of accessibility events
        info.describeContents();
        info.eventTypes = AccessibilityEvent.TYPES_ALL_MASK;
        info.feedbackType = AccessibilityServiceInfo.FEEDBACK_GENERIC;
        // we want to receive events in a certain interval
        info.notificationTimeout = interval;

        setServiceInfo(info);

        Log.e("IdleService", " idle service connected!");
        statusChecker.run();
    } …
Run Code Online (Sandbox Code Playgroud)

android accessibilityservice android-a11y

8
推荐指数
1
解决办法
2763
查看次数

onKeyEvent和辅助功能服务

我的用户将使用TalkBack或其他一些Accessible Service.我想在我们的应用程序中捕获onKeyEvent事件,但事件将被分派到启用的Accessibility Services.我创建了以下基本辅助功能服务.

public class Accessibility_Service extends AccessibilityService {

    private String TAG = Accessibility_Service.class.getSimpleName();

    @Override
    public boolean onKeyEvent(KeyEvent event) {
        int action = event.getAction();
        int keyCode = event.getKeyCode();
        if (action == KeyEvent.ACTION_UP) {
            if (keyCode == KeyEvent.KEYCODE_VOLUME_UP) {
                Log.d("Hello", "KeyUp");
            } else if (keyCode == KeyEvent.KEYCODE_VOLUME_DOWN) {
                Log.d("Hello", "KeyDown");
            }
            return true;
        } else {
            return super.onKeyEvent(event);
        }
    }

    /**
     * Passes information to AccessibilityServiceInfo.
     */
    @Override
    public void onServiceConnected() {
        Log.v(TAG, "on Service Connected");
        AccessibilityServiceInfo info = new AccessibilityServiceInfo(); …
Run Code Online (Sandbox Code Playgroud)

android accessibility keyevent android-a11y

7
推荐指数
2
解决办法
7611
查看次数