2012-05-28 19 views
10

En algunos dispositivos, onPreviewFrame no se llama si no se configuró SurfaceView para mostrar la vista previa de la cámara. Sin embargo, manejo la cámara en un servicio, por lo que no puedo configurar un SurfaceView pero no quiero tener una vista previa visible de todos modos.Android: onPreviewFrame nunca se llamó sin SurfaceView

¿Cómo se puede hacer esto? ¿Puedo crear programáticamente un SurfaceView y configurarlo con Camera::setPreviewDisplay?

Esto debe ser posible o no?

funciona en casi todos los teléfonos sin SurfaceView pero no en HTC One X y Google Nexus One ...

Respuesta

4

Según this question, creando un SurfaceView en código funciona bien. Aunque no creo que puedas crearlo a través de un servicio.

Otro enfoque es crear un 1px-1px SurfaceView dentro de un RelativeLayout y ocultarlo con alguna otra vista en la parte superior. (la visibilidad debería seguir siendo VISIBLE). Usamos este truco para la interfaz de usuario de la cámara Path, donde renderizamos buffers de vista previa a través de OpenGL y funciona bien.

1

De acuerdo con la documentación configurada con facilidad, la vista de superficie visible y visible es necesaria para activar la vista previa de la cámara. Puede estar superpuesto a través de

0

Desde API 11 en adelante, puede usar SurfaceTexture en lugar de SurfaceView para obtener marcos de la cámara. Luego, en lugar de usar Camera.setPreviewDisplay, simplemente use Camera.setPreviewTexture.

This respuesta, así como this one discutir este punto.

Cuestiones relacionadas