在项目中,自定义拍摄视频界面,在sd卡根目录存放一些视频文件,比如:我在SD卡中通过自定义拍摄视频刚拍摄完视频,sd根目录里面放入了视频文件,那么,这个时候我立马跳转去Gallery里面查看,选择这个目录里的视频,那么,我是无法看到的。
这是什么原因呢?
因为android系统在启动的时候会启动MediaScannerService扫描系统上的多媒体文件,然后将这些多媒体文件的信息加入到多媒体数据库中,应用程序要取得这些多媒体信息就是从这个多媒体数据库里面去取的,并不是从SD卡中取。也就是说,如果开机后增加或删除了一些多媒体,这个多媒体数据库是不会自动刷新的
解决办法:1.重启手机,很明显,在项目中,这个是不可行的
2.更新媒体库
更新媒体库网上常见的方法是通过发送消息给系统,更细媒体库,但是自从版本号19后,即android4.4开始,不再允许非系统应用发送系统消息,而前面所说的发送消息正是系统消息,即该方法失效。解决办法如下:例如更新sd卡根目录:updateMediaDataBase(Environment.getExternalStorageDirectory().getAbsolutePath());//更新媒体库
private void updateMediaDataBase(String filename) {
int currentApiVersion = android.os.Build.VERSION.SDK_INT;// 获得当前sdk版本
if (currentApiVersion < 19) {
sendBroadcast(new Intent(Intent.ACTION_MEDIA_MOUNTED,
Uri.parse("file://" + filename)));
} else {
MediaScannerConnection.scanFile(this, new String[] { filename },
null, new MediaScannerConnection.OnScanCompletedListener() {
public void onScanCompleted(String path, Uri uri) {
Log.i("ExternalStorage", "Scanned " + path + ":");
Log.i("ExternalStorage", "-> uri=" + uri);
}
});
}
}