简体   繁体   English

我尝试在SD卡中扫描媒体文件并刷新它

[英]I try scan media file in sdcard and refresh it

I use below code to get image file path and it thumbnail. 我使用下面的代码来获取图像文件路径和缩略图。

String[] projection = {MediaStore.Images.Media._ID, MediaStore.Images.Media.DATA, MediaStore.Images.ImageColumns.DATA};  
Cursor cursor = managedQuery( MediaStore.Images.Media.EXTERNAL_CONTENT_URI, projection, null, null, MediaStore.Images.Media._ID); 
int count = cursor.getCount();
int image_column_index = cursor.getColumnIndex(MediaStore.Images.Media._ID);
int image_path_index = cursor.getColumnIndex(MediaStore.Images.Media.DATA);
int i;
for(i = 0; i < count; i++) {
cursor.moveToPosition(i);
int id = cursor.getInt(image_column_index);
String p = cursor.getString(image_path_index);
Bitmap b = MediaStore.Images.Thumbnails.getThumbnail(getApplicationContext().getContentResolver(), id, MediaStore.Images.Thumbnails.MICRO_KIND, null);
}

And I try below code to refresh the database after file be modified. 我尝试下面的代码来修改文件后刷新数据库。

Intent scanIntent = new Intent(Intent.ACTION_MEDIA_MOUNTED);
scanIntent.setData(Uri.fromFile(new File(Environment.getExternalStorageDirectory().getPath())));
sendBroadcast(scanIntent);

But while the file number more, it spend time more. 但是,虽然文件数量更多,但它花费的时间更多。 So I want to confirm it finish to after work. 所以我想确认下班后完成。 How can I do to know it finish? 怎么知道它完成了?

Run below: 运行如下:

IntentFilter intentfilter = new IntentFilter(Intent.ACTION_MEDIA_SCANNER_STARTED);
intentfilter.addDataScheme("file");
MediaScannerReceiver scanSdReceiver = new MediaScannerReceiver();
scanSdReceiver.setRestart(false);
egisterReceiver(scanSdReceiver, intentfilter);
sendBroadcast(new Intent(Intent.ACTION_MEDIA_MOUNTED, Uri.parse("file://" + Environment.getExternalStorageDirectory().getAbsolutePath()))); 

And define class MediaScannerReceiver: 并定义类MediaScannerReceiver:

public class MediaScannerReceiver extends BroadcastReceiver {  
private boolean restart = false;
@Override  
public void onReceive(Context context, Intent intent) {  
String action = intent.getAction();
if(action.equals("android.intent.action.MEDIA_SCANNER_FINISHED")) {  
//update finish
} 
}  
public void setRestart(boolean r) {
this.restart = r;
}
}  

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM