android - 从后台返回视频时出现空白屏幕

标签 android android-mediaplayer surfaceview android-lifecycle

我正在使用 google IMA 示例在我的应用程序中运行视频,经过一些更改以确保它满足我的需要,我仍然有一个我无法解决的问题,我希望在应用程序从后台返回时播放视频或根据 Activity 停止前的状态暂停。

当用户在暂停模式下停止 Activity 时,我有状态,我有位置,还有一个问题。当我从后台返回视频时,屏幕是黑色的,直到我按下 Controller 中的开始,并且不需要寻找定位它。

从后台返回时,我需要暂停显示预览图像。

@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();
}

最佳答案

onPause 中处理暂停播放,同时保存 playbackPosition .
onResume查看以前的playbackPosition与当前。如果它们不匹配,请重新初始化您的 MediaPlayer寻求playbackPosition并使用 play() 继续播放, 否则只执行 play() .

View 可能还需要重新初始化。这可能是黑屏的原因。

关于android - 从后台返回视频时出现空白屏幕,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34839539/

相关文章:

java - 准备 MediaPlayer 播放自定义文件时出现问题

java - 使用媒体播放器播放音频文件时出现问题

Android Camera - 应用程序传递了 NULL 表面

android - mLayout.addView() 只工作一次

android - 如何在不丢失纵横比的情况下缩放方形图像(即使布局不是方形的)

android - 如何与原始文件夹中的其他应用程序共享我的 mp3 文件

java - 平滑位图旋转 android SurfaceView

Android 使用 SurfaceView 和 Thread 绘制

android - 以编程方式应用于 Button 时,样式无法完全正常工作

android - 开发中的移动应用程序安全性