安卓Accessibility(Talkback无障碍读屏器)适配笔记

这篇博客介绍了安卓平台上无障碍应用——读屏器的使用,包括Talkback的替代安装、操作方式以及如何进行视障友好应用的开发。通过设置视图属性、监听事件和自定义视图,开发者可以优化应用的可访问性,确保视障用户能够顺畅使用。同时,文中还提到了中断朗读、获取无障碍状态等功能的实现方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

读屏器是安卓上的一种无障碍应用,方便更多人使用安卓手机。它使用的是系统TTS,需下载语音包。如果没有Talkback,也可以自行安装。

具体操作可以看这个视频:盲人怎么用手机?如何打造视障友善的app?基本操作就是点读,左右滑动切换焦点,上下滑动切换焦点粒度(控件,段落,字词等),双击等于点击,还有双击加长按,双击加长按加拖动等等。

可以读出webview内容。但是中英文混读的效果不是很好。双指滑动可滚动列表,滚动的时候会有一种好听的电子音效。


视图只要保证这两点,就可以被读屏器点读:

  1. setFocusable(true)
  2. setContentDescription(“读屏内容”)

排除:

view.setImportantForAccessibility(IMPORTANT_FOR_ACCESSIBILITY_NO);

手动发起朗读:

v.announceForAccessibility("朗读内容");

其他方法:

设置顺序(类似于优先级,但是会改变前后切换的顺序)

view.setAccessibilityTraversalAfter(R.id.etSearch);

中断朗读

((AccessibilityManager) view.getContext().getSystemService(Context.ACCESSIBILITY_SERVICE)).interrupt();

获取无障碍运行状态

accessMan.isEnabled()

so easy…

适配侧滑抽屉:

drawerLayout.addDrawerListener(new DrawerListener() {
	@Override
	public void onDrawerOpened(@NonNull View v) {
		drawerOpen = true;
		v.announceForAccessibility("抽屉已打开");
	}
	
	@Override public void onDrawerClosed(@NonNull View v) {
		if (drawerOpen) {
			drawerOpen = false;
			v.announceForAccessibility("抽屉已关闭");
		}
	}

自定义视图

	@Override
	public void onPopulateAccessibilityEvent(AccessibilityEvent event) {
		super.onPopulateAccessibilityEvent(event);
		event.getText().add(text);
	}

参考文档

有些按钮可能需要根据情况提供不同的读屏内容,建议用委托类实现,不用总是自定义视图。

	view.setAccessibilityDelegate(new View.AccessibilityDelegate(){
		@Override
		public void onPopulateAccessibilityEvent(View host, AccessibilityEvent event) {
			host.setContentDescription("text"); // workaround
			super.onPopulateAccessibilityEvent(host, event);
			// event.getText().add(text); // 测试无效
		}
	});
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值