안드로이드 개발 질문/답변 (글 수 45,052)
  • RSS
  • Skin Info
  • Tag list
  • List
  • Webzine
  • Gallery
08-26 14:48:06.944: ERROR/AndroidRuntime(8935): java.lang.RuntimeException: Method called after release()
08-26 14:48:06.944: ERROR/AndroidRuntime(8935):     at android.hardware.Camera.setHasPreviewCallback(Native Method)
08-26 14:48:06.944: ERROR/AndroidRuntime(8935):     at android.hardware.Camera.access$600(Camera.java:58)
08-26 14:48:06.944: ERROR/AndroidRuntime(8935):     at android.hardware.Camera$EventHandler.handleMessage(Camera.java:331)
08-26 14:48:06.944: ERROR/AndroidRuntime(8935):     at android.os.Handler.dispatchMessage(Handler.java:99)
08-26 14:48:06.944: ERROR/AndroidRuntime(8935):     at android.os.Looper.loop(Looper.java:123)
08-26 14:48:06.944: ERROR/AndroidRuntime(8935):     at android.app.ActivityThread.main(ActivityThread.java:4364)
08-26 14:48:06.944: ERROR/AndroidRuntime(8935):     at java.lang.reflect.Method.invokeNative(Native Method)
08-26 14:48:06.944: ERROR/AndroidRuntime(8935):     at java.lang.reflect.Method.invoke(Method.java:521)
08-26 14:48:06.944: ERROR/AndroidRuntime(8935):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:862)
08-26 14:48:06.944: ERROR/AndroidRuntime(8935):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:620)
08-26 14:48:06.944: ERROR/AndroidRuntime(8935):     at dalvik.system.NativeStart.main(Native Method)


카메라 어플자체는 정상적으로 돌아가나, 카메라 어플 종료시에 이 로그가 발생하면서 어플이 끝난뒤에 예상치 않은 오류(익숙한)을 띄우면서 종료 해 버리더군요.
갤스로 작업하고 있습니다. 혹시 이러한 비슷한 증상을 겪으신분들 어떻게 해결하 셨는지 알려주시면 감사하겠습니다.^^


아래는 오류가 나고 있는 preview의 풀소스입니다.
package com.samsung.Camera;
import java.io.IOException;

import android.content.Context;
import android.hardware.Camera;
import android.hardware.Camera.PreviewCallback;
import android.util.Log;
import android.view.SurfaceHolder;
import android.view.SurfaceView;

class Preview extends SurfaceView implements SurfaceHolder.Callback {
 SurfaceHolder mHolder;
 Camera mCamera;

 Preview(Context context) {
  super(context);

  // SurfaceHolder.Callback을 설정함으로써 Surface가 생성/소멸되었음을
  // 알 수 있습니다.
  mHolder = getHolder();
  mHolder.addCallback(this);
  mHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
 }

 public void surfaceCreated(SurfaceHolder holder) {
  // Surface가 생성되었다면, 카메라의 인스턴스를 받아온 후 카메라의
  // Preview 를 표시할 위치를 설정합니다.
  mCamera = Camera.open();
  try {
   mCamera.setPreviewDisplay(holder);
   mCamera.setPreviewCallback(new PreviewCallback() {

    public void onPreviewFrame(byte[] data, Camera arg1) {
     Preview.this.invalidate();
    }
   });
  } catch (IOException exception) {
//   mCamera.release();
   mCamera = null;
   // TODO: add more exception handling logic here
  }
  mCamera.startPreview();
//  mCamera.startPreview();
 }

 public void surfaceDestroyed(SurfaceHolder holder) {
  // 다른 화면으로 돌아가면, Surface가 소멸됩니다. 따라서 카메라의 Preview도
  // 중지해야 합니다. 카메라는 공유할 수 있는 자원이 아니기에, 사용하지 않을
  // 경우 -액티비티가 일시정지 상태가 된 경우 등 - 자원을 반환해야합니다.
  mCamera.stopPreview();
  mCamera.release();
//  mCamera = null;
 }

 public void surfaceChanged(SurfaceHolder holder, int format, int w, int h) {
  // 표시할 영역의 크기를 알았으므로 해당 크기로 Preview를 시작합니다.
  Camera.Parameters parameters = mCamera.getParameters();
  parameters.setPreviewSize(w, h);
//  mCamera.setParameters(parameters);
  mCamera.startPreview();
//  mCamera.stopPreview();
//  mCamera.startPreview();
 }
 public boolean capture(Camera.PictureCallback jpegHandler, Camera.ShutterCallback shutterHandler, Camera.PictureCallback rawHandler){
  if(mCamera !=null){
   mCamera.takePicture(shutterHandler, rawHandler, jpegHandler);
   return true;
  }
  else{
   return false;
  }
 }

}


삭제 수정 댓글
2010.09.17 10:23:37
zic325
surfaceDestroyed 할 때 mCamera.setPreviewCallback(null)을 해보셔용.ㅋ
번호
분류
제목
글쓴이
공지
앱개발 질문
게시글 작성시 소스코드를 보기 쉽게 처리하기 33 file
멍멍대왕
01-21 5 622008
공지
앱개발 질문
[필독] Q&A 게시판 글작성 안내, 질문전 검색 필수! 176
회색
01-29 7 1064743
9752 앱개발 질문 다중 접속 adb shell 질문 1
바본드
08-27   4488
9751 앱개발 질문 AlarmManager 를 사용하여 특정한 시간에 알람이 울리게 하고 싶습니다. 4
xtei
08-27   5017
9750 앱개발 질문 쿠기를 이용한 로그인(소스포함) 질문입니다.(제가 찾은 참고 사이트 링크 걸어놨습니다.) 6
안웅
08-27   30514
9749 앱개발 질문 백그라운드 서비스? 브로드캐스트 리시버? 6
쎄미
08-27   4887
9748 앱개발 질문 <img> 태그를 사용하고 싶어요 2
청명공자
08-27   2421
9747 앱개발 질문 폰 수직 수평 변경
Backspin
08-27   2765
9746 앱개발 질문 intent 질문이에요ㅠㅠㅠ
green06
08-27   2558
9745 앱개발 질문 가속도 사용을 위한 permission string ? 2
지능도시
08-27   2745
9744 앱개발 질문 자바 숫자 출력관련이요 1
스마일마스크
08-27   3072
9743 앱개발 질문 카메라 프리뷰에서 setPreviewCallback() 콜백함수 사용법좀 알려주세요
오치리
08-27   4074
9742 앱개발 질문 search dialog 관련 질문 입니다. 2
엘크
08-27   3158
9741 앱개발 질문 ListView에서 onClick 과 ContextMenu를 동시에 쓰려는데... 1
Saver
08-27   3079
9740 앱개발 질문 사용자 Device가 root되어 있는지 어떻게 알수 있나요? 2
jclova
08-27   2581
9739 앱개발 질문 글자출력후 화면지우는법 1
마키아벨리
08-27   2781
9738 앱개발 질문 [급] 팝업을 AlertDialog.Buillder로 커스텀한 xml으로 만드는데 끝부분에 여백이 남는 문제 2 file
탱탱구리
08-26   5326
9737 앱개발 질문 이클립스 에러 1 file
Dark
08-26   3202
9736 앱개발 질문 오버레이 널값..
무살해커
08-26   2985
9735 앱개발 질문 버튼 드래그(드래깅) 해서 원하는위치에 놓기....
치즈마루
08-26   2746
9734 앱개발 질문 안드로이드폰 기종 모두 화면에 표시되는 이미지 크기가 같나요? 5
여니빵
08-26   6575
9733 앱개발 질문 액티비티에서 값을 전달했는데 전달받을 액티비티에서 제대로 값을 받지 못하는것같습니다 도와주세요!ㅜㅠ 5
jong327
08-26   3204





XE Login

OpenID Login