1.启动MediaScanner服务,扫描媒体文件:
程序通过发送下面的Intent启动MediaScanner服务扫描指定的文件或目录:
Intent.ACTION_MEDIA_SCANNER_SCAN_FILE:扫描指定文件
1 2 3 4 5 |
public void scanFileAsync(Context ctx, String filePath) { Intent scanIntent = new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE); scanIntent.setData(Uri.fromFile(new File(filePath))); ctx.sendBroadcast(scanIntent); } |
“android.intent.action.MEDIA_SCANNER_SCAN_DIR”:扫描指定目录
1 2 3 4 5 6 |
public static final String ACTION_MEDIA_SCANNER_SCAN_DIR = "android.intent.action.MEDIA_SCANNER_SCAN_DIR"; public void scanDirAsync(Context ctx, String dir) { Intent scanIntent = new Intent(ACTION_MEDIA_SCANNER_SCAN_DIR); scanIntent.setData(Uri.fromFile(new File(dir))); ctx.sendBroadcast(scanIntent); } |
这种扫描方式中,由于扫描工作是在MediaScanner服务中进行的,因此不会阻塞当前程序进程。当扫描大量媒体文件且实时性要求不高的情况下,适合使用该扫描方式。