2016-05-04 8 views
0

私はいくつかのgifをカスタムギャラリービューに読み込む必要があります。mediastoreを使用すると、png/jpgイメージタイプのみが表示されます。私はまだ答えを見つけることができませんでしたgoogleing数時間後に ...Android Mediastoreから.gifイメージをロードするには

私はメディアストアからイメージをロードするために使用するコードは次のとおりです。

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!

答えて

1

Try This, It may help you.

使用これは、ANSから

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

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

インスタンス。

+0

これが役に立った、thnx! – locomain

1

これは完全な結果をもたらしました。

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

これはバックグラウンドでカーソルをロードし終えたときに我々は結果を得るように私は、AndroidのLoaderManager.LoaderCallbacksを使用して好みます。

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

} 
関連する問題