在为Android app 测试无障碍功能兼容性时,如果要在设置中启用/关闭TalkBack服务有时会比较繁琐,尤其是关闭服务时(在TalkBack模式下点击要双击)。如果测试用的手机可以连接adb调试,使用adb是很方便的。
1. 通过Adb设置TalkBack
(1) 检查状态
adb shell settings get secure enabled_accessibility_services
如果已经有无障碍服务启用,将会列出,否则输出 null。
(2) 启用TalkBack
adb shell settings put secure enabled_accessibility_services com.google.android.marvin.talkback/com.google.android.marvin.talkback.TalkBackService
(3) 关闭TalkBack
注意:此命令会关闭全部无障碍服务
adb shell settings put secure enabled_accessibility_services null
2. 使用Bat文件简化操作
如果经常使用的话,将这些命令写入到Bat文件会更方便
status 列出正在运行的无障碍服务
enable 开启TalkBack
disable 关闭TalkBack
help 参数列表
[有多个adb设备时 -target 选择一个已连接adb的设备]
@echo off
:: TalkBack Control Script
echo.
:: Check if the user provided a command
if "%1"=="" (
echo Error: Please provide a command. Available commands: status, enable, disable
exit /b
)
set TARGET_DEVICE=
:: Check if -target parameter is provided
if "%2"=="-target" (
REM Store the value of the -target parameter
set TARGET_DEVICE=%3
)
:: View TalkBack status
if "%1"=="status" (
adb devices -l
echo Fetching TalkBack status...
if "%TARGET_DEVICE%"=="" (
adb shell settings get secure enabled_accessibility_services
) else (
adb -s %TARGET_DEVICE% shell settings get secure enabled_accessibility_services
)
if %ERRORLEVEL% neq 0 (
echo Error...Check adb connection and adb logs[use -target to select device]
exit /b
)
exit /b
)
:: Enable TalkBack
if "%1"=="enable" (
adb devices -l
echo Enabling TalkBack service...
if "%TARGET_DEVICE%"=="" (
adb shell settings put secure enabled_accessibility_services com.google.android.marvin.talkback/com.google.android.marvin.talkback.TalkBackService
) else (
adb -s %TARGET_DEVICE% shell settings put secure enabled_accessibility_services com.google.android.marvin.talkback/com.google.android.marvin.talkback.TalkBackService
)
if %ERRORLEVEL% neq 0 (
echo Error...Check adb connection and adb logs[use -target to select device]
exit /b
)
exit /b
)
:: Disable TalkBack
if "%1"=="disable" (
adb devices -l
echo Disabling TalkBack service...
if "%TARGET_DEVICE%"=="" (
adb shell settings put secure enabled_accessibility_services null
) else (
adb -s %TARGET_DEVICE% shell settings put secure enabled_accessibility_services null
)
if %ERRORLEVEL% neq 0 (
echo Error...Check adb connection and adb logs[use -target to select device]
exit /b
)
exit /b
)
:: Help
if "%1"=="help" (
echo The commands are as follows:
echo status list all running accessibility services
echo enable enable TalkBack
echo disable disable TalkBack
echo -target select target serial if multiple devices are connected to adb
exit /b
)
:: Invalid command
echo Error: Invalid command "%1". Available commands: status, enable, disable, help
exit /b
示例:
单个设备直接使用命令即可
PS D:\Example> ./talkback.bat enable
List of devices attached
N9HGJYMJZXLR6LH7 device product:AN200 model:OPA150 device:AN200 transport_id:1
Enabling TalkBack service...
PS D:\Example>
如果有多个设备需要通过 -target指定
PS D:\Example> ./talkback.bat enable -target N9HGJYMJZXLR6LH7
List of devices attached
N9HGJYMJZXLR6LH7 device product:AN200 model:OPA150 device:AN200 transport_id:5
localhost:16416 device product:CC606 model:AS_A99 device:CC606 transport_id:4
Enabling TalkBack service...
PS D:\Example>
此时目标(物理机)上打开了TalkBack, 语音提示 "TalkBack 已开启"
另外的disable, status使用方法也是如此
3. TalkBack介绍
TalkBack 是 Android 系统内置的屏幕阅读器,用于帮助视力受限的用户操作智能手机。启用 TalkBack 后,手机会通过语音向用户反馈当前屏幕上的信息,用户可以通过手势与手机交互。比如,用户触摸屏幕上的某个区域时,TalkBack 会读出该区域的内容,帮助用户理解界面。
通过 TalkBack,用户可以独立使用手机进行打电话、发短信、浏览网页、使用应用程序等操作,而无需依赖视觉信息。
1. 语音反馈
TalkBack 会实时读出屏幕上显示的文字内容,如应用名称、按钮、文本框等。当用户触摸或选中某个元素时,系统会通过语音告知用户当前选择的内容。例如,若用户触摸到一个按钮,TalkBack 会说出按钮的名称,如“发送按钮”。
2. 手势操作
TalkBack 支持各种手势操作,用户可以通过不同的手势来控制手机。例如:
- 单击:选择当前项
- 双击:激活选中的项
- 上下滑动:翻动屏幕内容
- 左右滑动:切换选项
- 两指滑动:滚动页面等
参考资料
官方安卓无障碍开发设计指南