2010-09-11 17 views
6

Estoy intentando desarrollar una aplicación que utilice la cámara. Hasta ahora ha funcionado bien, excepto que no puedo forzar la orientación para que sea "retrato". Parece funcionar bien si forzo todas las actividades a "paisaje", porque la vista previa de la cámara parece encajar en el paisaje.Uso de la cámara con orientación vertical

¿Hay alguna forma de utilizar la cámara en modo vertical?

+0

está en un dispositivo G1 o dispositivo que no es G1 como g1s tenían un error de visualización previa de la cámara de orientaciones –

+0

Hola Fred, estoy utilizando un Samsung Galaxy S ... – paperclip

Respuesta

6

Android dispositivos v2.2 y anteriormente contienen y API para girar la pantalla a retrato. Los dispositivos debajo de 2.2 son solo de paisaje. Su mejor apuesta es detectar si el dispositivo es 2.2 y girar 90 grados. Retroceda en el paisaje para dispositivos de menos de 2.2. La buena noticia es que la mayoría de los dispositivos con Android tienen 2.2 o más.

Compruebe hacia fuera mi respuesta aquí para más información:

Camera is wrong unless keyboard is open

+0

buen conocimiento, pude ver a muchas personas que tienen este problema sin encontrar una solución. –

+0

Es posible que desee agregar una configuración en su aplicación para permitir a los usuarios forzar el paisaje. Lo he probado y parece imposible forzar el retrato en algunos dispositivos. Hasta ahora, sé que estos dispositivos no se pueden configurar para retrato, ni siquiera con Android 2.2+: "GT-S6102", "GT-S5360", "GT-S5660", "YP-G1", "YP-G70". Estoy seguro de que hay mucho más: / –

0

editar: Estaba en el medio del desarrollo de Adobe AIR para Android cuando respondí esta pregunta, y volviendo la vista atrás, me doy cuenta de que esta pregunta no pertenecía a Adobe AIR.

Adobe dice:

En los dispositivos que pueden cambiar la orientación de la pantalla, tales como teléfonos móviles, un objeto de vídeo conectado a la cámara de vídeo sólo se mostrará en posición vertical en una orientación horizontal-aspecto. Por lo tanto, las aplicaciones móviles deben usar una orientación horizontal cuando se muestran videos y no deben rotar automáticamente.

http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/media/Camera.html

Si realmente desea utilizar la cámara en el modo de retrato, mi sugerencia es para rotar el objeto de vídeo.

Aquí algunos ejemplos de código que hace girar el objeto de vídeo (_video) por un ángulo en grados (fuente fue sacado de otra parte en stackoverflow):

 var matrix:Matrix = _video.transform.matrix; 
     var rect:Rectangle = _video.getBounds(this); 
     matrix.translate(- (rect.left + (rect.width/2)), - (rect.top + (rect.height/2))); 
     matrix.rotate((angle/180)*Math.PI); 
     matrix.translate(rect.left + (rect.width/2), rect.top + (rect.height/2)); 
     _video.transform.matrix = matrix; 
3
public void surfaceCreated(SurfaceHolder holder) 
{ 
// The Surface has been created, acquire the camera and tell it where to draw. 
mCamera = Camera.open(); 

Parameters params = mCamera.getParameters(); 

if (this.getResources().getConfiguration().orientation != Configuration.ORIENTATION_LANDSCAPE) 
{ 
params.set("orientation", "portrait"); 
mCamera.setDisplayOrientation(90); 
} 

try 
{ 
mCamera.setPreviewDisplay(holder); 
} 
catch (IOException exception) 
{ 
mCamera.release(); 
mCamera = null; 
} 

} 
Cuestiones relacionadas