안드로이드 개발 질문/답변 (글 수 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
9772 앱개발 질문 쓰레드 질문입니다. 8
사가트
08-27   2708
9771 앱개발 질문 브로드캐스트 리시버 좀 봐주세요~ 5
쎄미
08-27   3901
9770 플랫폼 질문 Toast 같은 최상위 Window 생성방법 문의 12
invisiblebrick
08-27   28620
9769 앱개발 질문 decodeByteArray 사용 안하고 jpeg 버퍼를 byte 버퍼로 변환하는 방법을 알고싶어요 ㅠㅠ
서얼뫄
08-27   3982
9768 앱개발 질문 위젯 컨트롤 관련 질문입니다.
천재소녀
08-27   2758
9767 앱개발 질문 불루투스 연결이 되다 안되다 합니다. 4
까이꺼
08-27   5087
9766 앱개발 질문 안드로이드에서 substring 사용하면 에러가 납니다; 3
RyuMineUs
08-27   3686
9765 기타 질문 DIP 가이드 변환
류엔
08-27   3640
9764 앱개발 질문 해상도가 깨지네요ㅜ 1
채야
08-27   2609
9763 앱개발 질문 프로그램 아이콘에 알림 이미지 표시 방법 문의 2
rndmania
08-27   3418
9762 앱개발 질문 Task Killer에서 강제 종료시 데이터파일 삭제되는 증상.. 2
푸른바람
08-27   3153
9761 기타 질문 구글 안드로이드 마켓에서 부분 유료화 (in app purchases) 지원 되나요?
자이언트판다
08-27   4344
9760 앱개발 질문 에러 메시지 질문 1
미수타똥고
08-27   2556
9759 기타 질문 안드로이드 480x800 픽셀단위 dip 변환방법 2
류엔
08-27   10185
9758 앱개발 질문 xml 오류 8
미르79
08-27   2557
9757 앱개발 질문 버튼으로 스크린키보드 효과 줄수 있나요?
행인1
08-27   3161
9756 앱개발 질문 현재 어플상태 저장 - 전화왔을때, 알람 1
바비
08-27   3024
9755 기타 질문 adb를 이용하여 쉘 사용시 파이프 입력에 관한 문의
호야상인
08-27   3558
9754 앱개발 질문 [문의] 화면 가로 세로 변경시 초기화면으로 돌아가는 문제 2
남감독
08-27   3356
앱개발 질문 카메라 릴리즈 관련 질문입니다.(소스포함 끌어올림) 1
go인조인간go
08-27   4132





XE Login

OpenID Login