2016-05-04 9 views
0

Ich brauche ein paar Gifs in eine benutzerdefinierte Galerieansicht zu laden. mit dem Mediastore bietet mir nur PNG/JPG-Bildtypen. nach ein paar Stunden, die ich noch googleing nicht die Antwort ..Wie lädt man .gif Bilder aus dem Android Mediastore

der Code i Bilder laden aus dem Mediastore verwenden finden könnte, ist:

final String sortOrder = mPreferences.getSortMode(); 

    final Uri uri = android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI; 

    String[] projection = { MediaStore.MediaColumns.DATA, 
      MediaStore.Images.Media.BUCKET_ID, MediaStore.Images.Media.DISPLAY_NAME }; 

    final Cursor cursor = mContext.getContentResolver().query(uri, projection, null, 
      null, sortOrder); 

thnx!

Antwort

1

Try This, It may help you.

Verwendung String mimeType = MimeTypeMap.getSingleton().getMimeTypeFromExtension("gif");

Instanz

String mimeType = MimeTypeMap.getSingleton().getMimeTypeFromExtension("pdf"); 

daraus ans.

+0

das hat geholfen, thnx! – locomain

1

das ergab das perfekte Ergebnis.

private static final String[] COLUMNS_OF_INTEREST = new String[] 
{ 
     MediaStore.Video.Media._ID, 
     MediaStore.Video.Media.DATA, 
     MediaStore.Video.Media.DISPLAY_NAME, 
     MediaStore.Video.Media.SIZE, 
     MediaStore.Video.Media.WIDTH, 
     MediaStore.Video.Media.HEIGHT, 
     MediaStore.Video.Media.DATE_ADDED 
}; 

public void printGifUri(Context context) 
{ 
    ContentResolver cr = context.getContentResolver(); 

    String selection = MediaStore.Images.Media.MIME_TYPE + "=?"; 
    String mimeType = MimeTypeMap.getSingleton().getMimeTypeFromExtension("gif"); 
    String[] selectionArgsPdf = new String[]{ mimeType }; 

    Cursor gifCursor = cr.query(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, COLUMNS_OF_INTEREST, selection,selectionArgsPdf, 
      MediaStore.Images.Media.DATE_ADDED + " DESC"); 

    gifCursor.moveToFirst(); 
    int columnIndexUri = gifCursor.getColumnIndexOrThrow(MediaStore.Video.Media.DATA); 
    for (int i = 0; i < gifCursor.getCount(); i++) 
     Log.d("gif file uri -> ", gifCursor.getString(columnIndexUri)); 
} 

ich lieber mit Android LoaderManager.LoaderCallbacks, da dies den Cursor im Hintergrund lädt und wir bekommen das Ergebnis, wenn Sie fertig.

public class GifListManagerImpl implements LoaderManager.LoaderCallbacks<Cursor> { 

Context mContext; 

private static final String[] COLUMNS_OF_INTEREST = new String[] 
{ 
     MediaStore.Video.Media._ID, 
     MediaStore.Video.Media.DATA, 
     MediaStore.Video.Media.DISPLAY_NAME, 
     MediaStore.Video.Media.SIZE, 
     MediaStore.Video.Media.WIDTH, 
     MediaStore.Video.Media.HEIGHT, 
     MediaStore.Video.Media.DATE_ADDED 
}; 

public GifListManagerImpl(Context context) 
{ 
    mContext = context; 
} 

@Override 
public Loader<Cursor> onCreateLoader(int i, Bundle bundle) { 

    String selection = MediaStore.Images.Media.MIME_TYPE + "=?"; 
    String mimeType = MimeTypeMap.getSingleton().getMimeTypeFromExtension("gif"); 
    String[] selectionArgsPdf = new String[]{ mimeType }; 
    return new CursorLoader(mContext, MediaStore.Images.Media.EXTERNAL_CONTENT_URI, COLUMNS_OF_INTEREST, selection,selectionArgsPdf, 
      MediaStore.Images.Media.DATE_ADDED + " DESC"); 
} 

@Override 
public void onLoadFinished(Loader<Cursor> loader, Cursor cursor) { 
    cursor.moveToFirst(); 
    int columnIndexUri = cursor.getColumnIndexOrThrow(MediaStore.Video.Media.DATA); 
    for (int i = 0; i < cursor.getCount(); i++) 
     Log.d("gif file uri -> ", cursor.getString(columnIndexUri)); 

} 

@Override 
public void onLoaderReset(Loader<Cursor> loader) { 

} 
Verwandte Themen