1 问题:最近要做一个将服务器视频保存到本地的功能,将视频保存到本地后发现本地相册里面并没有更新该视频,纠其原因是系统的媒体数据库并没有实时的更新
2 解决方案:利用MediaScannerConnection主动去扫描扫描媒体数据库
步骤:1.在Activity onCreate里面创建成员变量MediaScannerConntion并调用MediaScannerConntion.connect();
2.在需要更新媒体数据库的地方调用MediaScannerConntion.scanFile()
3.在onDestroy里面断开连接MediaScannerConntion.disconnect();
3 具体代码如下:
2 解决方案:利用MediaScannerConnection主动去扫描扫描媒体数据库
步骤:1.在Activity onCreate里面创建成员变量MediaScannerConntion并调用MediaScannerConntion.connect();
2.在需要更新媒体数据库的地方调用MediaScannerConntion.scanFile()
3.在onDestroy里面断开连接MediaScannerConntion.disconnect();
3 具体代码如下:
public class MediaScanActivity extends BaseActivity {
private MediaScannerConnection mMediaScannerConnection;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//1.创建MediaScannerConnection
mMediaScannerConnection = new MediaScannerConnection(this, null);
//调用connect
mMediaScannerConnection.connect();
}
/**
* @param filePath 保存到本地的文件路径
* @param isVideo 是否是视频
*/
private void scanFile(String filePath, boolean isVideo) {
if (mMediaScannerConnection != null) {
if (isVideo) {
//主动扫描视频
mMediaScannerConnection.scanFile(filePath, "video/mp4");
} else {
//主动扫描图片
mMediaScannerConnection.scanFile(filePath, "image/jpeg");
}
}
}
@Override
protected void onDestroy() {
super.onDestroy();
if (mMediaScannerConnection != null) {
//释放连接
mMediaScannerConnection.disconnect();
}
}
}