在做項目時,有時會有這樣的需求,需要將用戶保存的圖片和視頻文件,能及時在相冊中展示和查看,此時如果沒有通知相冊更新,就不會及時查看到相冊中保存的這種圖片。那么我們的應用程序如何通知相冊刷新并且用戶可以及時在相機中找到剛才保存的圖片呢?
方式一:使用 MediaScannerConnection
// 掃描本地mp4文件并添加到本地視頻庫
MediaScannerConnection mMediaScanner = new MediaScannerConnection(this, null);
mMediaScanner.connect();
if (mMediaScanner !=null && mMediaScanner.isConnected()) {
mMediaScanner.scanFile(outputFile, Constants.VIDEO_MIME_TYPE_MP4);
}
方式二:發送廣播通知圖庫更新
File cameraPath =new File(IOUtils.getDCIMDirectory(), "Camera");
File imgFile =new File(cameraPath, imagePath);
if (imgFile.exists()) {
Uri uri = Uri.fromFile(imgFile);
Intent intent = new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE);
intent.setData(uri);
sendBroadcast(intent);
}
測試結果:
- 在 Android 8.0 機型部分手機如 vivo x9i 使用上面的兩種方式,保存視頻到相冊時都無法刷新相冊,保存圖片可行。目前猜測原因為 保存視頻的文件夾在圖庫對視頻展示做了限制。
Tips:
- 能使用方式一就盡量使用方式一,方式一不會通知整個圖庫進行刷新操作。