2014-12-16 2 views
0

내 애플 리케이션은 표면 뷰 내부에서 비디오를 재생합니다. 그리고 onPause()를 할 때 미디어 플레이어 재생을 멈 춥니 다. 그러나 다른 액티비티에서 돌아 오면 표면 뷰는 모두 검은 색이어서 비디오를 다시 재생하기 시작할 때만 프레임을 표시하기 시작합니다. 멈출 때 마지막 프레임을 보존하는 방법이 있는지 알고 싶습니다. 고마워.표면 뷰에서 비디오 재생

+0

당신이 그것을 보존해야합니까 : 다음 코드에 의해 필요한 경우

당신은 두 번째 서피스 뷰 SurfaceView을 취소 할 수 있습니까? 앱을 다시 시작할 때 한 프레임을 재생하고 동영상을 일시 중지 할 수 있습니까? – fadden

+0

@fadden 그래, 이건 또 다른 해결책이지만 어떻게 하나의 프레임을 재생할 수 있습니까? start() 바로 다음에 pause()를 호출 해 보았습니다. 실패했습니다. 고맙습니다! – vincentzhou

+0

'seek()'메서드가 프레임 그리기를 트리거합니까? 그렇다면 활동을 다시 시작할 때 일시 중지하기 전에 위치를 파악하고이 프레임을 찾을 수 있습니다. –

답변

0

두 개의 SurfaceView를 사용했습니다. 먼저 비디오를 재생하고 두 번째 서핑을 사용하여 그림을 표시했습니다.

try { 
    mediaMDRetriever.setDataSource(mediaPath); 
    picBitmap = mediaMDRetriever.getFrameAtTime(); 
} catch (Exception e) { 
} 

을 두 번째 surfview에 그리기 : 나는 일시 정지에서 돌아올 때 MediaPlayer가 재생되지 않는 경우 는, 나는 코드의이 부분에서 영상의 현재 프레임을 얻는다.

Canvas surfCanvas = surfHolder2.lockCanvas(); 
surfCanvas.drawColor(0, PorterDuff.Mode.CLEAR); 
surfHolder2.unlockCanvasAndPost(surfCanvas);