Question

Salut j'utilise ACTION_IMAGE_CAPTURE pour capturer l'image en utilisant Intent comme suit:

Intent cameraIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
cameraIntent.putExtra(
MediaStore.EXTRA_OUTPUT, (new File(Environment.getExternalStorageDirectory(),
String.valueOf(System.currentTimeMillis()) + ".jpg"))
);
startActivityForResult(cameraIntent, 0);

Je dois stocker l'image dans un sdcard et récupérer le chemin de cette image en utilisant la méthode onActivityResult. Je ne sais pas comment obtenir le chemin d'image de l'image actuellement capturée.

Si quelqu'un connaît l'aide s'il vous plaît.

Merci

Était-ce utile?

La solution

Voilà comment cela fonctionne sur 2.2 (autre que sur les versions précédentes). Lors du démarrage de l'intention

        String fileName = "temp.jpg";  
        ContentValues values = new ContentValues();  
        values.put(MediaStore.Images.Media.TITLE, fileName);  
        mCapturedImageURI = getContentResolver().insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, values);  

        Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);  
        intent.putExtra(MediaStore.EXTRA_OUTPUT, mCapturedImageURI);  
        startActivityForResult(intent, CAPTURE_PICTURE_INTENT);

vous avez besoin de se rappeler mCapturedImageURI.

Lors de la capture d'image, dans l'utilisation des URI onActivityResult() que pour obtenir le chemin du fichier:

            String[] projection = { MediaStore.Images.Media.DATA}; 
            Cursor cursor = managedQuery(mCapturedImageURI, projection, null, null, null); 
            int column_index_data = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA); 
            cursor.moveToFirst(); 
            String capturedImageFilePath = cursor.getString(column_index_data);

Mise à jour: Sur les nouveaux appareils Android vous pas besoin MediaStore.EXTRA_OUTPUT, mais vous plutôt déduisent image / URI vidéo à partir data.getData () reçue de onActivityResult (..., les données d'intention), comme bien décrit dans la rubrique

Android ACTION_IMAGE_CAPTURE intention

Cependant, puisque cette partie est soumise à l'adaptation du fabricant, vous pouvez encore rencontrer des téléphones où l'approche « ancienne » peut être utile.

Autres conseils

Une autre façon, testé sur Android 2.1, est de prendre l'ID ou AbsolutePath de la galerie dernière image.

Il peut être fait comme ça:

/**
 * Gets the last image id from the media store
 * @return
 */
private int getLastImageId(){
    final String[] imageColumns = { MediaStore.Images.Media._ID, MediaStore.Images.Media.DATA };
    final String imageOrderBy = MediaStore.Images.Media._ID+" DESC";
    Cursor imageCursor = managedQuery(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, imageColumns, null, null, imageOrderBy);
    if(imageCursor.moveToFirst()){
        int id = imageCursor.getInt(imageCursor.getColumnIndex(MediaStore.Images.Media._ID));
        String fullPath = imageCursor.getString(imageCursor.getColumnIndex(MediaStore.Images.Media.DATA));
        Log.d(TAG, "getLastImageId::id " + id);
        Log.d(TAG, "getLastImageId::path " + fullPath);
        imageCursor.close();
        return id;
    }else{
        return 0;
    }
}

Et pour supprimer le fichier:

private void removeImage(int id) {
       ContentResolver cr = getContentResolver();
        cr.delete(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, MediaStore.Images.Media._ID + "=?", new String[]{ Long.toString(id) } );
}

Ce code a été basé sur le message: Suppression d'une galerie image après photo l'intention de la caméra prise

Cette question est très ancienne mais je l'ai été aux prises avec le même problème pour une demi-journée. Le problème est que vous avez l'intention de ACTION_IMAGE_CAPTURE retournera toujours code=-1 et data=null sauf si vous définissez les autorisations suivantes pour l'application dans votre fichier AndroidManifest.xml:

<uses-permission android:name="android.permission.CAMERA"/>

Vous pouvez également définir les paramètres suivants si vous voulez enregistrer l'audio de votre application:

<uses-permission android:name="android.permission.RECORD_AUDIO"/>

Supprimer

intent.putExtra(MediaStore.EXTRA_OUTPUT, mCapturedImageURI);  

et ajouter

Uri uri = data.getData();in onActivityResult
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top