package org.witness.informacam.storage;
import java.io.File;
import android.content.ContentResolver;
import android.content.Context;
import android.database.Cursor;
import android.media.MediaScannerConnection;
import android.media.MediaScannerConnection.MediaScannerConnectionClient;
import android.net.Uri;
import android.provider.BaseColumns;
import android.provider.MediaStore;
public class InformaCamMediaScanner implements MediaScannerConnectionClient {
private MediaScannerConnection msc;
private File f;
private Context context;
private OnMediaScannedListener mListener;
public interface OnMediaScannedListener {
public void onMediaScanned(Uri uri);
}
public InformaCamMediaScanner(Context context, File f, OnMediaScannedListener listener) {
this.f = f;
this.context = context;
mListener = listener;
msc = new MediaScannerConnection(this.context, this);
msc.connect();
}
@Override
public void onMediaScannerConnected() {
msc.scanFile(f.getAbsolutePath(), null);
}
@Override
public void onScanCompleted(String path, Uri uri) {
mListener.onMediaScanned(uri);
}
public static Uri getUriFromFile(Context context, File file) {
Uri uri = null;
ContentResolver cr = context.getContentResolver();
Cursor c = cr.query(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, new String[] {BaseColumns._ID}, MediaStore.Images.Media.DATA + "=?", new String[] {file.getAbsolutePath()}, null);
if(c != null && c.moveToFirst()) {
uri = Uri.withAppendedPath(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, String.valueOf(c.getLong(c.getColumnIndex(BaseColumns._ID))));
c.close();
}
return uri;
}
public static void doScanForDeletion(final Context c, final File file) {
MediaScannerConnection.scanFile(c, new String[] {file.getAbsolutePath()}, null, new MediaScannerConnection.OnScanCompletedListener() {
@Override
public void onScanCompleted(String path, Uri uri) {
file.delete();
c.getContentResolver().delete(uri, null, null);
}
});
}
}