MediaScannerConnection
MediaScannerConnection 作用是为应用提供一个媒体扫描服务,当有新创建或者下载的文件时,会从该文件读取元数据并将该文件添加到媒体中去。
当我们添加一个文件的时候,我们需要刷新媒体库才能立即找得到添加文件,MediaScannerConnection可以为我们解决这一问题。
那么我们就来看看怎么使用MediaScannerConnection 去刷新媒体库。
private void saveBitmapInFile(final String path, Bitmap bitmap) {
FileOutputStream fos = null;
try {
fos = new FileOutputStream(path);
bitmap.compress(Bitmap.CompressFormat.JPEG, 90, fos);
if (mScanner == null) {
MediaScannerConnection connection = new MediaScannerConnection(getContext(),
new MediaScannerConnection.MediaScannerConnectionClient() {
public void onMediaScannerConnected() {
mScanner.scanFile(path, null /* mimeType */);
}
public void onScanCompleted(String path1, Uri uri) {
if (path1.equals(path)) {
mScanner.disconnect();
mScanner = null;
}
}
});
try {
connection.connect();
} catch (Exception e) {
e.printStackTrace();
}
mScanner = connection;
}
} catch (IOException e) {
e.printStackTrace();
} catch (OutOfMemoryError error) {
error.printStackTrace();
} finally {
if (fos != null) {
try {
fos.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}