나는 surfaceview와 mediaplayer가있는 비디오 플레이어를 만들었습니다. 10 개의 비디오와 10 개의 버튼이 있습니다. 각 버튼을 클릭하면 각 동영상이 재생됩니다.미디어 플레이어가 끝났을 때 표면 홀더를 지우는 방법은 무엇입니까?
여기내 코드는 ...
//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..
모든 것이 괜찮습니다. 내 맞춤 비디오 뷰가 정상적으로 작동합니다. 하지만 비디오가 다음으로 넘어갈 때 이전 비디오의 마지막 장면이 잠시 동안 남아 있고 다음 비디오 장면으로 바뀝니다.
다음 비디오가 재생되기 전에 이전의 표면보기가 명확해야하기 때문이라고 생각합니다. 하지만 표면 뷰어 또는 표면 홀더를 지우는 방법을 모릅니다.
나는 이것을 찾으려고했지만, 비디오 재생 방법 만 찾을 수 있었고, mediaplayer에서 disaply로 설정된 표면보기를 지우는 방법이 아닙니다.
도와주세요 ~~!
그것은 최고의 solluction 무엇입니까? jus가 다음 비디오 전에 SurfaceHolder를 지울 방법이없는가요? –
void ClearTextureView() { var cnv = _textureView.LockCanvas(); cnv.DrawColor (Android.Graphics.Color.Transparent, Android.Graphics.PorterDuff.Mode.Clear); _textureView.UnlockCanvasAndPost (cnv); } –