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

luc*_*ter 7 android actionlistener picture-in-picture

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

小智 12

这是更新的解决方案,适合我关闭和最大化事件。

@Override
public void onPictureInPictureModeChanged(boolean isInPictureInPictureMode, Configuration newConfig) {
    if(newConfig !=null){
        videoPosition = playerManager.getCurrentPosition();
        isInPipMode = !isInPictureInPictureMode;
    }
    if (getLifecycle().getCurrentState() == Lifecycle.State.CREATED) {
        finishAndRemoveTask();
        //when user click on Close button of PIP this will trigger, do what you want here
    }
    else if (getLifecycle().getCurrentState() == Lifecycle.State.STARTED){
        //when PIP maximize this will trigger
    }
    super.onPictureInPictureModeChanged(isInPictureInPictureMode, newConfig);
}
Run Code Online (Sandbox Code Playgroud)


Art*_*ira 10

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

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

现在检测它的唯一方法是使用您的活动的 onResume 和 onStop 方法。当活动从画中画恢复时,onResume 和 onPictureInPictureModeChanged 回调在您的活动上被调用。单击关闭按钮时,将调用 onStop 和 onPictureInPictureModeChanged 回调。