3

私がテストしている3つのデバイスのうち、4.0.3を搭載したGoogle Nexus Sでのみこの問題が発生するため、これはちょっと奇妙です。写真を撮るためにネイティブカメラアプリを起動していますが、画像がどこに保存されるかは気にしないので、デフォルトの場所に保存されることを期待して指定しませんが、場所は保存されませんすべて!

Galaxy S2とSamsungSkyrocket(両方とも2.3.something)で正常に動作します。

アプリの起動に使用しているコード

Intent camIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
startActivityForResult(camIntent, TAKE_PHOTO);
return true;

私はそれを本当にシンプルに保っています、それで私は混乱しています!Nexus Sのカメラに固有の問題を知っている人はいますか?

編集: Nexus SのカメラアプリがファイルをonActivityResultに保存しているように見えますが、ネイティブカメラアプリを起動し、戻ったときに画像を保存しないため、保存されません。誰かがこれが真実であることを知っていますか?この振る舞いを見ましたか?

編集:誰もこれを見たことがありませんか?私がこれに遭遇した最初の人だとは信じがたいです...

編集:さて、もう少し作業した後、次のようにインテントのEXTRA_OUTPUTにURIを追加してみました:

camIntent.putExtra(MediaStore.EXTRA_OUTPUT,
                            Uri.parse(folderPath + String.format("%d.jpg", System.currentTimeMillis())));

そして今、私はここで説明されている振る舞いを見る:Android ACTION_IMAGE_CAPTURE OKを押したときにカメラアプリが何もしないインテント、そして私がこのように試したので、事前にファイルを作成することも機能しない:

File f = new File(folderPath, filename);
f.createNewFile();
camIntent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.parse(folderPath + filename));
4

1 に答える 1

2

了解しました。わかりました。奇妙なことに、理由はわかりませんが、この行を変更します。

camIntent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.parse(folderPath + filename));

camIntent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(file));

修正しました。理由を理解する必要があるかどうかわかりません...しかし、何であれ、それは機能します。私は他に何十億ものことを試みました...

EXTRA_OUTPUTをまったく指定しない->カメラはすべてが良かったように動作します...画像をどこにも保存しないことを除いて

intent.getExtras()。get( "data")->によって取得されたビットマップを取得すると、ビットマップが返されましたが、多くのバグレポートで広範囲に文書化されているように、フルサイズの画像ではありませんでした。

上記のUri.parseメソッドを使用すると、ネイティブカメラアプリのチェックマークボタンをクリックしても何も実行されません。

これが誰かに役立つことを願っています。

于 2012-06-10T20:20:35.217 に答える