De acuerdo con Android desarrollador del sitio:cámara androide de vista previa Rotación
después de Android 2.2 no es la función
"setDisplayOrientation"
para ajustar la rotación de la cámara de vista previa.
Y también de acuerdo con el sitio del desarrollador de Android, podemos encontrar el siguiente código fuente.
android.hardware.Camera.CameraInfo info =
new android.hardware.Camera.CameraInfo();
android.hardware.Camera.getCameraInfo(cameraId, info);
int rotation = activity.getWindowManager().getDefaultDisplay().getRotation();
int degrees = 0 ;
switch (rotation) {
case Surface.ROTATION_0 : degrees = 0 ; break ;
case Surface.ROTATION_90 : degrees = 90 ; break ;
case Surface.ROTATION_180 : degrees = 180 ; break ;
case Surface.ROTATION_270 : degrees = 270 ; break ;
}
int result ;
if (info.facing == Camera.CameraInfo.CAMERA_FACING_FRONT) {
result = (info.orientation + degrees) % 360 ;
result = (360 - result) % 360 ; // compensate the mirror
} else { // back-facing
result = (info.orientation - degrees + 360) % 360 ;
}
Sin embargo, no puedo trabajar con algún tipo de dispositivo. Como Samsung Galaxy Y S5360, S5660, YP-G1, YP-G70, etc.
Simplemente parte de la máquina no funciona, Galaxy Nexus, SII, o algún dispositivo de alta gama, funciona bien.
¿No es compatible setDisplayOrientation, o el firmware de los dispositivos no está listo?
PS. Todos los dispositivos son Android 2.3.1 o superior.
Ayuda.
Me enfrenta el mismo problema en mi Galaxy Y. ¿Encontraste algo? Me gustaría saber si al menos si setDisplayOrientation fue exitoso, para bloquearlo en landscape si no. –
por fin, no resuelto. simplemente haga que la actividad de la superficie de la cámara sea horizontal. –
¿Alguien tiene una lista de dispositivos en los que se produce este error? Cualquier ayuda sería apreciada. – patrickfdsouza