java - studio - open camera android developer
Android, orientación frontal y posterior de la cámara, paisaje (3)
Creo que estás buscando setDisplayOrientation (int). Hay una función que tienen que podría ayudar en el sitio de desarrollo:
http://developer.android.com/reference/android/hardware/Camera.html#setDisplayOrientation%28int%29
En mi aplicación de cámara, puedes cambiar entre la cámara frontal y la trasera. Cuando tomo una fotografía con la cámara trasera, la imagen es la misma que muestra la vista previa. Pero cuando cambio a la cámara frontal, la imagen se ve reflejada. Creo que tiene algo que ver con que la cámara frontal y posterior esté en modo horizontal. He intentado casi todas las respuestas dadas en SO.
Realmente ayudaría si alguien pudiera señalarme en las direcciones correctas.
Encontré la respuesta, haciendo mCamera.setDisplayOrientationa(int degrees);
no ayudó. Tuve que duplicar el mapa de bits generado para obtener el resultado que quería. Usé el método Matrix para lograr esto.
float[] mirrorY = { -1, 0, 0, 0, 1, 0, 0, 0, 1};
Matrix matrix = new Matrix();
Matrix matrixMirrorY = new Matrix();
matrixMirrorY.setValues(mirrorY);
matrix.postConcat(matrixMirrorY);
image = Bitmap.createBitmap(mBitmap, 0, 0, frame.getWidth(), frame.getHeight(), matrix, true)
Se determinó que el problema con la cámara frontal era específico de Android 4.0+. Entonces, después de decodificar la matriz de bytes en el método "onPictureTaken"
@Override
public void onPictureTaken(byte[] data, Camera camera) {
Bitmap photo = BitmapFactory.decodeByteArray(data,0,data.length);
photo = rotateBitmap(photo); //.....do some stuff }
simplemente llame a rotateBitmap para rotar el mapa de bits
private Bitmap rotateBitmap(Bitmap bitmap){
Matrix rotateRight = new Matrix();
rotateRight.preRotate(90);
if(android.os.Build.VERSION.SDK_INT > 13 && CameraActivity.frontCamera)
{
float[] mirrorY = { -1, 0, 0, 0, 1, 0, 0, 0, 1};
rotateRight = new Matrix();
Matrix matrixMirrorY = new Matrix();
matrixMirrorY.setValues(mirrorY);
rotateRight.postConcat(matrixMirrorY);
rotateRight.preRotate(270);
}
final Bitmap rImg= Bitmap.createBitmap(bitmap, 0, 0,
bitmap.getWidth(), bitmap.getHeight(), rotateRight, true);
return rImg;
}