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