Estoy escribiendo una aplicación que necesita imágenes tomadas con la cámara. El problema ocurre cuando trato de tomar una foto real. Aquí está el código que me está molestando:PictureCallback.onPictureTaken nunca se llamó
final ShutterCallback shutterCallback = new ShutterCallback() {
@Override
public void onShutter() {
Log.d(TAG, "onShutter");
}
};
final PictureCallback callback = new PictureCallback() {
@Override
public void onPictureTaken(byte[] data, Camera camera) {
Log.d(TAG, "onPictureTaken - jpeg");
try {
//async task for storing the photo
new SavePhotoTask(CameraView.this.ctx, data).execute();
} catch (final SavePhotoException e) {
//some exceptionhandling
}
}
};
this.camera = Camera.open();
this.camera.setPreviewDisplay(surfaceHolder);
final Camera.Parameters parameters = findBestParameters(w, h);
this.camera.setParameters(parameters);
this.camera.startPreview();
Log.d(TAG, "takePicture now!");
this.camera.takePicture(shutterCallback, null, callback);
en el emulador que parece funcionar, pero en mi teléfono (Motorola Defy - Android 2.1).
El problema real: en el teléfono nunca se produce la recuperación de imagen "onPictureTaken" nunca se llama. El Shuttercallback se ejecuta pero el otro no (y lo intenté con raw en lugar de jpeg, lo mismo).
¿Alguien conoce este problema? Simplemente no veo dónde está la diferencia para el emulador en este momento. Aprecio tu ayuda.
jesus He perdido tantas horas sin saber cuál era el problema antes de leer esto. ¡Gracias! –
usted probablemente me salvó los días de esfuerzo de depuración – buster
funcionó para mí, stopPreview() fue demasiado pronto – Sudara