Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Android How to use MediaScannerConnection scanFile

Tags:

android

Im adding images to a folder on the SDCARD. Since the images and my folder is not immediately visible in the Gallery im trying to get the MediaScannerConnection to update and show the folder/images in the gallery. This is not working so good for me since nothing shows up in Gallery. Im only testing in Eclipse AVD.

I dont see much talk about this maybe because the scanFile is new since api8. Could someone show how this is done?

Im trying it in both a service and Activity but keep getting uri=null when onScanCompleted.

like image 524
Erik Avatar asked Jan 10 '11 12:01

Erik


People also ask

What is media scanner service in Android?

The service that does that is called Media Scanner, which saves its output in Media Store. Android's developers have tried hard to optimize it, but Media Scanner is still a service that drains battery quite effectively for the first few minutes following a reboot.


1 Answers

I realized that perhaps you were looking for a solution what would work previous to api level 8, and I could not make sense of Mitch's answer. I solved it by building a class for scanning a single file:

import java.io.File; import android.content.Context; import android.media.MediaScannerConnection; import android.media.MediaScannerConnection.MediaScannerConnectionClient; import android.net.Uri;  public class SingleMediaScanner implements MediaScannerConnectionClient {      private MediaScannerConnection mMs;     private File mFile;      public SingleMediaScanner(Context context, File f) {         mFile = f;         mMs = new MediaScannerConnection(context, this);         mMs.connect();     }      @Override     public void onMediaScannerConnected() {         mMs.scanFile(mFile.getAbsolutePath(), null);     }      @Override     public void onScanCompleted(String path, Uri uri) {         mMs.disconnect();     }  } 

and you would use it like this to make the MediaScannerConnection scan a single file:

new SingleMediaScanner(this, file); 
like image 51
Petrus Avatar answered Sep 23 '22 11:09

Petrus