在Android自定义相机应用程序中拍照回调

时间:2012-12-08 13:28:48

标签: android callback android-camera

我正在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类中可以使用之前拍摄的图片。你知道如何处理这个问题吗?换句话说,如何在调用下一个活动之前等待回调结果? 非常感谢!

1 个答案:

答案 0 :(得分: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();
            }