diff --git a/src/com/android/gallery3d/data/DataManager.java b/src/com/android/gallery3d/data/DataManager.java
index 0eb6af5..8551327 100644
--- a/src/com/android/gallery3d/data/DataManager.java
+++ b/src/com/android/gallery3d/data/DataManager.java
@@ -16,9 +16,11 @@
 
 package com.android.gallery3d.data;
 
+import android.content.Intent;
 import android.database.ContentObserver;
 import android.net.Uri;
 import android.os.Handler;
+import android.support.v4.content.LocalBroadcastManager;
 
 import com.android.gallery3d.app.GalleryApp;
 import com.android.gallery3d.common.Utils;
@@ -78,6 +80,9 @@
     private static final String TOP_LOCAL_VIDEO_SET_PATH =
             "/local/video";
 
+    private static final String ACTION_DELETE_PICTURE =
+            "com.android.gallery3d.action.DELETE_PICTURE";
+
     public static final Comparator<MediaItem> sDateTakenComparator =
             new DateTakenComparator();
 
@@ -305,6 +310,15 @@
         }
     }
 
+    // Sends a local broadcast if a local image or video is deleted. This is
+    // used to update the thumbnail shown in the camera app.
+    public void broadcastLocalDeletion() {
+        LocalBroadcastManager manager = LocalBroadcastManager.getInstance(
+                mApplication.getAndroidContext());
+        Intent intent = new Intent(ACTION_DELETE_PICTURE);
+        manager.sendBroadcast(intent);
+    }
+
     private static class NotifyBroker extends ContentObserver {
         private WeakHashMap<ChangeNotifier, Object> mNotifiers =
                 new WeakHashMap<ChangeNotifier, Object>();
diff --git a/src/com/android/gallery3d/data/LocalAlbum.java b/src/com/android/gallery3d/data/LocalAlbum.java
index 117dbb6..f45eebf 100644
--- a/src/com/android/gallery3d/data/LocalAlbum.java
+++ b/src/com/android/gallery3d/data/LocalAlbum.java
@@ -260,6 +260,7 @@
         GalleryUtils.assertNotInRenderThread();
         mResolver.delete(mBaseUri, mWhereClause,
                 new String[]{String.valueOf(mBucketId)});
+        mApplication.getDataManager().broadcastLocalDeletion();
     }
 
     @Override
diff --git a/src/com/android/gallery3d/data/LocalImage.java b/src/com/android/gallery3d/data/LocalImage.java
index b64b2c3..c432ab4 100644
--- a/src/com/android/gallery3d/data/LocalImage.java
+++ b/src/com/android/gallery3d/data/LocalImage.java
@@ -247,6 +247,7 @@
         Uri baseUri = Images.Media.EXTERNAL_CONTENT_URI;
         mApplication.getContentResolver().delete(baseUri, "_id=?",
                 new String[]{String.valueOf(id)});
+        mApplication.getDataManager().broadcastLocalDeletion();
     }
 
     private static String getExifOrientation(int orientation) {
diff --git a/src/com/android/gallery3d/data/LocalVideo.java b/src/com/android/gallery3d/data/LocalVideo.java
index 4e888a5..5ccc21b 100644
--- a/src/com/android/gallery3d/data/LocalVideo.java
+++ b/src/com/android/gallery3d/data/LocalVideo.java
@@ -187,6 +187,7 @@
         Uri baseUri = Video.Media.EXTERNAL_CONTENT_URI;
         mApplication.getContentResolver().delete(baseUri, "_id=?",
                 new String[]{String.valueOf(id)});
+        mApplication.getDataManager().broadcastLocalDeletion();
     }
 
     @Override
