像netflix或谷歌这样的视频播放器如何处理显示/隐藏视频播放器控制



我正在做一个供自己使用的小项目,我需要我的辅助功能服务来点击屏幕并向Netflix或youtube等视频播放器显示/隐藏控件。

因此,在我的accessibilityService中,我使用getRootInActiveWindow(),并引用应用程序窗口(例如com.netflix mediaclient(

然后,我遍历所有节点并执行performAction(AccessibilityNodeInfo.ACTION_CLICK),但似乎没有一个节点是可单击的(当媒体播放器控件被隐藏时,否则我可以单击控件按钮(,并且我无法使媒体播放器控件显示。

你知道为什么会这样吗?此外,是否可以在一般屏幕上而不是在特定的AccessibilityNodeInfo上执行点击?

更新

事实证明,问题是ACTION_CLICK不能作为TOUCH工作,所以如果视图对触摸事件做出反应,但对点击事件没有反应,那么ACTION_CLICK将不会做任何事情。不幸的是,似乎没有办法对AccessibilityNodeInfo对象执行点击。

我无法通过辅助功能节点显示视频播放器控件,但我可以通过以下代码模拟屏幕上的点击来实现类似的效果。

private void click(int x, int y) {
Path path = new Path();
path.moveTo(x, y);
path.moveTo(x+10, y+10);
GestureDescription.Builder builder = new GestureDescription.Builder();
GestureDescription gestureDescription = builder.addStroke(new GestureDescription.StrokeDescription(path, 10, 200)).build();
dispatchGesture(gestureDescription, null, null);
}

然后我用类似300300 的东西调用点击功能

确保放置

android:canPerformGestures="true"

在您的AccessibilityService XML文件中。

我仍然很好奇为什么我不能在节点上实现同样的目标,所以如果有人知道的话,请告诉我。

最新更新