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

现在我应该实现辅助功能 – 书应该由手机读取(音频)。

我使用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

public void onInitializeAccessibilityNodeInfo(final View host, final AccessibilityNodeInfoCompat info) {

super.onInitializeAccessibilityNodeInfo(host, info);

info.setClassName(EditionPagesViewSwitcher.class.getName());

info.setScrollable(canScroll());

info.setLongClickable(true);

if (canScrollForward()) {

info.addAction(AccessibilityNodeInfoCompat.ACTION_SCROLL_FORWARD);

}

if (canScrollBackward()) {

info.addAction(AccessibilityNodeInfoCompat.ACTION_SCROLL_BACKWARD);

}

}

@Override

public boolean performAccessibilityAction(final View host, final int action, final Bundle args) {

if (super.performAccessibilityAction(host, action, args)) {

return true;

}

switch (action) {

case AccessibilityNodeInfoCompat.ACTION_SCROLL_FORWARD: {

if (canScrollForward()) {

showNext();

return true;

}

}

return false;

case AccessibilityNodeInfoCompat.ACTION_SCROLL_BACKWARD: {

if (canScrollBackward()) {

showPrevious();

return true;

}

}

return false;

}

return false;

}

这里是从页面视图代码2:

@Override

public void onInitializeAccessibilityEvent(final View host, final AccessibilityEvent event) {

super.onInitializeAccessibilityEvent(host, event);

event.setClassName(EditionPageView.class.getName());

if (hasText()) {

event.getText().add(getPageRangeText());

final String trimText = mSurfaceUpdateData.getPageText().trim();

if (trimText.length() > MAX_TEXT_LENGTH) {

event.getText().add(trimText.substring(0, MAX_TEXT_LENGTH));

// event.getText().add(trimText.substring(MAX_TEXT_LENGTH, trimText.length()));

}

else {

event.getText().add(trimText);

}

}

}

@Override

public void onInitializeAccessibilityNodeInfo(final View host, final AccessibilityNodeInfoCompat info) {

super.onInitializeAccessibilityNodeInfo(host, info);

info.setClassName(EditionPageView.class.getName());

}

因为页面文本数据加载异步第一次可访问性没有任何文本,而执行onInitializeAccessibilityEvent代码。然后当数据加载时,我触发AccessibilityEvent.TYPE_VIEW_SELECTED和AccessibilityEvent.TYPE_VIEW_TEXT_CHANGED事件。然后onInitializeAccessibilityEvent再次执行和手机“读”书文本。

所以我的问题:

>我的辅助功能实施是否正确?可能是设计错了吗?因为我没有找到任何有关此功能的好教程。

>为什么我需要在代码1的支持实现中使用SDK版本检查?为什么支持实现不能正确处理?

>正在启动TYPE_VIEW_SELECTED和TYPE_VIEW_TEXT_CHANGED吗?还是可能还有一些其他的代码应该实现?

>主要问题。在代码2中有注释代码行。这段代码语句子字符串的文本小于MAX_TEXT_LENGTH(它的3800),因为如果文本更大没有什么是播放。没有。是无障碍限制吗?任何小于此值的其他文本都会播放。

>有谁知道我在哪里可以找到任何好的教程? (是的,我看到样品)。

>有没有人有任何自定义实现来浏览?

更新

好。这里有一些答案:

>我可以看到,如果您不希望在您收到此文本后立即阅读,则不需要TYPE_VIEW_SELECTED和TYPE_VIEW_TEXT_CHANGED事件。

>在Nexus 7上,所有大文本都可以播放(文本高达8000符号),所以这个问题不会再现,但在三星Galaxy Tab 10.1(Android 4.0.4)和与Android 4.3的Tab 10.1的Genymotion模拟器。这是奇怪的…

android辅助功能demo,Android中的辅助功能实现问题相关推荐

  1. android地图 demo,Android地图控件之多地图展示

    一.简介 地图控件自v2.3.5版本起,支持多实例,即开发者可以在一个页面中建立多个地图对象,并且针对这些对象分别操作且不会产生相互干扰. 文件名:Demo04MultiMapView.cs 简介:介 ...

  2. android 微信 demo,android微信分享demo

    [实例简介] android微信分享demo 开发实例源代码 [实例截图] [核心代码] android微信分享demo └── android微信分享demo └── wxshare ├── And ...

  3. android单元测试demo,android单元测试AndroidTestCase

    在实际开发中,开发android软件的过程需要不断的进行测试.而是用Junit测试框架,则是正规android开发的必用技术,在Junit中可以得到组件,可以模拟发送事件和检测程序处理的正确性. 比如 ...

  4. android画布demo,Android开发画板demo前奏

    目的 完成画板demo的前期步骤 相关技术.及其使用 xml配置文件:创建SeekBar比较简单,但是不足之处在于当实现横屏的时候就比较麻烦 代码创建:代码创建SeekBar比较简单,能够很好地实现横 ...

  5. android+为辅助功能添加说明,了解如何使用辅助功能在 Outlook 中导航

    Outlook Web App 包括一些辅助功能,使行动不便.视力不佳或其他残疾人士的用户可以轻松地在私下或团队中聊天. 这意味着你可以使用你的设备或计算机内置的辅助功能,如屏幕阅读器.对比度控件或用 ...

  6. android辅助抢红包,Android辅助功能AccessibilityService与抢红包辅助

    抢红包的原理都差不多,一般是用Android的辅助功能(AccessibilityService类)先监听通知栏事件或窗口变化事件来查找红包关键字然后去模拟点击或打开红包. 下面附上源码,程序已实现自 ...

  7. android 辅助功能原理,Android辅助功能原理与基本使用详解-AccessibilityService

    Android辅助功能原理与基本使用详解-AccessibilityService 辅助功能原理与基本使用详解 本文主要介绍辅助功能的使用 辅助功能基本原理 辅助功能基本配置和框架搭建 辅助功能实战解 ...

  8. android源生setting华为,Android 设置默认桌面,默认应用,辅助功能,电池优化,设备管理器,悬浮窗等...

    Android 部分系统设置桌面,默认应用,辅助功能,电池优化,设备管理器,悬浮窗,有权限查看使用情况,开机自启动,锁屏不清理等 部分功能适配了华为手机与小米手机. 设置默认桌面: //华为手机上 I ...

  9. android读写sd卡代码,android读写SD卡中的文件 demo

    有时,我们需要将更大的文件保存下来,就不能用手机内置的存储空间,毕竟是有限的,所以将文件保存在SD卡中. 要读写SD卡,首先要知道手机上是否有SD卡,且是否可读写 String str = " ...

  10. Android API Demo程序框架

    前言 android API Demo程序主要演示了Android常见API的使用方法, 本文将该程序的框架提取出来, 以作为自己研究和学习Android编程的一个示例收集框架,即将所有自己研究过的例 ...

最新文章

  1. 在OpenCV中使用单应性进行姿势估计
  2. PHP魔术函数与魔术常量
  3. 日记20190416
  4. flag -- 诡异的memcache标记
  5. P4707-重返现世【dp,数学期望,扩展min-max容斥】
  6. 传智书城首页设计代码_(自适应手机版)响应式创意餐饮酒店装饰设计类网站织梦模板 html5蓝色餐饮酒店设计网站源码下载...
  7. Netflix正在搞的混沌工程到底是什么?终于有人讲明白了
  8. 前端:CSS/10/伪类选择器,CSS列表属性,CSS边框属性,CSS内边距属性,CSS背景属性
  9. 农行运营合规管理心得体会_“乘风破浪”的农行合规达人秀来啦
  10. 中国企业500强完整榜单,请为自己和孩子收藏
  11. 21天Jenkins打卡Day13视图
  12. Centos 7 修改时区
  13. 【CF1333C】Eugene and an array(子区间计数)
  14. codeforcesRound#275 Div2 前三题
  15. KMP扩展KMPManacher算法基础与习题(第二更)
  16. 浅谈马尔可夫预测方法
  17. 京东和淘宝近十年搜索热度对比,发现顶尖者的PK规律
  18. DeskSpace 显示Dash board
  19. JavaScript根据用户输入动态计算周数
  20. IDEA报错private field “xxx“ is never assigned解决

热门文章

  1. 使用Banner制作轮播图
  2. 计算机启动太慢的原因是,电脑启动慢的原因分析
  3. error: OpenCV(4.4.0) C:\Users\appveyor\AppData\Local\Temp\1\pip-req-build-h4wtvo23\opencv\
  4. 蘑菇街2016校园招聘——聊天
  5. c语言中puts的作用是,C语言的字符串输出puts()函数
  6. 小白也能开始VCS+Verdi的旅程
  7. 【DDNS更新】--公云的DDNS自动更新
  8. java搜索页面历史记录,页面缓存的操作(搜索历史记录),页面搜索功能实现...
  9. 如何在 Excel 图表中添加或删除次坐标轴?
  10. css pseudo elements,CSS 伪元素 (Pseudo-elements)