I want to implement a mute button for a video view. I have written the code below but it looks like the code inside onPrepared()
doesn't get executed. The listener seems to be working though.
I am not sure what the issue with this code is.
Also, if there is a way of implementing a built in mute button, I am open to suggestions. But I could not find anything of that sort.
Code below:
AudioManager am = (AudioManager) getSystemService(AUDIO_SERVICE);
final int volume_level = am.getStreamVolume(AudioManager.STREAM_MUSIC);
videoFile = getResources().getIdentifier("video", "raw", getApplicationContext().getPackageName());
videoView = (VideoView) findViewById(R.id.video);
mediaController = new MediaController(this);
mediaController.setAnchorView(videoView);
videoView.setMediaController(mediaController);
mediaController = new MediaController(this, false);
videoView.setVideoURI(Uri.parse("android.resource://" + getPackageName() + "/"
+ videoFile));
videoView.start();
ImageButton mute = (ImageButton) findViewById(R.id.mute);
mute.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
// Set Volume
if (volume_level != 0) {
videoView.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer mp) {
if (mp.isPlaying()) {
mp.stop();
mp.release();
mp = new MediaPlayer();
}
mp.setVolume(0, 0);
mp.start();
}
});
} else {
videoView.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer mp) {
if (mp.isPlaying()) {
mp.stop();
mp.release();
mp = new MediaPlayer();
}
mp.setVolume(volume_level, volume_level);
mp.start();
}
});
}
}
});
Regards,