В Android 8.0 выше. Есть ли способ узнать, что в системе включен режим pip

В Android Oreo. Активность может перейти в режим pip и вернуться к launcher.

https://developer.android.com/guide/topics/ui/picture-in-picture.html

Теперь я пусковая установка. Есть ли способ узнать, что в настоящее время на экране отображается окно pip?

isInPictureInPictureMode() укажите только pipmode вашего приложения, который будет false, если есть другое приложение, перейдите в режим pip.

флаги намерения были одинаковыми, когда вы выходите из приложения и переходите в pipmode обратно в launcher.

12-15 03:31:39.580 11671 11671 D FLAG_ACTIVITY_FORWARD_RESULT
12-15 03:31:39.580 11671 11671 D FLAG_ACTIVITY_NEW_TASK
12-15 03:31:39.580 11671 11671 D FLAG_ACTIVITY_PREVIOUS_IS_TOP
12-15 03:31:39.581 11671 11671 D FLAG_ACTIVITY_RESET_TASK_IF_NEEDED
12-15 03:31:39.581 11671 11671 D FLAG_RECEIVER_BOOT_UPGRADE
12-15 03:31:39.581 11671 11671 D FLAG_RECEIVER_FOREGROUND
12-15 03:31:39.581 11671 11671 D FLAG_RECEIVER_INCLUDE_BACKGROUND
12-15 03:31:39.581 11671 11671 D FLAG_RECEIVER_VISIBLE_TO_INSTANT_APPS
12-15 03:31:50.174 11671 11671 D FLAG_ACTIVITY_FORWARD_RESULT
12-15 03:31:50.174 11671 11671 D FLAG_ACTIVITY_NEW_TASK
12-15 03:31:50.174 11671 11671 D FLAG_ACTIVITY_PREVIOUS_IS_TOP
12-15 03:31:50.174 11671 11671 D FLAG_ACTIVITY_RESET_TASK_IF_NEEDED
12-15 03:31:50.174 11671 11671 D FLAG_RECEIVER_BOOT_UPGRADE
12-15 03:31:50.174 11671 11671 D FLAG_RECEIVER_FOREGROUND
12-15 03:31:50.174 11671 11671 D FLAG_RECEIVER_INCLUDE_BACKGROUND
12-15 03:31:50.174 11671 11671 D FLAG_RECEIVER_VISIBLE_TO_INSTANT_APPS

Я проверяю исходный код режима pip, и они контролируют это WindowManagerService. Я не думаю, что к нему можно получить доступ через уровень приложения.

1 ответов


вы можете построить AccessibilityService, который может запросить AccessibilityWindowInfos для isInPictureInPictureMode().

обратите внимание, что Google в настоящее время (в конце 2017 года) выслеживает злоупотребление функцией службы доступности, поэтому будьте осторожны. Такой подход, скорее всего, будет считаться злоупотреблением. Используйте это только в том случае, если вы не смогли найти лучшего решения.

посмотреть разработка службы доступности для руководства.

Примечание. это требует запроса разрешения пользователя, и пользователь должен явно принять службу специальных возможностей.