Я создаю API для Android, где разработчики могут использовать мой класс, чтобы сделать снимок. Но как я могу вернуть Bitmap, используя onPictureTaken. Смотрите мой код, пожалуйста:Как вернуть растровое изображение с помощью onPictureTaken на Android?
Это кнопка на 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;
//
}
}
Что я должен сделать, чтобы получить один Bitmap, используя мой класс метод?
Спасибо.
Спасибо, что помогли мне. Я не хочу использовать Bitmap в пользовательском интерфейсе. Я хочу обработать это растровое изображение по другим методам. Например: Bitmap bitmap = CameraUtils.takePicture(); CameraUtils.rotateBitmap (bitmap, dregrees); Есть ли способ сделать это? – Caaarlos
Да-все это в onPictureTaken –
Но у меня есть много способов манипулировать растровым изображением. Мне действительно нужно что-то, чтобы получить растровое изображение и обработать изображение так, как я хочу. Есть ли какая-то логика, другая, чтобы сделать все это наPictureTaken? – Caaarlos