返回后如何重播视频以及如何在后台循环播放视频

问题描述 投票:0回答:1

第一个问题 我正在使用 java 制作一个猜谜游戏,我想知道如何使用视频作为主屏幕的背景而不是使用图像或简单的颜色?我从这里的另一个问题得到了这个问题的答案,但我现在有这个新问题- 视频在后台播放得很好,但每当我打开另一个活动并返回主屏幕(播放视频的地方)时,屏幕就会显示黑屏。此外,当 android 进入睡眠模式时,我再次启动手机和同样的问题!

第二题 如何在后台循环播放视频,我的视频大约一分钟长,所以一分钟后视频就会暂停。那么,如何循环呢?

我的代码如下-

public class HomeActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_home);
        setTitle("");
        videoBackground();
    }

    public void videoBackground(){
        VideoView simpleVideoView = (VideoView) findViewById(R.id.videoView);
        simpleVideoView.setVideoURI(Uri.parse("android.resource://" + getPackageName() + "/" + R.raw.bg_video));
        simpleVideoView.start();
    }
public void exitGame(View v){
        finish();
        System.exit(0);
    }

    public void newGame(View v){
        Intent new_game = new Intent(this,ModesActivity.class);
        startActivity(new_game);
    }

    public void howToPlay(View v){

    }

现在我知道这里有什么问题,但我不知道解决方案。问题是有人在堆栈溢出中回答了这个问题,我在这里复制答案-

NatureDevil 的回答和视频很棒,但如果您单击一个按钮并打开一个新活动(例如点赞)并决定单击设备上的后退箭头,则首先缺少两件事,主屏幕将显示黑屏,因为视频将不重启所以你需要添加这个

@Override
protected void onResume() {
    super.onResume();
    // to restart the video after coming from other activity like Sing up
    mVideoView.start();
}

所以,我不明白把这个具体方法放在哪里。我一点都不明白。由于声誉低下,我无法在那里添加评论。你们能帮我吗?

感谢您的收听。

java android background android-videoview
1个回答
0
投票

你可以试试这个

  public class HomeActivity extends AppCompatActivity {
    VideoView simpleVideoView;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        videoBackground();

    }

    public void videoBackground(){
        simpleVideoView = (VideoView) findViewById(R.id.videoView);
        simpleVideoView.setVideoURI(Uri.parse("android.resource://" + getPackageName() + "/" + R.raw.bg_video));
        simpleVideoView.start();
        simpleVideoView.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
            @Override
            public void onPrepared(MediaPlayer mp) {
                mp.setLooping(true); 
            }
        });
    }
    @Override
    protected void onResume() {
        super.onResume();
        simpleVideoView.start();
    }
    @Override
    protected void onPause() {
        super.onPause();
        simpleVideoView.stopPlayback();
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.