android, MediaScanner vs FileObserver for monitoring media file created -
what best option (mediascanner/fileobserver) monitor couple of paths (both internal , external memory of device) media files being created.
i need event when ever media file being created in folder being monitored.
-thanks & regards, manju
first of all, fileoberver memory-killer approach. consider high volume of files. rather contentobserver seems far better approach.
getcontentresolver().registercontentobserver(android.provider.mediastore.images.media.internal_content_uri, true, new contentobserver(new handler()) { @override public void onchange(boolean selfchange) { log.d("your_tag","internal media has been changed"); super.onchange(selfchange); long timestamp = readlastdatefrommediastore(context, mediastore.images.media.internal_content_uri); // comapare stored last value , need } } ); getcontentresolver().registercontentobserver(android.provider.mediastore.images.media.external_content_uri, true, new contentobserver(new handler()) { @override public void onchange(boolean selfchange) { log.d("your_tag","external media has been changed"); super.onchange(selfchange); long timestamp = readlastdatefrommediastore(context, mediastore.images.media.external_content_uri); // comapare stored last value , need } } ); private long readlastdatefrommediastore(context context, uri uri) { cursor cursor = context.getcontentresolver().query(uri, null, null, null, "date_added desc"); photoholder media = null; long dateadded =-1; if (cursor.movetonext()) { long dateadded = cursor.getlong(cursor.getcolumnindexorthrow(mediacolumns.date_added)); } cursor.close(); return dateadded; } probably idea in service (ever running)! need unregister in ondestroy()
warning: tells when mediastore has been changed, not tellly specific addition/deletion. this, may have query mediastore detect change previous database or something.
Comments
Post a Comment