そこで、次のコードを使用してカメラ アクティビティを起動しようとしています。
//In public void captureImage()
...
Intent cameraIntent = new Intent(MediaStore.ACTION_CAPTURE_IMAGE);
cameraIntent.putExtra(MediaStore.EXTRA_OUTPUT,
Uri.fromFile(new File("/sdcard/image.jpg")));
startActivityForResult(cameraIntent, REQUEST_CAMERA);
そして、結果を処理するには:
//In onActivityResult()
...
case REQUEST_CAMERA:
Intent intent = new Intent (CurrentScreen.this, NextScreen.this);
intent.putExtra(data);
startActivity(intent);
CurrentScreen.this.finish();
...
intent.putExtra(data)
小さなビットマップをインテントに添付し、次のアクティビティでサムネイルとして使用し、フルサイズのファイルは/sdcard/image.jpg
.
これは、(ドキュメントによると) 予想される動作であり、サムネイル用に小さなビットマップを使用し、大きなファイルを保存します。しかし、これを G1 と Eris でテストしたところ、奇妙な動作が見られました。
G1 の場合:
- resultCode は RESULT_OK を示していますが、結果ハンドラーに返されるインテント データは null です。
- また、 EXTRA_OUTPUT は完全に無視されているようです。画像がどこに保存されているのかわかりません。
エリスで:
- インテント データが正常に返される
- EXTRA_OUTPUT も無視されますが、画像は次の場所にある通常のメディア ストアに保存されます。
/sdcard/dcim/100media
私の質問はこれです: 標準のカメラ アクティビティを使用して、私がやろうとしていることに対して一貫した動作を得る方法はありますか? カスタム アクティビティを作成して、思いどおりに動作させることもできますが、その方法は避けたいと思います。