2013-08-11 9 views
5

Sto provando ad ottenere il percorso thumnail, non gli oggetti bitmap.
Quando si esegue una query per questi, alcuni dei percorsi di anteprima sono nulli per qualche motivo. (Ho 1028 immagini in miniatura nel mio dispositivo, la lunghezza del cursore è in realtà 1028, ma restituisco ancora valori null) So che ci sono 1028 immagini in miniatura perché ho controllato. Ecco il mio codice:Acquisisci le immagini in miniatura file percorsi

 String[] projection = {MediaStore.Images.Thumbnails._ID}; 
    // Create the cursor pointing to the SDCard 

    cursor = this.getContentResolver().query(MediaStore.Images.Thumbnails.EXTERNAL_CONTENT_URI, 
      projection, // Which columns to return 
      null,  // Return all rows 
      null, 
      MediaStore.Images.Thumbnails.IMAGE_ID); 
    // Get the column index of the Thumbnails Image ID 
    Log.d(Global.TAG, "BEFORE"); 
    columnIndex = cursor.getColumnIndex(MediaStore.Images.Thumbnails._ID); 
    Log.d(Global.TAG, "AFTER1"); 
    for(int i =0;i<cursor.getCount();i++){ 
     cursor.moveToPosition(i); 

     Log.d("MyTag","BBABA" + i +" : " + getThumbnailPathForLocalFile(cursor.getLong(columnIndex))); 
    } 
    cursor.close(); 

mio getThumbnailPathForLocalFile:

String getThumbnailPathForLocalFile(long fileId) 
{ 
    // Log.d(Global., msg) 
    Cursor thumbCursor = null; 
    try 
    { 
     thumbCursor = this.getContentResolver(). 
       query(MediaStore.Images.Thumbnails.EXTERNAL_CONTENT_URI 
       , null 
       , MediaStore.Images.Thumbnails.IMAGE_ID + " = " + fileId+ " AND " 
        + MediaStore.Images.Thumbnails.KIND + " = " 
        + MediaStore.Images.Thumbnails.MINI_KIND , null, null); 

     if(thumbCursor.moveToFirst()) 
     { 
      // the path is stored in the DATA column 
      int dataIndex = thumbCursor.getColumnIndexOrThrow(MediaStore.MediaColumns.DATA); 
      String thumbnailPath = thumbCursor.getString(dataIndex); 
      return thumbnailPath; 
     } 
    } 
    finally 
    { 
     if(thumbCursor != null) 
     { 
      thumbCursor.close(); 
     } 
    } 

    return null; 
} 

Ecco la mia logcat: http://pastebin.com/UZLZF9Pg

Dopo il controllo, vedo che gli ID mando sono proprio come l'indice del per ciclo continuo. Non sono nemmeno sicuro che il mio codice funzioni, quindi qualsiasi altro codice sarà fantastico.

+1

Perché si imposta il PROIEZIONE a MediaStore.Images.Thumbnails._ID e non MediaStore.Images.Thumbnails.DATA? –

+0

@IgorGanapolsky Non sono sicuro. Penso di aver preso quell'esempio da qualche parte. Pensi che possa risolvere il problema? Ad ogni modo, è già irrilevante. – idish

+0

Mi stavo chiedendo perché ho usato {MediaStore.Images.Thumbnails.DATA}, proprio come nella soluzione, e ha funzionato. Quindi ero curioso di avere un approccio diverso. –

risposta

11

È necessario eseguire la ricerca per MediaStore.Images.Thumbnails.DATA. Per modificare il tuo esempio, sarebbe simile a questo.

String[] projection = {MediaStore.Images.Thumbnails.DATA}; 
// Create the cursor pointing to the SDCard 

    Cursor cursor = this.getContentResolver().query(MediaStore.Images.Thumbnails.EXTERNAL_CONTENT_URI, 
     projection, // Which columns to return 
     null,  // Return all rows 
     null, 
     null); 
// Get the column index of the Thumbnails Image ID 
Log.d(TAG, "BEFORE"); 
int columnIndex = cursor.getColumnIndex(MediaStore.Images.Thumbnails.DATA); 
Log.d(TAG, "AFTER1"); 
for(int i =0;i<cursor.getCount();i++){ 
    cursor.moveToPosition(i); 

    Log.d("MyTag","BBABA" + i +" : " + cursor.getString(columnIndex)); 
} 
cursor.close(); 

Riferimento: How to get imagepath from thumbnail path of a image?

+0

Questo è fantastico, funziona !!! Grazie mille, ho cercato così tanto per questa soluzione :) – idish

+0

Ehi, spero che tu mi possa aiutare con un'altra piccola domanda: ho appena rimosso tutte le immagini della mia galleria e poi ho scattato circa 12 immagini con la fotocamera. Successivamente, sono entrato nella Gallery e ho visto le miniature visualizzate in modo piacevole. Tuttavia, quando ho inserito la mia app per visualizzare quelle miniature, non ne vedo nessuna. Dopo aver esaminato la cartella .Thubnails nel DCIM, non ci sono affatto file jpg, ma solo un file strano che pesa 10,9 MB. Sai perché la mia cartella .Thumbnails non mostra le mie miniature? – idish

+0

@idish Si prega di aprirlo come una domanda separata e fornire maggiori dettagli (qual è il nome del "file strano"), anche i dettagli del telefono e la versione del sistema operativo. – yogurtearl

Problemi correlati