Android-Accessibility-Api
安卓无障碍服务Api, 为了简化无障碍服务使用,并使用 Kotlin 以提供简洁的Api。
[TOC]
基础导航
(图片加载过慢可到 Gitee 查看)
查看代码
//无障碍服务声明 未开启会跳转设置页面提示开启服务,并抛出异常 终止执行
requireBaseAccessibility()
toast("下拉通知栏..")
delay(1000)
toast("快捷设置..")
//操作之间需要适当延时等待
delay(1000)
//下拉通知栏快捷设置
quickSettings()
delay(1000)
//返回操作
back()
delay(500)
//返回操作
back()
delay(1000)
//电源菜单
powerDialog()
delay(500)
back()
delay(1000)
//进入最近任务页面
recents()
delay(1000)
back()
delay(1000)
//Home 按键 / 返回桌面
home()
delay(100)
更多操作:
方法
说明
lockScreen()
锁屏,需要Android P
screenShot()
触发系统截屏,需要Android P
splitScreen()
触发系统分屏,需要Android P
视图检索
提取文字
requireBaseAccessibility()
//使用 ScreenTextFinder() 来搜索屏幕上的文字
val ts = ScreenTextFinder().find().joinToString("\n\n")
withContext(Dispatchers.Main) {
AlertDialog.Builder(act).apply {
setTitle("提取文字:")
setMessage(ts)
show()
}
}
视图搜索
提供一个基础类 ViewFinder, 并封装一个 ViewFinderWithMultiCondition 来指定搜索条件,实现快速搜索;查看所有方法:view_finder_api.kt
ViewFinder 主要方法:
方法
说明
findFirst(includeInvisible: Boolean = false): ViewNode?
立即搜索,返回满足条件的第一个结果
includeInvisible: 是否包含不可见元素
findAll(includeInvisible: Boolean = false): Array
立即搜索,返回满足条件的所有结果
waitFor(waitMillis: Long = 30000): ViewNode?
等待搜索,在指定时间内循环搜索(视图更新),超时返回null
require(waitMillis: Long = WAIT_MILLIS): ViewNode
等待超时抛出异常
示例1: 等待 Chrome 打开 > 展开菜单
//等待无障碍开启 默认时间30s,超时将抛出异常
waitBaseAccessibility()
toast("start chrome after 1s")
delay(1000)
//打开Chrome
val targetApp = "com.android.chrome"
act.startActivity(act.packageManager.getLaunchIntentForPackage(targetApp))
//等待页面
if (
waitForApp(targetApp, 5000).also {
toast("wait " + if (it) "success" else "failed")
}
) {
//id 搜索,点击打开菜单
withI