2012-06-25 12 views
17

¿Es posible obtener una referencia a la instancia de mediaPlayer que utiliza el videoView, preferiblemente dentro de su ctor? ¿Si es así, cómo?Obtener mediaPlayer del videoView en Android

Dado que el videoView no tiene tantos oyentes como el mediaPlayer, me gustaría tener la capacidad de llegar al mediaPlayer para un control adicional y un mejor manejo de eventos.

+0

Probablemente pueda hacerlo a través de [reflexión] (http://tutorials.jenkov.com/java-reflection/private-fields-and-methods.html). – yorkw

+0

la reflexión es demasiado desordenada y demasiado peligrosa. ¿es posible extender el videoView y obtener el MediaPlayer allí? –

Respuesta

12

puede escuchar desde VideoView.

VideoView mVideoView=new VideoView(); 
mVideoView.setOnPreparedListener(new MediaPlayer.OnPreparedListener() { 
    @Override 
    public void onPrepared(MediaPlayer pMp) { 
    //use a global variable to get the object 
    } 
}); 

Alternativamente, si usted está interesado únicamente en Eventos Media Player se puede utilizar cualquiera de estos y estas se apliquen en VideoView y estos son básicamente eventos MediaPlayer.

void setOnCompletionListener(MediaPlayer.OnCompletionListener l) 
void setOnErrorListener(MediaPlayer.OnErrorListener l) 
void setOnInfoListener(MediaPlayer.OnInfoListener l) 
void setOnPreparedListener(MediaPlayer.OnPreparedListener l) 

Todas estas funciones también darán una instancia de Media Player.

+0

aunque hace mucho tiempo que hice esta pregunta, recuerdo lo que quería: mucho control y ser notificado de todos los eventos en esta vista: eventos de estado de reproducción (pausa, inicio, detención, búsqueda), eventos de error, el estado del almacenamiento en memoria intermedia, etc ... mediaPlayer tiene todos esos (aunque no está seguro de qué tan bien funcionan y cómo), pero videoView solo tiene algunos. –

+0

Los eventos en VideoView (por ejemplo, setOnInfoListener (MediaPlayer.OnInfoListener l)) solo están disponibles desde el nivel 17 de la API, entonces, ¿qué sucede si deseo admitir niveles de API más bajos? –

+0

Puede establecerOnInfoListener del objeto MediaPlayer encontrado. Disponible> API 3. –

Cuestiones relacionadas