Как видеоплееры, такие как netflix или google handle, показывают / скрывают управление видеоплеером? - PullRequest
4 голосов
/ 04 апреля 2020

Я работаю над небольшим проектом для собственного использования, и мне нужна моя служба специальных возможностей, чтобы выполнить прикосновение к экрану и показать / скрыть элементы управления от видеоплееров, таких как Netflix или youtube.

Так что в my accessibilityService Я использую getRootInActiveWindow() и получаю ссылку на окно приложения (например, com.netflix.mediaclient)

Затем я пересекаю все узлы и выполняю performAction(AccessibilityNodeInfo.ACTION_CLICK), но, похоже, ни один из узлов доступны для нажатия (когда скрыт элемент управления медиапроигрывателем, в противном случае я могу нажать кнопки управления), и я не могу сделать так, чтобы элемент управления медиаплеера показывался.

Есть идеи, почему это так? Кроме того, возможно ли выполнить касание экрана вообще, а не по заданному c AccessibilityNodeInfo?

ОБНОВЛЕНИЕ

Оказалось, что проблема заключалась в том, что ACTION_CLICK не работает как TOUCH, поэтому, если представление реагирует на события касания, но не на события щелчка, то ACTION_CLICK ничего не будет делать. К сожалению, похоже, что нет способа выполнить нажатие на объекты AccessibilityNodeInfo.

1 Ответ

0 голосов
/ 05 апреля 2020

Мне не удалось заставить элемент управления видеопроигрывателем отображаться через узлы доступности, но я смог добиться аналогичного эффекта, просто имитируя нажатие на экран со следующим кодом.

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);
}

И затем я вызовите функцию щелчка с чем-то вроде 300, 300

Убедитесь, что в ваш файл AccessibilityService XML добавлено

android:canPerformGestures="true"

.

Мне все еще интересно, почему я был не может достичь того же с узлами, поэтому, пожалуйста, дайте мне знать, если кто-то знает.

...