创建了“AccessibilityService”,并且能够根据输入的文本显示提示。问题是我想在主机应用程序Home Pressed时停止活动服务。 我试过添加
<accessibility-service xmlns:android="http://schemas.android.com/apk/res/android"
android:accessibilityEventTypes="typeAllMask|typeViewClicked|typeViewFocused"
android:canRequestFilterKeyEvents="true"
android:accessibilityFlags="flagRequestFilterKeyEvents"
android:description="@string/accessibility_service_description" />
这可以解决具有“HOME”物理按钮的手机的问题。 如何停止辅助功能服务当软按钮的“HOME”事件与Nexus 5一样。
答案 0 :(得分:3)
回答原始问题:“检测软件'主页'按钮何时按下?”
根据Android文档,软键盘不需要发送硬件键盘事件,事实上Android样本不需要,因此应用程序商店中的每个软件键盘都没有。您只能依赖外部蓝牙和硬件键盘上的事件。
简单地说,你不能可靠地做你想要的,API不支持它。
回答问题编辑:
让我重申一下,没有“可靠”的方式来做这件事。
您可以做的是侦听屏幕更改相关事件,并检测屏幕内容何时与主屏幕匹配。现在,这仍然是一个非常脆弱的解决方案。没有一致的方法来检测启动器活动,与任何其他活动相比,也无法确定您设置的匹配器是否可能匹配不是启动器活动的东西。但是,我认为这是最合理的方法。
public void onAccessibilityEvent(AccessibilityEvent e) {
switch (e.getEventType()) {
case AccessibilityEvent.TYPE_WINDOW_CONTENT_CHANGED:
case AccessibilityEvent.TYPE_VIEW_SCROLLED:
case AccessibilityEvent.TYPE_WINDOWS_CHANGED:
case AccessibilityEvent.TYPE_WINDOW_STATE_CHANGED: {
if (detectHomeScreen(getRootInActiveWindow()) {
//We are now at the "home" screen, do what you want here.
}
}
}
}
//A List of package names you know to be associated with "launcher" activities. Populate this list in your classes static initialization block.
private static ArrayList<String> LAUNCHER_PACKAGE_NAMES;
private static boolean detectHomeScreen(AccessibilityNodeInfo rootNodeInfo) {
return LAUNCHER_PACKAGE_NAMES.contains(rootNodeInfo.getPackageName().toString())
}
XML配置
<?xml version="1.0" encoding="utf-8"?>
<accessibility-service xmlns:android="http://schemas.android.com/apk/res/android"
android:description="@string/accessibility_service_description"
android:accessibilityEventTypes="typeAllMask"
android:accessibilityFlags="flagIncludeNotImportantViews|flagReportViewIds"
android:canRetrieveWindowContent="true"
android:notificationTimeout="100"
android:settingsActivity="com.example.SettingsActivity"
/>
最后一个很酷。它允许您通过“辅助功能服务”配置屏幕右上角的“设置”按钮设置将打开的活动。
答案 1 :(得分:0)
最后我必须使用以下代码收听HomeWatch Listener。 https://gist.github.com/nfeld9807/0ab8341133c58c71f874
我能够获得HOME活动。尽管花了四天时间才找到出路。 克里斯真的帮助我思考正确的方向。