El dia de hoy les traigo una guía sobre como usar la cámara implementado la API de android, para esto trate de recurrir a la documentación oficial de Android (http://developer.android.com/guide/topics/media/camera.html) pero tuve ciertos problemas, por lo que acudí a la gran G, para buscar soluciones.
Este pequeño ejemplo lo que hace es utilizar la cámara para tomar la foto y luego nos muestra la ruta donde queda alojada en nuestro dispositivo.
Para empezar creamos una aplicacion comun y corriente y le damos el nombre que deseamos, tras crear la aplicacion simplemente añadimos un boton y un textview al layout de nuestra aplicacion para que quede de la siguiene manera

Recuerden que pueden renombrar el id del boton y del TextView como deseen en mi caso los renombre de la siguiente manera:

Ahora lo siguiene que haremos sera determinar que hacer cuando se haga clic en el boton btnCamera, para este ejemplo en especifico llamaremos a una funcion que se encargara de iniciar la camara, para poder conseguir este objetivo agregamos una linea en el xml del boton, en concreto la linea "android:onClick"

Ahora nos falta algo muy importate, que es editar los permisos, en concreto los permisos es decirle al sistema operativo que nos permita acceder a algunos recursos del sistema, como lo son la camara, el internet, los datos, los contactos, etc. Para este tutorial usaremos 2, el permiso para escribir ( para poder guardar las fotos) y del uso de la camara, si no sabes como agrega los permisos, puedes seguir estos pasos:
- Escojemos el proyeto
- Abrimos el Manifiesto
- Buscamos la pestaña XML
- Escribimos los permisos

Tras lo anterior, ahora podemos manipula el codigo que nos permitira hacer lo anteriormente prometido.
1. Primero debemos agregar unas variables GLOBALES a nuestra aplicacion

- photoPath: Es la encargada de almacenar la ruta donde se encuentra nuestra foto recien capturada
- REQUEST_CAMERA: Nos permira determinar para que vamos a usar nuestra camara, en este tutorial sera para tomar fotos (pero puede ser para almacenar videos)

No soy un experto en android, y si lo que acabo de explicar no les convence, o esta erroneo, estoy abierto a sugerencias para poder mejorar
- Donde, como en casos anteriores, esta funcion debe recibir un objeto del tipo View, y que luego lo utilizamos en el "switch" para determinar cual objeto llamo a esa funcion, en caso de que fuese el boton "btnCamera" se realizara todo lo que se encuentre en el "case"
- state: nos permite determinar el estado actualdel medio de almacenamieno externo
- Environment.MEDIA_MOUNTED.equals(state): Aqui preguntamos si el dispositivo se encuentra correctamente montado y si esta listo para escritura/lectura
- captureTime: Es un valor que usamos para que el nombre de las fotos no se repita
- photoPath: almacenamos la localiacion de la foto
- intent: (Explicacion de intent aqui) creamos un nuevo intent donde especificamos que deseamos usar la camara en modo de captura de imagen (tambien puede ser en video)
- photo: creamos un nuevo archivo con la ruta de la imagen anteriormente tomada
- intent.putExtra(MediaStore.EXTRA_OUTPUT,Uri.fromFile(photo)): agregamos unos "datos, variables" al intente anteriormente creado
- Por ultimo iniciamos el intent, es decir iniciamos la camara para poder tomar la foto

- En la primera linea simplemente creamos un objeto del tipo textView para poder mostrarle al usuario donde es la ruta de la foto creada
- Como esta respuesta puede provenir de diferentes fuentes, la incluimod dentro de un "switch" y verificamos que sea del tipo REQUEST_CAMERA ( es decir del tipo tomar foto -esta variable la creamos globalmente)
- Si la ruta no esta vacia y si es diferente de null, la mostramos en pantalla

Descargar: SkyDrive
0 comentarios :
Publicar un comentario