等待PictureCallback发生时“暂停”活动

时间:2012-08-09 13:22:09

标签: android callback android-camera

我正在构建一个Android应用程序,我希望在调用活动继续之前等待PictureCallback。

import android.hardware.Camera;

private Camera camera
private Bitmap picture;

camera.takePicture(null, null, new PictureCallback() {
  @Override
  public void onPictureTaken(byte[] data, Camera camera) {
    BitmapFactory.Options options = new BitmapFactory.Options();
    options.inSampleSize = 1;
    picture = BitmapFactory.decodeByteArray(data , 0, data.length, options);
  }
}

... do some other logic with picture

我想保持其他逻辑分离,因此我想避免在takePicture函数中对此进行编码。

有可能实现这个目标吗?

2 个答案:

答案 0 :(得分:0)

在进行任何后台工作时阻止UI线程是不好的做法。

如果您调用内置的相机活动,则您的活动将在后台进行。拍完照片并关闭相机活动后,当您返回活动时,照片将会保存。

如果你使用自己的Camera实现,那么你应该显示ProgressDialog,如果你有任何后台工作要做,你应该在一个单独的线程中进行。

答案 1 :(得分:0)

您可以在两个线程中实现它。然后在调用PictureCallback之后调用当前线程上的wait()。然后当PictureCallback完成时,它调用notify()让等待的线程知道它可以完成。但你不想阻止你的主线程。你可以,如果你想要/也需要,但这不是一个好主意。