reproductor - videoview android studio ejemplo
Evento para el estado de reproducción de VideoView o reproducción/pausa de MediaController (2)
Parece que no puedo encontrar un evento que escuche el estado de reproducción. Estoy principalmente interesado en el estado de play/pause
. Estoy usando MediaController
que tiene un botón Play/Pause
, pero tengo un botón secundario que también controla Play/Pause
. Al usar mi botón personalizado, puedo play/pause
, pero si play/pause
usando el botón de play/pause
MediaController
, actualmente no tengo forma de cambiar la imagen en mi botón de play/pause
para reproducir o pausar.
¿Hay un evento que no conozco para poder trabajar durante la reproducción / pausa?
Esta es una pregunta muy similar: cómo detectar un evento cuando se hace clic en el botón de pausa / reproducción en MediaController
Debería poder configurar su propio MediaController.MediaPlayerControl y anular la pausa y el inicio
Si está utilizando el MediaController
en combinación con un VideoView
, debería ser relativamente fácil extender este último y agregarle su propio oyente.
El VideoView personalizado se vería así en su forma más básica:
public class CustomVideoView extends VideoView {
private PlayPauseListener mListener;
public CustomVideoView(Context context) {
super(context);
}
public CustomVideoView(Context context, AttributeSet attrs) {
super(context, attrs);
}
public CustomVideoView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}
public void setPlayPauseListener(PlayPauseListener listener) {
mListener = listener;
}
@Override
public void pause() {
super.pause();
if (mListener != null) {
mListener.onPause();
}
}
@Override
public void start() {
super.start();
if (mListener != null) {
mListener.onPlay();
}
}
public static interface PlayPauseListener {
void onPlay();
void onPause();
}
}
VideoView
uso es idéntico al uso de un VideoView
normal, con la única diferencia de que ahora podemos conectar a nuestro propio oyente.
// Some other code above...
CustomVideoView cVideoView = (CustomVideoView) findViewById(R.id.custom_videoview);
cVideoView.setPlayPauseListener(new CustomVideoView.PlayPauseListener() {
@Override
public void onPlay() {
System.out.println("Play!");
}
@Override
public void onPause() {
System.out.println("Pause!");
}
});
cVideoView.setMediaController(new MediaController(this));
cVideoView.setVideoURI(...);
// or
cVideoView.setVideoPath(...);
// Some other code below...
Finalmente, también puede declararlo en su diseño xml e inflarlo (como se muestra arriba) - solo asegúrese de usar <package_name>.CustomVideoView
. Ejemplo:
<mh.so.CustomVideoView android:layout_width="wrap_content"
android:layout_height="wrap_content" android:id="@+id/custom_videoview" />