capture d'images avec MediaStore.ACTION_IMAGE_CAPTURE intention dans android
Je suis la capture d'images à l'aide de MediaStore.ACTION_IMAGE_CAPTURE intention. il fonctionne bien dans la plupart des appareils. mais il ne fonctionne pas correctement dans les quelques dernières appareil android comme prévu.
mon intention est de capture de l'image utilisation de l'appareil photo et de l'envoyer au serveur, mais pas pour stocker l'image dans la galerie par défaut de l'appareil.
**: Quand je capture une image, c'est la restitution d'une partie autre image de la galerie dans la méthode onActivityResult au lieu de l'image capturée dans certains derniers appareils android.
Je suis à l'aide de code ci-dessous pour capturer et stocker des images.
public void launchCamera(View v) {
Intent camera = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
startActivityForResult(camera, CAMERA_PIC_REQUEST );
}
Dans la méthode onActivityResult,
String[] projection = { MediaStore.Images.ImageColumns.SIZE,
MediaStore.Images.ImageColumns.DISPLAY_NAME,
MediaStore.Images.ImageColumns.DATA, BaseColumns._ID, };
Cursor c = null;
Uri u = MediaStore.Images.Media.EXTERNAL_CONTENT_URI;
try {
if (u != null) {
c = managedQuery(u, projection, null, null, null);
}
if ((c != null) && (c.moveToLast())) {
Bitmap thumbnail = getBitMapFromLocalPath(c.getString(2), 3);
idsImagesgot.add(thumbnail);
ContentResolver cr = getContentResolver();
cr.delete( MediaStore.Images.Media.EXTERNAL_CONTENT_URI,
BaseColumns._ID + "=" + c.getString(3), null);
}
} finally {
if (c != null) {
c.close();
}
}
Quelqu'un peut-il m'aider à ce sujet.
Merci d'avance.
Sathish
source d'informationauteur sathish
Vous devez vous connecter pour publier un commentaire.
Des Photos prises par l'ACTION_IMAGE_CAPTURE ne sont pas enregistrés dans le MediaStore automatiquement sur tous les appareils.
Le fonctionnaire Android guide donne un exemple:
http://developer.android.com/guide/topics/media/camera.html#intent-receive
Mais cela ne fonctionne pas sur tous les appareils.
La seule méthode fiable j'en suis consciente consiste à sauvegarder le chemin de l'image dans une variable locale. Méfiez-vous que votre application peut se faire tuer alors qu'en arrière-plan (alors que l'application appareil photo est en cours d'exécution), de sorte que vous devez enregistrer le chemin d'accès au cours de onSaveInstanceState.
Modifier après le commentaire:
Créer un nom de fichier temporaire où la photo va être stockée lors du démarrage de l'intention.
fileName
est une Chaîne de caractères, un champ de votre activité. Vous devez enregistrer cette façon:et de les récupérer dans onCreate():
Maintenant, au moment de la onActivityResult, vous connaissez le nom du fichier où la photo a été stocké (
fileName
). Vous pouvez faire ce que vous voulez avec elle, et puis le supprimer.2013-09-19 edit: Il semble que certains camera apps ignorer la putExtra uri, et de stocker le pic dans un endroit différent. Donc, avant d'utiliser la valeur de
fileName
vous devriez vérifier si l'intention est null ou pas. Si vous obtenez une valeur non nulle intention, alors vous devriez préférerintent.getData()
surfileName
. UtilisationfileName
comme une solution de sauvegarde uniquement lorsque cela est nécessaire.Mon onActivityResult() la méthode ressemble à ceci et il travaille à l'obtention de l'image de MediaStore.ACTION_IMAGE_CAPTURE: