Buduję API dla Androida, gdzie programiści mogą używać mojej klasy do zrobienia zdjęcia. Ale, jak mogę zwrócić bitmapę za pomocą onPictureTaken. Spójrz mój kod, należy:Jak zwrócić bitmapę za pomocą onPictureTaken na Androida?
Jest to przycisk na główną działalność:
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();
}
});
A oto moja klasa 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;
//
}
}
Co muszę zrobić, aby otrzymać jedną bitmapę używając moją klasę ' metoda?
Dzięki.
Dziękuję za pomoc. Nie chcę używać Bitmapy w interfejsie użytkownika. Chcę przetworzyć tę bitmapę na inne metody. Na przykład: Bitmap bitmap = CameraUtils.takePicture(); CameraUtils.rotateBitmap (bitmap, dregrees); Czy jest to sposób na zrobienie tego? – Caaarlos
Tak-zrób to wszystko na onPictureTaken –
Ale mam wiele metod do manipulowania bitmapą. Naprawdę potrzebuję czegoś, aby uzyskać bitmapę i przetwarzać obraz tak, jak chcę. Czy jest jakaś logika, inna, żeby zrobić to wszystko na obrazie? – Caaarlos