从后台返回视频时出现黑屏 [英] blank screen when return to video from background

查看:0
本文介绍了从后台返回视频时出现黑屏的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在使用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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆