2

アプリケーションからカメラを起動しています。Android.provider.MediaStore.ACTION_IMAGE_CAPTURE を追加の android.provider.MediaStore.EXTRA_OUTPUT と共に使用しています。EXTRA_OUTPUT を使用するかどうかを指定すると、写真がギャラリーに追加されます。

ギャラリーで画像の Uri を取得するには? これを行うためのきれいな方法が見つかりませんでした。最後にギャラリーに追加された画像の Uri を使用したくありません。ユーザーが撮った写真であると確信できないからです。

編集: 画像を取得する方法を知っていることをここに追加させてください。現在、私はインテントで EXTRA_OUTPUT として渡している Uri を使用しています。それは問題ではありません。問題は、この方法を使用すると 2 枚の写真が SD カードに書き込まれることです。または、ギャラリーに 1 つと自分の URI に 1 つ、2 つ書かれている場合は、そのうちの 1 つを使用し、もう 1 つを削除したいと思います。どちらの場合も、デフォルトでギャラリーに保存される写真の Uri が必要です。

4

3 に答える 3

2

から Uri を取得することは解決策data.getData()onActivityResult()はありませんでした。これは 3 台のテスト デバイスのうち 1 台で機能し、Motorola Defy エミュレータでも機能しませんでした。

だからここに私がやったことがあります:

  1. でカメラを呼び出しAndroid.provider.MediaStore.ACTION_IMAGE_CAPTURE、いいえEXTRA_OUTPUT
  2. Galleryに保存されている画像のUriを取得する

これはテストデバイスでうまく機能しているようですが、最後に追加された画像が常にユーザーがキャプチャした画像であると完全に保証されているわけではないため、このソリューションにはまだ完全に満足していません.

于 2012-04-21T06:52:22.510 に答える
2

呼び出してカメラを起動すると

startActivityForResult(cameraIntent, REQUEST_CODE_CAPTURE_IMAGE_ACTIVITY); // start the camera

onActivityResult では、mediaURI をキャプチャできます

 @Override
    public void onActivityResult(int requestCode, int resultCode, Intent data)
    {
        if (requestCode == REQUEST_CODE_CAPTURE_IMAGE_ACTIVITY
                && resultCode == RESULT_OK) {
                Uri imageUri = null;
                if (data != null){
                   imageUri = data.getData();
               }
        }
    }

REQUEST_CODE_CAPTURE_IMAGE_ACTIVITYインテントを通じて行われたリクエストを識別するために使用される静的な整数値です。これは、複数の startActivityForResults がある場合に、どれが戻ってくるかを識別できるようにするためです。

EXTRA_OUTPUT を介して URI を事前に挿入した場合、data.getData(); を介して URI を取得できないことに注意してください。imageUri が null かどうかを確認しながら、事前に挿入された URI を変数に格納し、onActivityResult で取得する必要があります。

元。

 Uri imageUri = null;
if (data != null){
   imageUri = data.getData();
}
if (imageUri == null && preinsertedUri != null)
 imageUri = preinsertedUri;

// imageUri を処理する

于 2012-04-17T14:14:21.873 に答える