12

Sono nuovo di Android. Voglio eseguire lo scanner multimediale durante la cattura dell'immagine. Dopo l'acquisizione, l'immagine viene aggiornata in vista griglia. Per questo ho bisogno di eseguire media scanner. Ho trovato due soluzioni per eseguire scanner uno è l'evento trasmesso e altro è in esecuzione media. Penso che in Ice Cream Sandwich (4.0) sia stata introdotta la classe media scanner. Prima che le versioni debbano impostare l'evento broadcast per l'esecuzione di media scanner.come eseguire Media Scanner in Android

qualcuno può guidarmi come eseguire lo scanner multimediale nel modo giusto.

risposta

23

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"); 
    } 
} 
+0

ya grazie, spero che questo mi aiuterà molto proverò con questo codice. – user1806231

+0

molto buono +1 per questo, lo userò e darò un feedback, userò con file musicali e playlist – Ahmed

Problemi correlati