2012-05-17 22 views
0

我设法构建了一个简单但工作的自定义相机应用程序。 到目前为止,我可以直接启动并拍摄照片。 我还添加了适当的意图过滤器将它发布为一个可用的应用程序以回复包含的代码行另一个应用程序的意图调用像这样的:Intent cameraIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);如何从我的自定义相机应用程序通过意图从其他应用程序调用图像返回ACTION_IMAGE_CAPTURE

的问题是:如何编写我的相机应用程序发回图像到外部应用程序通过一个URI来保存?

目前我有一种方法,检测相机是否已直接启动或调用回复意向过滤器:此方法是isImageCaptureIntent(工作)。

我想我必须在PictureCallbackonPictureTaken方法中写一些东西,但是一旦我尝试写入OutputStrems,所有的尝试都会停在NullPointerExceptions中。

注意mSaveUri已经充满了调用应用程序从该行的代码提供适当的URI:mSaveUri = (Uri) myExtras.getParcelable(MediaStore.EXTRA_OUTPUT);

这里是方法:

PictureCallback myPictureCallback_JPG = new PictureCallback() { 

    @Override 
    public void onPictureTaken(final byte[] arg0, Camera arg1) {); 

     if (isImageCaptureIntent()) { 

      if (mSaveUri != null) { 
       OutputStream outputStream = null; 
       try { 
        outputStream = getContentResolver() 
      .openOutputStream(mSaveUri); <== HERE I GET NullPointerException 
        outputStream.write(arg0); 
        outputStream.close(); 
        setResult(RESULT_OK); 
        finish(); 
       } catch (IOException ex) { 
        // ignore exception 
       } finally { 
       } 
      } 
     } 
     camera.startPreview(); 
    } 
}; 

回答

0
 mBitmap = BitmapFactory.decodeByteArray(data, 0, data.length, opt); 

     Matrix mtrxFreeze = new Matrix(); 
     mtrxFreeze.postRotate(90); 

     mBitmap = Bitmap.createBitmap(mBitmap, 0, 0, mBitmap.getWidth(), 
       mBitmap.getHeight(), mtrxFreeze, true); 
相关问题