Estoy desarrollando una aplicación de cámara, básicamente, como parte de una aplicación de mensajería para adjuntar imágenes, etc La aplicación tiene que trabajar para> = 2.2 SDK y:Cámara: Dispositivo de Cruz emite
I no puede utilizar la cámara por defecto de Android tanto como me gustaría porque:
la naturaleza de la aplicación dicta que la imagen no debe ser guardado en el disco nunca y algunos fabricantes de equipos originales (Samsung) encanta hacer esto sin dar usted una elección.
No puedo llamar a un intento que cualquier otra aplicación de cámara pueda interceptar porque entonces esa aplicación podría guardar la imagen.
Mi problema actual es el hecho de que la cámara Android aparentemente odia estar en orientación vertical. Específicamente, después de excavar, estoy monitoreando la pantalla y, en rotación, llamando al setDisplayOrientation(90)
. Esto funciona pero las dimensiones de la vista superficial también deben modificarse y esto debe hacerse dentro de las dimensiones admitidas o la configuración de los parámetros bloquea la aplicación.
Estoy haciendo esto con otro fragmento SO Encontré here (el método getBestPreviewSize()
) pero tiene un problema flagrante que no puedo creer que no haya encontrado a nadie más.
Parte del ciclo de vida takePicture
consiste en llamar al PostView
devolución de llamada de imagen. Esto es lo que muestra la imagen fija de la imagen en pausa actualmente SurfaceView
que se devolverá a través de byteArray a la devolución de llamada en bruto y/o jpeg. Mi problema es que esta imagen todavía está sesgada en un puñado de dispositivos de prueba aparentemente aleatorios. Entonces, el comportamiento es que el usuario ve una imagen dinámica de la cámara en una relación de aspecto 4: 3 perfecta hasta que toman la fotografía y la imagen con la que se presentan queda aplastada. Tenga en cuenta que la matriz de bytes en sí es correcta y cuando construyo el Bitmap
en el punto final de la mensajería, aparece bien, pero esto sigue siendo un problema.
No veo cómo puedo alterar la visualización de la imagen fija en este momento. Puede alguien ayudarme con esto?
¿Podría conservar la devolución de llamada de la foto posterior y mostrarla cuando se toma una foto? ¿Podría al final crear un mapa de bits a partir de los datos de la imagen tomada y mostrarlo en lugar de los datos de la imagen de la vista posterior? Supongo que todo se reduce a si los datos de la imagen final están en mal estado o si la vista de la superficie muestra algún cambio en su forma. –