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);

但是在调用 ImageDisplay 活动时,应该在 ImageCaptureCallback 中创建的文件尚不可用。总体效果是在 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 回答