Ver la Versión Completa : [ CONSULTA ] Llamar a la cámara
Thatiro
09/10/11, 10:59:27
Hola a todos,
estoy haciendo una app donde tengo que llamar a la cámara y que esta me devuelva la foto. Esto lo he logrado pero con un problema, y es que resulta que llamo a la cámara, hago la foto, y luego me sale si quiero guardarla o descartarla; me gustaría saber si es posible obviar este paso y que mi app llame a la cámara, el usuario haga la foto y sea inmediatamente devuelta a la aplicación.
Gracias!!
Hola
Soy nueva en estro de la programación Android y espero que me puedas ayudar yo estoy queriendo realizar una aplicación que después de que tome la fotografía me la muestre y me la adjunte a un mms o correo electrónico pero solo llego a la toma de la foto, te agradeseria mucho que me pudieras ayudar.
Gracias de antemano.
kriogeN
17/02/12, 20:08:50
Deberías haber creado un hilo nuevo en lugar de responder en 2 hilos que nada tienen que ver con tu pregunta, solo que también está relacionada con la cámara. Pero te contesto aquí, el otro hilo lo dejo sin contestar.
¿Cómo has tomado la foto? ¿Directamente con el programa o llamando a la cámara creando un nuevo Intent con un OnActivityResult?
¿Consigues que la foto aparezca en el programa?
Thatiro
17/02/12, 21:40:50
Hola
Soy nueva en estro de la programación Android y espero que me puedas ayudar yo estoy queriendo realizar una aplicación que después de que tome la fotografía me la muestre y me la adjunte a un mms o correo electrónico pero solo llego a la toma de la foto, te agradeseria mucho que me pudieras ayudar.
Gracias de antemano.
Bueno, según he ido descubriendo, tienes dos opciones hacer la cámara embebed dentro de la aplicación que es más complicado pero se puede personalizar, o llamar a la aplicación cámara del dispositivo y que luego se te devuelva la fotografía.
Para la primera opción tienes este ejemplo que funciona bien --> http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/graphics/CameraPreview.html
Del otro no guardo ningún ejemplo porque me decante por la primera, pero buscando Cámara onActivityResult tendría que haber muchos.
Thatiro
17/02/12, 21:59:03
Deberías haber creado un hilo nuevo en lugar de responder en 2 hilos que nada tienen que ver con tu pregunta, solo que también está relacionada con la cámara. Pero te contesto aquí, el otro hilo lo dejo sin contestar.
¿Cómo has tomado la foto? ¿Directamente con el programa o llamando a la cámara creando un nuevo Intent con un OnActivityResult?
¿Consigues que la foto aparezca en el programa?
Al final lo hice directamente con el programa porque aparte de ser más personalizable, está más integrado en la aplicación y no tener que llamar a una app externa como la Cámara. Es más difícil pero con el ejemplo se entiende:
http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/graphics/CameraPreview.html
La foto la consigues en formato jpeg, porque en raw de momento por lo que tengo entendido no deja file:///C:/Users/Albert/AppData/Local/Temp/msohtmlclip1/01/clip_image001.gif, llamando ha:
takePicture(shutterCallback, null,jpegCallback); Esto devuelva la foto ha :
PictureCallback jpegCallback = new PictureCallback()
{
public void onPictureTaken(byte[] data, Camera camera) {
BitmapFactory.Options bmpFactoryOptions = new BitmapFactory.Options();
Bitmap bmp = BitmapFactory.decodeByteArray(data, 0, data.length, bmpFactoryOptions);
}
};
Y alli con el bmp haces lo que quieras ya, mostrarlo por un imageview, hacer alguna operación con matrices, etc...
Espero que sirva de algo :)
Saludos!!
kriogeN
18/02/12, 09:56:12
Al final lo hice directamente con el programa porque aparte de ser más personalizable, está más integrado en la aplicación y no tener que llamar a una app externa como la Cámara. Es más difícil pero con el ejemplo se entiende:
http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/graphics/CameraPreview.html
La foto la consigues en formato jpeg, porque en raw de momento por lo que tengo entendido no deja file:///C:/Users/Albert/AppData/Local/Temp/msohtmlclip1/01/clip_image001.gif, llamando ha:
takePicture(shutterCallback, null,jpegCallback); Esto devuelva la foto ha :
PictureCallback jpegCallback = new PictureCallback()
{
public void onPictureTaken(byte[] data, Camera camera) {
BitmapFactory.Options bmpFactoryOptions = new BitmapFactory.Options();
Bitmap bmp = BitmapFactory.decodeByteArray(data, 0, data.length, bmpFactoryOptions);
}
};
Y alli con el bmp haces lo que quieras ya, mostrarlo por un imageview, hacer alguna operación con matrices, etc...
Espero que sirva de algo :)
Saludos!!
El problema que tiene eso, y sobre todo en su versión más sencilla que es la que has puesto, es que dependiendo del móvil o tablet, incluso de su orientación, la foto puede salir girada 90º o incluso 180º. Así que hay que hacer una configuración inicial (repito, que depende del dispositivo) desde que creas el objeto de la cámara hasta que la muestras en el preview.
Luego una vez tomada, en el callback, puede ocurrir que también salga girada 90º respecto al preview (repito, que depende de cada móvil), así que hay que postprocesar para que la ponga bien.
La información de si tienes que girarla en el callback es fácil, solo hay que comparar el width de la preview y el width del resultado, si no son iguales es que salió girada. Pero la información para el preview sólo la puedes sacar si el móvil tiene Froyo, si tiene Eclair o anterior no podrás. Por eso mismo yo pasé de tomarla desde la aplicación a que fuese la aplicación de cámara del propio móvil el que lo gestionase, porque así además podrás tomar fotos con la cámara frontal en Froyo y anteriores, cosa que gestionandolo tu no puedes hacer porque el cambio de cámara es solo a partir de GB.
Thatiro
18/02/12, 10:14:29
El problema que tiene eso, y sobre todo en su versión más sencilla que es la que has puesto, es que dependiendo del móvil o tablet, incluso de su orientación, la foto puede salir girada 90º o incluso 180º. Así que hay que hacer una configuración inicial (repito, que depende del dispositivo) desde que creas el objeto de la cámara hasta que la muestras en el preview.
Luego una vez tomada, en el callback, puede ocurrir que también salga girada 90º respecto al preview (repito, que depende de cada móvil), así que hay que postprocesar para que la ponga bien.
La información de si tienes que girarla en el callback es fácil, solo hay que comparar el width de la preview y el width del resultado, si no son iguales es que salió girada. Pero la información para el preview sólo la puedes sacar si el móvil tiene Froyo, si tiene Eclair o anterior no podrás. Por eso mismo yo pasé de tomarla desde la aplicación a que fuese la aplicación de cámara del propio móvil el que lo gestionase, porque así además podrás tomar fotos con la cámara frontal en Froyo y anteriores, cosa que gestionandolo tu no puedes hacer porque el cambio de cámara es solo a partir de GB.
Gracias por la info, tampoco me preocupa mucho esto de momento porque la app es para un trabajo de la universidad y en teoría con que funcione en mi móvil bastaría, aunque claro que la idea sería publicarla en un futuro. Otro aspecto por el que no quiero llamar a la App de Cámara es que mi aplicación es para personas con problemas de visión, por eso prefiero gestionar yo ciertas cosas que con la app de la Camara, según tengo entendido, no puedo(como que pulsando en cualquier parte de la pantalla haga la foto).
Saludos!!
vBulletin® v3.8.1, Copyright ©2000-2025, Jelsoft Enterprises Ltd.