概述
1.
focusable = true
xx.setContentDescription()
xx.setOnclickListener()
2. android:minHeight="?android:attr/listPreferredItemHeight"
3. requestFocus()
setFocusableInTouchMode(true);
还有一种问题,遇到的,talckback 无法选中(绿色框选中不了控件),
但是点击事件 和 焦点都是好的
目前还不知道如何解决
4 状态读取 copy的
API Demos(6) AccessibilityService 无障碍辅助功能
https://blog.csdn.net/tz_1qu212/article/details/78880117
需要读取TalkBack的状态.
以下是Settings这部分的代码分析:
AccessibilitySettings.updateServicesPreferences()里面有如下代码:
Java代码
收藏代码
// 通过查找Settings数据库, 得到所有enabled状态的服务
Set<ComponentName> enabledServices = AccessibilityUtils.getEnabledServicesFromSettings(
getActivity());
// 判断当前是否开启了辅助功能服务(一个全局开关, 具体在哪里配置与本文无关, 不表)
final boolean accessibilityEnabled = Settings.Secure.getInt(getContentResolver(), Settings.Secure.ACCESSIBILITY_ENABLED, 0) == 1;
...
for (...) {
// 遍历所有已安装的服务, 判断是否已开启
AccessibilityServiceInfo info = installedServices.get(i);
ServiceInfo serviceInfo = info.getResolveInfo().serviceInfo;
ComponentName componentName = new ComponentName(serviceInfo.packageName, serviceInfo.name);
// 若辅助功能全局开关打开, 并且开启的服务中包含了已安装服务的话,
// 判断该服务的状态为enable
final boolean serviceEnabled = accessibilityEnabled && enabledServices.contains(componentName);
}
这里的serviceEnabled, 就是想要的服务启动状态值.
现在只需要读取TalkBack的开启状态, 因此, 在enabledServices中寻找, 看是否存在TalkBack即可.
接下来, 就是要知道这个enabledServices怎么来.
以下是AccessibilityUtils.getEnabledServicesFromSettings(Context)的关键代码:
Java代码
收藏代码
final Set<ComponentName> enabledServices = new HashSet<ComponentName>();
// 从Settings数据库Secure表下, 检索Settings.Secure.ENABLED_ACCESSIBILITY_SERVICES对应的字符串
// 从下文可知, 这里的查询结果, 应该是所有服务ComponentName的一个字符串集合, 字符串间通过冒号分隔
final String enabledServicesSetting = Settings.Secure.getString(context.getContentResolver(), Settings.Secure.ENABLED_ACCESSIBILITY_SERVICES);
...
// 构造冒号Splitter, 按冒号切分上述查询结果
final SimpleStringSplitter colonSplitter = AccessibilitySettings.sStringColonSplitter;
colonSplitter.setString(enabledServicesSetting);
...
// 遍历切分出来的字符串(们), 得到enabled状态的服务
while (colonSplitter.hasNext()) {
final String componentNameString = colonSplitter.next();
final ComponentName enabledService = ComponentName.unflattenFromString(componentNameString);
if (enabledService != null) {
enabledServices.add(enabledService);
}
}
监听 当Settings.Secure.ENABLED_ACCESSIBILITY_SERVICES对应的值发生改变时, 读取之.
判断其中是否包含TalkBack的开启状态;
最后
以上就是淡淡玉米为你收集整理的TalkBack无法选中,无法朗读(朗读错误) 的问题的全部内容,希望文章能够帮你解决TalkBack无法选中,无法朗读(朗读错误) 的问题所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复