2011-03-31 14 views
5

Tengo 2 androides aquí.La cámara está equivocada a menos que el teclado esté abierto

En ambos, cuando enciendo mi aplicación, la cámara muestra hasta muy mal (girado 90 grados hacia un lado y se extendía por lo general ...)

En uno de los teléfonos, hay un teclado, y cuando abro el teclado, la aplicación funciona correctamente ... Dado que el teclado obliga a una orientación, calculé que el problema es que los teléfonos esperan siempre la misma orientación, pero el SDK no está de acuerdo.

¿Cómo entonces informo la cámara qué orientación se supone que debe utilizar todo el tiempo?

Respuesta

20

Si la aplicación se ejecuta en v2.2 o superior puede girar orientación de la cámara a vertical usando camera.setDisplayOrientation (90).

Antes de V2.2 la cámara sólo se mostrará en orientación horizontal, por lo que está obligado a establecer la actividad a la orientación horizontal.

para soportar dispositivos anteriores a v2.2 (nivel API 8) y después, una solución es por defecto la orientación actividad para paisaje en AndroidManifest.xml. Luego, en tiempo de ejecución verifique el nivel de la API y, si está o no, cambie la orientación de la actividad a vertical y gire la pantalla de la cámara.

//in activity onCreate method 
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.FROYO) 
    setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); 

//After opening camera - call via reflection 
Method rotateMethod = android.hardware.Camera.class.getMethod("setDisplayOrientation", int.class); 
rotateMethod.invoke(mCamera, 90); 

Ésta es la solución más sencilla y es de esperar que los nuevos dispositivos salen v2.1 y por debajo caerá fuera del radar.

+0

Oh, veo el problema ahora (el teclado obliga a toda la aplicación en el paisaje, haciendo que el trabajo de la cámara correctamente). – speeder

+0

Sí, es un problema para los dispositivos por debajo de v2.2. Creé una aplicación de cámara que detecta si el dispositivo es v2.2 y configura la actividad para retratos así como para rotar la pantalla de la cámara usando setDisplayOrientation. Los dispositivos v2.1 y siguientes tienen el aspecto y la sensación del paisaje. –

+0

el problema que tengo con setRequestedOrientation es, que no puedo solicitar la orientación del teléfono (siempre consigo RETRATO de la API), y por lo tanto no sé si se debe girar las imágenes tomadas por la cámara o no:/y pistas sobre eso? – stoefln

Cuestiones relacionadas