在Android的画中画模式下检测关闭和最大化点击事件

Posted

技术标签:

【中文标题】在Android的画中画模式下检测关闭和最大化点击事件【英文标题】:detect close and maximize clicked event in Picture In Picture mode in Android 【发布时间】:2018-04-14 11:00:45 【问题描述】:

如何检测用户是否点击了 PIP 小窗口中的原生关闭和最大化按钮。有没有我可以听的听众。现在我的接收器只听我在布局中定义的控件,但是像 [] max 按钮和 X 关闭按钮这样的非自定义按钮是 PIP 的一部分。请参阅链接 link

【问题讨论】:

当用户在画中画模式下点击关闭按钮时,android会调用activity的onStop()方法。与恢复按钮和 onResume() 相同 【参考方案1】:

无法检测对任何默认 PiP 按钮的点击。

当您的活动进入画中画模式时,实际上会启动另一个名为PiPMenuActivity 的系统活动。在其中,在这些 PiP 按钮中设置了一些 OnClickListener。当它们被点击时,不会向系统发送任何广播、意图或类似的东西,因此您可以收听它,PiP API 也没有提供将监听器附加到这些按钮的方法。

目前检测到这一点的唯一方法是使用您的活动的 onResume 和 onStop 方法。当从画中画恢复活动时,会在您的活动上调用 onResume 和 onPictureInPictureModeChanged 回调。当点击关闭按钮时,会调用 onStop 和 onPictureInPictureModeChanged 回调。

【讨论】:

关闭 pip 时未调用 onPictureInPictureModeChanged【参考方案2】:
override fun onPictureInPictureModeChanged(
    isInPictureInPictureMode: Boolean,
    newConfig: Configuration?
) 
    if (isInPictureInPictureMode) 

     else 
       if (lifecycle.currentState == Lifecycle.State.STARTED) 
           // todo finish your app
       
    

没有其他方法我寻找它,我可以通过这种方式解决它。

【讨论】:

正如目前所写,您的答案尚不清楚。请edit 添加其他详细信息,以帮助其他人了解这如何解决所提出的问题。你可以找到更多关于如何写好答案的信息in the help center。 这是怎么工作的..?

以上是关于在Android的画中画模式下检测关闭和最大化点击事件的主要内容,如果未能解决你的问题,请参考以下文章

Android O ——— 画中画模式(PIP)初步使用总结

图片模式下 Android O 图片的任务列表和回栈

ANDROID N 分屏设置

如何在画中画模式下创建自定义布局?

如何以编程方式关闭画中画

Android画中画模式,打开我的app的另一个activity