(Android)如何检测虚拟返回键、主页键和概览键的按下

jaxagkaj  于 2023-03-27  发布在  Android
关注(0)|答案(2)|浏览(94)

我想知道如何检测Android的虚拟返回键、主页键和概览键的按下情况。对于“虚拟”,我指的是Android上的3键导航,可以通过截图中的蓝色区域进行说明。我在AccessibilityService中使用了onKeyEvent方法,该方法可以成功检测截图中读取区域的所有按钮的按下情况。然而,它未能检测到蓝色区域中的按钮的按下。有没有什么方法我们也可以检测到蓝色区域中的按钮的按下?
物理按钮和虚拟按钮

j2datikz

j2datikz1#

是的,这些按钮的viewResourceId是:

  • 主页:com.android.systemui:id/home_button
  • 上一页:com.android.systemui:id/back
  • 最近的应用程序:com.android.systemui:id/recent_apps

因此,在onAccessibilityEvent中,您可以执行以下操作

@Override
public void onAccessibilityEvent(AccessibilityEvent accessibilityEvent) {
    if (accessibilityEvent.getSource() != null){
        if (accessibilityEvent.getSource().getViewIdResourceName().equals("any of the values given above as home...."){
            //Do your stuff
        }
    }
kkbh8khc

kkbh8khc2#

对于任何在接受答案上挣扎的人。我不得不添加flagflagRetrieveInteractiveWindows。然后它就工作了。
我的整个xml

<accessibility-service xmlns:android="http://schemas.android.com/apk/res/android"
    android:accessibilityFeedbackType="feedbackGeneric"
    android:accessibilityEventTypes="typeAllMask"
    android:accessibilityFlags="flagDefault|flagRequestFilterKeyEvents|flagRetrieveInteractiveWindows"
    android:canPerformGestures="true"
    android:canRequestFilterKeyEvents="true"
    android:canRetrieveWindowContent="true" />

相关问题