我设法构建了一个简单但有效的自定义相机应用程序。到目前为止,我可以直接启动它并让它拍照。我还添加了适当的意图过滤器,将其作为可用应用程序发布,以回复另一个应用程序的意图调用,其中包含如下代码行:Intent cameraIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
问题是:如何编码我的相机应用程序以将图像发送回传递 URI 进行保存的外部应用程序?
目前我有一个方法可以检测相机是直接启动还是调用来回复意图过滤器:这个方法是isImageCaptureIntent
(工作)。
我想我必须在onPictureTaken
方法中写一些东西,PictureCallback
但是一旦我尝试写入 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();
}
};