2012-02-06 11 views
5

Estoy desarrollando un juego usando cocos2d-x y quiero reproducir video en él. La actividad tiene una vista OpenGL y también coloque VideoView adicional encima y establezca visibilidad en INVISIBLE.reproduciendo video en la parte superior de la vista OpenGL en android

Cuando necesito reproducir video, simplemente oculto la vista OpenGL y habilito mi VideoView. Después de eso, creo MediaPlayer, llamo a setDisplay con el titular de ese VideoView, etc. y, finalmente, el video se reproduce bien. Cuando termina el video, vuelvo a cambiar las visibilidades: abierto a VISIBLE y videoview a INVISIBLE.

Sin embargo, el problema es que cuando intento reproducir video por segunda vez, simplemente no aparece, sin embargo, se reproduce el sonido del video.

¿Hay alguna captura con visibilidades?

Respuesta

1

Necesitará una vista de superficie para reproducir video al usar la clase Android MediaPlayer.

Para reproducir el video por encima de GLSurfaceView, cree un cuadro de diálogo personalizado de Android que contenga una vista en superficie y reproduzca video sobre eso.

1

Puede hacer esto agregando dinámicamente la vista de video en la superficie de glview. Primero cree una vista principal (cualquier diseño), agregue vista de video en la misma vista principal y luego agregue esta vista principal en la vista de superficie gl. He hecho esto antes y estaba funcionando para mí. para su referencia:

 // first set the content view as your glview with your params. 
    setContentView(mGLView, gl_params); 
    mGLView.setZOrderMediaOverlay(false); 

    // add a parent view for video view. rl is relative layout 
    addContentView(rl, rl_params); 

    // now add the video view inside this parent view. 
    rl.addview(video_view, video_view_params) 
3

Acabo de modificar el ApiDemo para ver si funciona. Tengo un blog el código completo aquí: post sin usar reproductor de medios por separado para Ver vídeo podemos configurar el video y jugar

mVideoView.setVideoURI(data.getData()); 
    mVideoView.setVisibility(View.VISIBLE); 
    mVideoView.start(); 

    //I could add touch listener in onCreate 
    mGLSurfaceView.setOnTouchListener(...); 

//touch event will go all the way down to GLSurfaceView 
//Here i could chnage the video view position 
@Override 
public boolean onTouch(View view, MotionEvent motionEvent) { 
    mVideoView.setTranslationX(motionEvent.getX()); 
    mVideoView.setTranslationY(motionEvent.getY()); 
    return true; 
} 
+0

Dado que esta es la creación de una vista en la parte superior de la OpenGL Ver, si bien es invisible seré capaz de tocar 'atravesarlo'? En otras palabras, ¿permitirá esta capa que los toques pasen a través de la capa OpenGL? –

+0

Pude escuchar el evento de movimiento configurando el oyente táctil, también actualicé la publicación con esos cambios –

Cuestiones relacionadas