Zrobiłem odtwarzacz wideo z widokiem powierzchni i mediaplayer. Mam 10 filmów i 10 przycisków. jeśli klikniesz na każdym przycisku, odtwarzane będą wszystkie filmy.Jak wyczyścić uchwyt powierzchniowy po zakończeniu odtwarzania multimediów?
tutaj jest mój kod ..
//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..
wszystko jest w porządku. Mój niestandardowy widok wideo działa poprawnie. , ale gdy wideo przejdzie do następnego, ostatnia scena poprzedniego wideo pozostaje na chwilę i przechodzi do następnej sceny wideo.
Myślę, że to dlatego, że poprzedni widok powierzchni powinien być wyraźny przed rozpoczęciem następnego wideo. , ale nie mam pojęcia, jak wyczyścić uchwyt powierzchni lub powierzchni.
Szukałem tego, ale mogłem tylko znaleźć sposób odtwarzania wideo, a nie jak wyczyścić widok powierzchni, który jest ustawiony z dyskiem z mediaplayer.
proszę mi pomóc ~~!
To najlepsze solluction? Czy nie ma sposobu, aby wyczyścić SurfaceHolder przed następnym wideo? –
void ClearTextureView() { var cnv = _textureView.LockCanvas(); cnv.DrawColor (Android.Graphics.Color.Transparent, Android.Graphics.PorterDuff.Mode.Clear); _textureView.UnlockCanvasAndPost (cnv); } –