L'ho trovato il migliore (più veloce/minimo sovraccarico) per eseguire media scanner su un file specifico (o eseguirlo per scansionare tutti i file per il supporto), se si conosce il nome file. Ecco il metodo che uso:
/**
* 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);
}
quando ha bisogno per funzionare su più file (ad esempio, durante l'inizializzazione un app con immagini multiple), continuo a una raccolta di nuove immagini nomi dei file durante l'inizializzazione, e quindi eseguire il metodo di cui sopra per ogni nuovo file immagine. Nel codice seguente, addToScanList
aggiunge i file per la scansione a un ArrayList<T>
e scanMediaFiles
viene utilizzato per avviare una scansione per ciascun file nell'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");
}
}
ya grazie, spero che questo mi aiuterà molto proverò con questo codice. – user1806231
molto buono +1 per questo, lo userò e darò un feedback, userò con file musicali e playlist – Ahmed