2011-07-20 12 views
5

Hice un programa cuya función principal es usar API para tomar fotos y almacenarlas en la ruta que di.¿Por qué es tan difícil tomar fotos normalmente en diferentes teléfonos con Android?

Pero las cosas no salen bien en diferentes teléfonos en comparación con eso cuando probé en el emulador o el teléfono con ROM de origen de Google.

Teóricamente. Si di un camino al Intento, la foto no debería aparecer en la galería predeterminada del teléfono, pero en MOTO Desafiar las fotos se almacenaron tanto en mi ruta como en el directorio de imágenes predeterminado. Y en Samsung, mi aplicación falla silenciosamente cuando regresa de la cámara Intento. Y solo en algunos teléfonos puedo abrir el menú presionando el botón de menú en la Actividad de la cámara. E incluso algunos de ellos guardan la foto como el tamaño que configuré en el menú de configuración de la actividad de la cámara.

Creo que esto se debe a que los fabricantes personalizaron la ROM en sus teléfonos para que la actividad de la cámara actúe de manera diferente.

¿Alguien sabe cómo evitar esta situación? ¿O hay alguna otra manera de tomar fotos sin la intención "android.media.action.IMAGE_CAPTURE"?

El siguiente es el código de cómo tomo fotos.

Intent intent = new Intent("android.media.action.IMAGE_CAPTURE"); 
    intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(new File(getpath()+"_.jpg"))); 
    intent.putExtra(MediaStore.EXTRA_VIDEO_QUALITY, 1); 
    startActivityForResult(intent, 0); 

Respuesta

1

La forma en que Shah @balban ofreció trabajó todo lo mismo cuando lo probé.

Finalmente encontré que eso se debe a que diferentes fabricantes personalizan sus Rom, incluida la aplicación de la cámara, así que la mejor manera es no llamar a la aplicación de cámara predeterminada, en su lugar podemos escribir una actividad use hardware.camera para tomar una foto. También hay muchos ejemplos de esto en Internet.

0

intenta utilizar este código a mantener otro ajuste igual para captura de fotos

Intent cameraIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE); 
cameraIntent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(origImageFile)); 
startActivityForResult(cameraIntent, 0); 
Cuestiones relacionadas