我正在构建一个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函数中对此进行编码。
有可能实现这个目标吗?
答案 0 :(得分:0)
在进行任何后台工作时阻止UI线程是不好的做法。
如果您调用内置的相机活动,则您的活动将在后台进行。拍完照片并关闭相机活动后,当您返回活动时,照片将会保存。
如果你使用自己的Camera
实现,那么你应该显示ProgressDialog
,如果你有任何后台工作要做,你应该在一个单独的线程中进行。
答案 1 :(得分:0)
您可以在两个线程中实现它。然后在调用PictureCallback之后调用当前线程上的wait()。然后当PictureCallback完成时,它调用notify()让等待的线程知道它可以完成。但你不想阻止你的主线程。你可以,如果你想要/也需要,但这不是一个好主意。