Domanda

Ciao Sto usando ACTION_IMAGE_CAPTURE per catturare un'immagine utilizzando Intent come segue:

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);

Ho bisogno immagine negozio per in uno sdcard e recuperare il percorso di tale immagine utilizzando il metodo onActivityResult. Non so come ottenere il percorso dell'immagine dell'immagine attualmente catturata.

Se qualcuno sa aiuto per favore.

Grazie

È stato utile?

Soluzione

Questo è come funziona il 2.2 (diverso rispetto alle versioni precedenti). Quando si avvia intento

        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);

è necessario ricordare mCapturedImageURI.

Quando si cattura un'immagine, in uso onActivityResult() che URI per ottenere il percorso del file:

            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);

UPDATE: On nuovi dispositivi Android non avrebbe bisogno MediaStore.EXTRA_OUTPUT, ma è un'immagine piuttosto dedurre / video URI da data.getData () ricevuta da onActivityResult (..., i dati Intent), come ben descritto in

Android ACTION_IMAGE_CAPTURE Intent

Tuttavia, poiché questa parte è soggetta a produttore adattamento, possono verificarsi altri telefoni in cui l'approccio "vecchio" può essere utile.

Altri suggerimenti

Un altro modo, testato su Android 2.1, è prendere l'ID o AbsolutePath dell'ultima immagine galleria.

Si può fare così:

/**
 * 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;
    }
}

E per rimuovere il file:

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) } );
}

Questo codice si è basata sul palo: Eliminazione di una galleria immagine dopo fotocamera intento preso

Questa domanda è molto vecchio, ma sono stato in lotta con lo stesso problema per mezza giornata. Il problema è che il vostro intento ACTION_IMAGE_CAPTURE tornerà sempre code=-1 e data=null se non si imposta le seguenti autorizzazioni per l'applicazione nel file AndroidManifest.xml:

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

È anche possibile impostare le seguenti operazioni se si desidera registrare l'audio dalla vostra applicazione:

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

Rimuovi

intent.putExtra(MediaStore.EXTRA_OUTPUT, mCapturedImageURI);  

e add

Uri uri = data.getData();in onActivityResult
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top