5

我正在构建一个 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 函数中对此进行编码。

有可能做到这一点吗?

4

2 回答 2

0

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

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

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

于 2012-08-09T13:26:31.327 回答
0

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

于 2012-08-09T13:27:50.510 回答