1

Androidでカスタムカメラアプリを開発しています。私の目標は、画像をファイルに保存し、ファイルが保存されたらすぐにフルスクリーンモードで開くことです。残念ながら、問題は、私のメインアクティビティ(ImageCapture)が次のアクティビティ(ImageDisplay)を呼び出す前にImageCaptureCallbackの結果を待たないことです。

写真を撮るために、私はカスタムImageCaptureCallbackを使用しています。これは、OutputStreamを使用してキャプチャされた画像を「tmpPicturePath」に保存します。後でImageDisplayアクティビティが呼び出されます-tmpPicturePathに保存されているファイルを読み取ります。

camera.takePicture(mShutterCallback, mPictureCallbackRaw, new ImageCaptureCallback(this));

// ImageCaptureCallback saves the file in tmpPicturePath

Intent intent = new Intent(ImageCapture.this, ImageDisplay.class);
intent.putExtra("tmpPicturePath", this.getTmpPicturePath());
startActivity(intent);

ただし、ImageCaptureCallbackで作成する必要のあるファイルは、ImageDisplayアクティビティを呼び出した時点ではまだ利用できません。全体的な効果は、実際の写真ではなく、以前に撮影した写真がImageDisplayクラスで利用できることです。この問題を処理する方法を知っていますか?言い換えれば、次のアクティビティを呼び出す前にコールバックの結果を待つ方法は?どうもありがとう!

4

1 に答える 1

0

カメラから写真を撮るためのサンプルコード

void selectPhoto() {

    ContentValues values = new ContentValues();
    values.put(MediaStore.Images.Media.TITLE, "New Picture");
    values.put(MediaStore.Images.Media.DESCRIPTION, "From your Camera");
    imageUri = getContentResolver().insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, values);
    Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
    intent.putExtra(MediaStore.EXTRA_OUTPUT, imageUri);

    startActivityForResult(intent, SELECT_PHOTO);
}

およびonActivityResult()メソッド内

            try {
                imageBitmap = MediaStore.Images.Media.getBitmap(getContentResolver(), imageUri);
            } catch (FileNotFoundException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
于 2012-12-08T13:37:17.493 に答える