Camera en Android Ejemplo

Quiero escribir una actividad que:

Muestra la vista previa de la cámara (visor) y tiene un botón de "captura".Cuando se presiona el botón "capturar", toma una foto y la devuelve a la actividad de llamada (setResult () & finish ()).

¿Hay algunacompleta ejemplos por ahí que funcionan en cada dispositivo? Un enlace a una aplicación simple de código abierto que tome fotos sería la respuesta ideal.

Mi investigación hasta ahora:

Este es un escenario común, y hay muchas preguntas y tutoriales sobre esto.

Hay dos enfoques principales:

Utilice el evento android.provider.MediaStore.ACTION_IMAGE_CAPTURE. Veresta preguntUtilice la API de la cámara directamente. Vereste ejemplo oesta pregunta (con muchas referencias).

Approach 1 hubiera sido perfecto, pero el problema es que la intención se implementa de manera diferente en cada dispositivo. @ En algunos dispositivos funciona bien. Sin embargo, en algunos dispositivos puede tomar una foto, pero nunca la devuelve a su aplicación. En algunos dispositivos, no sucede nada cuando inicia la intención. Por lo general, también guarda la imagen en la tarjeta SD y requiere que la tarjeta SD esté presente. La interacción del usuario también es diferente en cada dispositivo.

Con el enfoque 2, los problemas son la estabilidad. Intenté algunos ejemplos, pero logré detener el funcionamiento de la cámara (hasta que se reinicie) en algunos dispositivos y congelar completamente otro dispositivo. En otro dispositivo, la captura funcionó, pero la vista previa permaneció en negro.

Hubiera usado ZXing como una aplicación de ejemplo (trabajo mucho con él), pero solo usa la vista previa (visor) y no toma ninguna foto. También descubrí que en algunos dispositivos, ZXing no ajustaba automáticamente el balance de blancos cuando las condiciones de iluminación cambiaban, mientras que la aplicación de cámara nativa lo hacía correctamente (no estoy seguro de si esto se puede solucionar).

Actualizar

Por un tiempo utilicé la API de la cámara directamente. Esto proporciona más control (interfaz de usuario personalizada, etc.), pero no se lo recomendaría a nadie. Trabajaría en el 90% de los dispositivos, pero de vez en cuando se lanzaría un nuevo dispositivo, con un problema diferente.

Algunos de los problemas que he encontrado:

Manejo del enfoque automáticoHandling flash Dispositivos de soporte con cámara frontal, cámara trasera o ambasada dispositivo tiene una combinación diferente de resolución de pantalla, resoluciones de vista previa (no siempre coincide con la resolución de pantalla) y resoluciones de imagen.

Así que, en general, no recomendaría seguir esta ruta, a menos que no haya otra forma. Después de dos años, abandoné el código personalizado y volví al enfoque basado en la intención. Desde entonces he tenido muchos menos problemas. Los problemas que tuve con el enfoque basado en la intención en el pasado probablemente fueron solo mi propia incompetencia.

Si tuDe Verda necesita ir por esta ruta, he oído que es mucho más fácil si solo es compatible con dispositivos con Android 4.0 +.

Respuestas a la pregunta(6)

Su respuesta a la pregunta