シンプルだが機能するカスタム カメラ アプリケーションを構築することができました。これまでのところ、直接起動して写真を撮ることができます。また、適切なインテント フィルターを追加して、次のようなコード行を含む別のアプリケーションのインテント コールに応答できるアプリケーションとして公開しました。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();
}
};