質問

そこで、次のコードを使用してカメラアクティビティを起動しようとしています。

//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

私の質問はこれです:標準的なカメラアクティビティを使用しようとしていることに対して一貫した動作を得る方法はありますか?カスタムアクティビティを書き留めて、自分が望むように機能させるようにしようとすることができますが、そのルートを避けたいと思います。

役に立ちましたか?

解決

私はJava/Android Developmentの世界に慣れていないので、あなたの質問に対する答えはありません。しかし、私はあなたがしていることに似たことを試みていますが、単に写真を撮ってから電子メールメッセージに添付したい場合があります。

私はあなたの例の一部を実装し、カメラが指定したファイルを作成したことを確認できました。次の画像に同じファイル名を使用して、前のファイルを上書きした場合、予想されるものです。

しかし、私が本当に言っていたのは、おそらくあなたがpat "/sdcard/..."が実際に存在するかどうかをテストしなければならないでしょう。また、次のアクティビティへのパスを渡すことで、プロセスを簡素化する可能性があります。

幸運を、

ジェイミーアーウィン

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top