4.0使用的功能几乎只有一个:检查无障碍服务是否开启
auto() ui模式,检查无障碍服务是否开启
auto.waitFor() 普通模式,检查无障碍服务是否开启
auto.setMode(mode) 开启控件缓存

函数

auto()			ui模式下使用
auto.waitFor()	普通模式下使用
auto.setMode(mode)	
mode  模式
设置无障碍模式为mode。mode的可选值为:
normal 正常模式,默认。
fast 快速模式。该模式下会启用控件缓存,从而选择器获取屏幕控件更快。对于需要快速的控件查看和操作的脚本可以使用该模式,一般脚本则没有必要使用该函数。

v4.1.0新增

auto.serivce	
	获取无障碍服务。如果无障碍服务没有启动,则返回null。

auto.windows	
	当前所有窗口(AccessibilityWindowInfo)的数组,可能包括状态栏、输入法、当前应用窗口,弹出窗口、悬浮窗、分屏应用窗口等。可以分别获取每个窗口的布局信息。
	该函数需要Android 5.0以上才能运行。

auto.root	
	当前窗口的布局根元素。如果无障碍服务未启动或者WindowFilter均返回false,则会返回null。
	如果不设置windowFilter,则当前窗口即为活跃的窗口(获取到焦点、正在触摸的窗口);如果设置了windowFilter,则获取的是过滤的窗口中的第一个窗口。
	如果系统是Android5.0以下,则始终返回当前活跃的窗口的布局根元素。

auto.rootInActiveWindow
	当前活跃的窗口(获取到焦点、正在触摸的窗口)的布局根元素。如果无障碍服务未启动则为null
	
auto.setFlags(flags)	启用和禁用某些特性。
	flags  |  一些标志,来启用和禁用某些特性,包括:
	findOnUiThread 使用该特性后,选择器搜索时会在主进程进行。该特性用于解决线程安全问题导致的次生问题,不过目前貌似已知问题并不是线程安全问题。
	useUsageStats 使用该特性后,将会以"使用情况统计"服务的结果来检测当前正在运行的应用包名(需要授予"查看使用情况统计"权限)。如果觉得currentPackage()返回的结果不太准确,可以尝试该特性。
	useShell 使用该特性后,将使用shell命令获取当前正在运行的应用的包名、活动名称,但是需要root权限。
	启用有关automator的一些特性。例如:
	auto.setFlags(["findOnUiThread", "useShell"]);
	
auto.setWindowFilter(filter)
	设置窗口过滤器。该函数需要Android 5.0以上才有效。
	filter  参数为窗口(AccessibilityWindowInfo),返回值为Boolean的函数。
	设置窗口过滤器。这个过滤器可以决定哪些窗口是目标窗口,并影响选择器的搜索。例如,如果想要选择器在所有窗口(包括状态栏、输入法等)中搜索,只需要使用以下代码:
	auto.setWindowFilter(function(window){
  	  	//不管是如何窗口,都返回true,表示在该窗口中搜索
    	return true;
	});
	又例如,当前使用了分屏功能,屏幕上有Auto.js和QQ两个应用,但我们只想选择器对QQ界面进行搜索,则:
	auto.setWindowFilter(function(window){
    	// 对于应用窗口,他的title属性就是应用的名称,因此可以通过title属性来判断一个应用
    	return window.title == "QQ";
	});
	选择器默认是在当前活跃的窗口中搜索,不会搜索诸如悬浮窗、状态栏之类的,使用WindowFilter则可以控制搜索的窗口。
	需要注意的是, 如果WindowFilter返回的结果均为false,则选择器的搜索结果将为空。
	另外setWindowFilter函数也会影响auto.windowRoots的结果。
	该函数需要Android 5.0以上才有效。
	
auto.windowRoots
	返回当前被WindowFilter过滤的窗口的布局根元素组成的数组。
	如果系统是Android5.0以下,则始终返回当前活跃的窗口的布局根元素的数组。

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注