MediaController
La clase MediaController
permite añadir unos controles básicos para administrar la reproducción. Se puede combinar con la clase MediaPlayer
para la reproducción de audio y con la vista VideoView
para la de vídeo.
MediaController y MediaPlayer
1. Instanciamos la clase MediaController
:
mediaController = new MediaController(this);
mediaController.setMediaPlayer(this);
mediaController.setAnchorView(findViewById(R.id.constLayout));
2. Implementamos la interface:
public class MainActivity extends AppCompatActivity implements MediaController.MediaPlayerControl{
...
}
3. Por cada método de la interface de debe de llamar al método correspondiente de MediaPlayer
o devolver un valor definido:
public void start() {
mediaPlayer.start();
}
public void pause() {
mediaPlayer.pause();
}
public int getDuration() {
return mediaPlayer.getDuration();
}
public int getCurrentPosition() {
return mediaPlayer.getCurrentPosition();
}
public void seekTo(int i) {
mediaPlayer.seekTo(i);
}
public boolean isPlaying() {
return mediaPlayer.isPlaying();
}
public int getBufferPercentage() {
return 0;
}
public boolean canPause() {
return true;
}
public boolean canSeekBackward() {
return true;
}
public boolean canSeekForward() {
return true;
}
@Override
public int getAudioSessionId() {
return 0;
}
Se puede cambiar algunos parámetros para cambiar el comportamiento en la reproducción.
4. Mostramos el controlador:
public boolean onTouchEvent(MotionEvent event) {
mediaController.show(2000);
return super.onTouchEvent(event);
}
MediaController y VideoView
Utilizarl MediaController
junto a VideoView
requiere de menos pasos:
1. Instanciamos la clase MediaController
:
mediaController = new MediaController(this);
mediaController.setAnchorView(videoView);
videoView.setMediaController(mediaController);
String uri = "https://permadi.com/thirdParty/videos/redcliff450.webm";
videoView.setVideoURI(Uri.parse(uri));
2. Implementamos la interface:
public class MainActivity extends AppCompatActivity implements MediaController.MediaPlayerControl{
...
}
Si bien la interface nos obliga a declarar los métodos, no será necesario dotarlos de funcionlidad.
3. Mostramos el controlador:
public boolean onTouchEvent(MotionEvent event) {
mediaController.show(20000000);
return false;
}