Back to project page Resonos-Android-Framework.
The source code is released under:
Apache License
If you think the Android project Resonos-Android-Framework listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.
package com.resonos.apps.library.media; /*from w w w .ja v a2 s. com*/ import android.content.Context; import android.media.MediaScannerConnection; import android.media.MediaScannerConnection.MediaScannerConnectionClient; import android.net.Uri; import android.os.Handler; import android.provider.MediaStore; /** * This class is used to notify the Android Gallery of new pictures we should * add to it. */ public class MediaScannerNotifier implements MediaScannerConnectionClient { private Context mContext; private Handler mHandler; private MediaScannerConnection mConnection; private String mPath; private String mMimeType; private MediaScannerNotifierListener mCallback; public interface MediaScannerNotifierListener { public void ready(String path, Uri uri); } private MediaScannerNotifier(Context context, Handler handler, String path, String mimeType, MediaScannerNotifierListener callback) { mContext = context; mPath = path; mMimeType = mimeType; mConnection = new MediaScannerConnection(mContext, this); mConnection.connect(); mHandler = handler; mCallback = callback; } /** * Run the MediaScanner using an image file path * @param context * @param handler: any new handler will suffice * @param filePath * @param callback to see when the image is ready, optional * @return the MediaScannerNotifier object */ public static MediaScannerNotifier run(Context context, Handler handler, String filePath, MediaScannerNotifierListener callback) { try { return new MediaScannerNotifier(context, handler, filePath, "image/jpeg", callback); } catch (Exception e) { // e.printStackTrace(); } return null; } /** * Run the MediaScanner using an image URI * @param context * @param handler: any new handler will suffice * @param imgUri * @param callback to see when the image is ready, optional * @return the MediaScannerNotifier object */ public static MediaScannerNotifier run(Context context, Handler handler, Uri imgUri, MediaScannerNotifierListener callback) { android.database.Cursor cur = null; try { cur = context.getContentResolver().query(imgUri, new String[] { MediaStore.Images.ImageColumns.DATA }, null, null, null); String filePath = null; if (cur != null && cur.moveToNext()) { filePath = cur.getString(0); } if (filePath != null) { return new MediaScannerNotifier(context, handler, filePath, "image/jpeg", callback); } } catch (Exception e) { e.printStackTrace(); } finally { if (cur != null) { cur.close(); } } return null; } @Override public void onMediaScannerConnected() { mConnection.scanFile(mPath, mMimeType); } @Override public void onScanCompleted(final String path, final Uri uri) { try { if (mCallback != null) { mHandler.post(new Runnable() { public void run() { mCallback.ready(path, uri); } }); } } finally { mConnection.disconnect(); mContext = null; } } }