2012-11-30 4 views
6

Ich habe ein Problem, wenn MediaScanner nur ein Verzeichnis durchsuchen soll.Aufrufen des MediaScanners in nur einem einzigen Verzeichnis (Android)

Meine App macht Bilder und speichert sie auf SD-Karte/DCIM/AppPictures /, und natürlich muss ich den MediaScanner aufrufen, damit sie in der Galerie-App angezeigt werden. Der folgende Code funktioniert für meinen Zweck:

sendBroadcast(new Intent(Intent.ACTION_MEDIA_MOUNTED, Uri.parse("file://" + Environment.getExternalStorageDirectory()))); 

Aber es scheint nur so verschwenderisch! Ich möchte keine Ressourcen verwenden, die versuchen, die gesamte SD-Karte zu scannen, wenn ich genau weiß, wo sich die Dateien befinden. Ich habe folgendes auch versucht:

sendBroadcast(new Intent(Intent.ACTION_MEDIA_MOUNTED, Uri.parse("file://" + Environment.getExternalStorageDirectory+"/DCIM/AppPictures/"))); 

Aber das liefert keine Ergebnisse. Kann jemand BITTE lassen Sie mich den richtigen Weg wissen, dies zu tun?

Antwort

0

In meiner App lade ich auch Bilder herunter.

Wenn meine Hauptaktivität (das Herunterladen von Bildern) gestartet wird, initiiere ich eine Medienscanner Verbindung. Das Herunterladen ist sequentiell, einmal hat ein Bild angekommen, speichere ich die Dateinamen in einem String (Current unter dem Namen) und „connect“ die Medien Scanner:

public class SomeActivity 
      extends Activity implements MediaScannerConnectionClient { 

    .... 

    protected MediaScannerConnection mMs; 

    .... 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
     .... 
     mMs = new MediaScannerConnection(this, this); 
     .... 
    } 

    @Override 
    public void onMediaScannerConnected() { 
     mMs.scanFile(currentFile, null); 
    } 

    @Override 
    public void onScanCompleted(String path, Uri uri) { 
     mMs.disconnect(); 
    } 


} 

den Scan-Vorgang starten ich gerade tun:

currentFile = "/mnt/sdcard/someLocationToScan/somefile.jpg"; 
mMs.connect(); 
1
public static void ScanMyFile(String strFilePath) { 
    // Tell the media scanner so it is available to the user. 
    MediaScannerConnection.scanFile(null, new String[] { strFilePath }, null, 
      new MediaScannerConnection.OnScanCompletedListener() { 
       public void onScanCompleted(String path, Uri uri) { 
       } 
      }); 
} 
Verwandte Themen