android-在加载多媒体资料之前刷新设备上的所有缩略图?
我有一个应用程序,它使用光标从mediastore加载缩略图(到gridview中):android-在加载多媒体资料之前刷新设备上的所有缩略图?,android,thumbnails,mediastore,Android,Thumbnails,Mediastore,我有一个应用程序,它使用光标从mediastore加载缩略图(到gridview中): CursorLoader cursorLoader = null; if (Integer.valueOf(android.os.Build.VERSION.SDK_INT) >= android.os.Build.VERSION_CODES.HONEYCOMB) { String[] from = { MediaStore.Files.FileColumns._
CursorLoader cursorLoader = null;
if (Integer.valueOf(android.os.Build.VERSION.SDK_INT) >= android.os.Build.VERSION_CODES.HONEYCOMB) {
String[] from = { MediaStore.Files.FileColumns._ID,
MediaStore.Files.FileColumns.DATA,
MediaStore.Files.FileColumns.DATE_ADDED,
MediaStore.Files.FileColumns.MEDIA_TYPE,
MediaStore.Files.FileColumns.MIME_TYPE,
MediaStore.Files.FileColumns.TITLE };
projection = from;
String selection = MediaStore.Files.FileColumns.MEDIA_TYPE + "="
+ MediaStore.Files.FileColumns.MEDIA_TYPE_IMAGE + " OR "
+ MediaStore.Files.FileColumns.MEDIA_TYPE + "="
+ MediaStore.Files.FileColumns.MEDIA_TYPE_VIDEO;
Uri queryUri = MediaStore.Files.getContentUri("external");
cursorLoader = new CursorLoader(this, queryUri, projection,
selection, null, MediaStore.Files.FileColumns.DATE_ADDED
+ " DESC");
} else {
String[] from = { MediaStore.MediaColumns.DATE_ADDED };
projection = from;
Uri sourceImageUri = MediaStore.Images.Media.EXTERNAL_CONTENT_URI;
cursorLoader = new CursorLoader(this, sourceImageUri, null, null,
null, MediaStore.MediaColumns.DATE_ADDED + " DESC");
}
Cursor cursor = null;
if (cursorLoader != null) {
cursor = cursorLoader.loadInBackground();
mGalleryAdapter = new GalleryAdapter(this,
android.R.layout.simple_list_item_1, cursor, projection,
to, CursorAdapter.FLAG_REGISTER_CONTENT_OBSERVER);
gallery.setAdapter(mGalleryAdapter);
gallery.setOnItemClickListener(myOnItemClickListener);
}
然而,一些较新的图像加载时没有缩略图,这是相当愚蠢的。缩略图仅在我打开手机上的gallery应用程序(照片)时生成
如何以编程方式刷新设备上的所有缩略图,以便在没有缩略图的情况下不会留下空白图像
我希望它能在所有Android版本上运行,包括4.4。提前感谢:)您应该能够使用以下命令触发重新扫描:
sendBroadcast(new Intent(Intent.ACTION_MEDIA_MOUNTED,
Uri.parse("file://"
+ Environment.getExternalStorageDirectory())));
您可能需要更改路径以满足您的需要
如果您想等待扫描完成后再继续,则需要为
操作\u媒体\u扫描仪\u完成
意图注册一个接收器
/RdvA7y4MqfE
kaiwid23建议这不适用于4.4+。在这种情况下,您可以手动控制扫描仪 您将希望使用该方法。我不知道如果提供一个目录,它是否可以递归工作,或者它是否只接受单路径 在这种情况下,您将在构造函数中传递一个
OnScanCompletedListener
,因此监视扫描的完成实际上要容易得多。编辑:
使用MediaStore.Images.Thumbnails.getThumbnail()
或MediaStore.Video.Thumbnails.getThumbnail()
-这是一个阻止类,如果找不到,将生成一个新位图。简单得多
您只需要文件的MediaStore ID,我假设您已经有了,您可以在活动中或通过上下文使用标准的getContentResolver()。此方法还允许您直接获取迷你或微型位图
更多关于这个
旧答案: 正如不可分割所说,你可以使用
sendBroadcast(new Intent(Intent.ACTION_MEDIA_MOUNTED,
Uri.parse("file://"
+ Environment.getExternalStorageDirectory())));
但是,这对Android 4.4(我想)不会起作用,所以请考虑使用API 19 + ./p>的MyTaskActer类。