gpt4 book ai didi

android - 如何在android中运行媒体扫描仪

转载 作者:IT老高 更新时间:2023-10-28 23:40:54 25 4
gpt4 key购买 nike

我想在捕获图像时运行媒体扫描仪。捕获后,图像在 GridView 中更新。为此,我需要运行媒体扫描仪。我找到了两种运行媒体扫描仪的解决方案,一种是广播事件,另一种是运行媒体扫描仪类。我认为在 Ice Cream Sandwich (4.0) 中引入了媒体扫描器类。在版本之前需要设置广播事件以运行媒体扫描器。

谁能指导我如何以正确的方式运行媒体扫描仪。

最佳答案

如果您知道文件名,我发现在特定文件上运行媒体扫描程序是最好的(更快/最少开销)(而不是运行它来扫描所有文件以查找媒体)。这是我使用的方法:

/**
* Sends a broadcast to have the media scanner scan a file
*
* @param path
* the file to scan
*/
private void scanMedia(String path) {
File file = new File(path);
Uri uri = Uri.fromFile(file);
Intent scanFileIntent = new Intent(
Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, uri);
sendBroadcast(scanFileIntent);
}

当需要在多个文件上运行时(例如在初始化具有多个图像的应用程序时),我会在初始化时保留新图像文件名的集合,然后对每个新图像文件运行上述方法。在下面的代码中,addToScanList将要扫描的文件添加到 ArrayList<T> , 和 scanMediaFiles用于启动对数组中每个文件的扫描。

private ArrayList<String> mFilesToScan;

/**
* Adds to the list of paths to scan when a media scan is started.
*
* @see {@link #scanMediaFiles()}
* @param path
*/
private void addToScanList(String path) {
if (mFilesToScan == null)
mFilesToScan = new ArrayList<String>();
mFilesToScan.add(path);
}

/**
* Initiates a media scan of each of the files added to the scan list.
*
* @see {@see #addToScanList(String)}
*/
private void scanMediaFiles() {
if ((mFilesToScan != null) && (!mFilesToScan.isEmpty())) {
for (String path : mFilesToScan) {
scanMedia(path);
}
mFilesToScan.clear();
} else {
Log.e(TAG, "Media scan requested when nothing to scan");
}
}

关于android - 如何在android中运行媒体扫描仪,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13270789/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com