2

I am new to coding and right now I made a background video from youtube that starts immediately after entering the activity and is loopping (it never stops). The btStart has a chronometer set on it, but this has nothing to do with what I am asking. How can I make the video start only after pressing the btStart Button? I placed videoView.start() in clickListener but nothing changed.

The code:

public class BreatheActivity extends AppCompatActivity {

private VideoView videoView;
MediaPlayer mediaPlayer;
int currentVideoPosition;

Button btStart;
ImageButton btOut;
ImageView xOut;
Chronometer chrono;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_breathe);

    xOut = findViewById(R.id.btOutX);
    btOut = findViewById(R.id.btOut);
    btStart = findViewById(R.id.btBreathe);
    chrono = findViewById(R.id.breathe_chrono);

    videoView = findViewById(R.id.video_breath);
    Uri uri = Uri.parse("android.resource://" + getPackageName() + "/" + R.raw.breathe);

    videoView.setVideoURI(uri);


    btStart.setOnClickListener(view -> {
        videoView.start();

        btStart.setVisibility(View.GONE);

        chrono.setBase(SystemClock.elapsedRealtime());

        chrono.start();

    });

    btOut.setOnClickListener(v -> {
        BreatheActivity.super.onBackPressed();

    });

    videoView.setOnPreparedListener(mp -> {
        mediaPlayer = mp;

        mediaPlayer.setLooping(true);

        if (currentVideoPosition != 0) {
            mediaPlayer.seekTo(currentVideoPosition);
            mediaPlayer.start();
        }

    });

}

@Override
protected void onPause() {
    super.onPause();
    currentVideoPosition = mediaPlayer.getCurrentPosition();
    videoView.pause();
}

@Override
protected void onResume() {
    super.onResume();
    videoView.start();
}

@Override
protected void onDestroy() {
    super.onDestroy();
    mediaPlayer.release();
    mediaPlayer = null;
}

}
Zoe
  • 27,060
  • 21
  • 118
  • 148
Diligent PD
  • 101
  • 8

1 Answers1

1

I think you forgot to move videoView.start() inside btStart.setOnClickListener(view -> {});

btStart.setOnClickListener(view -> {
    videoView.start();
 
    btStart.setVisibility(View.GONE);
     
    chrono.setBase(SystemClock.elapsedRealtime());
    
    chrono.start();
    
});

Here is someone doing the same thing as you.

Paulus
  • 162
  • 7