2012-04-24 3 views
0

안드로이드 응용 프로그램에서 그림을 저장하려고합니다. 여기 내 콜백 함수입니다 :안드로이드 카메라 응용 프로그램에서 null 포인터 예외가

ShutterCallback myShutterCallback = new ShutterCallback(){ 

    @Override 
    public void onShutter() { 
     Log.d(TAG, "shutter callback"); 

    }}; 


PictureCallback myPictureCallback_RAW = new PictureCallback(){ 

    @Override 
    public void onPictureTaken(byte[] arg0, Camera arg1) { 
     Log.d(TAG, "raw callback"); 

    }}; 

PictureCallback myPictureCallback_JPG = new PictureCallback(){ 

    @Override 
    public void onPictureTaken(byte[] arg0, Camera arg1) { 
     // TODO Auto-generated method stub 
     Bitmap bitmapPicture 
      = BitmapFactory.decodeByteArray(arg0, 0, arg0.length); 

     ContentValues values = new ContentValues(); 
     values.put(Images.Media.TITLE, "title"); 
     values.put(Images.Media.BUCKET_ID, "test"); 
     values.put(Images.Media.DESCRIPTION, "test Image taken"); 
     values.put(Images.Media.MIME_TYPE, "image/jpeg"); 

     Uri uriTarget = getContentResolver().insert(Media.EXTERNAL_CONTENT_URI, values); 

     OutputStream imageFileOS; 
     try { 
      imageFileOS = getContentResolver().openOutputStream(uriTarget); 
      imageFileOS.write(arg0); 
      imageFileOS.flush(); 
      imageFileOS.close(); 

      Toast.makeText(CameraView.this, 
        "Image saved: " + uriTarget.toString(), 
        Toast.LENGTH_LONG).show(); 

     } catch (FileNotFoundException e) { 
      Log.d(TAG, "file not found " + e.getMessage()); 
      e.printStackTrace(); 
     } catch (IOException e) { 
      Log.d(TAG, "io exception " + e.getMessage()); 
      e.printStackTrace(); 
     } 

     //camera.startPreview(); 
     finish(); 
    } 
}; 

문제는 휴대폰의 여러 가지 유형의를 들면, 나는 NullPointerException이 줄에서 얻을 :

imageFileOS = getContentResolver().openOutputStream(uriTarget); 

은 사람이하기 전에이로 실행 했습니까?

편집 - 스택 트레이스는

04-24 11:52:03.979: E/AndroidRuntime(12695): FATAL EXCEPTION: main 
04-24 11:52:03.979: E/AndroidRuntime(12695): java.lang.NullPointerException 
04-24 11:52:03.979: E/AndroidRuntime(12695): at android.content.ContentResolver.openAssetFileDescriptor(ContentResolver.java:465) 
04-24 11:52:03.979: E/AndroidRuntime(12695): at android.content.ContentResolver.openOutputStream(ContentResolver.java:361) 
04-24 11:52:03.979: E/AndroidRuntime(12695): at android.content.ContentResolver.openOutputStream(ContentResolver.java:337) 
04-24 11:52:03.979: E/AndroidRuntime(12695): at com.appfury.grafighters.CameraView$4.onPictureTaken(CameraView.java:234) 
04-24 11:52:03.979: E/AndroidRuntime(12695): at android.hardware.Camera$EventHandler.handleMessage(Camera.java:536) 
04-24 11:52:03.979: E/AndroidRuntime(12695): at android.os.Handler.dispatchMessage(Handler.java:99) 
04-24 11:52:03.979: E/AndroidRuntime(12695): at android.os.Looper.loop(Looper.java:150) 
04-24 11:52:03.979: E/AndroidRuntime(12695): at android.app.ActivityThread.main(ActivityThread.java:4263) 
04-24 11:52:03.979: E/AndroidRuntime(12695): at java.lang.reflect.Method.invokeNative(Native Method) 
04-24 11:52:03.979: E/AndroidRuntime(12695): at java.lang.reflect.Method.invoke(Method.java:507) 
04-24 11:52:03.979: E/AndroidRuntime(12695): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839) 
04-24 11:52:03.979: E/AndroidRuntime(12695): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597) 
04-24 11:52:03.979: E/AndroidRuntime(12695): at dalvik.system.NativeStart.main(Native Method) 
+0

'uriTarget'이 null이 아닌지 확인 했습니까? –

+0

나는 그냥 확인했는데 null이다. 이 문제를 어떻게 방지 할 수 있습니까? ContentResolver가 uri 행을 삽입하지 않는 이유에 대한 아이디어가 있습니까? – coder

+0

http://stackoverflow.com/questions/9182022/android-getcontentresolver-insert-occometimes-returning-null – slayton

답변

0

HTC 장치에만 문제가 있음이 밝혀졌습니다. 이미지 파일을 장치의 DCIM 폴더에 저장하지만 getContentResolver를 사용하여 경로를 가져 와서 문제를 해결했습니다.

+0

다음 URI를 얻기 위해 무엇을 사용하고 있습니까? – Amaresh

+0

좀 더 구체적으로 나에게 도움이 될 수 있니? 나는 똑같은 문제에 직면하고 있고 내 경우에 해결하려고 노력하고있다. 그것은 삼성 모바일이다. – Amaresh

1

this 질문 비슷합니다. 호출 할 때 미디어 공급자가 던진 예외가 있는지 확인하고 디버거를 사용하여 imageFileOS = getContentResolver().openOutputStream(uriTarget);

관련 문제