在Android 8.0以上。有没有办法知道系统中有pip模式

时间:2017-12-18 08:39:37

标签: android android-tv android-8.0-oreo

在Android Oreo中。活动可以进入点子模式并返回发射器。

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

现在我是发射器。有没有办法知道屏幕上是否显示了一个点子窗口?

isInPictureInPictureMode()仅指示您的应用程序pipmode,如果有其他应用程序进入pip模式,则该pipmode将为false。

当你退出应用程序并转到pipmode返回启动器时,意图标志是相同的。

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

我检查了点子模式源代码,他们通过WindowManagerService来控制它。我认为不能通过应用程序级别访问它。

1 个答案:

答案 0 :(得分:0)

您可以构建一个AccessibilityService,可以AccessibilityWindowInfo查询isInPictureInPictureMode()

  

请注意,谷歌目前(2017年底)追捕滥用无障碍服务功能,因此要谨慎。这种方法很可能被视为滥用。只有在找不到更好的解决方案时才使用此功能。

有关指南,请参阅Developing an Accessibility Service

请注意,这需要提示用户的权限,并且用户必须明确接受辅助功能服务。