04-12 12:34:21.510: E/AndroidRuntime(8259): FATAL EXCEPTION: main
04-12 12:34:21.510: E/AndroidRuntime(8259): java.lang.NullPointerException
04-12 12:34:21.510: E/AndroidRuntime(8259): at android.graphics.Canvas.throwIfRecycled(Canvas.java:1011)
04-12 12:34:21.510: E/AndroidRuntime(8259): at android.graphics.Canvas.drawBitmap(Canvas.java:1052)
04-12 12:34:21.510: E/AndroidRuntime(8259): at com.CameraPR.Preview.overlayMark(Preview.java:100)
04-12 12:34:21.510: E/AndroidRuntime(8259): at com.CameraPR.Preview.access$0(Preview.java:91)
04-12 12:34:21.510: E/AndroidRuntime(8259): at com.CameraPR.Preview$1.onPictureTaken(Preview.java:85)
04-12 12:34:21.510: E/AndroidRuntime(8259): at android.hardware.Camera$EventHandler.handleMessage(Camera.java:618)
04-12 12:34:21.510: E/AndroidRuntime(8259): at android.os.Handler.dispatchMessage(Handler.java:99)
04-12 12:34:21.510: E/AndroidRuntime(8259): at android.os.Looper.loop(Looper.java:132)
04-12 12:34:21.510: E/AndroidRuntime(8259): at android.app.ActivityThread.main(ActivityThread.java:4123)
04-12 12:34:21.510: E/AndroidRuntime(8259): at java.lang.reflect.Method.invokeNative(Native Method)
04-12 12:34:21.510: E/AndroidRuntime(8259): at java.lang.reflect.Method.invoke(Method.java:491)
04-12 12:34:21.510: E/AndroidRuntime(8259): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:841)
04-12 12:34:21.510: E/AndroidRuntime(8259): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:599)
04-12 12:34:21.510: E/AndroidRuntime(8259): at dalvik.system.NativeStart.main(Native Method)
널포인트 발생인데;;; 어디가 문제가 ;; ㅠ 소스는
public void takePicture(final String title, final String description, final String gelPath)
{
mCamera.takePicture(null, null,new PictureCallback()
{
public void onPictureTaken(byte[] data, Camera camera)
{
BitmapFactory.Options options = new BitmapFactory.Options();
options.inSampleSize = 2;
Bitmap bitmp = BitmapFactory.decodeFile(gelPath, options);
picture = BitmapFactory.decodeByteArray(data, 0, data.length);
MediaStore.Images.Media.insertImage(mContext.getContentResolver(),
overlayMark(picture,bitmp,250,250), title, description);
Toast.makeText(mContext, "이미지가 저장 되었습니다.", Toast.LENGTH_SHORT).show();
mCamera.startPreview();
}
});
}
private Bitmap overlayMark(Bitmap baseBmp, Bitmap overlayBmp, int distanceLeft,int distanceTop)
{
Bitmap bitmap1 = Bitmap.createBitmap(baseBmp.getWidth() + distanceLeft, baseBmp.getHeight() + distanceTop, baseBmp.getConfig());
BitmapFactory.Options options = new BitmapFactory.Options();
options.inSampleSize = 2;
Bitmap resultBmp = Bitmap.createScaledBitmap(bitmap1, 100, 100, true);
Canvas canvas = new Canvas(resultBmp);
canvas.drawBitmap(baseBmp, distanceLeft, distanceTop, null);
canvas.drawBitmap(overlayBmp, 0, 0, null);
return resultBmp;
}
이부분에서 오류가나구요;;;
gelPath 는 다른파일에서
mCaptureButton = (Button)findViewById(R.id.capture_button);
mCaptureButton.setOnClickListener(new OnClickListener()
{
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
String gelPath = "/mnt/sdcard/picture/temp1.jpg";
mPreview.takePicture("MyPhoto", "Photo taken by sample application",gelPath);
}
});
파라미터로 받고잇습니다..
도와주세요 ㅠ
로그를 보면 답이 나오자나요. 로그 읽는 법을 더 터득하셔야 겠네요.
- 사용하려는 객체가 null이어서 exception이 발생
- canvas에서 draw 하려는 것이 recycle 되었는지 체크하는 도중에 NullPoint 발생
04-12 12:34:21.510: E/AndroidRuntime(8259): at android.graphics.Canvas.drawBitmap(Canvas.java:1052)
- canvas의 drawBimap 메소드에서 발생.
- 실제 사용자 코드에서는 Preview 클래스의 100번째 줄이군요.
Preview 클래스의 overlayMark 라는 메소드 내부 입니다. 어떤게 null인지 체크를 해 보세요.
그리고 그게 왜 null인지 거꾸로 올라가면서 확인해 보세요.
아마도 비트맵이 null인거 같습니다.