diff --git a/tests/tests/database/src/android/database/cts/DatabaseCursorTest.java b/tests/tests/database/src/android/database/cts/DatabaseCursorTest.java
index 0fc2a5d..241dd26 100644
--- a/tests/tests/database/src/android/database/cts/DatabaseCursorTest.java
+++ b/tests/tests/database/src/android/database/cts/DatabaseCursorTest.java
@@ -16,6 +16,8 @@
 
 package android.database.cts;
 
+import dalvik.annotation.BrokenTest;
+
 import java.io.File;
 import java.util.Arrays;
 import java.util.Random;
@@ -393,10 +395,11 @@
     }
 
     @LargeTest
+    @BrokenTest("Consistently times out, even with count reduced to 30000")
     public void testLoadingThread() throws Exception {
         mDatabase.execSQL("CREATE TABLE test (_id INTEGER PRIMARY KEY, data INT);");
 
-        final int count = 30000;
+        final int count = 50000;
         String sql = "INSERT INTO test (data) VALUES (?);";
         SQLiteStatement s = mDatabase.compileStatement(sql);
         for (int i = 0; i < count; i++) {
diff --git a/tests/tests/hardware/src/android/hardware/cts/CameraTest.java b/tests/tests/hardware/src/android/hardware/cts/CameraTest.java
index 6807b8f..eecb760 100644
--- a/tests/tests/hardware/src/android/hardware/cts/CameraTest.java
+++ b/tests/tests/hardware/src/android/hardware/cts/CameraTest.java
@@ -16,6 +16,7 @@
 
 package android.hardware.cts;
 
+import dalvik.annotation.BrokenTest;
 import dalvik.annotation.TestLevel;
 import dalvik.annotation.TestTargetClass;
 import dalvik.annotation.TestTargetNew;
@@ -339,6 +340,7 @@
             args = {android.hardware.Camera.ErrorCallback.class}
         )
     })
+    @BrokenTest("Flaky test. Occasionally fails without a stack trace.")
     public void testCheckPreview() throws Exception {
         initializeMessageLooper();
         syncLock();
diff --git a/tests/tests/provider/src/android/provider/cts/ContactsTest.java b/tests/tests/provider/src/android/provider/cts/ContactsTest.java
index 5f62670..be42e1d 100644
--- a/tests/tests/provider/src/android/provider/cts/ContactsTest.java
+++ b/tests/tests/provider/src/android/provider/cts/ContactsTest.java
@@ -42,6 +42,8 @@
 import android.provider.Contacts.Settings;
 import android.telephony.PhoneNumberUtils;
 import android.test.InstrumentationTestCase;
+
+import dalvik.annotation.BrokenTest;
 import dalvik.annotation.TestTargetClass;
 
 import java.io.ByteArrayInputStream;
@@ -154,6 +156,7 @@
      * Test case for the behavior of the ContactsProvider's groups table
      * It does not test any APIs in android.provider.Contacts.java
      */
+    @BrokenTest("Throws NPE in call to update(). uri parameter null?")
     public void testGroupsTable() {
         final String[] GROUPS_PROJECTION = new String[] {
                 Groups._ID, Groups.NAME, Groups.NOTES, Groups.SHOULD_SYNC,
@@ -230,6 +233,7 @@
      * Test case for the behavior of the ContactsProvider's photos table
      * It does not test any APIs in android.provider.Contacts.java
      */
+    @BrokenTest("Should not test EXISTS_ON_SERVER_INDEX?")
     public void testPhotosTable() {
         final String[] PHOTOS_PROJECTION = new String[] {
                 Photos._ID, Photos.EXISTS_ON_SERVER, Photos.PERSON_ID,
diff --git a/tests/tests/widget/src/android/widget/cts/ProgressBarTest.java b/tests/tests/widget/src/android/widget/cts/ProgressBarTest.java
index 41f4b91..11f0b6b 100644
--- a/tests/tests/widget/src/android/widget/cts/ProgressBarTest.java
+++ b/tests/tests/widget/src/android/widget/cts/ProgressBarTest.java
@@ -18,6 +18,7 @@
 
 import com.android.cts.stub.R;
 
+import dalvik.annotation.BrokenTest;
 import dalvik.annotation.TestLevel;
 import dalvik.annotation.TestTargetClass;
 import dalvik.annotation.TestTargetNew;
@@ -350,6 +351,7 @@
     })
     @ToBeFixed(bug = "1695243", explanation = "the javadoc for setInterpolator() is incomplete." +
             "1. not clear what is supposed to happen if context or resID is exceptional.")
+    @BrokenTest("Initial setInterpolator() call occasionally fails with NPE. context null?")
     public void testAccessInterpolatorContext() {
         ProgressBar progressBar = new ProgressBar(mContext, null,
                 com.android.internal.R.attr.progressBarStyle);
diff --git a/tests/tests/widget/src/android/widget/cts/VideoViewTest.java b/tests/tests/widget/src/android/widget/cts/VideoViewTest.java
index e85e798..f49b3a0 100644
--- a/tests/tests/widget/src/android/widget/cts/VideoViewTest.java
+++ b/tests/tests/widget/src/android/widget/cts/VideoViewTest.java
@@ -464,6 +464,7 @@
     )
     @ToBeFixed(bug = "", explanation = "After pressing KEYCODE_HEADSETHOOK, "
             + "the video should be playing, but it did not until time out.")
+    @BrokenTest("Video starts playing automatically after setting the path.")
     public void testOnKeyDown() throws Throwable {
         runTestOnUiThread(new Runnable() {
             public void run() {
