【发布时间】:2015-05-20 00:39:45
【问题描述】:
我正在为 Android 构建一个 API,开发人员可以在其中使用我的类来拍照。但是,如何使用 onPictureTaken 返回位图。请看我的代码:
这是 mainActivity 上的一个按钮:
button.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// onPictureTaken does not return nothing
// so, how can I get a bitmap from takePicture?
Bitmap mBitmap = CameraUtils.takePicture();
}
});
这是我的CameraUtils类:
public class CameraUtils implements Camera.PictureCallback {
private Camera mCamera = null;
private SurfaceTexture surfaceTexture = new SurfaceTexture(0);
public Bitmap takePicture() {
try {
mCamera = Camera.open(1);
Camera.Parameters params = mCamera.getParameters();
List<Camera.Size> sizes = params.getSupportedPictureSizes();
params.setPictureFormat(ImageFormat.JPEG);
params.setPictureSize(sizes.get(0).width, sizes.get(0).height);
mCamera.setParameters(params);
mCamera.setPreviewTexture(surfaceTexture);
mCamera.startPreview();
Log.i("MyCamera", "before takePicture");
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
mCamera.takePicture(null, null, CameraUtils.this);
}
}, 1000);
//how to return a bitmap from here??
//how to wait for onPictureTaken??
return ?????
} catch (Exception e) {
e.printStackTrace();
}
}
@Override
public void onPictureTaken(byte[] data, Camera camera) {
Bitmap mBitmap = BitmapFactory
.decodeByteArray(data, 0, data.length);
//
// how to return something here??
//
//
// What logic I have to do?
//
//
//
// return mBitmap;
//
}
}
我必须做什么才能使用我的班级方法获得一个位图?
谢谢。
【问题讨论】: