2012-05-17 17 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); 
相關問題