Cómo tomar fotos

Nota: En esta página, se hace referencia a la clase Camera, que dejó de estar disponible. Te recomendamos que uses CameraX o, en casos de uso específicos, Camera2. CameraX y Camera2 admiten Android 5.0 (nivel de API 21) y versiones posteriores.

En esta lección, se describe cómo capturar una foto delegando el trabajo a otra app de cámara en el dispositivo. (Si prefieres desarrollar tu propia funcionalidad de cámara, consulta Cómo controlar la cámara).

Supongamos que estás implementando un servicio meteorológico a partir de un aporte colectivo que crea un mapa climático global mediante la combinación de imágenes del cielo tomadas por dispositivos que ejecutan tu app cliente. La integración de fotos es solo una pequeña parte de la aplicación. Tu objetivo es tomar fotos con un mínimo de complicaciones, no reinventar la cámara. Afortunadamente, la mayoría de los dispositivos con Android ya tienen instalada al menos una aplicación de cámara. En esta lección, aprenderás cómo hacer que tome una foto por ti.

Cómo solicitar la función de cámara

Si una función esencial de tu aplicación es tomar fotos, restringe su visibilidad en Google Play a los dispositivos que tienen una cámara. Para anunciar que tu aplicación depende de tener una cámara, coloca una etiqueta <uses-feature> en el archivo de manifiesto:

<manifest ... >
    <uses-feature android:name="android.hardware.camera"
                  android:required="true" />
    ...
</manifest>

Si tu aplicación usa una cámara, pero no la requiere para funcionar, configura android:required como false en su lugar. De esa manera, Google Play permitirá que los dispositivos sin cámara descarguen la aplicación. Luego, es tu responsabilidad verificar la disponibilidad de la cámara durante el tiempo de ejecución llamando a hasSystemFeature(PackageManager.FEATURE_CAMERA_ANY). Si no hay una cámara disponible, debes inhabilitar las funciones de la cámara.