OSDN Git Service

Updates to 3D gallery. Build 1203.
[android-x86/packages-apps-Gallery2.git] / src / com / cooliris / cache / BootReceiver.java
index 311f3da..dae5355 100644 (file)
@@ -1,19 +1,25 @@
 package com.cooliris.cache;
 
-import com.cooliris.media.Gallery;
+import com.cooliris.media.LocalDataSource;
 import com.cooliris.media.SingleDataSource;
 
 import android.content.BroadcastReceiver;
+import android.content.ContentResolver;
 import android.content.Context;
 import android.content.Intent;
+import android.database.ContentObserver;
 import android.net.Uri;
+import android.os.Handler;
+import android.provider.MediaStore.Images;
+import android.provider.MediaStore.Video;
 import android.util.Log;
 
 public class BootReceiver extends BroadcastReceiver {
-    private static final String TAG = "BootReceiver"; 
+    private static final String TAG = "BootReceiver";
+    private final Handler mHandler = new Handler();
 
     @Override
-    public void onReceive(Context context, Intent intent) {
+    public void onReceive(final Context context, Intent intent) {
         final String action = intent.getAction();
         Log.i(TAG, "Got intent with action " + action);
         if (Intent.ACTION_MEDIA_SCANNER_FINISHED.equals(action)) {
@@ -29,7 +35,21 @@ public class BootReceiver extends BroadcastReceiver {
                 CacheService.markDirty(context);
             }
         } else if (action.equals(Intent.ACTION_BOOT_COMPLETED)) {
-            Gallery.NEEDS_REFRESH = true;
+            // We add special listeners for the MediaProvider
+            final Handler handler = mHandler;
+            final ContentObserver localObserver = new ContentObserver(handler) {
+                public void onChange(boolean selfChange) {
+                    if (!LocalDataSource.sObserverActive) {
+                       CacheService.senseDirty(context, null);
+                    }
+                }
+            };
+            // Start listening perpetually.
+            Uri uriImages = Images.Media.EXTERNAL_CONTENT_URI;
+            Uri uriVideos = Video.Media.EXTERNAL_CONTENT_URI;
+            ContentResolver cr = context.getContentResolver();
+            cr.registerContentObserver(uriImages, false, localObserver);
+            cr.registerContentObserver(uriVideos, false, localObserver);
         }
     }
 }