我正在开发一个支持即时消息的视频通话组件。我想添加最小化背面按下时的视频通话屏幕的选项,并返回到消息传递activity
以同时执行这两项操作(类似于功能的WhatsApp)。问题是,我找不到解决方案,因为回到上一个activity
将完成当前的工作。因此,我该如何override
onBackpressed()
,以便我可以最小化而不是结束通话屏幕activity
(比如将其添加到通知中)并返回到消息传递activity
?
答案 0 :(得分:1)
您要执行的操作称为Picture-in-Picture。
Android 8.0(API级别26)允许启动活动 画中画(PIP)模式。 PIP是一种特殊类型的多窗口 模式主要用于视频播放。用户可以通过它观看视频 导航时固定在屏幕角落的小窗口 在应用程序之间或在主屏幕上浏览内容之间。
一个非常简单的示例:
1)在您的AndroidManifest
文件中指定哪些活动支持PIP:
<activity
android:name=".VideoActivity"
android:configChanges="screenSize|smallestScreenSize|screenLayout|orientation"
android:resizeableActivity="true"
android:supportsPictureInPicture="true"/>
2)触发PIP模式以响应某些用户操作,例如在onBackPressed()
中:
override fun onBackPressed() {
// Ideally you would want to enter PIP while a video is playing, so:
val isVideoPlaying = // have a condition here that holds true while the video is playing
if (isVideoPlaying) {
enterPictureInPictureMode()
} else {
super.onBackPressed()
}
}