2012-03-17 21 views
8

Estoy intentando acceder a la alimentación bruta de la cámara frontal de Android. De forma predeterminada, la vista previa de la cámara frontal se voltea horizontalmente para que los usuarios puedan verse a sí mismos como si se miraran en un espejo, eso es genial, pero no lo que necesito. ¿Cuál es la mejor manera de obtener el alimento crudo? ¿Hay alguna forma de desactivar el volteo automático, o debería intentar voltearlo en el código? Mi aplicación necesita mostrar una alimentación en tiempo real de la cámara frontal sin que se voltee como un espejo.Evite voltear la cámara frontal

Respuesta

1

Los datos de la cámara frontal son como los ve la cámara, mirándote. El lado izquierdo de su imagen es tu lado derecho. Creo que esto es lo que quieres ya? Cuando se coloca en un SurfaceView, se voltea para que actúe como usted dice, pero esa es una transformación cosmética separada.

Al menos, así es como funciona cada dispositivo que he visto y lo he visto difícil para implementar el soporte de la cámara frontal en Barcode Scanner/Barcode Scanner+.

+0

que tenga sentido. De hecho, estoy intentando renderizarlo con SurfaceView, ¿cómo debo hacerlo? – daedalus28

+0

Ah. Entonces no sé. Creo que tendrías que recibir los datos de la imagen y pintarlos manualmente en el 'View'. O tal vez tenga que invertirlo a mano, ya que simplemente lo revertirá. Nunca he tocado ese aspecto, solo dejo que arroje lo que quiera en el 'SurfaceView' mientras escucho los datos por separado. –

+0

También me gustaría renderizarlo sin reflejos en SurfaceView. ¿Encontraste alguna solución? –

11

Si desea utilizar una cámara frontal para escanear códigos de barras, puede usar TextureView y aplicarle una matriz de transformación. Cuando la textura se actualiza, puede leer los datos de la imagen y usarlos.

Ver https://github.com/hadders/camera-reverse

específicamente de MainActivity.java

mCamera.setDisplayOrientation(90); 
Matrix matrix = new Matrix(); 
matrix.setScale(-1, 1); 
matrix.postTranslate(width, 0); 
mTextureView.setTransform(matrix); 
+0

que el código de github no funciona. – CENT1PEDE

+0

Hola @GreenFox Fox. Acabo de clonar el repositorio y ejecuté 'gradle installDebug' desde la línea de comandos y lo instalé en mi Nexus 5. Esto funciona. Cuando abro la aplicación y sostengo un texto 'ABC', aparece 'ABC' en la pantalla en lugar de 'CBA' inverso invertido normal como se esperaba. cuál es el problema exacto? – Steve

+0

pero cuando lo usé, nada funciona .. – CENT1PEDE

Cuestiones relacionadas