从后台返回视频时出现黑屏 [英] blank screen when return to video from background
本文介绍了从后台返回视频时出现黑屏的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我正在使用Google IMA示例在我的应用程序中运行视频,经过几次更改以确保它不能满足我的需求后,我仍然有一个问题无法重新解决,我希望在应用程序从后台返回时播放视频,或者根据活动停止前的状态暂停视频。
当用户在暂停模式下停止活动时,我有状态,我有位置,但还有一个问题。当我从后台返回到视频时,屏幕是黑色的,直到我按下控制器中的开始,并且不需要寻找它的位置。我需要在从后台返回时以暂停模式显示预览图像。
@Override
public void onResume() {
if (mVideoPlayerController != null) {
mVideoPlayerController.resume();
if (mVideoPlayerController.isContentStarted())
if (isPlayedBeforePaused) {
mVideoPlayer.play();
} else {
}
}
super.onResume();
}
在我的视频播放器中:
@Override
public void play() {
start();
}
@Override
public void start() {
super.start();
// Fire callbacks before switching playback state.
switch (mPlaybackState) {
case STOPPED:
for (PlayerCallback callback : mVideoPlayerCallbacks) {
callback.onPlay();
}
break;
case PAUSED:
for (PlayerCallback callback : mVideoPlayerCallbacks) {
callback.onResume();
}
break;
default:
// Already playing; do nothing.
}
mPlaybackState = PlaybackState.PLAYING;
}
这是我差劲的解决方案,但我不想写那种代码
@Override
public void onResume() {
if (mVideoPlayerController != null) {
mVideoPlayerController.resume();
if (mVideoPlayerController.isContentStarted())
if (isPlayedBeforePaused) {
mVideoPlayer.play();
} else {
mVideoPlayer.play();
final Handler handler = new Handler();
handler.postDelayed(new Runnable() {
@Override
public void run() {
mVideoPlayer.pause();
}
}, 1000);
}
}
super.onResume();
}
推荐答案
我唯一的解决方案是播放和暂停视频,但只能在视频准备好之后才能播放和暂停。
我的主要活动
@Override
public void onResume() {
if (mVideoPlayerController != null) {
mVideoPlayerController.resume();
if (mVideoPlayerController.isContentStarted())
if (isPlayedBeforePaused) {
mVideoPlayer.play();
} else {
// set pause request will notify on prepare to play and pause
// this fix the bug that on pause when return from background it shows black screen
mVideoPlayerController.mVideoTracker.setPauseRequest();
}
}
super.onResume();
}
和我的视频跟踪器(视频视图)
super.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer mp) {
mMediaPlayer = mp;
if (mPauseRequest) {
play();
pause();
mPauseRequest = false;
}
}
});
我知道这不是最好的方法,但这是我发现的最好的方法,没有错误,而且存在这样的东西(-:
希望它能帮助某人
这篇关于从后台返回视频时出现黑屏的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文