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.
Perché si imposta il PROIEZIONE a MediaStore.Images.Thumbnails._ID e non MediaStore.Images.Thumbnails.DATA? –
@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
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. –