我正在Android中编写一个可访问性服务,它依赖于获取当前所选视图的视图ID,但是在某些设备上(Nexus 6P 6.0.1,三星Galaxy S6 edge + 5 + 6.0.1)我没有查看id和在其他人(HTC One M8 5.0.1)它通过罚款.因为它在某些设备上工作正常,我确信我的代码没有问题,但是我在下面发布了一个最小的测试用例.
任何人都可以帮助我在所有设备上获取服务报告ID吗?
A11y服务
public class ViewIdLoggingAccessibilityService extends AccessibilityService {
@Override
public void onAccessibilityEvent(AccessibilityEvent event) {
AccessibilityNodeInfo source = event.getSource();
if (source == null) {
Log.d("onAccessibilityEvent", "source was null for: " + event);
} else {
String viewIdResourceName = source.getViewIdResourceName();
Log.d("onAccessibilityEvent", "viewid: " + viewIdResourceName);
}
}
@Override
public void onInterrupt() {
Log.d("!# onInterrupt", "called");
}
}
Run Code Online (Sandbox Code Playgroud)
AndroidManifest.xml
<manifest package="com.example.a11yservice"
xmlns:android="http://schemas.android.com/apk/res/android"
>
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme"
>
<service
android:name=".ViewIdLoggingAccessibilityService" …
Run Code Online (Sandbox Code Playgroud) 我最近开始研究 Android 上的自动化辅助功能测试。网络上没有太多信息。有人探索过这个或者目前正在这样做吗?如果是这样,您能分享您的想法/方法吗?
似乎 Android 的 uiautomator 依赖于辅助功能来工作,但它不支持测试辅助功能。如果它依赖于辅助功能,这是否意味着可访问标签等基本验证是否可以通过使用 uiautomator 执行 UI 测试来完成?
这对我来说是一个新领域,因此任何信息都会有所帮助。
android automated-tests accessibility ui-automation android-a11y
我们希望发送一个无法链接到视图的辅助功能事件(将由TalkBack等提取).
例如,当AsyncTask完成时,我怎么能发送一个辅助功能事件(例如说"数据下载"的对话)?
我正在使我的应用程序可访问性兼容.通过在xml中提供android:contentDescription ="your string",为可访问性框架提供正确的数据.
此外,我还看到了关于使应用程序可访问的Android开发人员指南,以概述您需要采取哪些步骤来确保您的应用程序与可访问性服务正常工作.
现在问题是在每个屏幕上测试这些都需要更多时间.我的应用程序有30个屏幕,每次去任何模块将需要大约15-20分钟,当回访开启时.
谁能建议工具/更好的方法来测试应用程序?
我编写了一个无障碍服务,我希望该服务在收到无障碍事件(即在 method 中onAccessibilityEvent
)后停止/终止。这能做到吗?我曾尝试使用如下杀死进程杀死,但它不起作用。
unbindService(mSvcConn);
android.os.Process.killProcess(android.os.Process.myPid());
Run Code Online (Sandbox Code Playgroud)
我已在 AndroidManifest.xml 中授予以下权限
<uses-permission android:name="android.permission.KILL_BACKGROUND_PROCESSES" />
Run Code Online (Sandbox Code Playgroud)
我知道无障碍服务无法以编程方式启动,但也不能停止/终止吗?