how to run media scanner in android
Asked Answered
R

1

16

I want run the media scanner while capturing the image. After capturing, the image it is updated in grid view. For that I need to run media scanner. I found two solutions to run media scanner one is the broadcast event and other one is running media scanner class. I think in Ice Cream Sandwich (4.0) media scanner class is introduced.Before versions need to set broadcast event for running media scanner.

can any one guide me how to run media scanner in right way.

Removed answered 7/11, 2012 at 13:29 Comment(0)
D
31

I have found it best (faster/least overhead) to run media scanner on a specific file (vs running it to scan all files for media), if you know the filename. Here's the method I use:

/**
 * 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);
}

When needing to run on multiple files (such as when initializing an app with multiple images), I keep a collection of the new images filenames while initializing, and then run the above method for each new image file. In the below code, addToScanList adds the files to scan to an ArrayList<T>, and scanMediaFiles is used to initiate a scan for each file in the array.

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");
    }
}
Doerrer answered 7/11, 2012 at 13:39 Comment(3)
ya thanks ,i hope this will help me lot i will try with this code.Removed
very good +1 for this, I will use it and give feedback, I will use with music files and playlistsBel
I'm using the exact same code, but still the issue exists. Blank images are getting stored in the Photos application. There is no error or warning in the above code, it executes fine. But still issue persists.Unpack

© 2022 - 2024 — McMap. All rights reserved.