Hice un reproductor de video con SurfaceView y Mediaplayer. tengo 10 videos y 10 botones. si haces clic en cada botón, se reproducen todos los videos.cómo quitar el soporte de superficie cuando el reproductor multimedia está terminado?
aquí es mi código ..
//onCreate
holder = surfaceview.getHolder();
holder.addCallback(this);
holder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
//Button1
if(mp == null)mp = new MediaPlayer();
mp.setDataSource(mediaplay_path);
mp.setDisplay(holder);
mp.setScreenOnWhilePlaying(true);
mp.setAudioStreamType(AudioManager.STREAM_MUSIC);
mp.prepare();
mp.start();
//Button2
if(mp != null){
mp.stop();
mp.reset();
}
mp.setDataSource(mediaplay_path2);
mp.setDisplay(holder);
mp.setScreenOnWhilePlaying(true);
mp.setAudioStreamType(AudioManager.STREAM_MUSIC);
mp.prepare();
mp.start();
//Button3~Button10 is same as Button2..
todo está bien. mi videoview personalizado funciona bien. pero cuando el video pasa al siguiente, la última escena del video anterior permanece durante un tiempo y pasa a la siguiente escena de video.
Creo que es porque la vista de superficie anterior debe estar clara antes de reproducir el siguiente video. pero no tengo idea de cómo limpiar la superficie o el soporte de superficie.
he buscado esto pero solo he podido encontrar cómo reproducir el video, no cómo borrar la vista de la superficie, que está configurada como una decepción del reproductor multimedia.
por favor ayúdame ~~!
¿Es la mejor solución? ¿No hay forma de jus borrar el SurfaceHolder antes del próximo video? –
void ClearTextureView() { var cnv = _textureView.LockCanvas(); cnv.DrawColor (Android.Graphics.Color.Transparent, Android.Graphics.PorterDuff.Mode.Clear); _textureView.UnlockCanvasAndPost (cnv); } –