Android: onPreviewFrame nunca llamado sin SurfaceView
En algunos dispositivos, onPreviewFrame
no se llama si no se ha configurado SurfaceView
para mostrar la vista previa de la cámara. Sin embargo, manejo la cámara en un servicio, así que no puedo fijar un SurfaceView
pero no quiero tener vista previa visible de todos modos.
¿Cómo se puede hacer esto? ¿Puedo crear un SurfaceView
y SurfaceView
con Camera::setPreviewDisplay
?
- ¿La funcionalidad de TextureView en Android pre-4.0?
- Cómo tener un ImageButton transparente: Android
- GetWidth () y getHeight devuelven cero después de onMeasure () (dispositivos específicos)
- Combatiendo con SurfaceView, Camera y OpenGL
- Android: ¿por qué no hay maxHeight para una vista?
¿Esto debe ser posible o no?
Funciona en casi todos los teléfonos sin un SurfaceView
pero no en HTC One X y Google Nexus One …
- Cómo escalar el video en un SurfaceView más grande que la ventana en Android?
- La vista previa de la cámara muestra mosaicos no deseados sólo en Android 4.2.2 (S4, pantalla Full HD)
- Android Cómo obtener una vista previa de una imagen, utilizando su ruta de acceso desde SDcard, desde mi aplicación
- Toca dos vistas al mismo tiempo en android
- Anular onDraw () o draw ()?
- ¿Centrar el texto verticalmente independientemente de la altura de la vista?
- Android - Cómo dibujar en vista
- WindowManager con animación (¿es posible?)
De acuerdo con esta pregunta , crear un SurfaceView
en código funciona bien. Aunque no creo que pueda crearlo a través de un servicio.
Otro enfoque es crear un SurfaceView
1px-1px dentro de un RelativeLayout
y ocultarlo con alguna otra vista encima de él. (La visibilidad debe ser VISIBLE
). Utilizamos este truco para la interfaz de usuario de la cámara Path , donde procesamos los búferes de vista previa a través de OpenGL y funciona bien.
De acuerdo con la documentación fácilmente configurada, la vista de la superficie visible y visualizada es necesaria para activar la vista previa de la cámara. Puede ser superpuesto aunque
Desde la API 11 SurfaceTexture
, puede utilizar SurfaceTexture
lugar de SurfaceView
para obtener fotogramas de la cámara. Entonces, en lugar de usar Camera.setPreviewDisplay
, simplemente use Camera.setPreviewTexture
.
Esta respuesta, así como ésta, discuten este punto.
- Mostrar identificación de hilo de Android en LogCat
- Rellena espacio en disco en el dispositivo Android