안드로이드 개발 질문/답변
(글 수 45,052)
현재 메인에 4개의 버튼이 있고 그 중 1개의 버튼을 클릭하면 카메라 영상이 보여집니다.
문제는 화면이 나오는상태에서 뒤로가기 버튼으로 메인화면으로 돌아가면 에러가 발생합니다.
에러 내용은 "릴리즈된 메소드를 호출한다"입니다.
해당부분 코드는 아래와 같습니다.
카메라 영상을 종료하게 되면 surfaceDestroyed에서 PreviewCallback까지 종료해주는 것 아닌가요?
영상이 종료된 이후에도 Preview메소드가 호출해서 발생하는 문제 같은데 어떠한 방식으로 해결할 수 있을까요?
그럼 도움 부탁드립니다.
public void surfaceCreated(SurfaceHolder holder) {
//if (mediaRecorder == null) {
try {
camera = camera.open();
camera.setPreviewDisplay(holder);
camera.startPreview();
camera.setPreviewCallback(new PreviewCallback(){
public void onPreviewFrame(byte[] _data, Camera _camera){
i++;
TextView tv = (TextView)findViewById(R.id.TEST);
tv.setText(""+i);
}
});
//[ ... Draw on the Surface ...]
} catch (IOException e) {
Log.d("CAMERA", e.getMessage());
}
}
//}
public void surfaceDestroyed(SurfaceHolder holder) {
camera.stopPreview();
camera.release();
}




public void surfaceDestroyed(SurfaceHolder holder) {
camera.setPreviewCallback(null);
camera.stopPreview();
camera.release();
camera = null;
}
프리뷰를 끝내시기 전에 callback함수를 null로 바꾸시면 되지 않을까요?