samples: Sync prebuilts for nyc-dev

developers/samples/android: f9872ded3bb6cd3c01ab0881a58764f5171b4c64
developers/build: 23e77f8a040c0b35531a68e776363f32fa7feeeb

Change-Id: I3f61cc23f90d2fd778d62d88cd3df6ea0842da8e
diff --git a/prebuilts/gradle/ActionBarCompat-Basic/Application/build.gradle b/prebuilts/gradle/ActionBarCompat-Basic/Application/build.gradle
index 6d60152..91cbece 100644
--- a/prebuilts/gradle/ActionBarCompat-Basic/Application/build.gradle
+++ b/prebuilts/gradle/ActionBarCompat-Basic/Application/build.gradle
@@ -5,7 +5,7 @@
     }
 
     dependencies {
-        classpath 'com.android.tools.build:gradle:1.2.3'
+        classpath 'com.android.tools.build:gradle:2.1.2'
     }
 }
 
@@ -16,10 +16,11 @@
 }
 
 dependencies {
-    compile "com.android.support:support-v4:23.1.0"
-    compile "com.android.support:gridlayout-v7:23.1.0"
-    compile "com.android.support:cardview-v7:23.1.0"
-    compile 'com.android.support:appcompat-v7:21.0.2'
+    compile "com.android.support:support-v4:24.0.0-beta1"
+    compile "com.android.support:gridlayout-v7:24.0.0-beta1"
+    compile "com.android.support:cardview-v7:24.0.0-beta1"
+    compile "com.android.support:appcompat-v7:24.0.0-beta1"
+    compile 'com.android.support:appcompat-v7:24.0.0-beta1'
 }
 
 // The sample build uses multiple directories to
@@ -32,7 +33,7 @@
 
 android {
     compileSdkVersion 23
-    buildToolsVersion "23.0.2"
+    buildToolsVersion "23.0.3"
 
     defaultConfig {
         minSdkVersion 7
diff --git a/prebuilts/gradle/ActionBarCompat-Basic/README.md b/prebuilts/gradle/ActionBarCompat-Basic/README.md
index e3cf72c..42fe78c 100644
--- a/prebuilts/gradle/ActionBarCompat-Basic/README.md
+++ b/prebuilts/gradle/ActionBarCompat-Basic/README.md
@@ -35,8 +35,8 @@
 Pre-requisites
 --------------
 
-- Android SDK v23
-- Android Build Tools v23.0.2
+- Android SDK 23
+- Android Build Tools v23.0.3
 - Android Support Repository
 
 Screenshots
@@ -65,7 +65,7 @@
 License
 -------
 
-Copyright 2014 The Android Open Source Project, Inc.
+Copyright 2016 The Android Open Source Project, Inc.
 
 Licensed to the Apache Software Foundation (ASF) under one or more contributor
 license agreements.  See the NOTICE file distributed with this work for
diff --git a/prebuilts/gradle/ActionBarCompat-Basic/gradle/wrapper/gradle-wrapper.properties b/prebuilts/gradle/ActionBarCompat-Basic/gradle/wrapper/gradle-wrapper.properties
index 07fc193..d570517 100644
--- a/prebuilts/gradle/ActionBarCompat-Basic/gradle/wrapper/gradle-wrapper.properties
+++ b/prebuilts/gradle/ActionBarCompat-Basic/gradle/wrapper/gradle-wrapper.properties
@@ -3,4 +3,4 @@
 distributionPath=wrapper/dists
 zipStoreBase=GRADLE_USER_HOME
 zipStorePath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-2.8-all.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-2.10-all.zip
diff --git a/prebuilts/gradle/ActionBarCompat-ListPopupMenu/Application/build.gradle b/prebuilts/gradle/ActionBarCompat-ListPopupMenu/Application/build.gradle
index 6d60152..91cbece 100644
--- a/prebuilts/gradle/ActionBarCompat-ListPopupMenu/Application/build.gradle
+++ b/prebuilts/gradle/ActionBarCompat-ListPopupMenu/Application/build.gradle
@@ -5,7 +5,7 @@
     }
 
     dependencies {
-        classpath 'com.android.tools.build:gradle:1.2.3'
+        classpath 'com.android.tools.build:gradle:2.1.2'
     }
 }
 
@@ -16,10 +16,11 @@
 }
 
 dependencies {
-    compile "com.android.support:support-v4:23.1.0"
-    compile "com.android.support:gridlayout-v7:23.1.0"
-    compile "com.android.support:cardview-v7:23.1.0"
-    compile 'com.android.support:appcompat-v7:21.0.2'
+    compile "com.android.support:support-v4:24.0.0-beta1"
+    compile "com.android.support:gridlayout-v7:24.0.0-beta1"
+    compile "com.android.support:cardview-v7:24.0.0-beta1"
+    compile "com.android.support:appcompat-v7:24.0.0-beta1"
+    compile 'com.android.support:appcompat-v7:24.0.0-beta1'
 }
 
 // The sample build uses multiple directories to
@@ -32,7 +33,7 @@
 
 android {
     compileSdkVersion 23
-    buildToolsVersion "23.0.2"
+    buildToolsVersion "23.0.3"
 
     defaultConfig {
         minSdkVersion 7
diff --git a/prebuilts/gradle/ActionBarCompat-ListPopupMenu/README.md b/prebuilts/gradle/ActionBarCompat-ListPopupMenu/README.md
index 86cf091..754e5f9 100644
--- a/prebuilts/gradle/ActionBarCompat-ListPopupMenu/README.md
+++ b/prebuilts/gradle/ActionBarCompat-ListPopupMenu/README.md
@@ -17,8 +17,8 @@
 Pre-requisites
 --------------
 
-- Android SDK v23
-- Android Build Tools v23.0.2
+- Android SDK 23
+- Android Build Tools v23.0.3
 - Android Support Repository
 
 Screenshots
@@ -47,7 +47,7 @@
 License
 -------
 
-Copyright 2014 The Android Open Source Project, Inc.
+Copyright 2016 The Android Open Source Project, Inc.
 
 Licensed to the Apache Software Foundation (ASF) under one or more contributor
 license agreements.  See the NOTICE file distributed with this work for
diff --git a/prebuilts/gradle/ActionBarCompat-ListPopupMenu/gradle/wrapper/gradle-wrapper.properties b/prebuilts/gradle/ActionBarCompat-ListPopupMenu/gradle/wrapper/gradle-wrapper.properties
index 07fc193..d570517 100644
--- a/prebuilts/gradle/ActionBarCompat-ListPopupMenu/gradle/wrapper/gradle-wrapper.properties
+++ b/prebuilts/gradle/ActionBarCompat-ListPopupMenu/gradle/wrapper/gradle-wrapper.properties
@@ -3,4 +3,4 @@
 distributionPath=wrapper/dists
 zipStoreBase=GRADLE_USER_HOME
 zipStorePath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-2.8-all.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-2.10-all.zip
diff --git a/prebuilts/gradle/ActionBarCompat-ShareActionProvider/Application/build.gradle b/prebuilts/gradle/ActionBarCompat-ShareActionProvider/Application/build.gradle
index 6d60152..91cbece 100644
--- a/prebuilts/gradle/ActionBarCompat-ShareActionProvider/Application/build.gradle
+++ b/prebuilts/gradle/ActionBarCompat-ShareActionProvider/Application/build.gradle
@@ -5,7 +5,7 @@
     }
 
     dependencies {
-        classpath 'com.android.tools.build:gradle:1.2.3'
+        classpath 'com.android.tools.build:gradle:2.1.2'
     }
 }
 
@@ -16,10 +16,11 @@
 }
 
 dependencies {
-    compile "com.android.support:support-v4:23.1.0"
-    compile "com.android.support:gridlayout-v7:23.1.0"
-    compile "com.android.support:cardview-v7:23.1.0"
-    compile 'com.android.support:appcompat-v7:21.0.2'
+    compile "com.android.support:support-v4:24.0.0-beta1"
+    compile "com.android.support:gridlayout-v7:24.0.0-beta1"
+    compile "com.android.support:cardview-v7:24.0.0-beta1"
+    compile "com.android.support:appcompat-v7:24.0.0-beta1"
+    compile 'com.android.support:appcompat-v7:24.0.0-beta1'
 }
 
 // The sample build uses multiple directories to
@@ -32,7 +33,7 @@
 
 android {
     compileSdkVersion 23
-    buildToolsVersion "23.0.2"
+    buildToolsVersion "23.0.3"
 
     defaultConfig {
         minSdkVersion 7
diff --git a/prebuilts/gradle/ActionBarCompat-ShareActionProvider/README.md b/prebuilts/gradle/ActionBarCompat-ShareActionProvider/README.md
index 2495f76..d645328 100644
--- a/prebuilts/gradle/ActionBarCompat-ShareActionProvider/README.md
+++ b/prebuilts/gradle/ActionBarCompat-ShareActionProvider/README.md
@@ -22,8 +22,8 @@
 Pre-requisites
 --------------
 
-- Android SDK v23
-- Android Build Tools v23.0.2
+- Android SDK 23
+- Android Build Tools v23.0.3
 - Android Support Repository
 
 Screenshots
@@ -52,7 +52,7 @@
 License
 -------
 
-Copyright 2014 The Android Open Source Project, Inc.
+Copyright 2016 The Android Open Source Project, Inc.
 
 Licensed to the Apache Software Foundation (ASF) under one or more contributor
 license agreements.  See the NOTICE file distributed with this work for
diff --git a/prebuilts/gradle/ActionBarCompat-ShareActionProvider/gradle/wrapper/gradle-wrapper.properties b/prebuilts/gradle/ActionBarCompat-ShareActionProvider/gradle/wrapper/gradle-wrapper.properties
index 07fc193..d570517 100644
--- a/prebuilts/gradle/ActionBarCompat-ShareActionProvider/gradle/wrapper/gradle-wrapper.properties
+++ b/prebuilts/gradle/ActionBarCompat-ShareActionProvider/gradle/wrapper/gradle-wrapper.properties
@@ -3,4 +3,4 @@
 distributionPath=wrapper/dists
 zipStoreBase=GRADLE_USER_HOME
 zipStorePath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-2.8-all.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-2.10-all.zip
diff --git a/prebuilts/gradle/ActionBarCompat-Styled/Application/build.gradle b/prebuilts/gradle/ActionBarCompat-Styled/Application/build.gradle
index 3fda1f0..91cbece 100644
--- a/prebuilts/gradle/ActionBarCompat-Styled/Application/build.gradle
+++ b/prebuilts/gradle/ActionBarCompat-Styled/Application/build.gradle
@@ -5,7 +5,7 @@
     }
 
     dependencies {
-        classpath 'com.android.tools.build:gradle:1.2.3'
+        classpath 'com.android.tools.build:gradle:2.1.2'
     }
 }
 
@@ -16,10 +16,11 @@
 }
 
 dependencies {
-    compile "com.android.support:support-v4:23.1.0"
-    compile "com.android.support:gridlayout-v7:23.1.0"
-    compile "com.android.support:cardview-v7:23.1.0"
-    compile 'com.android.support:appcompat-v7:18.0.+'
+    compile "com.android.support:support-v4:24.0.0-beta1"
+    compile "com.android.support:gridlayout-v7:24.0.0-beta1"
+    compile "com.android.support:cardview-v7:24.0.0-beta1"
+    compile "com.android.support:appcompat-v7:24.0.0-beta1"
+    compile 'com.android.support:appcompat-v7:24.0.0-beta1'
 }
 
 // The sample build uses multiple directories to
@@ -32,7 +33,7 @@
 
 android {
     compileSdkVersion 23
-    buildToolsVersion "23.0.2"
+    buildToolsVersion "23.0.3"
 
     defaultConfig {
         minSdkVersion 7
diff --git a/prebuilts/gradle/ActionBarCompat-Styled/README.md b/prebuilts/gradle/ActionBarCompat-Styled/README.md
index d180ffa..c6e597a 100644
--- a/prebuilts/gradle/ActionBarCompat-Styled/README.md
+++ b/prebuilts/gradle/ActionBarCompat-Styled/README.md
@@ -2,16 +2,16 @@
 Android ActionBarCompat-Styled Sample
 ===================================
 
-This sample shows you how to use ActionBarCompat with a customized theme. It utilizes a 
+This sample shows you how to use ActionBarCompat with a customized theme. It utilizes a
 split action bar when running on a device with a narrow display, and shows three tabs.
 
 Introduction
 ------------
 
-This sample shows how to style an ActionBar using the [support library][1] on devices running 
+This sample shows how to style an ActionBar using the [support library][1] on devices running
 Android v2.1+ using a custom theme.
 
-This Activity extends from ActionBarActivity, which provides all of the function 
+This Activity extends from ActionBarActivity, which provides all of the function
 necessary to display a compatible Action Bar on devices running Android v2.1+.
 A custom application theme and styles are defined in XML.
 
@@ -23,8 +23,8 @@
 Pre-requisites
 --------------
 
-- Android SDK v23
-- Android Build Tools v23.0.2
+- Android SDK 23
+- Android Build Tools v23.0.3
 - Android Support Repository
 
 Screenshots
@@ -53,7 +53,7 @@
 License
 -------
 
-Copyright 2014 The Android Open Source Project, Inc.
+Copyright 2016 The Android Open Source Project, Inc.
 
 Licensed to the Apache Software Foundation (ASF) under one or more contributor
 license agreements.  See the NOTICE file distributed with this work for
diff --git a/prebuilts/gradle/ActionBarCompat-Styled/gradle/wrapper/gradle-wrapper.properties b/prebuilts/gradle/ActionBarCompat-Styled/gradle/wrapper/gradle-wrapper.properties
index 07fc193..d570517 100644
--- a/prebuilts/gradle/ActionBarCompat-Styled/gradle/wrapper/gradle-wrapper.properties
+++ b/prebuilts/gradle/ActionBarCompat-Styled/gradle/wrapper/gradle-wrapper.properties
@@ -3,4 +3,4 @@
 distributionPath=wrapper/dists
 zipStoreBase=GRADLE_USER_HOME
 zipStorePath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-2.8-all.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-2.10-all.zip
diff --git a/prebuilts/gradle/ActionBarCompat-Styled/screenshots/1-activity.png.png b/prebuilts/gradle/ActionBarCompat-Styled/screenshots/1-activity.png
similarity index 100%
rename from prebuilts/gradle/ActionBarCompat-Styled/screenshots/1-activity.png.png
rename to prebuilts/gradle/ActionBarCompat-Styled/screenshots/1-activity.png
Binary files differ
diff --git a/prebuilts/gradle/ActiveNotifications/Application/build.gradle b/prebuilts/gradle/ActiveNotifications/Application/build.gradle
index 0787d15..750ef9c 100644
--- a/prebuilts/gradle/ActiveNotifications/Application/build.gradle
+++ b/prebuilts/gradle/ActiveNotifications/Application/build.gradle
@@ -5,7 +5,7 @@
     }
 
     dependencies {
-        classpath 'com.android.tools.build:gradle:2.0.0'
+        classpath 'com.android.tools.build:gradle:2.1.2'
     }
 }
 
@@ -16,10 +16,10 @@
 }
 
 dependencies {
-    compile "com.android.support:support-v4:24.0.0-alpha1"
-    compile "com.android.support:support-v13:24.0.0-alpha1"
-    compile "com.android.support:cardview-v7:24.0.0-alpha1"
-    compile "com.android.support:appcompat-v7:24.0.0-alpha1"
+    compile "com.android.support:support-v4:24.0.0-beta1"
+    compile "com.android.support:support-v13:24.0.0-beta1"
+    compile "com.android.support:cardview-v7:24.0.0-beta1"
+    compile "com.android.support:appcompat-v7:24.0.0-beta1"
 }
 
 // The sample build uses multiple directories to
@@ -31,12 +31,12 @@
     'template'] // boilerplate code that is generated by the sample template process
 
 android {
-    compileSdkVersion "android-N"
-    buildToolsVersion "24.0.0 rc1"
+    compileSdkVersion 24
+    buildToolsVersion "23.0.3"
 
     defaultConfig {
-        minSdkVersion "N"
-        targetSdkVersion "N"
+        minSdkVersion 24
+        targetSdkVersion 24
     }
 
     compileOptions {
diff --git a/prebuilts/gradle/ActiveNotifications/Application/src/main/res/values/base-strings.xml b/prebuilts/gradle/ActiveNotifications/Application/src/main/res/values/base-strings.xml
index b28301f..1753fa9 100644
--- a/prebuilts/gradle/ActiveNotifications/Application/src/main/res/values/base-strings.xml
+++ b/prebuilts/gradle/ActiveNotifications/Application/src/main/res/values/base-strings.xml
@@ -22,12 +22,12 @@
         
             
 Notifications can now be grouped in Android N. Since Android M, the
-NotificationManager can tell you how many notifications your application 
-is currently showing. This sample demonstrates how to use these APIs 
-together for a nicer user experience when an app may have multiple 
-notifications. To get started, press the "add a notification" button. 
-If you add more than one notification a notification summary will be 
-added. When a notification is being canceled, the count gets updated 
+NotificationManager can tell you how many notifications your application
+is currently showing. This sample demonstrates how to use these APIs
+together for a nicer user experience when an app may have multiple
+notifications. To get started, press the "add a notification" button.
+If you add more than one notification a notification summary will be
+added. When a notification is being canceled, the count gets updated
 via a PendingIntent.
             
         
diff --git a/prebuilts/gradle/ActiveNotifications/README.md b/prebuilts/gradle/ActiveNotifications/README.md
index 522caf5..3a56e9a 100644
--- a/prebuilts/gradle/ActiveNotifications/README.md
+++ b/prebuilts/gradle/ActiveNotifications/README.md
@@ -17,10 +17,10 @@
 Starting with Android N, you can set notification groups for notifications
 and define a notification group summary.
 
-In Android M, you can query for the active notifications that your app sent 
+In Android M, you can query for the active notifications that your app sent
 sing the [notify][2] methods.
 
-This sample demonstrates simple use of these features by allowing a user 
+This sample demonstrates simple use of these features by allowing a user
 to add notifications and then query how many notifications
 are currently being displayed via the [getActiveNotifications()][3] method.
 
@@ -31,8 +31,8 @@
 Pre-requisites
 --------------
 
-- Android SDK Preview N
-- Android Build Tools v24.0.0 rc1
+- Android SDK 24
+- Android Build Tools v23.0.3
 - Android Support Repository
 
 Screenshots
diff --git a/prebuilts/gradle/ActivityInstrumentation/Application/build.gradle b/prebuilts/gradle/ActivityInstrumentation/Application/build.gradle
index 6ea7851..106dde3 100644
--- a/prebuilts/gradle/ActivityInstrumentation/Application/build.gradle
+++ b/prebuilts/gradle/ActivityInstrumentation/Application/build.gradle
@@ -5,7 +5,7 @@
     }
 
     dependencies {
-        classpath 'com.android.tools.build:gradle:1.2.3'
+        classpath 'com.android.tools.build:gradle:2.1.2'
     }
 }
 
@@ -16,7 +16,8 @@
 }
 
 dependencies {
-    compile "com.android.support:support-v4:23.1.0"
+    compile "com.android.support:support-v4:24.0.0-beta1"
+    compile "com.android.support:appcompat-v7:24.0.0-beta1"
 }
 
 // The sample build uses multiple directories to
@@ -29,7 +30,7 @@
 
 android {
     compileSdkVersion 23
-    buildToolsVersion "23.0.2"
+    buildToolsVersion "23.0.3"
 
     defaultConfig {
         minSdkVersion 4
diff --git a/prebuilts/gradle/ActivityInstrumentation/README.md b/prebuilts/gradle/ActivityInstrumentation/README.md
index 3b94d49..c5001fd 100644
--- a/prebuilts/gradle/ActivityInstrumentation/README.md
+++ b/prebuilts/gradle/ActivityInstrumentation/README.md
@@ -8,8 +8,8 @@
 Pre-requisites
 --------------
 
-- Android SDK v23
-- Android Build Tools v23.0.2
+- Android SDK 23
+- Android Build Tools v23.0.3
 - Android Support Repository
 
 Getting Started
@@ -33,7 +33,7 @@
 License
 -------
 
-Copyright 2014 The Android Open Source Project, Inc.
+Copyright 2016 The Android Open Source Project, Inc.
 
 Licensed to the Apache Software Foundation (ASF) under one or more contributor
 license agreements.  See the NOTICE file distributed with this work for
diff --git a/prebuilts/gradle/ActivityInstrumentation/gradle/wrapper/gradle-wrapper.properties b/prebuilts/gradle/ActivityInstrumentation/gradle/wrapper/gradle-wrapper.properties
index 07fc193..d570517 100644
--- a/prebuilts/gradle/ActivityInstrumentation/gradle/wrapper/gradle-wrapper.properties
+++ b/prebuilts/gradle/ActivityInstrumentation/gradle/wrapper/gradle-wrapper.properties
@@ -3,4 +3,4 @@
 distributionPath=wrapper/dists
 zipStoreBase=GRADLE_USER_HOME
 zipStorePath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-2.8-all.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-2.10-all.zip
diff --git a/prebuilts/gradle/ActivitySceneTransitionBasic/Application/build.gradle b/prebuilts/gradle/ActivitySceneTransitionBasic/Application/build.gradle
index ae04efe..f41c00d 100644
--- a/prebuilts/gradle/ActivitySceneTransitionBasic/Application/build.gradle
+++ b/prebuilts/gradle/ActivitySceneTransitionBasic/Application/build.gradle
@@ -5,7 +5,7 @@
     }
 
     dependencies {
-        classpath 'com.android.tools.build:gradle:1.2.3'
+        classpath 'com.android.tools.build:gradle:2.1.2'
     }
 }
 
@@ -16,9 +16,10 @@
 }
 
 dependencies {
-    compile "com.android.support:support-v4:23.1.0"
-    compile "com.android.support:support-v13:23.1.0"
-    compile "com.android.support:cardview-v7:23.1.0"
+    compile "com.android.support:support-v4:24.0.0-beta1"
+    compile "com.android.support:support-v13:24.0.0-beta1"
+    compile "com.android.support:cardview-v7:24.0.0-beta1"
+    compile "com.android.support:appcompat-v7:24.0.0-beta1"
     compile 'com.squareup.picasso:picasso:2.4.0'
 }
 
@@ -32,7 +33,7 @@
 
 android {
     compileSdkVersion 21
-    buildToolsVersion "23.0.2"
+    buildToolsVersion "23.0.3"
 
     defaultConfig {
         minSdkVersion 21
diff --git a/prebuilts/gradle/ActivitySceneTransitionBasic/README.md b/prebuilts/gradle/ActivitySceneTransitionBasic/README.md
index b6b0a6a..4969b99 100644
--- a/prebuilts/gradle/ActivitySceneTransitionBasic/README.md
+++ b/prebuilts/gradle/ActivitySceneTransitionBasic/README.md
@@ -19,8 +19,8 @@
 Pre-requisites
 --------------
 
-- Android SDK v21
-- Android Build Tools v23.0.2
+- Android SDK 21
+- Android Build Tools v23.0.3
 - Android Support Repository
 
 Screenshots
@@ -49,7 +49,7 @@
 License
 -------
 
-Copyright 2014 The Android Open Source Project, Inc.
+Copyright 2016 The Android Open Source Project, Inc.
 
 Licensed to the Apache Software Foundation (ASF) under one or more contributor
 license agreements.  See the NOTICE file distributed with this work for
diff --git a/prebuilts/gradle/ActivitySceneTransitionBasic/gradle/wrapper/gradle-wrapper.properties b/prebuilts/gradle/ActivitySceneTransitionBasic/gradle/wrapper/gradle-wrapper.properties
index 2ea35fd..1534e1e 100644
--- a/prebuilts/gradle/ActivitySceneTransitionBasic/gradle/wrapper/gradle-wrapper.properties
+++ b/prebuilts/gradle/ActivitySceneTransitionBasic/gradle/wrapper/gradle-wrapper.properties
@@ -3,4 +3,4 @@
 distributionPath=wrapper/dists
 zipStoreBase=GRADLE_USER_HOME
 zipStorePath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-2.8-all.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-2.10-all.zip
diff --git a/prebuilts/gradle/AdvancedImmersiveMode/Application/build.gradle b/prebuilts/gradle/AdvancedImmersiveMode/Application/build.gradle
index 1b5df4e..bff8131 100644
--- a/prebuilts/gradle/AdvancedImmersiveMode/Application/build.gradle
+++ b/prebuilts/gradle/AdvancedImmersiveMode/Application/build.gradle
@@ -5,7 +5,7 @@
     }
 
     dependencies {
-        classpath 'com.android.tools.build:gradle:1.2.3'
+        classpath 'com.android.tools.build:gradle:2.1.2'
     }
 }
 
@@ -16,9 +16,10 @@
 }
 
 dependencies {
-    compile "com.android.support:support-v4:23.1.0"
-    compile "com.android.support:support-v13:23.1.0"
-    compile "com.android.support:cardview-v7:23.1.0"
+    compile "com.android.support:support-v4:24.0.0-beta1"
+    compile "com.android.support:support-v13:24.0.0-beta1"
+    compile "com.android.support:cardview-v7:24.0.0-beta1"
+    compile "com.android.support:appcompat-v7:24.0.0-beta1"
 }
 
 // The sample build uses multiple directories to
@@ -31,7 +32,7 @@
 
 android {
     compileSdkVersion 23
-    buildToolsVersion "23.0.2"
+    buildToolsVersion "23.0.3"
 
     defaultConfig {
         minSdkVersion 19
diff --git a/prebuilts/gradle/AdvancedImmersiveMode/README.md b/prebuilts/gradle/AdvancedImmersiveMode/README.md
index 8c29c0b..9a945d2 100644
--- a/prebuilts/gradle/AdvancedImmersiveMode/README.md
+++ b/prebuilts/gradle/AdvancedImmersiveMode/README.md
@@ -26,8 +26,8 @@
 Pre-requisites
 --------------
 
-- Android SDK v23
-- Android Build Tools v23.0.2
+- Android SDK 23
+- Android Build Tools v23.0.3
 - Android Support Repository
 
 Screenshots
@@ -56,7 +56,7 @@
 License
 -------
 
-Copyright 2014 The Android Open Source Project, Inc.
+Copyright 2016 The Android Open Source Project, Inc.
 
 Licensed to the Apache Software Foundation (ASF) under one or more contributor
 license agreements.  See the NOTICE file distributed with this work for
diff --git a/prebuilts/gradle/AdvancedImmersiveMode/gradle/wrapper/gradle-wrapper.properties b/prebuilts/gradle/AdvancedImmersiveMode/gradle/wrapper/gradle-wrapper.properties
index 699a491..27b249f 100644
--- a/prebuilts/gradle/AdvancedImmersiveMode/gradle/wrapper/gradle-wrapper.properties
+++ b/prebuilts/gradle/AdvancedImmersiveMode/gradle/wrapper/gradle-wrapper.properties
@@ -3,4 +3,4 @@
 distributionPath=wrapper/dists
 zipStoreBase=GRADLE_USER_HOME
 zipStorePath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-2.8-all.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-2.10-all.zip
diff --git a/prebuilts/gradle/AgendaData/Application/build.gradle b/prebuilts/gradle/AgendaData/Application/build.gradle
index 500217b..cb3c823 100644
--- a/prebuilts/gradle/AgendaData/Application/build.gradle
+++ b/prebuilts/gradle/AgendaData/Application/build.gradle
@@ -5,7 +5,7 @@
     }
 
     dependencies {
-        classpath 'com.android.tools.build:gradle:1.2.3'
+        classpath 'com.android.tools.build:gradle:2.1.2'
     }
 }
 
@@ -16,12 +16,13 @@
 }
 
 dependencies {
-    compile "com.android.support:support-v4:23.1.0"
-    compile "com.android.support:support-v13:23.1.0"
-    compile "com.android.support:cardview-v7:23.1.0"
-    compile 'com.android.support:design:23.1.0'
+    compile "com.android.support:support-v4:24.0.0-beta1"
+    compile "com.android.support:support-v13:24.0.0-beta1"
+    compile "com.android.support:cardview-v7:24.0.0-beta1"
+    compile "com.android.support:appcompat-v7:24.0.0-beta1"
+    compile 'com.android.support:design:24.0.0-beta1'
     compile 'com.google.android.gms:play-services-wearable:8.4.0'
-    compile 'com.android.support:support-v13:23.1.1'
+    compile 'com.android.support:support-v13:24.0.0-beta1'
     wearApp project(':Wearable')
 }
 
@@ -35,7 +36,7 @@
 
 android {
     compileSdkVersion 23
-    buildToolsVersion "23.0.2"
+    buildToolsVersion "23.0.3"
 
     defaultConfig {
         minSdkVersion 18
diff --git a/prebuilts/gradle/AgendaData/Application/src/main/java/com/example/android/wearable/agendadata/MainActivity.java b/prebuilts/gradle/AgendaData/Application/src/main/java/com/example/android/wearable/agendadata/MainActivity.java
index 6a9678a..1492c81 100644
--- a/prebuilts/gradle/AgendaData/Application/src/main/java/com/example/android/wearable/agendadata/MainActivity.java
+++ b/prebuilts/gradle/AgendaData/Application/src/main/java/com/example/android/wearable/agendadata/MainActivity.java
@@ -41,8 +41,6 @@
 import com.google.android.gms.wearable.DataApi;
 import com.google.android.gms.wearable.DataItem;
 import com.google.android.gms.wearable.DataItemBuffer;
-import com.google.android.gms.wearable.Node;
-import com.google.android.gms.wearable.NodeApi;
 import com.google.android.gms.wearable.Wearable;
 
 /**
@@ -51,7 +49,6 @@
  * permissions as well.
  */
 public class MainActivity extends AppCompatActivity implements
-        NodeApi.NodeListener,
         ConnectionCallbacks,
         OnConnectionFailedListener,
         ActivityCompat.OnRequestPermissionsResultCallback {
@@ -66,11 +63,11 @@
     private GoogleApiClient mGoogleApiClient;
     private boolean mResolvingError = false;
 
-    private TextView mLogTextView;
-    ScrollView mScroller;
-
     private View mLayout;
 
+    private TextView mLogTextView;
+    private ScrollView mScroller;
+
     @Override
     protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
@@ -98,10 +95,10 @@
 
     @Override
     protected void onStop() {
-        if (mGoogleApiClient.isConnected()) {
-            Wearable.NodeApi.removeListener(mGoogleApiClient, this);
+        if (mGoogleApiClient != null && mGoogleApiClient.isConnected()) {
+            mGoogleApiClient.disconnect();
         }
-        mGoogleApiClient.disconnect();
+
         super.onStop();
     }
 
@@ -132,10 +129,6 @@
 
     }
 
-    private void pushCalendarToWear() {
-        startService(new Intent(this, CalendarQueryService.class));
-    }
-
     /*
      * Requests Calendar and Contact permissions.
      * If the permission has been denied previously, a SnackBar will prompt the user to grant the
@@ -190,7 +183,9 @@
         // END_INCLUDE(calendar_and_contact_permissions_request)
     }
 
-
+    private void pushCalendarToWear() {
+        startService(new Intent(this, CalendarQueryService.class));
+    }
 
     public void onDeleteEventsClicked(View view) {
         if (mGoogleApiClient.isConnected()) {
@@ -246,27 +241,18 @@
     }
 
     @Override
-    public void onPeerConnected(Node peer) {
-        appendLog("Device connected");
-    }
-
-    @Override
-    public void onPeerDisconnected(Node peer) {
-        appendLog("Device disconnected");
-    }
-
-    @Override
     public void onConnected(Bundle connectionHint) {
         if (Log.isLoggable(TAG, Log.DEBUG)) {
             Log.d(TAG, "Connected to Google Api Service.");
         }
         mResolvingError = false;
-        Wearable.NodeApi.addListener(mGoogleApiClient, this);
     }
 
     @Override
     public void onConnectionSuspended(int cause) {
-        // Ignore
+        if (Log.isLoggable(TAG, Log.DEBUG)) {
+            Log.d(TAG, "onConnectionSuspended(): Cause id: " + cause);
+        }
     }
 
     @Override
@@ -274,9 +260,7 @@
         if (Log.isLoggable(TAG, Log.DEBUG)) {
             Log.d(TAG, "Disconnected from Google Api Service");
         }
-        if (null != Wearable.NodeApi) {
-            Wearable.NodeApi.removeListener(mGoogleApiClient, this);
-        }
+
         if (mResolvingError) {
             // Already attempting to resolve an error.
             return;
@@ -359,4 +343,4 @@
             }
         });
     }
-}
+}
\ No newline at end of file
diff --git a/prebuilts/gradle/AgendaData/README.md b/prebuilts/gradle/AgendaData/README.md
index 11b5361..2f376d4 100644
--- a/prebuilts/gradle/AgendaData/README.md
+++ b/prebuilts/gradle/AgendaData/README.md
@@ -22,8 +22,8 @@
 Pre-requisites
 --------------
 
-- Android SDK v23
-- Android Build Tools v23.0.2
+- Android SDK 23
+- Android Build Tools v23.0.3
 - Android Support Repository
 
 Screenshots
@@ -52,7 +52,7 @@
 License
 -------
 
-Copyright 2014 The Android Open Source Project, Inc.
+Copyright 2016 The Android Open Source Project, Inc.
 
 Licensed to the Apache Software Foundation (ASF) under one or more contributor
 license agreements.  See the NOTICE file distributed with this work for
diff --git a/prebuilts/gradle/AgendaData/Wearable/build.gradle b/prebuilts/gradle/AgendaData/Wearable/build.gradle
index 0ad736e..62f641a 100644
--- a/prebuilts/gradle/AgendaData/Wearable/build.gradle
+++ b/prebuilts/gradle/AgendaData/Wearable/build.gradle
@@ -5,7 +5,7 @@
     }
 
     dependencies {
-        classpath 'com.android.tools.build:gradle:1.2.3'
+        classpath 'com.android.tools.build:gradle:2.1.2'
     }
 }
 
@@ -18,7 +18,7 @@
 
 
     compile 'com.google.android.gms:play-services-wearable:8.4.0'
-    compile 'com.android.support:support-v13:23.3.0'
+    compile 'com.android.support:support-v13:24.0.0-beta1'
 
     compile 'com.google.android.support:wearable:1.4.0'
 
@@ -35,7 +35,7 @@
 android {
     compileSdkVersion 23
 
-    buildToolsVersion "23.0.2"
+    buildToolsVersion "23.0.3"
 
     defaultConfig {
         versionCode 1
diff --git a/prebuilts/gradle/AgendaData/Wearable/src/main/AndroidManifest.xml b/prebuilts/gradle/AgendaData/Wearable/src/main/AndroidManifest.xml
index e6dbab7..87bed70 100644
--- a/prebuilts/gradle/AgendaData/Wearable/src/main/AndroidManifest.xml
+++ b/prebuilts/gradle/AgendaData/Wearable/src/main/AndroidManifest.xml
@@ -18,7 +18,7 @@
         package="com.example.android.wearable.agendadata" >
 
     <uses-sdk android:minSdkVersion="20"
-        android:targetSdkVersion="22" />
+        android:targetSdkVersion="23" />
 
     <uses-feature android:name="android.hardware.type.watch" />
 
@@ -34,7 +34,8 @@
         <service
                 android:name="com.example.android.wearable.agendadata.HomeListenerService" >
             <intent-filter>
-                <action android:name="com.google.android.gms.wearable.BIND_LISTENER" />
+                <action android:name="com.google.android.gms.wearable.DATA_CHANGED" />
+                <data android:scheme="wear" android:host="*" android:pathPrefix="/"/>
             </intent-filter>
         </service>
 
diff --git a/prebuilts/gradle/AgendaData/Wearable/src/main/java/com/example/android/wearable/agendadata/Constants.java b/prebuilts/gradle/AgendaData/Wearable/src/main/java/com/example/android/wearable/agendadata/Constants.java
index 176a21e..aa15b6a 100644
--- a/prebuilts/gradle/AgendaData/Wearable/src/main/java/com/example/android/wearable/agendadata/Constants.java
+++ b/prebuilts/gradle/AgendaData/Wearable/src/main/java/com/example/android/wearable/agendadata/Constants.java
@@ -32,4 +32,4 @@
     public static final String PROFILE_PIC = "profile_pic";
 
     public static final String EXTRA_SILENT = "silent";
-}
+}
\ No newline at end of file
diff --git a/prebuilts/gradle/AgendaData/Wearable/src/main/java/com/example/android/wearable/agendadata/DeleteService.java b/prebuilts/gradle/AgendaData/Wearable/src/main/java/com/example/android/wearable/agendadata/DeleteService.java
index 86aafe0..bc4180e 100644
--- a/prebuilts/gradle/AgendaData/Wearable/src/main/java/com/example/android/wearable/agendadata/DeleteService.java
+++ b/prebuilts/gradle/AgendaData/Wearable/src/main/java/com/example/android/wearable/agendadata/DeleteService.java
@@ -16,9 +16,6 @@
 
 package com.example.android.wearable.agendadata;
 
-import static com.example.android.wearable.agendadata.Constants.TAG;
-import static com.example.android.wearable.agendadata.Constants.EXTRA_SILENT;
-
 import android.app.IntentService;
 import android.content.Intent;
 import android.net.Uri;
@@ -26,6 +23,9 @@
 import android.support.wearable.activity.ConfirmationActivity;
 import android.util.Log;
 
+import static com.example.android.wearable.agendadata.Constants.TAG;
+import static com.example.android.wearable.agendadata.Constants.EXTRA_SILENT;
+
 import com.google.android.gms.common.ConnectionResult;
 import com.google.android.gms.common.api.GoogleApiClient;
 import com.google.android.gms.wearable.DataApi;
@@ -105,14 +105,23 @@
 
     @Override
     public void onConnected(Bundle connectionHint) {
+        if (Log.isLoggable(TAG, Log.DEBUG)) {
+            Log.d(TAG, "onConnected: " + connectionHint);
+        }
     }
 
     @Override
     public void onConnectionSuspended(int cause) {
+        if (Log.isLoggable(TAG, Log.DEBUG)) {
+            Log.d(TAG, "onConnectionSuspended: " + cause);
+        }
     }
 
     @Override
     public void onConnectionFailed(ConnectionResult result) {
+        if (Log.isLoggable(TAG, Log.DEBUG)) {
+            Log.d(TAG, "onConnectionFailed: " + result);
+        }
     }
 
 }
diff --git a/prebuilts/gradle/AgendaData/Wearable/src/main/java/com/example/android/wearable/agendadata/HomeListenerService.java b/prebuilts/gradle/AgendaData/Wearable/src/main/java/com/example/android/wearable/agendadata/HomeListenerService.java
index 02a3861..909c27d 100644
--- a/prebuilts/gradle/AgendaData/Wearable/src/main/java/com/example/android/wearable/agendadata/HomeListenerService.java
+++ b/prebuilts/gradle/AgendaData/Wearable/src/main/java/com/example/android/wearable/agendadata/HomeListenerService.java
@@ -16,16 +16,6 @@
 
 package com.example.android.wearable.agendadata;
 
-import static com.example.android.wearable.agendadata.Constants.TAG;
-import static com.example.android.wearable.agendadata.Constants.EXTRA_SILENT;
-
-import static com.example.android.wearable.agendadata.Constants.ALL_DAY;
-import static com.example.android.wearable.agendadata.Constants.BEGIN;
-import static com.example.android.wearable.agendadata.Constants.DESCRIPTION;
-import static com.example.android.wearable.agendadata.Constants.END;
-import static com.example.android.wearable.agendadata.Constants.PROFILE_PIC;
-import static com.example.android.wearable.agendadata.Constants.TITLE;
-
 import android.app.Notification;
 import android.app.NotificationManager;
 import android.app.PendingIntent;
@@ -37,6 +27,15 @@
 import android.text.format.DateFormat;
 import android.util.Log;
 
+import static com.example.android.wearable.agendadata.Constants.ALL_DAY;
+import static com.example.android.wearable.agendadata.Constants.BEGIN;
+import static com.example.android.wearable.agendadata.Constants.DESCRIPTION;
+import static com.example.android.wearable.agendadata.Constants.EXTRA_SILENT;
+import static com.example.android.wearable.agendadata.Constants.END;
+import static com.example.android.wearable.agendadata.Constants.PROFILE_PIC;
+import static com.example.android.wearable.agendadata.Constants.TAG;
+import static com.example.android.wearable.agendadata.Constants.TITLE;
+
 import com.google.android.gms.common.api.GoogleApiClient;
 import com.google.android.gms.wearable.Asset;
 import com.google.android.gms.wearable.DataApi;
@@ -45,7 +44,6 @@
 import com.google.android.gms.wearable.DataItem;
 import com.google.android.gms.wearable.DataMap;
 import com.google.android.gms.wearable.DataMapItem;
-import com.google.android.gms.wearable.MessageEvent;
 import com.google.android.gms.wearable.Wearable;
 import com.google.android.gms.wearable.WearableListenerService;
 
@@ -64,11 +62,21 @@
     private GoogleApiClient mGoogleApiClient;
 
     @Override
+    public void onCreate() {
+        super.onCreate();
+        mGoogleApiClient = new GoogleApiClient.Builder(this.getApplicationContext())
+                .addApi(Wearable.API)
+                .build();
+        mGoogleApiClient.connect();
+    }
+
+    @Override
     public void onDataChanged(DataEventBuffer dataEvents) {
         if (Log.isLoggable(TAG, Log.DEBUG)) {
             Log.d(TAG, "onDataChanged: " + dataEvents + " for " + getPackageName());
         }
         for (DataEvent event : dataEvents) {
+
             if (event.getType() == DataEvent.TYPE_DELETED) {
                 deleteDataItem(event.getDataItem());
             } else if (event.getType() == DataEvent.TYPE_CHANGED) {
@@ -77,13 +85,17 @@
         }
     }
 
-    @Override
-    public void onCreate() {
-        super.onCreate();
-        mGoogleApiClient = new GoogleApiClient.Builder(this.getApplicationContext())
-                .addApi(Wearable.API)
-                .build();
-        mGoogleApiClient.connect();
+    /**
+     * Deletes the calendar card associated with the data item.
+     */
+    private void deleteDataItem(DataItem dataItem) {
+        if (Log.isLoggable(TAG, Log.VERBOSE)) {
+            Log.v(TAG, "onDataItemDeleted:DataItem=" + dataItem.getUri());
+        }
+        Integer notificationId = sNotificationIdByDataItemUri.remove(dataItem.getUri());
+        if (notificationId != null) {
+            ((NotificationManager) getSystemService(NOTIFICATION_SERVICE)).cancel(notificationId);
+        }
     }
 
     /**
@@ -154,26 +166,4 @@
 
         sNotificationIdByDataItemUri.put(dataItem.getUri(), sNotificationId++);
     }
-
-    /**
-     * Deletes the calendar card associated with the data item.
-     */
-    private void deleteDataItem(DataItem dataItem) {
-        if (Log.isLoggable(TAG, Log.VERBOSE)) {
-            Log.v(TAG, "onDataItemDeleted:DataItem=" + dataItem.getUri());
-        }
-        Integer notificationId = sNotificationIdByDataItemUri.remove(dataItem.getUri());
-        if (notificationId != null) {
-            ((NotificationManager) getSystemService(NOTIFICATION_SERVICE)).cancel(notificationId);
-        }
-    }
-
-    @Override
-    public void onMessageReceived(MessageEvent messageEvent) {
-        if (Log.isLoggable(TAG, Log.DEBUG)) {
-            Log.d(TAG, "onMessageReceived: " + messageEvent.getPath()
-                     + " " + messageEvent.getData() + " for " + getPackageName());
-        }
-    }
-
 }
diff --git a/prebuilts/gradle/AgendaData/gradle/wrapper/gradle-wrapper.properties b/prebuilts/gradle/AgendaData/gradle/wrapper/gradle-wrapper.properties
index 07fc193..f16d65d 100644
--- a/prebuilts/gradle/AgendaData/gradle/wrapper/gradle-wrapper.properties
+++ b/prebuilts/gradle/AgendaData/gradle/wrapper/gradle-wrapper.properties
@@ -1,6 +1,6 @@
-#Wed Apr 10 15:27:10 PDT 2013
+#Wed Apr 13 15:08:49 PDT 2016
 distributionBase=GRADLE_USER_HOME
 distributionPath=wrapper/dists
 zipStoreBase=GRADLE_USER_HOME
 zipStorePath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-2.8-all.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-2.10-all.zip
diff --git a/prebuilts/gradle/AlwaysOn/README.md b/prebuilts/gradle/AlwaysOn/README.md
index a573dc2..aa24d8a 100644
--- a/prebuilts/gradle/AlwaysOn/README.md
+++ b/prebuilts/gradle/AlwaysOn/README.md
@@ -24,8 +24,8 @@
 Pre-requisites
 --------------
 
-- Android SDK v23
-- Android Build Tools v23.0.2
+- Android SDK 23
+- Android Build Tools v23.0.3
 - Android Support Repository
 
 Screenshots
@@ -54,7 +54,7 @@
 License
 -------
 
-Copyright 2014 The Android Open Source Project, Inc.
+Copyright 2016 The Android Open Source Project, Inc.
 
 Licensed to the Apache Software Foundation (ASF) under one or more contributor
 license agreements.  See the NOTICE file distributed with this work for
diff --git a/prebuilts/gradle/AlwaysOn/Wearable/build.gradle b/prebuilts/gradle/AlwaysOn/Wearable/build.gradle
index 9b8b755..3087eb1 100644
--- a/prebuilts/gradle/AlwaysOn/Wearable/build.gradle
+++ b/prebuilts/gradle/AlwaysOn/Wearable/build.gradle
@@ -5,7 +5,7 @@
     }
 
     dependencies {
-        classpath 'com.android.tools.build:gradle:1.2.3'
+        classpath 'com.android.tools.build:gradle:2.1.2'
     }
 }
 
@@ -20,7 +20,7 @@
     provided "com.google.android.wearable:wearable:1.0.0"
 
     compile 'com.google.android.gms:play-services-wearable:8.4.0'
-    compile 'com.android.support:support-v13:23.3.0'
+    compile 'com.android.support:support-v13:24.0.0-beta1'
 
     compile 'com.google.android.support:wearable:1.4.0'
 
@@ -37,7 +37,7 @@
 android {
     compileSdkVersion 23
 
-    buildToolsVersion "23.0.2"
+    buildToolsVersion "23.0.3"
 
     defaultConfig {
         versionCode 1
diff --git a/prebuilts/gradle/AlwaysOn/gradle/wrapper/gradle-wrapper.properties b/prebuilts/gradle/AlwaysOn/gradle/wrapper/gradle-wrapper.properties
index 4364027..4e239ca 100644
--- a/prebuilts/gradle/AlwaysOn/gradle/wrapper/gradle-wrapper.properties
+++ b/prebuilts/gradle/AlwaysOn/gradle/wrapper/gradle-wrapper.properties
@@ -3,4 +3,4 @@
 distributionPath=wrapper/dists
 zipStoreBase=GRADLE_USER_HOME
 zipStorePath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-2.8-all.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-2.10-all.zip
diff --git a/prebuilts/gradle/AppRestrictionEnforcer/Application/build.gradle b/prebuilts/gradle/AppRestrictionEnforcer/Application/build.gradle
index ba404cc..c45ed11 100644
--- a/prebuilts/gradle/AppRestrictionEnforcer/Application/build.gradle
+++ b/prebuilts/gradle/AppRestrictionEnforcer/Application/build.gradle
@@ -5,7 +5,7 @@
     }
 
     dependencies {
-        classpath 'com.android.tools.build:gradle:1.2.3'
+        classpath 'com.android.tools.build:gradle:2.1.2'
     }
 }
 
@@ -16,9 +16,10 @@
 }
 
 dependencies {
-    compile "com.android.support:support-v4:23.1.0"
-    compile "com.android.support:support-v13:23.1.0"
-    compile "com.android.support:cardview-v7:23.1.0"
+    compile "com.android.support:support-v4:24.0.0-beta1"
+    compile "com.android.support:support-v13:24.0.0-beta1"
+    compile "com.android.support:cardview-v7:24.0.0-beta1"
+    compile "com.android.support:appcompat-v7:24.0.0-beta1"
 }
 
 // The sample build uses multiple directories to
@@ -31,7 +32,7 @@
 
 android {
     compileSdkVersion 23
-    buildToolsVersion "23.0.2"
+    buildToolsVersion "23.0.3"
 
     defaultConfig {
         minSdkVersion 21
diff --git a/prebuilts/gradle/AppRestrictionEnforcer/README.md b/prebuilts/gradle/AppRestrictionEnforcer/README.md
index 3e1d118..d8e4c29 100644
--- a/prebuilts/gradle/AppRestrictionEnforcer/README.md
+++ b/prebuilts/gradle/AppRestrictionEnforcer/README.md
@@ -8,8 +8,8 @@
 Pre-requisites
 --------------
 
-- Android SDK v23
-- Android Build Tools v23.0.2
+- Android SDK 23
+- Android Build Tools v23.0.3
 - Android Support Repository
 
 Getting Started
@@ -33,7 +33,7 @@
 License
 -------
 
-Copyright 2014 The Android Open Source Project, Inc.
+Copyright 2016 The Android Open Source Project, Inc.
 
 Licensed to the Apache Software Foundation (ASF) under one or more contributor
 license agreements.  See the NOTICE file distributed with this work for
diff --git a/prebuilts/gradle/AppRestrictionEnforcer/gradle/wrapper/gradle-wrapper.properties b/prebuilts/gradle/AppRestrictionEnforcer/gradle/wrapper/gradle-wrapper.properties
index 377495f..2139f4b 100644
--- a/prebuilts/gradle/AppRestrictionEnforcer/gradle/wrapper/gradle-wrapper.properties
+++ b/prebuilts/gradle/AppRestrictionEnforcer/gradle/wrapper/gradle-wrapper.properties
@@ -3,4 +3,4 @@
 distributionPath=wrapper/dists
 zipStoreBase=GRADLE_USER_HOME
 zipStorePath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-2.8-all.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-2.10-all.zip
diff --git a/prebuilts/gradle/AppRestrictionSchema/Application/build.gradle b/prebuilts/gradle/AppRestrictionSchema/Application/build.gradle
index ba404cc..c45ed11 100644
--- a/prebuilts/gradle/AppRestrictionSchema/Application/build.gradle
+++ b/prebuilts/gradle/AppRestrictionSchema/Application/build.gradle
@@ -5,7 +5,7 @@
     }
 
     dependencies {
-        classpath 'com.android.tools.build:gradle:1.2.3'
+        classpath 'com.android.tools.build:gradle:2.1.2'
     }
 }
 
@@ -16,9 +16,10 @@
 }
 
 dependencies {
-    compile "com.android.support:support-v4:23.1.0"
-    compile "com.android.support:support-v13:23.1.0"
-    compile "com.android.support:cardview-v7:23.1.0"
+    compile "com.android.support:support-v4:24.0.0-beta1"
+    compile "com.android.support:support-v13:24.0.0-beta1"
+    compile "com.android.support:cardview-v7:24.0.0-beta1"
+    compile "com.android.support:appcompat-v7:24.0.0-beta1"
 }
 
 // The sample build uses multiple directories to
@@ -31,7 +32,7 @@
 
 android {
     compileSdkVersion 23
-    buildToolsVersion "23.0.2"
+    buildToolsVersion "23.0.3"
 
     defaultConfig {
         minSdkVersion 21
diff --git a/prebuilts/gradle/AppRestrictionSchema/README.md b/prebuilts/gradle/AppRestrictionSchema/README.md
index 453dd01..7e5a383 100644
--- a/prebuilts/gradle/AppRestrictionSchema/README.md
+++ b/prebuilts/gradle/AppRestrictionSchema/README.md
@@ -54,8 +54,8 @@
 Pre-requisites
 --------------
 
-- Android SDK v23
-- Android Build Tools v23.0.2
+- Android SDK 23
+- Android Build Tools v23.0.3
 - Android Support Repository
 
 Screenshots
@@ -84,7 +84,7 @@
 License
 -------
 
-Copyright 2014 The Android Open Source Project, Inc.
+Copyright 2016 The Android Open Source Project, Inc.
 
 Licensed to the Apache Software Foundation (ASF) under one or more contributor
 license agreements.  See the NOTICE file distributed with this work for
diff --git a/prebuilts/gradle/AppRestrictionSchema/gradle/wrapper/gradle-wrapper.properties b/prebuilts/gradle/AppRestrictionSchema/gradle/wrapper/gradle-wrapper.properties
index c5454eb..f1713fa 100644
--- a/prebuilts/gradle/AppRestrictionSchema/gradle/wrapper/gradle-wrapper.properties
+++ b/prebuilts/gradle/AppRestrictionSchema/gradle/wrapper/gradle-wrapper.properties
@@ -3,4 +3,4 @@
 distributionPath=wrapper/dists
 zipStoreBase=GRADLE_USER_HOME
 zipStorePath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-2.8-all.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-2.10-all.zip
diff --git a/prebuilts/gradle/AppRestrictions/Application/build.gradle b/prebuilts/gradle/AppRestrictions/Application/build.gradle
index ae1d811..b8072d1 100644
--- a/prebuilts/gradle/AppRestrictions/Application/build.gradle
+++ b/prebuilts/gradle/AppRestrictions/Application/build.gradle
@@ -5,7 +5,7 @@
     }
 
     dependencies {
-        classpath 'com.android.tools.build:gradle:1.2.3'
+        classpath 'com.android.tools.build:gradle:2.1.2'
     }
 }
 
@@ -16,9 +16,10 @@
 }
 
 dependencies {
-    compile "com.android.support:support-v4:23.1.0"
-    compile "com.android.support:support-v13:23.1.0"
-    compile "com.android.support:cardview-v7:23.1.0"
+    compile "com.android.support:support-v4:24.0.0-beta1"
+    compile "com.android.support:support-v13:24.0.0-beta1"
+    compile "com.android.support:cardview-v7:24.0.0-beta1"
+    compile "com.android.support:appcompat-v7:24.0.0-beta1"
 }
 
 // The sample build uses multiple directories to
@@ -31,7 +32,7 @@
 
 android {
     compileSdkVersion 23
-    buildToolsVersion "23.0.2"
+    buildToolsVersion "23.0.3"
 
     defaultConfig {
         minSdkVersion 18
diff --git a/prebuilts/gradle/AppRestrictions/README.md b/prebuilts/gradle/AppRestrictions/README.md
index 770c933..c9ddbce 100644
--- a/prebuilts/gradle/AppRestrictions/README.md
+++ b/prebuilts/gradle/AppRestrictions/README.md
@@ -12,8 +12,8 @@
 Pre-requisites
 --------------
 
-- Android SDK v23
-- Android Build Tools v23.0.2
+- Android SDK 23
+- Android Build Tools v23.0.3
 - Android Support Repository
 
 Getting Started
@@ -37,7 +37,7 @@
 License
 -------
 
-Copyright 2014 The Android Open Source Project, Inc.
+Copyright 2016 The Android Open Source Project, Inc.
 
 Licensed to the Apache Software Foundation (ASF) under one or more contributor
 license agreements.  See the NOTICE file distributed with this work for
diff --git a/prebuilts/gradle/AppRestrictions/gradle/wrapper/gradle-wrapper.properties b/prebuilts/gradle/AppRestrictions/gradle/wrapper/gradle-wrapper.properties
index 07fc193..d570517 100644
--- a/prebuilts/gradle/AppRestrictions/gradle/wrapper/gradle-wrapper.properties
+++ b/prebuilts/gradle/AppRestrictions/gradle/wrapper/gradle-wrapper.properties
@@ -3,4 +3,4 @@
 distributionPath=wrapper/dists
 zipStoreBase=GRADLE_USER_HOME
 zipStorePath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-2.8-all.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-2.10-all.zip
diff --git a/prebuilts/gradle/AppUsageStatistics/Application/build.gradle b/prebuilts/gradle/AppUsageStatistics/Application/build.gradle
index ddd7854..44382b0 100644
--- a/prebuilts/gradle/AppUsageStatistics/Application/build.gradle
+++ b/prebuilts/gradle/AppUsageStatistics/Application/build.gradle
@@ -5,7 +5,7 @@
     }
 
     dependencies {
-        classpath 'com.android.tools.build:gradle:1.2.3'
+        classpath 'com.android.tools.build:gradle:2.1.2'
     }
 }
 
@@ -16,9 +16,10 @@
 }
 
 dependencies {
-    compile "com.android.support:support-v4:23.1.0"
-    compile "com.android.support:support-v13:23.1.0"
-    compile "com.android.support:cardview-v7:23.1.0"
+    compile "com.android.support:support-v4:24.0.0-beta1"
+    compile "com.android.support:support-v13:24.0.0-beta1"
+    compile "com.android.support:cardview-v7:24.0.0-beta1"
+    compile "com.android.support:appcompat-v7:24.0.0-beta1"
     compile 'com.android.support:recyclerview-v7:+'
     compile 'com.android.support:appcompat-v7:21.+'
 }
@@ -33,7 +34,7 @@
 
 android {
     compileSdkVersion 23
-    buildToolsVersion "23.0.2"
+    buildToolsVersion "23.0.3"
 
     defaultConfig {
         minSdkVersion 21
diff --git a/prebuilts/gradle/AppUsageStatistics/README.md b/prebuilts/gradle/AppUsageStatistics/README.md
index deb6b16..343673d 100644
--- a/prebuilts/gradle/AppUsageStatistics/README.md
+++ b/prebuilts/gradle/AppUsageStatistics/README.md
@@ -49,8 +49,8 @@
 Pre-requisites
 --------------
 
-- Android SDK v23
-- Android Build Tools v23.0.2
+- Android SDK 23
+- Android Build Tools v23.0.3
 - Android Support Repository
 
 Screenshots
@@ -79,7 +79,7 @@
 License
 -------
 
-Copyright 2014 The Android Open Source Project, Inc.
+Copyright 2016 The Android Open Source Project, Inc.
 
 Licensed to the Apache Software Foundation (ASF) under one or more contributor
 license agreements.  See the NOTICE file distributed with this work for
diff --git a/prebuilts/gradle/AppUsageStatistics/gradle/wrapper/gradle-wrapper.properties b/prebuilts/gradle/AppUsageStatistics/gradle/wrapper/gradle-wrapper.properties
index cd50297..fdad773 100644
--- a/prebuilts/gradle/AppUsageStatistics/gradle/wrapper/gradle-wrapper.properties
+++ b/prebuilts/gradle/AppUsageStatistics/gradle/wrapper/gradle-wrapper.properties
@@ -3,4 +3,4 @@
 distributionPath=wrapper/dists
 zipStoreBase=GRADLE_USER_HOME
 zipStorePath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-2.8-all.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-2.10-all.zip
diff --git a/prebuilts/gradle/AsymmetricFingerprintDialog/Application/build.gradle b/prebuilts/gradle/AsymmetricFingerprintDialog/Application/build.gradle
index 1d4d651..addf706 100644
--- a/prebuilts/gradle/AsymmetricFingerprintDialog/Application/build.gradle
+++ b/prebuilts/gradle/AsymmetricFingerprintDialog/Application/build.gradle
@@ -5,7 +5,7 @@
     }
 
     dependencies {
-        classpath 'com.android.tools.build:gradle:1.2.3'
+        classpath 'com.android.tools.build:gradle:2.1.2'
     }
 }
 
@@ -16,9 +16,10 @@
 }
 
 dependencies {
-    compile "com.android.support:support-v4:23.1.0"
-    compile "com.android.support:support-v13:23.1.0"
-    compile "com.android.support:cardview-v7:23.1.0"
+    compile "com.android.support:support-v4:24.0.0-beta1"
+    compile "com.android.support:support-v13:24.0.0-beta1"
+    compile "com.android.support:cardview-v7:24.0.0-beta1"
+    compile "com.android.support:appcompat-v7:24.0.0-beta1"
     compile 'com.squareup.dagger:dagger:1.2.2'
     compile 'com.squareup.dagger:dagger-compiler:1.2.2'
     compile 'junit:junit:4.12'
@@ -35,7 +36,7 @@
 
 android {
     compileSdkVersion 23
-    buildToolsVersion "23.0.2"
+    buildToolsVersion "23.0.3"
 
     defaultConfig {
         minSdkVersion 23
diff --git a/prebuilts/gradle/AsymmetricFingerprintDialog/README.md b/prebuilts/gradle/AsymmetricFingerprintDialog/README.md
index 316d873..e6f8d12 100644
--- a/prebuilts/gradle/AsymmetricFingerprintDialog/README.md
+++ b/prebuilts/gradle/AsymmetricFingerprintDialog/README.md
@@ -38,8 +38,8 @@
 Pre-requisites
 --------------
 
-- Android SDK v23
-- Android Build Tools v23.0.2
+- Android SDK 23
+- Android Build Tools v23.0.3
 - Android Support Repository
 
 Screenshots
@@ -68,7 +68,7 @@
 License
 -------
 
-Copyright 2014 The Android Open Source Project, Inc.
+Copyright 2016 The Android Open Source Project, Inc.
 
 Licensed to the Apache Software Foundation (ASF) under one or more contributor
 license agreements.  See the NOTICE file distributed with this work for
diff --git a/prebuilts/gradle/AsymmetricFingerprintDialog/gradle/wrapper/gradle-wrapper.properties b/prebuilts/gradle/AsymmetricFingerprintDialog/gradle/wrapper/gradle-wrapper.properties
index 203da3a..3ebd0d1 100644
--- a/prebuilts/gradle/AsymmetricFingerprintDialog/gradle/wrapper/gradle-wrapper.properties
+++ b/prebuilts/gradle/AsymmetricFingerprintDialog/gradle/wrapper/gradle-wrapper.properties
@@ -1,6 +1,6 @@
-#Mon Apr 27 11:28:32 JST 2015
+#Wed Oct 15 14:12:11 BST 2014
 distributionBase=GRADLE_USER_HOME
 distributionPath=wrapper/dists
 zipStoreBase=GRADLE_USER_HOME
 zipStorePath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-2.8-all.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-2.10-all.zip
diff --git a/prebuilts/gradle/AutoBackupForApps/Application/build.gradle b/prebuilts/gradle/AutoBackupForApps/Application/build.gradle
index de3e4f9..6a7bac7 100644
--- a/prebuilts/gradle/AutoBackupForApps/Application/build.gradle
+++ b/prebuilts/gradle/AutoBackupForApps/Application/build.gradle
@@ -5,7 +5,7 @@
     }
 
     dependencies {
-        classpath 'com.android.tools.build:gradle:1.2.3'
+        classpath 'com.android.tools.build:gradle:2.1.2'
     }
 }
 
@@ -16,9 +16,10 @@
 }
 
 dependencies {
-    compile "com.android.support:support-v4:23.1.0"
-    compile "com.android.support:support-v13:23.1.0"
-    compile "com.android.support:cardview-v7:23.1.0"
+    compile "com.android.support:support-v4:24.0.0-beta1"
+    compile "com.android.support:support-v13:24.0.0-beta1"
+    compile "com.android.support:cardview-v7:24.0.0-beta1"
+    compile "com.android.support:appcompat-v7:24.0.0-beta1"
 }
 
 // The sample build uses multiple directories to
@@ -31,7 +32,7 @@
 
 android {
     compileSdkVersion 23
-    buildToolsVersion "23.0.2"
+    buildToolsVersion "23.0.3"
 
     defaultConfig {
         minSdkVersion 23
diff --git a/prebuilts/gradle/AutoBackupForApps/Application/src/main/java/com/example/android/autobackupsample/AddFileActivity.java b/prebuilts/gradle/AutoBackupForApps/Application/src/main/java/com/example/android/autobackupsample/AddFileActivity.java
index 00cd1e3..d026ddd 100644
--- a/prebuilts/gradle/AutoBackupForApps/Application/src/main/java/com/example/android/autobackupsample/AddFileActivity.java
+++ b/prebuilts/gradle/AutoBackupForApps/Application/src/main/java/com/example/android/autobackupsample/AddFileActivity.java
@@ -161,7 +161,7 @@
             return;
         }
 
-        long fileSize = Integer.valueOf(fileSizeEditTextValue) * mSizeMultiplier;
+        long fileSize = Integer.parseInt(fileSizeEditTextValue) * mSizeMultiplier;
 
         if (mFileStorage == FileStorage.EXTERNAL && !Utils.isExternalStorageAvailable()) {
             Toast toast = Toast.makeText(this,
diff --git a/prebuilts/gradle/AutoBackupForApps/README.md b/prebuilts/gradle/AutoBackupForApps/README.md
index e99df92..389ca6f 100644
--- a/prebuilts/gradle/AutoBackupForApps/README.md
+++ b/prebuilts/gradle/AutoBackupForApps/README.md
@@ -26,8 +26,8 @@
 Pre-requisites
 --------------
 
-- Android SDK v23
-- Android Build Tools v23.0.2
+- Android SDK 23
+- Android Build Tools v23.0.3
 - Android Support Repository
 
 Screenshots
@@ -56,7 +56,7 @@
 License
 -------
 
-Copyright 2014 The Android Open Source Project, Inc.
+Copyright 2016 The Android Open Source Project, Inc.
 
 Licensed to the Apache Software Foundation (ASF) under one or more contributor
 license agreements.  See the NOTICE file distributed with this work for
diff --git a/prebuilts/gradle/AutoBackupForApps/gradle/wrapper/gradle-wrapper.properties b/prebuilts/gradle/AutoBackupForApps/gradle/wrapper/gradle-wrapper.properties
index 07fc193..03c59c2 100644
--- a/prebuilts/gradle/AutoBackupForApps/gradle/wrapper/gradle-wrapper.properties
+++ b/prebuilts/gradle/AutoBackupForApps/gradle/wrapper/gradle-wrapper.properties
@@ -3,4 +3,4 @@
 distributionPath=wrapper/dists
 zipStoreBase=GRADLE_USER_HOME
 zipStorePath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-2.8-all.zip
+distributionUrl=http\://services.gradle.org/distributions/gradle-2.10-bin.zip
diff --git a/prebuilts/gradle/BasicAccessibility/Application/build.gradle b/prebuilts/gradle/BasicAccessibility/Application/build.gradle
index 013768e..2915ada 100644
--- a/prebuilts/gradle/BasicAccessibility/Application/build.gradle
+++ b/prebuilts/gradle/BasicAccessibility/Application/build.gradle
@@ -5,7 +5,7 @@
     }
 
     dependencies {
-        classpath 'com.android.tools.build:gradle:1.2.3'
+        classpath 'com.android.tools.build:gradle:2.1.2'
     }
 }
 
@@ -16,9 +16,10 @@
 }
 
 dependencies {
-    compile "com.android.support:support-v4:23.1.0"
-    compile "com.android.support:gridlayout-v7:23.1.0"
-    compile "com.android.support:cardview-v7:23.1.0"
+    compile "com.android.support:support-v4:24.0.0-beta1"
+    compile "com.android.support:gridlayout-v7:24.0.0-beta1"
+    compile "com.android.support:cardview-v7:24.0.0-beta1"
+    compile "com.android.support:appcompat-v7:24.0.0-beta1"
 }
 
 // The sample build uses multiple directories to
@@ -31,7 +32,7 @@
 
 android {
     compileSdkVersion 23
-    buildToolsVersion "23.0.2"
+    buildToolsVersion "23.0.3"
 
     defaultConfig {
         minSdkVersion 11
diff --git a/prebuilts/gradle/BasicAccessibility/README.md b/prebuilts/gradle/BasicAccessibility/README.md
index 8289dd0..cf414d8 100644
--- a/prebuilts/gradle/BasicAccessibility/README.md
+++ b/prebuilts/gradle/BasicAccessibility/README.md
@@ -20,8 +20,8 @@
 Pre-requisites
 --------------
 
-- Android SDK v23
-- Android Build Tools v23.0.2
+- Android SDK 23
+- Android Build Tools v23.0.3
 - Android Support Repository
 
 Screenshots
@@ -50,7 +50,7 @@
 License
 -------
 
-Copyright 2014 The Android Open Source Project, Inc.
+Copyright 2016 The Android Open Source Project, Inc.
 
 Licensed to the Apache Software Foundation (ASF) under one or more contributor
 license agreements.  See the NOTICE file distributed with this work for
diff --git a/prebuilts/gradle/BasicAccessibility/gradle/wrapper/gradle-wrapper.properties b/prebuilts/gradle/BasicAccessibility/gradle/wrapper/gradle-wrapper.properties
index 07fc193..d570517 100644
--- a/prebuilts/gradle/BasicAccessibility/gradle/wrapper/gradle-wrapper.properties
+++ b/prebuilts/gradle/BasicAccessibility/gradle/wrapper/gradle-wrapper.properties
@@ -3,4 +3,4 @@
 distributionPath=wrapper/dists
 zipStoreBase=GRADLE_USER_HOME
 zipStorePath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-2.8-all.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-2.10-all.zip
diff --git a/prebuilts/gradle/BasicAndroidKeyStore/Application/build.gradle b/prebuilts/gradle/BasicAndroidKeyStore/Application/build.gradle
index ae1d811..b8072d1 100644
--- a/prebuilts/gradle/BasicAndroidKeyStore/Application/build.gradle
+++ b/prebuilts/gradle/BasicAndroidKeyStore/Application/build.gradle
@@ -5,7 +5,7 @@
     }
 
     dependencies {
-        classpath 'com.android.tools.build:gradle:1.2.3'
+        classpath 'com.android.tools.build:gradle:2.1.2'
     }
 }
 
@@ -16,9 +16,10 @@
 }
 
 dependencies {
-    compile "com.android.support:support-v4:23.1.0"
-    compile "com.android.support:support-v13:23.1.0"
-    compile "com.android.support:cardview-v7:23.1.0"
+    compile "com.android.support:support-v4:24.0.0-beta1"
+    compile "com.android.support:support-v13:24.0.0-beta1"
+    compile "com.android.support:cardview-v7:24.0.0-beta1"
+    compile "com.android.support:appcompat-v7:24.0.0-beta1"
 }
 
 // The sample build uses multiple directories to
@@ -31,7 +32,7 @@
 
 android {
     compileSdkVersion 23
-    buildToolsVersion "23.0.2"
+    buildToolsVersion "23.0.3"
 
     defaultConfig {
         minSdkVersion 18
diff --git a/prebuilts/gradle/BasicAndroidKeyStore/README.md b/prebuilts/gradle/BasicAndroidKeyStore/README.md
index f86c9cf..bc84150 100644
--- a/prebuilts/gradle/BasicAndroidKeyStore/README.md
+++ b/prebuilts/gradle/BasicAndroidKeyStore/README.md
@@ -23,8 +23,8 @@
 Pre-requisites
 --------------
 
-- Android SDK v23
-- Android Build Tools v23.0.2
+- Android SDK 23
+- Android Build Tools v23.0.3
 - Android Support Repository
 
 Screenshots
@@ -53,7 +53,7 @@
 License
 -------
 
-Copyright 2014 The Android Open Source Project, Inc.
+Copyright 2016 The Android Open Source Project, Inc.
 
 Licensed to the Apache Software Foundation (ASF) under one or more contributor
 license agreements.  See the NOTICE file distributed with this work for
diff --git a/prebuilts/gradle/BasicAndroidKeyStore/gradle/wrapper/gradle-wrapper.properties b/prebuilts/gradle/BasicAndroidKeyStore/gradle/wrapper/gradle-wrapper.properties
index 07fc193..d570517 100644
--- a/prebuilts/gradle/BasicAndroidKeyStore/gradle/wrapper/gradle-wrapper.properties
+++ b/prebuilts/gradle/BasicAndroidKeyStore/gradle/wrapper/gradle-wrapper.properties
@@ -3,4 +3,4 @@
 distributionPath=wrapper/dists
 zipStoreBase=GRADLE_USER_HOME
 zipStorePath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-2.8-all.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-2.10-all.zip
diff --git a/prebuilts/gradle/BasicContactables/Application/build.gradle b/prebuilts/gradle/BasicContactables/Application/build.gradle
index 90f7559..15104ca 100644
--- a/prebuilts/gradle/BasicContactables/Application/build.gradle
+++ b/prebuilts/gradle/BasicContactables/Application/build.gradle
@@ -5,7 +5,7 @@
     }
 
     dependencies {
-        classpath 'com.android.tools.build:gradle:1.2.3'
+        classpath 'com.android.tools.build:gradle:2.1.2'
     }
 }
 
@@ -16,9 +16,10 @@
 }
 
 dependencies {
-    compile "com.android.support:support-v4:23.1.0"
-    compile "com.android.support:support-v13:23.1.0"
-    compile "com.android.support:cardview-v7:23.1.0"
+    compile "com.android.support:support-v4:24.0.0-beta1"
+    compile "com.android.support:support-v13:24.0.0-beta1"
+    compile "com.android.support:cardview-v7:24.0.0-beta1"
+    compile "com.android.support:appcompat-v7:24.0.0-beta1"
 }
 
 // The sample build uses multiple directories to
@@ -31,7 +32,7 @@
 
 android {
     compileSdkVersion 23
-    buildToolsVersion "23.0.2"
+    buildToolsVersion "23.0.3"
 
     defaultConfig {
         minSdkVersion 18
diff --git a/prebuilts/gradle/BasicContactables/README.md b/prebuilts/gradle/BasicContactables/README.md
index bc49dda..7531eca 100644
--- a/prebuilts/gradle/BasicContactables/README.md
+++ b/prebuilts/gradle/BasicContactables/README.md
@@ -25,8 +25,8 @@
 Pre-requisites
 --------------
 
-- Android SDK v23
-- Android Build Tools v23.0.2
+- Android SDK 23
+- Android Build Tools v23.0.3
 - Android Support Repository
 
 Screenshots
@@ -55,7 +55,7 @@
 License
 -------
 
-Copyright 2014 The Android Open Source Project, Inc.
+Copyright 2016 The Android Open Source Project, Inc.
 
 Licensed to the Apache Software Foundation (ASF) under one or more contributor
 license agreements.  See the NOTICE file distributed with this work for
diff --git a/prebuilts/gradle/BasicContactables/gradle/wrapper/gradle-wrapper.properties b/prebuilts/gradle/BasicContactables/gradle/wrapper/gradle-wrapper.properties
index 07fc193..6cce24a 100644
--- a/prebuilts/gradle/BasicContactables/gradle/wrapper/gradle-wrapper.properties
+++ b/prebuilts/gradle/BasicContactables/gradle/wrapper/gradle-wrapper.properties
@@ -1,6 +1,7 @@
+
 #Wed Apr 10 15:27:10 PDT 2013
 distributionBase=GRADLE_USER_HOME
 distributionPath=wrapper/dists
 zipStoreBase=GRADLE_USER_HOME
 zipStorePath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-2.8-all.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-2.10-all.zip
diff --git a/prebuilts/gradle/BasicGestureDetect/Application/build.gradle b/prebuilts/gradle/BasicGestureDetect/Application/build.gradle
index ae1d811..b8072d1 100644
--- a/prebuilts/gradle/BasicGestureDetect/Application/build.gradle
+++ b/prebuilts/gradle/BasicGestureDetect/Application/build.gradle
@@ -5,7 +5,7 @@
     }
 
     dependencies {
-        classpath 'com.android.tools.build:gradle:1.2.3'
+        classpath 'com.android.tools.build:gradle:2.1.2'
     }
 }
 
@@ -16,9 +16,10 @@
 }
 
 dependencies {
-    compile "com.android.support:support-v4:23.1.0"
-    compile "com.android.support:support-v13:23.1.0"
-    compile "com.android.support:cardview-v7:23.1.0"
+    compile "com.android.support:support-v4:24.0.0-beta1"
+    compile "com.android.support:support-v13:24.0.0-beta1"
+    compile "com.android.support:cardview-v7:24.0.0-beta1"
+    compile "com.android.support:appcompat-v7:24.0.0-beta1"
 }
 
 // The sample build uses multiple directories to
@@ -31,7 +32,7 @@
 
 android {
     compileSdkVersion 23
-    buildToolsVersion "23.0.2"
+    buildToolsVersion "23.0.3"
 
     defaultConfig {
         minSdkVersion 18
diff --git a/prebuilts/gradle/BasicGestureDetect/README.md b/prebuilts/gradle/BasicGestureDetect/README.md
index d9ae0fa..19c04c0 100644
--- a/prebuilts/gradle/BasicGestureDetect/README.md
+++ b/prebuilts/gradle/BasicGestureDetect/README.md
@@ -24,8 +24,8 @@
 Pre-requisites
 --------------
 
-- Android SDK v23
-- Android Build Tools v23.0.2
+- Android SDK 23
+- Android Build Tools v23.0.3
 - Android Support Repository
 
 Screenshots
@@ -54,7 +54,7 @@
 License
 -------
 
-Copyright 2014 The Android Open Source Project, Inc.
+Copyright 2016 The Android Open Source Project, Inc.
 
 Licensed to the Apache Software Foundation (ASF) under one or more contributor
 license agreements.  See the NOTICE file distributed with this work for
diff --git a/prebuilts/gradle/BasicGestureDetect/gradle/wrapper/gradle-wrapper.properties b/prebuilts/gradle/BasicGestureDetect/gradle/wrapper/gradle-wrapper.properties
index 07fc193..d570517 100644
--- a/prebuilts/gradle/BasicGestureDetect/gradle/wrapper/gradle-wrapper.properties
+++ b/prebuilts/gradle/BasicGestureDetect/gradle/wrapper/gradle-wrapper.properties
@@ -3,4 +3,4 @@
 distributionPath=wrapper/dists
 zipStoreBase=GRADLE_USER_HOME
 zipStorePath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-2.8-all.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-2.10-all.zip
diff --git a/prebuilts/gradle/BasicImmersiveMode/Application/build.gradle b/prebuilts/gradle/BasicImmersiveMode/Application/build.gradle
index 1b5df4e..bff8131 100644
--- a/prebuilts/gradle/BasicImmersiveMode/Application/build.gradle
+++ b/prebuilts/gradle/BasicImmersiveMode/Application/build.gradle
@@ -5,7 +5,7 @@
     }
 
     dependencies {
-        classpath 'com.android.tools.build:gradle:1.2.3'
+        classpath 'com.android.tools.build:gradle:2.1.2'
     }
 }
 
@@ -16,9 +16,10 @@
 }
 
 dependencies {
-    compile "com.android.support:support-v4:23.1.0"
-    compile "com.android.support:support-v13:23.1.0"
-    compile "com.android.support:cardview-v7:23.1.0"
+    compile "com.android.support:support-v4:24.0.0-beta1"
+    compile "com.android.support:support-v13:24.0.0-beta1"
+    compile "com.android.support:cardview-v7:24.0.0-beta1"
+    compile "com.android.support:appcompat-v7:24.0.0-beta1"
 }
 
 // The sample build uses multiple directories to
@@ -31,7 +32,7 @@
 
 android {
     compileSdkVersion 23
-    buildToolsVersion "23.0.2"
+    buildToolsVersion "23.0.3"
 
     defaultConfig {
         minSdkVersion 19
diff --git a/prebuilts/gradle/BasicImmersiveMode/README.md b/prebuilts/gradle/BasicImmersiveMode/README.md
index d7fa1a2..ac17abf 100644
--- a/prebuilts/gradle/BasicImmersiveMode/README.md
+++ b/prebuilts/gradle/BasicImmersiveMode/README.md
@@ -19,8 +19,8 @@
 Pre-requisites
 --------------
 
-- Android SDK v23
-- Android Build Tools v23.0.2
+- Android SDK 23
+- Android Build Tools v23.0.3
 - Android Support Repository
 
 Screenshots
@@ -49,7 +49,7 @@
 License
 -------
 
-Copyright 2014 The Android Open Source Project, Inc.
+Copyright 2016 The Android Open Source Project, Inc.
 
 Licensed to the Apache Software Foundation (ASF) under one or more contributor
 license agreements.  See the NOTICE file distributed with this work for
diff --git a/prebuilts/gradle/BasicImmersiveMode/gradle/wrapper/gradle-wrapper.properties b/prebuilts/gradle/BasicImmersiveMode/gradle/wrapper/gradle-wrapper.properties
index 07fc193..d570517 100644
--- a/prebuilts/gradle/BasicImmersiveMode/gradle/wrapper/gradle-wrapper.properties
+++ b/prebuilts/gradle/BasicImmersiveMode/gradle/wrapper/gradle-wrapper.properties
@@ -3,4 +3,4 @@
 distributionPath=wrapper/dists
 zipStoreBase=GRADLE_USER_HOME
 zipStorePath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-2.8-all.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-2.10-all.zip
diff --git a/prebuilts/gradle/BasicManagedProfile/Application/build.gradle b/prebuilts/gradle/BasicManagedProfile/Application/build.gradle
index 3bffd32..aeece30 100644
--- a/prebuilts/gradle/BasicManagedProfile/Application/build.gradle
+++ b/prebuilts/gradle/BasicManagedProfile/Application/build.gradle
@@ -5,7 +5,7 @@
     }
 
     dependencies {
-        classpath 'com.android.tools.build:gradle:1.2.3'
+        classpath 'com.android.tools.build:gradle:2.1.2'
     }
 }
 
@@ -16,9 +16,10 @@
 }
 
 dependencies {
-    compile "com.android.support:support-v4:23.1.0"
-    compile "com.android.support:support-v13:23.1.0"
-    compile "com.android.support:cardview-v7:23.1.0"
+    compile "com.android.support:support-v4:24.0.0-beta1"
+    compile "com.android.support:support-v13:24.0.0-beta1"
+    compile "com.android.support:cardview-v7:24.0.0-beta1"
+    compile "com.android.support:appcompat-v7:24.0.0-beta1"
 }
 
 // The sample build uses multiple directories to
@@ -31,7 +32,7 @@
 
 android {
     compileSdkVersion 21
-    buildToolsVersion "23.0.2"
+    buildToolsVersion "23.0.3"
 
     defaultConfig {
         minSdkVersion 21
diff --git a/prebuilts/gradle/BasicManagedProfile/README.md b/prebuilts/gradle/BasicManagedProfile/README.md
index b410d68..aed6afe 100644
--- a/prebuilts/gradle/BasicManagedProfile/README.md
+++ b/prebuilts/gradle/BasicManagedProfile/README.md
@@ -38,8 +38,8 @@
 Pre-requisites
 --------------
 
-- Android SDK v21
-- Android Build Tools v23.0.2
+- Android SDK 21
+- Android Build Tools v23.0.3
 - Android Support Repository
 
 Screenshots
@@ -68,7 +68,7 @@
 License
 -------
 
-Copyright 2014 The Android Open Source Project, Inc.
+Copyright 2016 The Android Open Source Project, Inc.
 
 Licensed to the Apache Software Foundation (ASF) under one or more contributor
 license agreements.  See the NOTICE file distributed with this work for
diff --git a/prebuilts/gradle/BasicManagedProfile/gradle/wrapper/gradle-wrapper.properties b/prebuilts/gradle/BasicManagedProfile/gradle/wrapper/gradle-wrapper.properties
index 07fc193..d570517 100644
--- a/prebuilts/gradle/BasicManagedProfile/gradle/wrapper/gradle-wrapper.properties
+++ b/prebuilts/gradle/BasicManagedProfile/gradle/wrapper/gradle-wrapper.properties
@@ -3,4 +3,4 @@
 distributionPath=wrapper/dists
 zipStoreBase=GRADLE_USER_HOME
 zipStorePath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-2.8-all.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-2.10-all.zip
diff --git a/prebuilts/gradle/BasicMediaDecoder/Application/build.gradle b/prebuilts/gradle/BasicMediaDecoder/Application/build.gradle
index 766dcc8..c129007 100644
--- a/prebuilts/gradle/BasicMediaDecoder/Application/build.gradle
+++ b/prebuilts/gradle/BasicMediaDecoder/Application/build.gradle
@@ -5,7 +5,7 @@
     }
 
     dependencies {
-        classpath 'com.android.tools.build:gradle:1.2.3'
+        classpath 'com.android.tools.build:gradle:2.1.2'
     }
 }
 
@@ -16,9 +16,10 @@
 }
 
 dependencies {
-    compile "com.android.support:support-v4:23.1.0"
-    compile "com.android.support:support-v13:23.1.0"
-    compile "com.android.support:cardview-v7:23.1.0"
+    compile "com.android.support:support-v4:24.0.0-beta1"
+    compile "com.android.support:support-v13:24.0.0-beta1"
+    compile "com.android.support:cardview-v7:24.0.0-beta1"
+    compile "com.android.support:appcompat-v7:24.0.0-beta1"
 }
 
 // The sample build uses multiple directories to
@@ -31,7 +32,7 @@
 
 android {
     compileSdkVersion 23
-    buildToolsVersion "23.0.2"
+    buildToolsVersion "23.0.3"
 
     defaultConfig {
         minSdkVersion 17
diff --git a/prebuilts/gradle/BasicMediaDecoder/Application/src/main/java/com/example/android/common/media/CameraHelper.java b/prebuilts/gradle/BasicMediaDecoder/Application/src/main/java/com/example/android/common/media/CameraHelper.java
index 1fa8416..b578767 100644
--- a/prebuilts/gradle/BasicMediaDecoder/Application/src/main/java/com/example/android/common/media/CameraHelper.java
+++ b/prebuilts/gradle/BasicMediaDecoder/Application/src/main/java/com/example/android/common/media/CameraHelper.java
@@ -36,49 +36,57 @@
     public static final int MEDIA_TYPE_VIDEO = 2;
 
     /**
-     * Iterate over supported camera preview sizes to see which one best fits the
+     * Iterate over supported camera video sizes to see which one best fits the
      * dimensions of the given view while maintaining the aspect ratio. If none can,
      * be lenient with the aspect ratio.
      *
-     * @param sizes Supported camera preview sizes.
-     * @param w The width of the view.
-     * @param h The height of the view.
-     * @return Best match camera preview size to fit in the view.
+     * @param supportedVideoSizes Supported camera video sizes.
+     * @param previewSizes Supported camera preview sizes.
+     * @param w     The width of the view.
+     * @param h     The height of the view.
+     * @return Best match camera video size to fit in the view.
      */
-    public static  Camera.Size getOptimalPreviewSize(List<Camera.Size> sizes, int w, int h) {
+    public static Camera.Size getOptimalVideoSize(List<Camera.Size> supportedVideoSizes,
+            List<Camera.Size> previewSizes, int w, int h) {
         // Use a very small tolerance because we want an exact match.
         final double ASPECT_TOLERANCE = 0.1;
         double targetRatio = (double) w / h;
-        if (sizes == null)
-            return null;
 
+        // Supported video sizes list might be null, it means that we are allowed to use the preview
+        // sizes
+        List<Camera.Size> videoSizes;
+        if (supportedVideoSizes != null) {
+            videoSizes = supportedVideoSizes;
+        } else {
+            videoSizes = previewSizes;
+        }
         Camera.Size optimalSize = null;
 
-        // Start with max value and refine as we iterate over available preview sizes. This is the
+        // Start with max value and refine as we iterate over available video sizes. This is the
         // minimum difference between view and camera height.
         double minDiff = Double.MAX_VALUE;
 
         // Target view height
         int targetHeight = h;
 
-        // Try to find a preview size that matches aspect ratio and the target view size.
+        // Try to find a video size that matches aspect ratio and the target view size.
         // Iterate over all available sizes and pick the largest size that can fit in the view and
         // still maintain the aspect ratio.
-        for (Camera.Size size : sizes) {
+        for (Camera.Size size : videoSizes) {
             double ratio = (double) size.width / size.height;
             if (Math.abs(ratio - targetRatio) > ASPECT_TOLERANCE)
                 continue;
-            if (Math.abs(size.height - targetHeight) < minDiff) {
+            if (Math.abs(size.height - targetHeight) < minDiff && previewSizes.contains(size)) {
                 optimalSize = size;
                 minDiff = Math.abs(size.height - targetHeight);
             }
         }
 
-        // Cannot find preview size that matches the aspect ratio, ignore the requirement
+        // Cannot find video size that matches the aspect ratio, ignore the requirement
         if (optimalSize == null) {
             minDiff = Double.MAX_VALUE;
-            for (Camera.Size size : sizes) {
-                if (Math.abs(size.height - targetHeight) < minDiff) {
+            for (Camera.Size size : videoSizes) {
+                if (Math.abs(size.height - targetHeight) < minDiff && previewSizes.contains(size)) {
                     optimalSize = size;
                     minDiff = Math.abs(size.height - targetHeight);
                 }
diff --git a/prebuilts/gradle/BasicMediaDecoder/README.md b/prebuilts/gradle/BasicMediaDecoder/README.md
index aa55c57..ce631f0 100644
--- a/prebuilts/gradle/BasicMediaDecoder/README.md
+++ b/prebuilts/gradle/BasicMediaDecoder/README.md
@@ -54,8 +54,8 @@
 Pre-requisites
 --------------
 
-- Android SDK v23
-- Android Build Tools v23.0.2
+- Android SDK 23
+- Android Build Tools v23.0.3
 - Android Support Repository
 
 Screenshots
@@ -84,7 +84,7 @@
 License
 -------
 
-Copyright 2014 The Android Open Source Project, Inc.
+Copyright 2016 The Android Open Source Project, Inc.
 
 Licensed to the Apache Software Foundation (ASF) under one or more contributor
 license agreements.  See the NOTICE file distributed with this work for
diff --git a/prebuilts/gradle/BasicMediaDecoder/gradle/wrapper/gradle-wrapper.properties b/prebuilts/gradle/BasicMediaDecoder/gradle/wrapper/gradle-wrapper.properties
index 07fc193..d570517 100644
--- a/prebuilts/gradle/BasicMediaDecoder/gradle/wrapper/gradle-wrapper.properties
+++ b/prebuilts/gradle/BasicMediaDecoder/gradle/wrapper/gradle-wrapper.properties
@@ -3,4 +3,4 @@
 distributionPath=wrapper/dists
 zipStoreBase=GRADLE_USER_HOME
 zipStorePath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-2.8-all.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-2.10-all.zip
diff --git a/prebuilts/gradle/BasicMediaRouter/Application/build.gradle b/prebuilts/gradle/BasicMediaRouter/Application/build.gradle
index 766dcc8..c129007 100644
--- a/prebuilts/gradle/BasicMediaRouter/Application/build.gradle
+++ b/prebuilts/gradle/BasicMediaRouter/Application/build.gradle
@@ -5,7 +5,7 @@
     }
 
     dependencies {
-        classpath 'com.android.tools.build:gradle:1.2.3'
+        classpath 'com.android.tools.build:gradle:2.1.2'
     }
 }
 
@@ -16,9 +16,10 @@
 }
 
 dependencies {
-    compile "com.android.support:support-v4:23.1.0"
-    compile "com.android.support:support-v13:23.1.0"
-    compile "com.android.support:cardview-v7:23.1.0"
+    compile "com.android.support:support-v4:24.0.0-beta1"
+    compile "com.android.support:support-v13:24.0.0-beta1"
+    compile "com.android.support:cardview-v7:24.0.0-beta1"
+    compile "com.android.support:appcompat-v7:24.0.0-beta1"
 }
 
 // The sample build uses multiple directories to
@@ -31,7 +32,7 @@
 
 android {
     compileSdkVersion 23
-    buildToolsVersion "23.0.2"
+    buildToolsVersion "23.0.3"
 
     defaultConfig {
         minSdkVersion 17
diff --git a/prebuilts/gradle/BasicMediaRouter/README.md b/prebuilts/gradle/BasicMediaRouter/README.md
index eb22051..6d209e5 100644
--- a/prebuilts/gradle/BasicMediaRouter/README.md
+++ b/prebuilts/gradle/BasicMediaRouter/README.md
@@ -14,8 +14,8 @@
 Pre-requisites
 --------------
 
-- Android SDK v23
-- Android Build Tools v23.0.2
+- Android SDK 23
+- Android Build Tools v23.0.3
 - Android Support Repository
 
 Getting Started
@@ -39,7 +39,7 @@
 License
 -------
 
-Copyright 2014 The Android Open Source Project, Inc.
+Copyright 2016 The Android Open Source Project, Inc.
 
 Licensed to the Apache Software Foundation (ASF) under one or more contributor
 license agreements.  See the NOTICE file distributed with this work for
diff --git a/prebuilts/gradle/BasicMediaRouter/gradle/wrapper/gradle-wrapper.properties b/prebuilts/gradle/BasicMediaRouter/gradle/wrapper/gradle-wrapper.properties
index 07fc193..d570517 100644
--- a/prebuilts/gradle/BasicMediaRouter/gradle/wrapper/gradle-wrapper.properties
+++ b/prebuilts/gradle/BasicMediaRouter/gradle/wrapper/gradle-wrapper.properties
@@ -3,4 +3,4 @@
 distributionPath=wrapper/dists
 zipStoreBase=GRADLE_USER_HOME
 zipStorePath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-2.8-all.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-2.10-all.zip
diff --git a/prebuilts/gradle/BasicMultitouch/Application/build.gradle b/prebuilts/gradle/BasicMultitouch/Application/build.gradle
index 128220f..1fd5c2c 100644
--- a/prebuilts/gradle/BasicMultitouch/Application/build.gradle
+++ b/prebuilts/gradle/BasicMultitouch/Application/build.gradle
@@ -5,7 +5,7 @@
     }
 
     dependencies {
-        classpath 'com.android.tools.build:gradle:1.2.3'
+        classpath 'com.android.tools.build:gradle:2.1.2'
     }
 }
 
@@ -16,9 +16,10 @@
 }
 
 dependencies {
-    compile "com.android.support:support-v4:23.1.0"
-    compile "com.android.support:gridlayout-v7:23.1.0"
-    compile "com.android.support:cardview-v7:23.1.0"
+    compile "com.android.support:support-v4:24.0.0-beta1"
+    compile "com.android.support:gridlayout-v7:24.0.0-beta1"
+    compile "com.android.support:cardview-v7:24.0.0-beta1"
+    compile "com.android.support:appcompat-v7:24.0.0-beta1"
 }
 
 // The sample build uses multiple directories to
@@ -31,7 +32,7 @@
 
 android {
     compileSdkVersion 23
-    buildToolsVersion "23.0.2"
+    buildToolsVersion "23.0.3"
 
     defaultConfig {
         minSdkVersion 8
diff --git a/prebuilts/gradle/BasicMultitouch/README.md b/prebuilts/gradle/BasicMultitouch/README.md
index 3ce9bae..64ff348 100644
--- a/prebuilts/gradle/BasicMultitouch/README.md
+++ b/prebuilts/gradle/BasicMultitouch/README.md
@@ -29,8 +29,8 @@
 Pre-requisites
 --------------
 
-- Android SDK v23
-- Android Build Tools v23.0.2
+- Android SDK 23
+- Android Build Tools v23.0.3
 - Android Support Repository
 
 Screenshots
@@ -59,7 +59,7 @@
 License
 -------
 
-Copyright 2014 The Android Open Source Project, Inc.
+Copyright 2016 The Android Open Source Project, Inc.
 
 Licensed to the Apache Software Foundation (ASF) under one or more contributor
 license agreements.  See the NOTICE file distributed with this work for
diff --git a/prebuilts/gradle/BasicMultitouch/gradle/wrapper/gradle-wrapper.properties b/prebuilts/gradle/BasicMultitouch/gradle/wrapper/gradle-wrapper.properties
index 07fc193..d570517 100644
--- a/prebuilts/gradle/BasicMultitouch/gradle/wrapper/gradle-wrapper.properties
+++ b/prebuilts/gradle/BasicMultitouch/gradle/wrapper/gradle-wrapper.properties
@@ -3,4 +3,4 @@
 distributionPath=wrapper/dists
 zipStoreBase=GRADLE_USER_HOME
 zipStorePath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-2.8-all.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-2.10-all.zip
diff --git a/prebuilts/gradle/BasicNetworking/Application/build.gradle b/prebuilts/gradle/BasicNetworking/Application/build.gradle
index 6ea7851..106dde3 100644
--- a/prebuilts/gradle/BasicNetworking/Application/build.gradle
+++ b/prebuilts/gradle/BasicNetworking/Application/build.gradle
@@ -5,7 +5,7 @@
     }
 
     dependencies {
-        classpath 'com.android.tools.build:gradle:1.2.3'
+        classpath 'com.android.tools.build:gradle:2.1.2'
     }
 }
 
@@ -16,7 +16,8 @@
 }
 
 dependencies {
-    compile "com.android.support:support-v4:23.1.0"
+    compile "com.android.support:support-v4:24.0.0-beta1"
+    compile "com.android.support:appcompat-v7:24.0.0-beta1"
 }
 
 // The sample build uses multiple directories to
@@ -29,7 +30,7 @@
 
 android {
     compileSdkVersion 23
-    buildToolsVersion "23.0.2"
+    buildToolsVersion "23.0.3"
 
     defaultConfig {
         minSdkVersion 4
diff --git a/prebuilts/gradle/BasicNetworking/README.md b/prebuilts/gradle/BasicNetworking/README.md
index 5e63daf..dd5db18 100644
--- a/prebuilts/gradle/BasicNetworking/README.md
+++ b/prebuilts/gradle/BasicNetworking/README.md
@@ -22,8 +22,8 @@
 Pre-requisites
 --------------
 
-- Android SDK v23
-- Android Build Tools v23.0.2
+- Android SDK 23
+- Android Build Tools v23.0.3
 - Android Support Repository
 
 Screenshots
@@ -52,7 +52,7 @@
 License
 -------
 
-Copyright 2014 The Android Open Source Project, Inc.
+Copyright 2016 The Android Open Source Project, Inc.
 
 Licensed to the Apache Software Foundation (ASF) under one or more contributor
 license agreements.  See the NOTICE file distributed with this work for
diff --git a/prebuilts/gradle/BasicNetworking/gradle/wrapper/gradle-wrapper.properties b/prebuilts/gradle/BasicNetworking/gradle/wrapper/gradle-wrapper.properties
index 07fc193..d570517 100644
--- a/prebuilts/gradle/BasicNetworking/gradle/wrapper/gradle-wrapper.properties
+++ b/prebuilts/gradle/BasicNetworking/gradle/wrapper/gradle-wrapper.properties
@@ -3,4 +3,4 @@
 distributionPath=wrapper/dists
 zipStoreBase=GRADLE_USER_HOME
 zipStorePath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-2.8-all.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-2.10-all.zip
diff --git a/prebuilts/gradle/BasicNotifications/Application/build.gradle b/prebuilts/gradle/BasicNotifications/Application/build.gradle
index 128220f..1fd5c2c 100644
--- a/prebuilts/gradle/BasicNotifications/Application/build.gradle
+++ b/prebuilts/gradle/BasicNotifications/Application/build.gradle
@@ -5,7 +5,7 @@
     }
 
     dependencies {
-        classpath 'com.android.tools.build:gradle:1.2.3'
+        classpath 'com.android.tools.build:gradle:2.1.2'
     }
 }
 
@@ -16,9 +16,10 @@
 }
 
 dependencies {
-    compile "com.android.support:support-v4:23.1.0"
-    compile "com.android.support:gridlayout-v7:23.1.0"
-    compile "com.android.support:cardview-v7:23.1.0"
+    compile "com.android.support:support-v4:24.0.0-beta1"
+    compile "com.android.support:gridlayout-v7:24.0.0-beta1"
+    compile "com.android.support:cardview-v7:24.0.0-beta1"
+    compile "com.android.support:appcompat-v7:24.0.0-beta1"
 }
 
 // The sample build uses multiple directories to
@@ -31,7 +32,7 @@
 
 android {
     compileSdkVersion 23
-    buildToolsVersion "23.0.2"
+    buildToolsVersion "23.0.3"
 
     defaultConfig {
         minSdkVersion 8
diff --git a/prebuilts/gradle/BasicNotifications/README.md b/prebuilts/gradle/BasicNotifications/README.md
index 1e14069..3b585f0 100644
--- a/prebuilts/gradle/BasicNotifications/README.md
+++ b/prebuilts/gradle/BasicNotifications/README.md
@@ -53,8 +53,8 @@
 Pre-requisites
 --------------
 
-- Android SDK v23
-- Android Build Tools v23.0.2
+- Android SDK 23
+- Android Build Tools v23.0.3
 - Android Support Repository
 
 Screenshots
@@ -83,7 +83,7 @@
 License
 -------
 
-Copyright 2014 The Android Open Source Project, Inc.
+Copyright 2016 The Android Open Source Project, Inc.
 
 Licensed to the Apache Software Foundation (ASF) under one or more contributor
 license agreements.  See the NOTICE file distributed with this work for
diff --git a/prebuilts/gradle/BasicNotifications/gradle/wrapper/gradle-wrapper.properties b/prebuilts/gradle/BasicNotifications/gradle/wrapper/gradle-wrapper.properties
index 07fc193..d570517 100644
--- a/prebuilts/gradle/BasicNotifications/gradle/wrapper/gradle-wrapper.properties
+++ b/prebuilts/gradle/BasicNotifications/gradle/wrapper/gradle-wrapper.properties
@@ -3,4 +3,4 @@
 distributionPath=wrapper/dists
 zipStoreBase=GRADLE_USER_HOME
 zipStorePath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-2.8-all.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-2.10-all.zip
diff --git a/prebuilts/gradle/BasicRenderScript/Application/build.gradle b/prebuilts/gradle/BasicRenderScript/Application/build.gradle
index ebff9c5..f56aa00 100644
--- a/prebuilts/gradle/BasicRenderScript/Application/build.gradle
+++ b/prebuilts/gradle/BasicRenderScript/Application/build.gradle
@@ -5,7 +5,7 @@
     }
 
     dependencies {
-        classpath 'com.android.tools.build:gradle:1.2.3'
+        classpath 'com.android.tools.build:gradle:2.1.2'
     }
 }
 
@@ -16,9 +16,10 @@
 }
 
 dependencies {
-    compile "com.android.support:support-v4:23.1.0"
-    compile "com.android.support:support-v13:23.1.0"
-    compile "com.android.support:cardview-v7:23.1.0"
+    compile "com.android.support:support-v4:24.0.0-beta1"
+    compile "com.android.support:support-v13:24.0.0-beta1"
+    compile "com.android.support:cardview-v7:24.0.0-beta1"
+    compile "com.android.support:appcompat-v7:24.0.0-beta1"
     compile files('renderscript-v8.jar')
 }
 
@@ -32,7 +33,7 @@
 
 android {
     compileSdkVersion 23
-    buildToolsVersion "23.0.2"
+    buildToolsVersion "23.0.3"
 
     defaultConfig {
         minSdkVersion 16
diff --git a/prebuilts/gradle/BasicRenderScript/Application/src/main/java/com/example/android/common/media/CameraHelper.java b/prebuilts/gradle/BasicRenderScript/Application/src/main/java/com/example/android/common/media/CameraHelper.java
index 1fa8416..b578767 100644
--- a/prebuilts/gradle/BasicRenderScript/Application/src/main/java/com/example/android/common/media/CameraHelper.java
+++ b/prebuilts/gradle/BasicRenderScript/Application/src/main/java/com/example/android/common/media/CameraHelper.java
@@ -36,49 +36,57 @@
     public static final int MEDIA_TYPE_VIDEO = 2;
 
     /**
-     * Iterate over supported camera preview sizes to see which one best fits the
+     * Iterate over supported camera video sizes to see which one best fits the
      * dimensions of the given view while maintaining the aspect ratio. If none can,
      * be lenient with the aspect ratio.
      *
-     * @param sizes Supported camera preview sizes.
-     * @param w The width of the view.
-     * @param h The height of the view.
-     * @return Best match camera preview size to fit in the view.
+     * @param supportedVideoSizes Supported camera video sizes.
+     * @param previewSizes Supported camera preview sizes.
+     * @param w     The width of the view.
+     * @param h     The height of the view.
+     * @return Best match camera video size to fit in the view.
      */
-    public static  Camera.Size getOptimalPreviewSize(List<Camera.Size> sizes, int w, int h) {
+    public static Camera.Size getOptimalVideoSize(List<Camera.Size> supportedVideoSizes,
+            List<Camera.Size> previewSizes, int w, int h) {
         // Use a very small tolerance because we want an exact match.
         final double ASPECT_TOLERANCE = 0.1;
         double targetRatio = (double) w / h;
-        if (sizes == null)
-            return null;
 
+        // Supported video sizes list might be null, it means that we are allowed to use the preview
+        // sizes
+        List<Camera.Size> videoSizes;
+        if (supportedVideoSizes != null) {
+            videoSizes = supportedVideoSizes;
+        } else {
+            videoSizes = previewSizes;
+        }
         Camera.Size optimalSize = null;
 
-        // Start with max value and refine as we iterate over available preview sizes. This is the
+        // Start with max value and refine as we iterate over available video sizes. This is the
         // minimum difference between view and camera height.
         double minDiff = Double.MAX_VALUE;
 
         // Target view height
         int targetHeight = h;
 
-        // Try to find a preview size that matches aspect ratio and the target view size.
+        // Try to find a video size that matches aspect ratio and the target view size.
         // Iterate over all available sizes and pick the largest size that can fit in the view and
         // still maintain the aspect ratio.
-        for (Camera.Size size : sizes) {
+        for (Camera.Size size : videoSizes) {
             double ratio = (double) size.width / size.height;
             if (Math.abs(ratio - targetRatio) > ASPECT_TOLERANCE)
                 continue;
-            if (Math.abs(size.height - targetHeight) < minDiff) {
+            if (Math.abs(size.height - targetHeight) < minDiff && previewSizes.contains(size)) {
                 optimalSize = size;
                 minDiff = Math.abs(size.height - targetHeight);
             }
         }
 
-        // Cannot find preview size that matches the aspect ratio, ignore the requirement
+        // Cannot find video size that matches the aspect ratio, ignore the requirement
         if (optimalSize == null) {
             minDiff = Double.MAX_VALUE;
-            for (Camera.Size size : sizes) {
-                if (Math.abs(size.height - targetHeight) < minDiff) {
+            for (Camera.Size size : videoSizes) {
+                if (Math.abs(size.height - targetHeight) < minDiff && previewSizes.contains(size)) {
                     optimalSize = size;
                     minDiff = Math.abs(size.height - targetHeight);
                 }
diff --git a/prebuilts/gradle/BasicRenderScript/README.md b/prebuilts/gradle/BasicRenderScript/README.md
index 979dc8b..8ec3757 100644
--- a/prebuilts/gradle/BasicRenderScript/README.md
+++ b/prebuilts/gradle/BasicRenderScript/README.md
@@ -28,8 +28,8 @@
 Pre-requisites
 --------------
 
-- Android SDK v23
-- Android Build Tools v23.0.2
+- Android SDK 23
+- Android Build Tools v23.0.3
 - Android Support Repository
 
 Screenshots
@@ -58,7 +58,7 @@
 License
 -------
 
-Copyright 2014 The Android Open Source Project, Inc.
+Copyright 2016 The Android Open Source Project, Inc.
 
 Licensed to the Apache Software Foundation (ASF) under one or more contributor
 license agreements.  See the NOTICE file distributed with this work for
diff --git a/prebuilts/gradle/BasicRenderScript/gradle/wrapper/gradle-wrapper.properties b/prebuilts/gradle/BasicRenderScript/gradle/wrapper/gradle-wrapper.properties
index cb3018f..442968f 100644
--- a/prebuilts/gradle/BasicRenderScript/gradle/wrapper/gradle-wrapper.properties
+++ b/prebuilts/gradle/BasicRenderScript/gradle/wrapper/gradle-wrapper.properties
@@ -3,4 +3,4 @@
 distributionPath=wrapper/dists
 zipStoreBase=GRADLE_USER_HOME
 zipStorePath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-2.8-all.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-2.10-all.zip
diff --git a/prebuilts/gradle/BasicSyncAdapter/Application/build.gradle b/prebuilts/gradle/BasicSyncAdapter/Application/build.gradle
index a90222d..bce9ac2 100644
--- a/prebuilts/gradle/BasicSyncAdapter/Application/build.gradle
+++ b/prebuilts/gradle/BasicSyncAdapter/Application/build.gradle
@@ -5,7 +5,7 @@
     }
 
     dependencies {
-        classpath 'com.android.tools.build:gradle:1.2.3'
+        classpath 'com.android.tools.build:gradle:2.1.2'
     }
 }
 
@@ -16,9 +16,10 @@
 }
 
 dependencies {
-    compile "com.android.support:support-v4:23.1.0"
-    compile "com.android.support:gridlayout-v7:23.1.0"
-    compile "com.android.support:cardview-v7:23.1.0"
+    compile "com.android.support:support-v4:24.0.0-beta1"
+    compile "com.android.support:gridlayout-v7:24.0.0-beta1"
+    compile "com.android.support:cardview-v7:24.0.0-beta1"
+    compile "com.android.support:appcompat-v7:24.0.0-beta1"
 }
 
 // The sample build uses multiple directories to
@@ -31,7 +32,7 @@
 
 android {
     compileSdkVersion 23
-    buildToolsVersion "23.0.2"
+    buildToolsVersion "23.0.3"
 
     defaultConfig {
         minSdkVersion 7
diff --git a/prebuilts/gradle/BasicSyncAdapter/README.md b/prebuilts/gradle/BasicSyncAdapter/README.md
index b82a10d..d1b4e35 100644
--- a/prebuilts/gradle/BasicSyncAdapter/README.md
+++ b/prebuilts/gradle/BasicSyncAdapter/README.md
@@ -28,8 +28,8 @@
 Pre-requisites
 --------------
 
-- Android SDK v23
-- Android Build Tools v23.0.2
+- Android SDK 23
+- Android Build Tools v23.0.3
 - Android Support Repository
 
 Screenshots
@@ -58,7 +58,7 @@
 License
 -------
 
-Copyright 2014 The Android Open Source Project, Inc.
+Copyright 2016 The Android Open Source Project, Inc.
 
 Licensed to the Apache Software Foundation (ASF) under one or more contributor
 license agreements.  See the NOTICE file distributed with this work for
diff --git a/prebuilts/gradle/BasicSyncAdapter/gradle/wrapper/gradle-wrapper.properties b/prebuilts/gradle/BasicSyncAdapter/gradle/wrapper/gradle-wrapper.properties
index 07fc193..d570517 100644
--- a/prebuilts/gradle/BasicSyncAdapter/gradle/wrapper/gradle-wrapper.properties
+++ b/prebuilts/gradle/BasicSyncAdapter/gradle/wrapper/gradle-wrapper.properties
@@ -3,4 +3,4 @@
 distributionPath=wrapper/dists
 zipStoreBase=GRADLE_USER_HOME
 zipStorePath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-2.8-all.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-2.10-all.zip
diff --git a/prebuilts/gradle/BasicTransition/Application/build.gradle b/prebuilts/gradle/BasicTransition/Application/build.gradle
index 1b5df4e..bff8131 100644
--- a/prebuilts/gradle/BasicTransition/Application/build.gradle
+++ b/prebuilts/gradle/BasicTransition/Application/build.gradle
@@ -5,7 +5,7 @@
     }
 
     dependencies {
-        classpath 'com.android.tools.build:gradle:1.2.3'
+        classpath 'com.android.tools.build:gradle:2.1.2'
     }
 }
 
@@ -16,9 +16,10 @@
 }
 
 dependencies {
-    compile "com.android.support:support-v4:23.1.0"
-    compile "com.android.support:support-v13:23.1.0"
-    compile "com.android.support:cardview-v7:23.1.0"
+    compile "com.android.support:support-v4:24.0.0-beta1"
+    compile "com.android.support:support-v13:24.0.0-beta1"
+    compile "com.android.support:cardview-v7:24.0.0-beta1"
+    compile "com.android.support:appcompat-v7:24.0.0-beta1"
 }
 
 // The sample build uses multiple directories to
@@ -31,7 +32,7 @@
 
 android {
     compileSdkVersion 23
-    buildToolsVersion "23.0.2"
+    buildToolsVersion "23.0.3"
 
     defaultConfig {
         minSdkVersion 19
diff --git a/prebuilts/gradle/BasicTransition/README.md b/prebuilts/gradle/BasicTransition/README.md
index c1aad0b..dd7dee8 100644
--- a/prebuilts/gradle/BasicTransition/README.md
+++ b/prebuilts/gradle/BasicTransition/README.md
@@ -33,8 +33,8 @@
 Pre-requisites
 --------------
 
-- Android SDK v23
-- Android Build Tools v23.0.2
+- Android SDK 23
+- Android Build Tools v23.0.3
 - Android Support Repository
 
 Screenshots
@@ -63,7 +63,7 @@
 License
 -------
 
-Copyright 2014 The Android Open Source Project, Inc.
+Copyright 2016 The Android Open Source Project, Inc.
 
 Licensed to the Apache Software Foundation (ASF) under one or more contributor
 license agreements.  See the NOTICE file distributed with this work for
diff --git a/prebuilts/gradle/BasicTransition/gradle/wrapper/gradle-wrapper.properties b/prebuilts/gradle/BasicTransition/gradle/wrapper/gradle-wrapper.properties
index 07fc193..d570517 100644
--- a/prebuilts/gradle/BasicTransition/gradle/wrapper/gradle-wrapper.properties
+++ b/prebuilts/gradle/BasicTransition/gradle/wrapper/gradle-wrapper.properties
@@ -3,4 +3,4 @@
 distributionPath=wrapper/dists
 zipStoreBase=GRADLE_USER_HOME
 zipStorePath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-2.8-all.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-2.10-all.zip
diff --git a/prebuilts/gradle/BatchStepSensor/Application/build.gradle b/prebuilts/gradle/BatchStepSensor/Application/build.gradle
index 1b5df4e..bff8131 100644
--- a/prebuilts/gradle/BatchStepSensor/Application/build.gradle
+++ b/prebuilts/gradle/BatchStepSensor/Application/build.gradle
@@ -5,7 +5,7 @@
     }
 
     dependencies {
-        classpath 'com.android.tools.build:gradle:1.2.3'
+        classpath 'com.android.tools.build:gradle:2.1.2'
     }
 }
 
@@ -16,9 +16,10 @@
 }
 
 dependencies {
-    compile "com.android.support:support-v4:23.1.0"
-    compile "com.android.support:support-v13:23.1.0"
-    compile "com.android.support:cardview-v7:23.1.0"
+    compile "com.android.support:support-v4:24.0.0-beta1"
+    compile "com.android.support:support-v13:24.0.0-beta1"
+    compile "com.android.support:cardview-v7:24.0.0-beta1"
+    compile "com.android.support:appcompat-v7:24.0.0-beta1"
 }
 
 // The sample build uses multiple directories to
@@ -31,7 +32,7 @@
 
 android {
     compileSdkVersion 23
-    buildToolsVersion "23.0.2"
+    buildToolsVersion "23.0.3"
 
     defaultConfig {
         minSdkVersion 19
diff --git a/prebuilts/gradle/BatchStepSensor/README.md b/prebuilts/gradle/BatchStepSensor/README.md
index e05a047..273b5f0 100644
--- a/prebuilts/gradle/BatchStepSensor/README.md
+++ b/prebuilts/gradle/BatchStepSensor/README.md
@@ -31,8 +31,8 @@
 Pre-requisites
 --------------
 
-- Android SDK v23
-- Android Build Tools v23.0.2
+- Android SDK 23
+- Android Build Tools v23.0.3
 - Android Support Repository
 
 Screenshots
@@ -61,7 +61,7 @@
 License
 -------
 
-Copyright 2014 The Android Open Source Project, Inc.
+Copyright 2016 The Android Open Source Project, Inc.
 
 Licensed to the Apache Software Foundation (ASF) under one or more contributor
 license agreements.  See the NOTICE file distributed with this work for
diff --git a/prebuilts/gradle/BatchStepSensor/gradle/wrapper/gradle-wrapper.properties b/prebuilts/gradle/BatchStepSensor/gradle/wrapper/gradle-wrapper.properties
index 07fc193..d570517 100644
--- a/prebuilts/gradle/BatchStepSensor/gradle/wrapper/gradle-wrapper.properties
+++ b/prebuilts/gradle/BatchStepSensor/gradle/wrapper/gradle-wrapper.properties
@@ -3,4 +3,4 @@
 distributionPath=wrapper/dists
 zipStoreBase=GRADLE_USER_HOME
 zipStorePath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-2.8-all.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-2.10-all.zip
diff --git a/prebuilts/gradle/BeamLargeFiles/Application/build.gradle b/prebuilts/gradle/BeamLargeFiles/Application/build.gradle
index 8592c25..b2fa9ed 100644
--- a/prebuilts/gradle/BeamLargeFiles/Application/build.gradle
+++ b/prebuilts/gradle/BeamLargeFiles/Application/build.gradle
@@ -5,7 +5,7 @@
     }
 
     dependencies {
-        classpath 'com.android.tools.build:gradle:1.2.3'
+        classpath 'com.android.tools.build:gradle:2.1.2'
     }
 }
 
@@ -16,9 +16,10 @@
 }
 
 dependencies {
-    compile "com.android.support:support-v4:23.1.0"
-    compile "com.android.support:support-v13:23.1.0"
-    compile "com.android.support:cardview-v7:23.1.0"
+    compile "com.android.support:support-v4:24.0.0-beta1"
+    compile "com.android.support:support-v13:24.0.0-beta1"
+    compile "com.android.support:cardview-v7:24.0.0-beta1"
+    compile "com.android.support:appcompat-v7:24.0.0-beta1"
 }
 
 // The sample build uses multiple directories to
@@ -31,7 +32,7 @@
 
 android {
     compileSdkVersion 23
-    buildToolsVersion "23.0.2"
+    buildToolsVersion "23.0.3"
 
     defaultConfig {
         minSdkVersion 16
diff --git a/prebuilts/gradle/BeamLargeFiles/README.md b/prebuilts/gradle/BeamLargeFiles/README.md
index 138aca1..a8af4a8 100644
--- a/prebuilts/gradle/BeamLargeFiles/README.md
+++ b/prebuilts/gradle/BeamLargeFiles/README.md
@@ -15,8 +15,8 @@
 Pre-requisites
 --------------
 
-- Android SDK v23
-- Android Build Tools v23.0.2
+- Android SDK 23
+- Android Build Tools v23.0.3
 - Android Support Repository
 
 Getting Started
@@ -40,7 +40,7 @@
 License
 -------
 
-Copyright 2014 The Android Open Source Project, Inc.
+Copyright 2016 The Android Open Source Project, Inc.
 
 Licensed to the Apache Software Foundation (ASF) under one or more contributor
 license agreements.  See the NOTICE file distributed with this work for
diff --git a/prebuilts/gradle/BeamLargeFiles/gradle/wrapper/gradle-wrapper.properties b/prebuilts/gradle/BeamLargeFiles/gradle/wrapper/gradle-wrapper.properties
index 07fc193..d570517 100644
--- a/prebuilts/gradle/BeamLargeFiles/gradle/wrapper/gradle-wrapper.properties
+++ b/prebuilts/gradle/BeamLargeFiles/gradle/wrapper/gradle-wrapper.properties
@@ -3,4 +3,4 @@
 distributionPath=wrapper/dists
 zipStoreBase=GRADLE_USER_HOME
 zipStorePath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-2.8-all.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-2.10-all.zip
diff --git a/prebuilts/gradle/BluetoothAdvertisements/Application/build.gradle b/prebuilts/gradle/BluetoothAdvertisements/Application/build.gradle
index ba404cc..c45ed11 100644
--- a/prebuilts/gradle/BluetoothAdvertisements/Application/build.gradle
+++ b/prebuilts/gradle/BluetoothAdvertisements/Application/build.gradle
@@ -5,7 +5,7 @@
     }
 
     dependencies {
-        classpath 'com.android.tools.build:gradle:1.2.3'
+        classpath 'com.android.tools.build:gradle:2.1.2'
     }
 }
 
@@ -16,9 +16,10 @@
 }
 
 dependencies {
-    compile "com.android.support:support-v4:23.1.0"
-    compile "com.android.support:support-v13:23.1.0"
-    compile "com.android.support:cardview-v7:23.1.0"
+    compile "com.android.support:support-v4:24.0.0-beta1"
+    compile "com.android.support:support-v13:24.0.0-beta1"
+    compile "com.android.support:cardview-v7:24.0.0-beta1"
+    compile "com.android.support:appcompat-v7:24.0.0-beta1"
 }
 
 // The sample build uses multiple directories to
@@ -31,7 +32,7 @@
 
 android {
     compileSdkVersion 23
-    buildToolsVersion "23.0.2"
+    buildToolsVersion "23.0.3"
 
     defaultConfig {
         minSdkVersion 21
diff --git a/prebuilts/gradle/BluetoothAdvertisements/README.md b/prebuilts/gradle/BluetoothAdvertisements/README.md
index e8ba3c9..69fa862 100644
--- a/prebuilts/gradle/BluetoothAdvertisements/README.md
+++ b/prebuilts/gradle/BluetoothAdvertisements/README.md
@@ -29,8 +29,8 @@
 Pre-requisites
 --------------
 
-- Android SDK v23
-- Android Build Tools v23.0.2
+- Android SDK 23
+- Android Build Tools v23.0.3
 - Android Support Repository
 
 Screenshots
@@ -59,7 +59,7 @@
 License
 -------
 
-Copyright 2014 The Android Open Source Project, Inc.
+Copyright 2016 The Android Open Source Project, Inc.
 
 Licensed to the Apache Software Foundation (ASF) under one or more contributor
 license agreements.  See the NOTICE file distributed with this work for
diff --git a/prebuilts/gradle/BluetoothAdvertisements/gradle/wrapper/gradle-wrapper.properties b/prebuilts/gradle/BluetoothAdvertisements/gradle/wrapper/gradle-wrapper.properties
index 25c3a92..134127f 100644
--- a/prebuilts/gradle/BluetoothAdvertisements/gradle/wrapper/gradle-wrapper.properties
+++ b/prebuilts/gradle/BluetoothAdvertisements/gradle/wrapper/gradle-wrapper.properties
@@ -3,4 +3,4 @@
 distributionPath=wrapper/dists
 zipStoreBase=GRADLE_USER_HOME
 zipStorePath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-2.8-all.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-2.10-all.zip
diff --git a/prebuilts/gradle/BluetoothChat/Application/build.gradle b/prebuilts/gradle/BluetoothChat/Application/build.gradle
index 013768e..2915ada 100644
--- a/prebuilts/gradle/BluetoothChat/Application/build.gradle
+++ b/prebuilts/gradle/BluetoothChat/Application/build.gradle
@@ -5,7 +5,7 @@
     }
 
     dependencies {
-        classpath 'com.android.tools.build:gradle:1.2.3'
+        classpath 'com.android.tools.build:gradle:2.1.2'
     }
 }
 
@@ -16,9 +16,10 @@
 }
 
 dependencies {
-    compile "com.android.support:support-v4:23.1.0"
-    compile "com.android.support:gridlayout-v7:23.1.0"
-    compile "com.android.support:cardview-v7:23.1.0"
+    compile "com.android.support:support-v4:24.0.0-beta1"
+    compile "com.android.support:gridlayout-v7:24.0.0-beta1"
+    compile "com.android.support:cardview-v7:24.0.0-beta1"
+    compile "com.android.support:appcompat-v7:24.0.0-beta1"
 }
 
 // The sample build uses multiple directories to
@@ -31,7 +32,7 @@
 
 android {
     compileSdkVersion 23
-    buildToolsVersion "23.0.2"
+    buildToolsVersion "23.0.3"
 
     defaultConfig {
         minSdkVersion 11
diff --git a/prebuilts/gradle/BluetoothChat/Application/src/main/java/com/example/android/bluetoothchat/BluetoothChatService.java b/prebuilts/gradle/BluetoothChat/Application/src/main/java/com/example/android/bluetoothchat/BluetoothChatService.java
index b88b160..a1e7cc0 100644
--- a/prebuilts/gradle/BluetoothChat/Application/src/main/java/com/example/android/bluetoothchat/BluetoothChatService.java
+++ b/prebuilts/gradle/BluetoothChat/Application/src/main/java/com/example/android/bluetoothchat/BluetoothChatService.java
@@ -473,7 +473,7 @@
             int bytes;
 
             // Keep listening to the InputStream while connected
-            while (true) {
+            while (mState == STATE_CONNECTED) {
                 try {
                     // Read from the InputStream
                     bytes = mmInStream.read(buffer);
diff --git a/prebuilts/gradle/BluetoothChat/README.md b/prebuilts/gradle/BluetoothChat/README.md
index c3aee77..5e34883 100644
--- a/prebuilts/gradle/BluetoothChat/README.md
+++ b/prebuilts/gradle/BluetoothChat/README.md
@@ -32,8 +32,8 @@
 Pre-requisites
 --------------
 
-- Android SDK v23
-- Android Build Tools v23.0.2
+- Android SDK 23
+- Android Build Tools v23.0.3
 - Android Support Repository
 
 Screenshots
@@ -62,7 +62,7 @@
 License
 -------
 
-Copyright 2014 The Android Open Source Project, Inc.
+Copyright 2016 The Android Open Source Project, Inc.
 
 Licensed to the Apache Software Foundation (ASF) under one or more contributor
 license agreements.  See the NOTICE file distributed with this work for
diff --git a/prebuilts/gradle/BluetoothChat/gradle/wrapper/gradle-wrapper.properties b/prebuilts/gradle/BluetoothChat/gradle/wrapper/gradle-wrapper.properties
index 07fc193..d570517 100644
--- a/prebuilts/gradle/BluetoothChat/gradle/wrapper/gradle-wrapper.properties
+++ b/prebuilts/gradle/BluetoothChat/gradle/wrapper/gradle-wrapper.properties
@@ -3,4 +3,4 @@
 distributionPath=wrapper/dists
 zipStoreBase=GRADLE_USER_HOME
 zipStorePath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-2.8-all.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-2.10-all.zip
diff --git a/prebuilts/gradle/BluetoothLeGatt/Application/build.gradle b/prebuilts/gradle/BluetoothLeGatt/Application/build.gradle
index ae1d811..b8072d1 100644
--- a/prebuilts/gradle/BluetoothLeGatt/Application/build.gradle
+++ b/prebuilts/gradle/BluetoothLeGatt/Application/build.gradle
@@ -5,7 +5,7 @@
     }
 
     dependencies {
-        classpath 'com.android.tools.build:gradle:1.2.3'
+        classpath 'com.android.tools.build:gradle:2.1.2'
     }
 }
 
@@ -16,9 +16,10 @@
 }
 
 dependencies {
-    compile "com.android.support:support-v4:23.1.0"
-    compile "com.android.support:support-v13:23.1.0"
-    compile "com.android.support:cardview-v7:23.1.0"
+    compile "com.android.support:support-v4:24.0.0-beta1"
+    compile "com.android.support:support-v13:24.0.0-beta1"
+    compile "com.android.support:cardview-v7:24.0.0-beta1"
+    compile "com.android.support:appcompat-v7:24.0.0-beta1"
 }
 
 // The sample build uses multiple directories to
@@ -31,7 +32,7 @@
 
 android {
     compileSdkVersion 23
-    buildToolsVersion "23.0.2"
+    buildToolsVersion "23.0.3"
 
     defaultConfig {
         minSdkVersion 18
diff --git a/prebuilts/gradle/BluetoothLeGatt/README.md b/prebuilts/gradle/BluetoothLeGatt/README.md
index 07446f4..06fe536 100644
--- a/prebuilts/gradle/BluetoothLeGatt/README.md
+++ b/prebuilts/gradle/BluetoothLeGatt/README.md
@@ -23,8 +23,8 @@
 Pre-requisites
 --------------
 
-- Android SDK v23
-- Android Build Tools v23.0.2
+- Android SDK 23
+- Android Build Tools v23.0.3
 - Android Support Repository
 
 Screenshots
@@ -53,7 +53,7 @@
 License
 -------
 
-Copyright 2014 The Android Open Source Project, Inc.
+Copyright 2016 The Android Open Source Project, Inc.
 
 Licensed to the Apache Software Foundation (ASF) under one or more contributor
 license agreements.  See the NOTICE file distributed with this work for
diff --git a/prebuilts/gradle/BluetoothLeGatt/gradle/wrapper/gradle-wrapper.properties b/prebuilts/gradle/BluetoothLeGatt/gradle/wrapper/gradle-wrapper.properties
index 07fc193..d570517 100644
--- a/prebuilts/gradle/BluetoothLeGatt/gradle/wrapper/gradle-wrapper.properties
+++ b/prebuilts/gradle/BluetoothLeGatt/gradle/wrapper/gradle-wrapper.properties
@@ -3,4 +3,4 @@
 distributionPath=wrapper/dists
 zipStoreBase=GRADLE_USER_HOME
 zipStorePath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-2.8-all.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-2.10-all.zip
diff --git a/prebuilts/gradle/BorderlessButtons/Application/build.gradle b/prebuilts/gradle/BorderlessButtons/Application/build.gradle
index 394eb93..f757b43 100644
--- a/prebuilts/gradle/BorderlessButtons/Application/build.gradle
+++ b/prebuilts/gradle/BorderlessButtons/Application/build.gradle
@@ -5,7 +5,7 @@
     }
 
     dependencies {
-        classpath 'com.android.tools.build:gradle:1.2.3'
+        classpath 'com.android.tools.build:gradle:2.1.2'
     }
 }
 
@@ -16,9 +16,10 @@
 }
 
 dependencies {
-    compile "com.android.support:support-v4:23.1.0"
-    compile "com.android.support:support-v13:23.1.0"
-    compile "com.android.support:cardview-v7:23.1.0"
+    compile "com.android.support:support-v4:24.0.0-beta1"
+    compile "com.android.support:support-v13:24.0.0-beta1"
+    compile "com.android.support:cardview-v7:24.0.0-beta1"
+    compile "com.android.support:appcompat-v7:24.0.0-beta1"
 }
 
 // The sample build uses multiple directories to
@@ -31,7 +32,7 @@
 
 android {
     compileSdkVersion 23
-    buildToolsVersion "23.0.2"
+    buildToolsVersion "23.0.3"
 
     defaultConfig {
         minSdkVersion 14
diff --git a/prebuilts/gradle/BorderlessButtons/README.md b/prebuilts/gradle/BorderlessButtons/README.md
index 572bd5d..8376724 100644
--- a/prebuilts/gradle/BorderlessButtons/README.md
+++ b/prebuilts/gradle/BorderlessButtons/README.md
@@ -24,8 +24,8 @@
 Pre-requisites
 --------------
 
-- Android SDK v23
-- Android Build Tools v23.0.2
+- Android SDK 23
+- Android Build Tools v23.0.3
 - Android Support Repository
 
 Screenshots
@@ -54,7 +54,7 @@
 License
 -------
 
-Copyright 2014 The Android Open Source Project, Inc.
+Copyright 2016 The Android Open Source Project, Inc.
 
 Licensed to the Apache Software Foundation (ASF) under one or more contributor
 license agreements.  See the NOTICE file distributed with this work for
diff --git a/prebuilts/gradle/BorderlessButtons/gradle/wrapper/gradle-wrapper.properties b/prebuilts/gradle/BorderlessButtons/gradle/wrapper/gradle-wrapper.properties
index 07fc193..d570517 100644
--- a/prebuilts/gradle/BorderlessButtons/gradle/wrapper/gradle-wrapper.properties
+++ b/prebuilts/gradle/BorderlessButtons/gradle/wrapper/gradle-wrapper.properties
@@ -3,4 +3,4 @@
 distributionPath=wrapper/dists
 zipStoreBase=GRADLE_USER_HOME
 zipStorePath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-2.8-all.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-2.10-all.zip
diff --git a/prebuilts/gradle/Camera2Basic/Application/build.gradle b/prebuilts/gradle/Camera2Basic/Application/build.gradle
index 3f42f97..0a86821 100644
--- a/prebuilts/gradle/Camera2Basic/Application/build.gradle
+++ b/prebuilts/gradle/Camera2Basic/Application/build.gradle
@@ -5,7 +5,7 @@
     }
 
     dependencies {
-        classpath 'com.android.tools.build:gradle:1.2.3'
+        classpath 'com.android.tools.build:gradle:2.1.2'
     }
 }
 
@@ -16,10 +16,11 @@
 }
 
 dependencies {
-    compile "com.android.support:support-v4:23.1.0"
-    compile "com.android.support:support-v13:23.1.0"
-    compile "com.android.support:cardview-v7:23.1.0"
-    compile 'com.android.support:appcompat-v7:23.0.0'
+    compile "com.android.support:support-v4:24.0.0-beta1"
+    compile "com.android.support:support-v13:24.0.0-beta1"
+    compile "com.android.support:cardview-v7:24.0.0-beta1"
+    compile "com.android.support:appcompat-v7:24.0.0-beta1"
+    compile 'com.android.support:appcompat-v7:24.0.0-beta1'
 }
 
 // The sample build uses multiple directories to
@@ -32,7 +33,7 @@
 
 android {
     compileSdkVersion 23
-    buildToolsVersion "23.0.2"
+    buildToolsVersion "23.0.3"
 
     defaultConfig {
         minSdkVersion 21
diff --git a/prebuilts/gradle/Camera2Basic/Application/src/main/java/com/example/android/camera2basic/Camera2BasicFragment.java b/prebuilts/gradle/Camera2Basic/Application/src/main/java/com/example/android/camera2basic/Camera2BasicFragment.java
index 747d8d8..a29fa14 100644
--- a/prebuilts/gradle/Camera2Basic/Application/src/main/java/com/example/android/camera2basic/Camera2BasicFragment.java
+++ b/prebuilts/gradle/Camera2Basic/Application/src/main/java/com/example/android/camera2basic/Camera2BasicFragment.java
@@ -276,6 +276,11 @@
     private boolean mFlashSupported;
 
     /**
+     * Orientation of the camera sensor
+     */
+    private int mSensorOrientation;
+
+    /**
      * A {@link CameraCaptureSession.CaptureCallback} that handles events related to JPEG capture.
      */
     private CameraCaptureSession.CaptureCallback mCaptureCallback
@@ -515,19 +520,19 @@
                 // Find out if we need to swap dimension to get the preview size relative to sensor
                 // coordinate.
                 int displayRotation = activity.getWindowManager().getDefaultDisplay().getRotation();
-                int sensorOrientation =
-                        characteristics.get(CameraCharacteristics.SENSOR_ORIENTATION);
+                //noinspection ConstantConditions
+                mSensorOrientation = characteristics.get(CameraCharacteristics.SENSOR_ORIENTATION);
                 boolean swappedDimensions = false;
                 switch (displayRotation) {
                     case Surface.ROTATION_0:
                     case Surface.ROTATION_180:
-                        if (sensorOrientation == 90 || sensorOrientation == 270) {
+                        if (mSensorOrientation == 90 || mSensorOrientation == 270) {
                             swappedDimensions = true;
                         }
                         break;
                     case Surface.ROTATION_90:
                     case Surface.ROTATION_270:
-                        if (sensorOrientation == 0 || sensorOrientation == 180) {
+                        if (mSensorOrientation == 0 || mSensorOrientation == 180) {
                             swappedDimensions = true;
                         }
                         break;
@@ -821,7 +826,7 @@
 
             // Orientation
             int rotation = activity.getWindowManager().getDefaultDisplay().getRotation();
-            captureBuilder.set(CaptureRequest.JPEG_ORIENTATION, ORIENTATIONS.get(rotation));
+            captureBuilder.set(CaptureRequest.JPEG_ORIENTATION, getOrientation(rotation));
 
             CameraCaptureSession.CaptureCallback CaptureCallback
                     = new CameraCaptureSession.CaptureCallback() {
@@ -844,6 +849,20 @@
     }
 
     /**
+     * Retrieves the JPEG orientation from the specified screen rotation.
+     *
+     * @param rotation The screen rotation.
+     * @return The JPEG orientation (one of 0, 90, 270, and 360)
+     */
+    private int getOrientation(int rotation) {
+        // Sensor orientation is 90 for most devices, or 270 for some devices (eg. Nexus 5X)
+        // We have to take that into account and rotate JPEG properly.
+        // For devices with orientation of 90, we simply return our mapping from ORIENTATIONS.
+        // For devices with orientation of 270, we need to rotate the JPEG 180 degrees.
+        return (ORIENTATIONS.get(rotation) + mSensorOrientation + 270) % 360;
+    }
+
+    /**
      * Unlock the focus. This method should be called when still image capture sequence is
      * finished.
      */
diff --git a/prebuilts/gradle/Camera2Basic/README.md b/prebuilts/gradle/Camera2Basic/README.md
index 311e5bb..dfdf0c4 100644
--- a/prebuilts/gradle/Camera2Basic/README.md
+++ b/prebuilts/gradle/Camera2Basic/README.md
@@ -42,8 +42,8 @@
 Pre-requisites
 --------------
 
-- Android SDK v23
-- Android Build Tools v23.0.2
+- Android SDK 23
+- Android Build Tools v23.0.3
 - Android Support Repository
 
 Screenshots
@@ -72,7 +72,7 @@
 License
 -------
 
-Copyright 2014 The Android Open Source Project, Inc.
+Copyright 2016 The Android Open Source Project, Inc.
 
 Licensed to the Apache Software Foundation (ASF) under one or more contributor
 license agreements.  See the NOTICE file distributed with this work for
diff --git a/prebuilts/gradle/Camera2Basic/gradle/wrapper/gradle-wrapper.properties b/prebuilts/gradle/Camera2Basic/gradle/wrapper/gradle-wrapper.properties
index 07fc193..d570517 100644
--- a/prebuilts/gradle/Camera2Basic/gradle/wrapper/gradle-wrapper.properties
+++ b/prebuilts/gradle/Camera2Basic/gradle/wrapper/gradle-wrapper.properties
@@ -3,4 +3,4 @@
 distributionPath=wrapper/dists
 zipStoreBase=GRADLE_USER_HOME
 zipStorePath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-2.8-all.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-2.10-all.zip
diff --git a/prebuilts/gradle/Camera2Raw/Application/build.gradle b/prebuilts/gradle/Camera2Raw/Application/build.gradle
index 3f42f97..0a86821 100644
--- a/prebuilts/gradle/Camera2Raw/Application/build.gradle
+++ b/prebuilts/gradle/Camera2Raw/Application/build.gradle
@@ -5,7 +5,7 @@
     }
 
     dependencies {
-        classpath 'com.android.tools.build:gradle:1.2.3'
+        classpath 'com.android.tools.build:gradle:2.1.2'
     }
 }
 
@@ -16,10 +16,11 @@
 }
 
 dependencies {
-    compile "com.android.support:support-v4:23.1.0"
-    compile "com.android.support:support-v13:23.1.0"
-    compile "com.android.support:cardview-v7:23.1.0"
-    compile 'com.android.support:appcompat-v7:23.0.0'
+    compile "com.android.support:support-v4:24.0.0-beta1"
+    compile "com.android.support:support-v13:24.0.0-beta1"
+    compile "com.android.support:cardview-v7:24.0.0-beta1"
+    compile "com.android.support:appcompat-v7:24.0.0-beta1"
+    compile 'com.android.support:appcompat-v7:24.0.0-beta1'
 }
 
 // The sample build uses multiple directories to
@@ -32,7 +33,7 @@
 
 android {
     compileSdkVersion 23
-    buildToolsVersion "23.0.2"
+    buildToolsVersion "23.0.3"
 
     defaultConfig {
         minSdkVersion 21
diff --git a/prebuilts/gradle/Camera2Raw/Application/src/main/java/com/example/android/camera2raw/Camera2RawFragment.java b/prebuilts/gradle/Camera2Raw/Application/src/main/java/com/example/android/camera2raw/Camera2RawFragment.java
index bf5efe5..341cc72 100644
--- a/prebuilts/gradle/Camera2Raw/Application/src/main/java/com/example/android/camera2raw/Camera2RawFragment.java
+++ b/prebuilts/gradle/Camera2Raw/Application/src/main/java/com/example/android/camera2raw/Camera2RawFragment.java
@@ -442,7 +442,10 @@
                     case STATE_WAITING_FOR_3A_CONVERGENCE: {
                         boolean readyToCapture = true;
                         if (!mNoAFRun) {
-                            int afState = result.get(CaptureResult.CONTROL_AF_STATE);
+                            Integer afState = result.get(CaptureResult.CONTROL_AF_STATE);
+                            if (afState == null) {
+                                break;
+                            }
 
                             // If auto-focus has reached locked state, we are ready to capture
                             readyToCapture =
@@ -454,8 +457,11 @@
                         // auto-exposure and auto-white-balance have converged as well before
                         // taking a picture.
                         if (!isLegacyLocked()) {
-                            int aeState = result.get(CaptureResult.CONTROL_AE_STATE);
-                            int awbState = result.get(CaptureResult.CONTROL_AWB_STATE);
+                            Integer aeState = result.get(CaptureResult.CONTROL_AE_STATE);
+                            Integer awbState = result.get(CaptureResult.CONTROL_AWB_STATE);
+                            if (aeState == null || awbState == null) {
+                                break;
+                            }
 
                             readyToCapture = readyToCapture &&
                                     aeState == CaptureResult.CONTROL_AE_STATE_CONVERGED &&
diff --git a/prebuilts/gradle/Camera2Raw/README.md b/prebuilts/gradle/Camera2Raw/README.md
index e170cd8..31905ef 100644
--- a/prebuilts/gradle/Camera2Raw/README.md
+++ b/prebuilts/gradle/Camera2Raw/README.md
@@ -26,8 +26,8 @@
 Pre-requisites
 --------------
 
-- Android SDK v23
-- Android Build Tools v23.0.2
+- Android SDK 23
+- Android Build Tools v23.0.3
 - Android Support Repository
 
 Screenshots
@@ -56,7 +56,7 @@
 License
 -------
 
-Copyright 2014 The Android Open Source Project, Inc.
+Copyright 2016 The Android Open Source Project, Inc.
 
 Licensed to the Apache Software Foundation (ASF) under one or more contributor
 license agreements.  See the NOTICE file distributed with this work for
diff --git a/prebuilts/gradle/Camera2Raw/gradle/wrapper/gradle-wrapper.properties b/prebuilts/gradle/Camera2Raw/gradle/wrapper/gradle-wrapper.properties
index 07fc193..d570517 100644
--- a/prebuilts/gradle/Camera2Raw/gradle/wrapper/gradle-wrapper.properties
+++ b/prebuilts/gradle/Camera2Raw/gradle/wrapper/gradle-wrapper.properties
@@ -3,4 +3,4 @@
 distributionPath=wrapper/dists
 zipStoreBase=GRADLE_USER_HOME
 zipStorePath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-2.8-all.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-2.10-all.zip
diff --git a/prebuilts/gradle/Camera2Video/Application/build.gradle b/prebuilts/gradle/Camera2Video/Application/build.gradle
index 3f42f97..0a86821 100644
--- a/prebuilts/gradle/Camera2Video/Application/build.gradle
+++ b/prebuilts/gradle/Camera2Video/Application/build.gradle
@@ -5,7 +5,7 @@
     }
 
     dependencies {
-        classpath 'com.android.tools.build:gradle:1.2.3'
+        classpath 'com.android.tools.build:gradle:2.1.2'
     }
 }
 
@@ -16,10 +16,11 @@
 }
 
 dependencies {
-    compile "com.android.support:support-v4:23.1.0"
-    compile "com.android.support:support-v13:23.1.0"
-    compile "com.android.support:cardview-v7:23.1.0"
-    compile 'com.android.support:appcompat-v7:23.0.0'
+    compile "com.android.support:support-v4:24.0.0-beta1"
+    compile "com.android.support:support-v13:24.0.0-beta1"
+    compile "com.android.support:cardview-v7:24.0.0-beta1"
+    compile "com.android.support:appcompat-v7:24.0.0-beta1"
+    compile 'com.android.support:appcompat-v7:24.0.0-beta1'
 }
 
 // The sample build uses multiple directories to
@@ -32,7 +33,7 @@
 
 android {
     compileSdkVersion 23
-    buildToolsVersion "23.0.2"
+    buildToolsVersion "23.0.3"
 
     defaultConfig {
         minSdkVersion 21
diff --git a/prebuilts/gradle/Camera2Video/Application/src/main/AndroidManifest.xml b/prebuilts/gradle/Camera2Video/Application/src/main/AndroidManifest.xml
index 5cb5428..67a90d0 100644
--- a/prebuilts/gradle/Camera2Video/Application/src/main/AndroidManifest.xml
+++ b/prebuilts/gradle/Camera2Video/Application/src/main/AndroidManifest.xml
@@ -23,6 +23,7 @@
 
     <uses-permission android:name="android.permission.CAMERA"/>
     <uses-permission android:name="android.permission.RECORD_AUDIO"/>
+    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
 
     <application android:allowBackup="true"
         android:label="@string/app_name"
diff --git a/prebuilts/gradle/Camera2Video/Application/src/main/java/com/example/android/camera2video/Camera2VideoFragment.java b/prebuilts/gradle/Camera2Video/Application/src/main/java/com/example/android/camera2video/Camera2VideoFragment.java
index 1ea5318..e2853b3 100644
--- a/prebuilts/gradle/Camera2Video/Application/src/main/java/com/example/android/camera2video/Camera2VideoFragment.java
+++ b/prebuilts/gradle/Camera2Video/Application/src/main/java/com/example/android/camera2video/Camera2VideoFragment.java
@@ -55,9 +55,9 @@
 import android.widget.Button;
 import android.widget.Toast;
 
-import java.io.File;
 import java.io.IOException;
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.Collections;
 import java.util.Comparator;
 import java.util.List;
@@ -67,7 +67,10 @@
 public class Camera2VideoFragment extends Fragment
         implements View.OnClickListener, FragmentCompat.OnRequestPermissionsResultCallback {
 
-    private static final SparseIntArray ORIENTATIONS = new SparseIntArray();
+    private static final int SENSOR_ORIENTATION_DEFAULT_DEGREES = 90;
+    private static final int SENSOR_ORIENTATION_INVERSE_DEGREES = 270;
+    private static final SparseIntArray DEFAULT_ORIENTATIONS = new SparseIntArray();
+    private static final SparseIntArray INVERSE_ORIENTATIONS = new SparseIntArray();
 
     private static final String TAG = "Camera2VideoFragment";
     private static final int REQUEST_VIDEO_PERMISSIONS = 1;
@@ -79,10 +82,17 @@
     };
 
     static {
-        ORIENTATIONS.append(Surface.ROTATION_0, 90);
-        ORIENTATIONS.append(Surface.ROTATION_90, 0);
-        ORIENTATIONS.append(Surface.ROTATION_180, 270);
-        ORIENTATIONS.append(Surface.ROTATION_270, 180);
+        DEFAULT_ORIENTATIONS.append(Surface.ROTATION_0, 90);
+        DEFAULT_ORIENTATIONS.append(Surface.ROTATION_90, 0);
+        DEFAULT_ORIENTATIONS.append(Surface.ROTATION_180, 270);
+        DEFAULT_ORIENTATIONS.append(Surface.ROTATION_270, 180);
+    }
+
+    static {
+        INVERSE_ORIENTATIONS.append(Surface.ROTATION_0, 270);
+        INVERSE_ORIENTATIONS.append(Surface.ROTATION_90, 180);
+        INVERSE_ORIENTATIONS.append(Surface.ROTATION_180, 90);
+        INVERSE_ORIENTATIONS.append(Surface.ROTATION_270, 0);
     }
 
     /**
@@ -147,11 +157,6 @@
     private Size mVideoSize;
 
     /**
-     * Camera preview.
-     */
-    private CaptureRequest.Builder mPreviewBuilder;
-
-    /**
      * MediaRecorder
      */
     private MediaRecorder mMediaRecorder;
@@ -210,6 +215,10 @@
         }
 
     };
+    private Integer mSensorOrientation;
+    private String mNextVideoAbsolutePath;
+    private CaptureRequest.Builder mPreviewBuilder;
+    private Surface mRecorderSurface;
 
     public static Camera2VideoFragment newInstance() {
         return new Camera2VideoFragment();
@@ -425,6 +434,7 @@
             CameraCharacteristics characteristics = manager.getCameraCharacteristics(cameraId);
             StreamConfigurationMap map = characteristics
                     .get(CameraCharacteristics.SCALER_STREAM_CONFIGURATION_MAP);
+            mSensorOrientation = characteristics.get(CameraCharacteristics.SENSOR_ORIENTATION);
             mVideoSize = chooseVideoSize(map.getOutputSizes(MediaRecorder.class));
             mPreviewSize = chooseOptimalSize(map.getOutputSizes(SurfaceTexture.class),
                     width, height, mVideoSize);
@@ -454,6 +464,7 @@
     private void closeCamera() {
         try {
             mCameraOpenCloseLock.acquire();
+            closePreviewSession();
             if (null != mCameraDevice) {
                 mCameraDevice.close();
                 mCameraDevice = null;
@@ -477,22 +488,16 @@
             return;
         }
         try {
-            setUpMediaRecorder();
+            closePreviewSession();
             SurfaceTexture texture = mTextureView.getSurfaceTexture();
             assert texture != null;
             texture.setDefaultBufferSize(mPreviewSize.getWidth(), mPreviewSize.getHeight());
-            mPreviewBuilder = mCameraDevice.createCaptureRequest(CameraDevice.TEMPLATE_RECORD);
-            List<Surface> surfaces = new ArrayList<Surface>();
+            mPreviewBuilder = mCameraDevice.createCaptureRequest(CameraDevice.TEMPLATE_PREVIEW);
 
             Surface previewSurface = new Surface(texture);
-            surfaces.add(previewSurface);
             mPreviewBuilder.addTarget(previewSurface);
 
-            Surface recorderSurface = mMediaRecorder.getSurface();
-            surfaces.add(recorderSurface);
-            mPreviewBuilder.addTarget(recorderSurface);
-
-            mCameraDevice.createCaptureSession(surfaces, new CameraCaptureSession.StateCallback() {
+            mCameraDevice.createCaptureSession(Arrays.asList(previewSurface), new CameraCaptureSession.StateCallback() {
 
                 @Override
                 public void onConfigured(CameraCaptureSession cameraCaptureSession) {
@@ -510,8 +515,6 @@
             }, mBackgroundHandler);
         } catch (CameraAccessException e) {
             e.printStackTrace();
-        } catch (IOException e) {
-            e.printStackTrace();
         }
     }
 
@@ -575,32 +578,96 @@
         mMediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
         mMediaRecorder.setVideoSource(MediaRecorder.VideoSource.SURFACE);
         mMediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);
-        mMediaRecorder.setOutputFile(getVideoFile(activity).getAbsolutePath());
+        if (mNextVideoAbsolutePath == null || mNextVideoAbsolutePath.isEmpty()) {
+            mNextVideoAbsolutePath = getVideoFilePath(getActivity());
+        }
+        mMediaRecorder.setOutputFile(mNextVideoAbsolutePath);
         mMediaRecorder.setVideoEncodingBitRate(10000000);
         mMediaRecorder.setVideoFrameRate(30);
         mMediaRecorder.setVideoSize(mVideoSize.getWidth(), mVideoSize.getHeight());
         mMediaRecorder.setVideoEncoder(MediaRecorder.VideoEncoder.H264);
         mMediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AAC);
         int rotation = activity.getWindowManager().getDefaultDisplay().getRotation();
-        int orientation = ORIENTATIONS.get(rotation);
-        mMediaRecorder.setOrientationHint(orientation);
+        switch (mSensorOrientation) {
+            case SENSOR_ORIENTATION_DEFAULT_DEGREES:
+                mMediaRecorder.setOrientationHint(DEFAULT_ORIENTATIONS.get(rotation));
+                break;
+            case SENSOR_ORIENTATION_INVERSE_DEGREES:
+                mMediaRecorder.setOrientationHint(INVERSE_ORIENTATIONS.get(rotation));
+                break;
+        }
         mMediaRecorder.prepare();
     }
 
-    private File getVideoFile(Context context) {
-        return new File(context.getExternalFilesDir(null), "video.mp4");
+    private String getVideoFilePath(Context context) {
+        return context.getExternalFilesDir(null).getAbsolutePath() + "/"
+                + System.currentTimeMillis() + ".mp4";
     }
 
     private void startRecordingVideo() {
+        if (null == mCameraDevice || !mTextureView.isAvailable() || null == mPreviewSize) {
+            return;
+        }
         try {
-            // UI
-            mButtonVideo.setText(R.string.stop);
-            mIsRecordingVideo = true;
+            closePreviewSession();
+            setUpMediaRecorder();
+            SurfaceTexture texture = mTextureView.getSurfaceTexture();
+            assert texture != null;
+            texture.setDefaultBufferSize(mPreviewSize.getWidth(), mPreviewSize.getHeight());
+            mPreviewBuilder = mCameraDevice.createCaptureRequest(CameraDevice.TEMPLATE_RECORD);
+            List<Surface> surfaces = new ArrayList<>();
 
-            // Start recording
-            mMediaRecorder.start();
-        } catch (IllegalStateException e) {
+            // Set up Surface for the camera preview
+            Surface previewSurface = new Surface(texture);
+            surfaces.add(previewSurface);
+            mPreviewBuilder.addTarget(previewSurface);
+
+            // Set up Surface for the MediaRecorder
+            mRecorderSurface = mMediaRecorder.getSurface();
+            surfaces.add(mRecorderSurface);
+            mPreviewBuilder.addTarget(mRecorderSurface);
+
+            // Start a capture session
+            // Once the session starts, we can update the UI and start recording
+            mCameraDevice.createCaptureSession(surfaces, new CameraCaptureSession.StateCallback() {
+
+                @Override
+                public void onConfigured(@NonNull CameraCaptureSession cameraCaptureSession) {
+                    mPreviewSession = cameraCaptureSession;
+                    updatePreview();
+                    getActivity().runOnUiThread(new Runnable() {
+                        @Override
+                        public void run() {
+                            // UI
+                            mButtonVideo.setText(R.string.stop);
+                            mIsRecordingVideo = true;
+
+                            // Start recording
+                            mMediaRecorder.start();
+                        }
+                    });
+                }
+
+                @Override
+                public void onConfigureFailed(@NonNull CameraCaptureSession cameraCaptureSession) {
+                    Activity activity = getActivity();
+                    if (null != activity) {
+                        Toast.makeText(activity, "Failed", Toast.LENGTH_SHORT).show();
+                    }
+                }
+            }, mBackgroundHandler);
+        } catch (CameraAccessException e) {
             e.printStackTrace();
+        } catch (IOException e) {
+            e.printStackTrace();
+        }
+
+    }
+
+    private void closePreviewSession() {
+        if (mPreviewSession != null) {
+            mPreviewSession.close();
+            mPreviewSession = null;
         }
     }
 
@@ -611,11 +678,14 @@
         // Stop recording
         mMediaRecorder.stop();
         mMediaRecorder.reset();
+
         Activity activity = getActivity();
         if (null != activity) {
-            Toast.makeText(activity, "Video saved: " + getVideoFile(activity),
+            Toast.makeText(activity, "Video saved: " + mNextVideoAbsolutePath,
                     Toast.LENGTH_SHORT).show();
+            Log.d(TAG, "Video saved: " + mNextVideoAbsolutePath);
         }
+        mNextVideoAbsolutePath = null;
         startPreview();
     }
 
diff --git a/prebuilts/gradle/Camera2Video/README.md b/prebuilts/gradle/Camera2Video/README.md
index e1f07bc..e941a48 100644
--- a/prebuilts/gradle/Camera2Video/README.md
+++ b/prebuilts/gradle/Camera2Video/README.md
@@ -43,8 +43,8 @@
 Pre-requisites
 --------------
 
-- Android SDK v23
-- Android Build Tools v23.0.2
+- Android SDK 23
+- Android Build Tools v23.0.3
 - Android Support Repository
 
 Screenshots
@@ -73,7 +73,7 @@
 License
 -------
 
-Copyright 2014 The Android Open Source Project, Inc.
+Copyright 2016 The Android Open Source Project, Inc.
 
 Licensed to the Apache Software Foundation (ASF) under one or more contributor
 license agreements.  See the NOTICE file distributed with this work for
diff --git a/prebuilts/gradle/Camera2Video/gradle/wrapper/gradle-wrapper.properties b/prebuilts/gradle/Camera2Video/gradle/wrapper/gradle-wrapper.properties
index 07fc193..d570517 100644
--- a/prebuilts/gradle/Camera2Video/gradle/wrapper/gradle-wrapper.properties
+++ b/prebuilts/gradle/Camera2Video/gradle/wrapper/gradle-wrapper.properties
@@ -3,4 +3,4 @@
 distributionPath=wrapper/dists
 zipStoreBase=GRADLE_USER_HOME
 zipStorePath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-2.8-all.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-2.10-all.zip
diff --git a/prebuilts/gradle/CardEmulation/Application/build.gradle b/prebuilts/gradle/CardEmulation/Application/build.gradle
index 1b5df4e..bff8131 100644
--- a/prebuilts/gradle/CardEmulation/Application/build.gradle
+++ b/prebuilts/gradle/CardEmulation/Application/build.gradle
@@ -5,7 +5,7 @@
     }
 
     dependencies {
-        classpath 'com.android.tools.build:gradle:1.2.3'
+        classpath 'com.android.tools.build:gradle:2.1.2'
     }
 }
 
@@ -16,9 +16,10 @@
 }
 
 dependencies {
-    compile "com.android.support:support-v4:23.1.0"
-    compile "com.android.support:support-v13:23.1.0"
-    compile "com.android.support:cardview-v7:23.1.0"
+    compile "com.android.support:support-v4:24.0.0-beta1"
+    compile "com.android.support:support-v13:24.0.0-beta1"
+    compile "com.android.support:cardview-v7:24.0.0-beta1"
+    compile "com.android.support:appcompat-v7:24.0.0-beta1"
 }
 
 // The sample build uses multiple directories to
@@ -31,7 +32,7 @@
 
 android {
     compileSdkVersion 23
-    buildToolsVersion "23.0.2"
+    buildToolsVersion "23.0.3"
 
     defaultConfig {
         minSdkVersion 19
diff --git a/prebuilts/gradle/CardEmulation/README.md b/prebuilts/gradle/CardEmulation/README.md
index 6162bd4..361208d 100644
--- a/prebuilts/gradle/CardEmulation/README.md
+++ b/prebuilts/gradle/CardEmulation/README.md
@@ -12,8 +12,8 @@
 Pre-requisites
 --------------
 
-- Android SDK v23
-- Android Build Tools v23.0.2
+- Android SDK 23
+- Android Build Tools v23.0.3
 - Android Support Repository
 
 Getting Started
@@ -37,7 +37,7 @@
 License
 -------
 
-Copyright 2014 The Android Open Source Project, Inc.
+Copyright 2016 The Android Open Source Project, Inc.
 
 Licensed to the Apache Software Foundation (ASF) under one or more contributor
 license agreements.  See the NOTICE file distributed with this work for
diff --git a/prebuilts/gradle/CardEmulation/gradle/wrapper/gradle-wrapper.properties b/prebuilts/gradle/CardEmulation/gradle/wrapper/gradle-wrapper.properties
index 07fc193..d570517 100644
--- a/prebuilts/gradle/CardEmulation/gradle/wrapper/gradle-wrapper.properties
+++ b/prebuilts/gradle/CardEmulation/gradle/wrapper/gradle-wrapper.properties
@@ -3,4 +3,4 @@
 distributionPath=wrapper/dists
 zipStoreBase=GRADLE_USER_HOME
 zipStorePath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-2.8-all.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-2.10-all.zip
diff --git a/prebuilts/gradle/CardReader/Application/build.gradle b/prebuilts/gradle/CardReader/Application/build.gradle
index 1b5df4e..bff8131 100644
--- a/prebuilts/gradle/CardReader/Application/build.gradle
+++ b/prebuilts/gradle/CardReader/Application/build.gradle
@@ -5,7 +5,7 @@
     }
 
     dependencies {
-        classpath 'com.android.tools.build:gradle:1.2.3'
+        classpath 'com.android.tools.build:gradle:2.1.2'
     }
 }
 
@@ -16,9 +16,10 @@
 }
 
 dependencies {
-    compile "com.android.support:support-v4:23.1.0"
-    compile "com.android.support:support-v13:23.1.0"
-    compile "com.android.support:cardview-v7:23.1.0"
+    compile "com.android.support:support-v4:24.0.0-beta1"
+    compile "com.android.support:support-v13:24.0.0-beta1"
+    compile "com.android.support:cardview-v7:24.0.0-beta1"
+    compile "com.android.support:appcompat-v7:24.0.0-beta1"
 }
 
 // The sample build uses multiple directories to
@@ -31,7 +32,7 @@
 
 android {
     compileSdkVersion 23
-    buildToolsVersion "23.0.2"
+    buildToolsVersion "23.0.3"
 
     defaultConfig {
         minSdkVersion 19
diff --git a/prebuilts/gradle/CardReader/README.md b/prebuilts/gradle/CardReader/README.md
index 8510b46..5df1123 100644
--- a/prebuilts/gradle/CardReader/README.md
+++ b/prebuilts/gradle/CardReader/README.md
@@ -13,8 +13,8 @@
 Pre-requisites
 --------------
 
-- Android SDK v23
-- Android Build Tools v23.0.2
+- Android SDK 23
+- Android Build Tools v23.0.3
 - Android Support Repository
 
 Getting Started
@@ -38,7 +38,7 @@
 License
 -------
 
-Copyright 2014 The Android Open Source Project, Inc.
+Copyright 2016 The Android Open Source Project, Inc.
 
 Licensed to the Apache Software Foundation (ASF) under one or more contributor
 license agreements.  See the NOTICE file distributed with this work for
diff --git a/prebuilts/gradle/CardReader/gradle/wrapper/gradle-wrapper.properties b/prebuilts/gradle/CardReader/gradle/wrapper/gradle-wrapper.properties
index 34ff29a..1d0dd57 100644
--- a/prebuilts/gradle/CardReader/gradle/wrapper/gradle-wrapper.properties
+++ b/prebuilts/gradle/CardReader/gradle/wrapper/gradle-wrapper.properties
@@ -3,4 +3,4 @@
 distributionPath=wrapper/dists
 zipStoreBase=GRADLE_USER_HOME
 zipStorePath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-2.8-all.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-2.10-all.zip
diff --git a/prebuilts/gradle/CardView/Application/build.gradle b/prebuilts/gradle/CardView/Application/build.gradle
index c78676f..7086fcd 100644
--- a/prebuilts/gradle/CardView/Application/build.gradle
+++ b/prebuilts/gradle/CardView/Application/build.gradle
@@ -5,7 +5,7 @@
     }
 
     dependencies {
-        classpath 'com.android.tools.build:gradle:1.2.3'
+        classpath 'com.android.tools.build:gradle:2.1.2'
     }
 }
 
@@ -16,7 +16,7 @@
 }
 
 dependencies {
-    compile 'com.android.support:cardview-v7:21.0.2'
+    compile 'com.android.support:cardview-v7:24.0.0-beta1'
 }
 
 // The sample build uses multiple directories to
@@ -29,7 +29,7 @@
 
 android {
     compileSdkVersion 21
-    buildToolsVersion "23.0.2"
+    buildToolsVersion "23.0.3"
 
     defaultConfig {
         minSdkVersion 21
diff --git a/prebuilts/gradle/CardView/README.md b/prebuilts/gradle/CardView/README.md
index d9b3d79..cf5ce5b 100644
--- a/prebuilts/gradle/CardView/README.md
+++ b/prebuilts/gradle/CardView/README.md
@@ -8,8 +8,8 @@
 Pre-requisites
 --------------
 
-- Android SDK v21
-- Android Build Tools v23.0.2
+- Android SDK 21
+- Android Build Tools v23.0.3
 - Android Support Repository
 
 Getting Started
@@ -33,7 +33,7 @@
 License
 -------
 
-Copyright 2014 The Android Open Source Project, Inc.
+Copyright 2016 The Android Open Source Project, Inc.
 
 Licensed to the Apache Software Foundation (ASF) under one or more contributor
 license agreements.  See the NOTICE file distributed with this work for
diff --git a/prebuilts/gradle/CardView/gradle/wrapper/gradle-wrapper.properties b/prebuilts/gradle/CardView/gradle/wrapper/gradle-wrapper.properties
index 5fd1493..711c6e1 100644
--- a/prebuilts/gradle/CardView/gradle/wrapper/gradle-wrapper.properties
+++ b/prebuilts/gradle/CardView/gradle/wrapper/gradle-wrapper.properties
@@ -3,4 +3,4 @@
 distributionPath=wrapper/dists
 zipStoreBase=GRADLE_USER_HOME
 zipStorePath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-2.8-all.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-2.10-all.zip
diff --git a/prebuilts/gradle/ClippingBasic/Application/build.gradle b/prebuilts/gradle/ClippingBasic/Application/build.gradle
index 3bffd32..aeece30 100644
--- a/prebuilts/gradle/ClippingBasic/Application/build.gradle
+++ b/prebuilts/gradle/ClippingBasic/Application/build.gradle
@@ -5,7 +5,7 @@
     }
 
     dependencies {
-        classpath 'com.android.tools.build:gradle:1.2.3'
+        classpath 'com.android.tools.build:gradle:2.1.2'
     }
 }
 
@@ -16,9 +16,10 @@
 }
 
 dependencies {
-    compile "com.android.support:support-v4:23.1.0"
-    compile "com.android.support:support-v13:23.1.0"
-    compile "com.android.support:cardview-v7:23.1.0"
+    compile "com.android.support:support-v4:24.0.0-beta1"
+    compile "com.android.support:support-v13:24.0.0-beta1"
+    compile "com.android.support:cardview-v7:24.0.0-beta1"
+    compile "com.android.support:appcompat-v7:24.0.0-beta1"
 }
 
 // The sample build uses multiple directories to
@@ -31,7 +32,7 @@
 
 android {
     compileSdkVersion 21
-    buildToolsVersion "23.0.2"
+    buildToolsVersion "23.0.3"
 
     defaultConfig {
         minSdkVersion 21
diff --git a/prebuilts/gradle/ClippingBasic/README.md b/prebuilts/gradle/ClippingBasic/README.md
index 61c44ad..c79e9f9 100644
--- a/prebuilts/gradle/ClippingBasic/README.md
+++ b/prebuilts/gradle/ClippingBasic/README.md
@@ -47,8 +47,8 @@
 Pre-requisites
 --------------
 
-- Android SDK v21
-- Android Build Tools v23.0.2
+- Android SDK 21
+- Android Build Tools v23.0.3
 - Android Support Repository
 
 Screenshots
@@ -77,7 +77,7 @@
 License
 -------
 
-Copyright 2014 The Android Open Source Project, Inc.
+Copyright 2016 The Android Open Source Project, Inc.
 
 Licensed to the Apache Software Foundation (ASF) under one or more contributor
 license agreements.  See the NOTICE file distributed with this work for
diff --git a/prebuilts/gradle/ClippingBasic/gradle/wrapper/gradle-wrapper.properties b/prebuilts/gradle/ClippingBasic/gradle/wrapper/gradle-wrapper.properties
index 07fc193..d570517 100644
--- a/prebuilts/gradle/ClippingBasic/gradle/wrapper/gradle-wrapper.properties
+++ b/prebuilts/gradle/ClippingBasic/gradle/wrapper/gradle-wrapper.properties
@@ -3,4 +3,4 @@
 distributionPath=wrapper/dists
 zipStoreBase=GRADLE_USER_HOME
 zipStorePath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-2.8-all.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-2.10-all.zip
diff --git a/prebuilts/gradle/ConfirmCredential/Application/build.gradle b/prebuilts/gradle/ConfirmCredential/Application/build.gradle
index de3e4f9..6a7bac7 100644
--- a/prebuilts/gradle/ConfirmCredential/Application/build.gradle
+++ b/prebuilts/gradle/ConfirmCredential/Application/build.gradle
@@ -5,7 +5,7 @@
     }
 
     dependencies {
-        classpath 'com.android.tools.build:gradle:1.2.3'
+        classpath 'com.android.tools.build:gradle:2.1.2'
     }
 }
 
@@ -16,9 +16,10 @@
 }
 
 dependencies {
-    compile "com.android.support:support-v4:23.1.0"
-    compile "com.android.support:support-v13:23.1.0"
-    compile "com.android.support:cardview-v7:23.1.0"
+    compile "com.android.support:support-v4:24.0.0-beta1"
+    compile "com.android.support:support-v13:24.0.0-beta1"
+    compile "com.android.support:cardview-v7:24.0.0-beta1"
+    compile "com.android.support:appcompat-v7:24.0.0-beta1"
 }
 
 // The sample build uses multiple directories to
@@ -31,7 +32,7 @@
 
 android {
     compileSdkVersion 23
-    buildToolsVersion "23.0.2"
+    buildToolsVersion "23.0.3"
 
     defaultConfig {
         minSdkVersion 23
diff --git a/prebuilts/gradle/ConfirmCredential/README.md b/prebuilts/gradle/ConfirmCredential/README.md
index 572a50b..c087bf2 100644
--- a/prebuilts/gradle/ConfirmCredential/README.md
+++ b/prebuilts/gradle/ConfirmCredential/README.md
@@ -30,8 +30,8 @@
 Pre-requisites
 --------------
 
-- Android SDK v23
-- Android Build Tools v23.0.2
+- Android SDK 23
+- Android Build Tools v23.0.3
 - Android Support Repository
 
 Screenshots
@@ -60,7 +60,7 @@
 License
 -------
 
-Copyright 2014 The Android Open Source Project, Inc.
+Copyright 2016 The Android Open Source Project, Inc.
 
 Licensed to the Apache Software Foundation (ASF) under one or more contributor
 license agreements.  See the NOTICE file distributed with this work for
diff --git a/prebuilts/gradle/ConfirmCredential/gradle/wrapper/gradle-wrapper.properties b/prebuilts/gradle/ConfirmCredential/gradle/wrapper/gradle-wrapper.properties
index 07fc193..03c59c2 100644
--- a/prebuilts/gradle/ConfirmCredential/gradle/wrapper/gradle-wrapper.properties
+++ b/prebuilts/gradle/ConfirmCredential/gradle/wrapper/gradle-wrapper.properties
@@ -3,4 +3,4 @@
 distributionPath=wrapper/dists
 zipStoreBase=GRADLE_USER_HOME
 zipStorePath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-2.8-all.zip
+distributionUrl=http\://services.gradle.org/distributions/gradle-2.10-bin.zip
diff --git a/prebuilts/gradle/CustomChoiceList/Application/build.gradle b/prebuilts/gradle/CustomChoiceList/Application/build.gradle
index 6ea7851..106dde3 100644
--- a/prebuilts/gradle/CustomChoiceList/Application/build.gradle
+++ b/prebuilts/gradle/CustomChoiceList/Application/build.gradle
@@ -5,7 +5,7 @@
     }
 
     dependencies {
-        classpath 'com.android.tools.build:gradle:1.2.3'
+        classpath 'com.android.tools.build:gradle:2.1.2'
     }
 }
 
@@ -16,7 +16,8 @@
 }
 
 dependencies {
-    compile "com.android.support:support-v4:23.1.0"
+    compile "com.android.support:support-v4:24.0.0-beta1"
+    compile "com.android.support:appcompat-v7:24.0.0-beta1"
 }
 
 // The sample build uses multiple directories to
@@ -29,7 +30,7 @@
 
 android {
     compileSdkVersion 23
-    buildToolsVersion "23.0.2"
+    buildToolsVersion "23.0.3"
 
     defaultConfig {
         minSdkVersion 4
diff --git a/prebuilts/gradle/CustomChoiceList/README.md b/prebuilts/gradle/CustomChoiceList/README.md
index 805a5d5..162d93e 100644
--- a/prebuilts/gradle/CustomChoiceList/README.md
+++ b/prebuilts/gradle/CustomChoiceList/README.md
@@ -41,8 +41,8 @@
 Pre-requisites
 --------------
 
-- Android SDK v23
-- Android Build Tools v23.0.2
+- Android SDK 23
+- Android Build Tools v23.0.3
 - Android Support Repository
 
 Screenshots
@@ -71,7 +71,7 @@
 License
 -------
 
-Copyright 2014 The Android Open Source Project, Inc.
+Copyright 2016 The Android Open Source Project, Inc.
 
 Licensed to the Apache Software Foundation (ASF) under one or more contributor
 license agreements.  See the NOTICE file distributed with this work for
diff --git a/prebuilts/gradle/CustomChoiceList/gradle/wrapper/gradle-wrapper.properties b/prebuilts/gradle/CustomChoiceList/gradle/wrapper/gradle-wrapper.properties
index 07fc193..d570517 100644
--- a/prebuilts/gradle/CustomChoiceList/gradle/wrapper/gradle-wrapper.properties
+++ b/prebuilts/gradle/CustomChoiceList/gradle/wrapper/gradle-wrapper.properties
@@ -3,4 +3,4 @@
 distributionPath=wrapper/dists
 zipStoreBase=GRADLE_USER_HOME
 zipStorePath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-2.8-all.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-2.10-all.zip
diff --git a/prebuilts/gradle/CustomNotifications/Application/build.gradle b/prebuilts/gradle/CustomNotifications/Application/build.gradle
index 8592c25..b2fa9ed 100644
--- a/prebuilts/gradle/CustomNotifications/Application/build.gradle
+++ b/prebuilts/gradle/CustomNotifications/Application/build.gradle
@@ -5,7 +5,7 @@
     }
 
     dependencies {
-        classpath 'com.android.tools.build:gradle:1.2.3'
+        classpath 'com.android.tools.build:gradle:2.1.2'
     }
 }
 
@@ -16,9 +16,10 @@
 }
 
 dependencies {
-    compile "com.android.support:support-v4:23.1.0"
-    compile "com.android.support:support-v13:23.1.0"
-    compile "com.android.support:cardview-v7:23.1.0"
+    compile "com.android.support:support-v4:24.0.0-beta1"
+    compile "com.android.support:support-v13:24.0.0-beta1"
+    compile "com.android.support:cardview-v7:24.0.0-beta1"
+    compile "com.android.support:appcompat-v7:24.0.0-beta1"
 }
 
 // The sample build uses multiple directories to
@@ -31,7 +32,7 @@
 
 android {
     compileSdkVersion 23
-    buildToolsVersion "23.0.2"
+    buildToolsVersion "23.0.3"
 
     defaultConfig {
         minSdkVersion 16
diff --git a/prebuilts/gradle/CustomNotifications/README.md b/prebuilts/gradle/CustomNotifications/README.md
index 03d1dec..0396198 100644
--- a/prebuilts/gradle/CustomNotifications/README.md
+++ b/prebuilts/gradle/CustomNotifications/README.md
@@ -25,8 +25,8 @@
 Pre-requisites
 --------------
 
-- Android SDK v23
-- Android Build Tools v23.0.2
+- Android SDK 23
+- Android Build Tools v23.0.3
 - Android Support Repository
 
 Screenshots
@@ -55,7 +55,7 @@
 License
 -------
 
-Copyright 2014 The Android Open Source Project, Inc.
+Copyright 2016 The Android Open Source Project, Inc.
 
 Licensed to the Apache Software Foundation (ASF) under one or more contributor
 license agreements.  See the NOTICE file distributed with this work for
diff --git a/prebuilts/gradle/CustomNotifications/gradle/wrapper/gradle-wrapper.properties b/prebuilts/gradle/CustomNotifications/gradle/wrapper/gradle-wrapper.properties
index 07fc193..d570517 100644
--- a/prebuilts/gradle/CustomNotifications/gradle/wrapper/gradle-wrapper.properties
+++ b/prebuilts/gradle/CustomNotifications/gradle/wrapper/gradle-wrapper.properties
@@ -3,4 +3,4 @@
 distributionPath=wrapper/dists
 zipStoreBase=GRADLE_USER_HOME
 zipStorePath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-2.8-all.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-2.10-all.zip
diff --git a/prebuilts/gradle/CustomTransition/Application/build.gradle b/prebuilts/gradle/CustomTransition/Application/build.gradle
index 1b5df4e..bff8131 100644
--- a/prebuilts/gradle/CustomTransition/Application/build.gradle
+++ b/prebuilts/gradle/CustomTransition/Application/build.gradle
@@ -5,7 +5,7 @@
     }
 
     dependencies {
-        classpath 'com.android.tools.build:gradle:1.2.3'
+        classpath 'com.android.tools.build:gradle:2.1.2'
     }
 }
 
@@ -16,9 +16,10 @@
 }
 
 dependencies {
-    compile "com.android.support:support-v4:23.1.0"
-    compile "com.android.support:support-v13:23.1.0"
-    compile "com.android.support:cardview-v7:23.1.0"
+    compile "com.android.support:support-v4:24.0.0-beta1"
+    compile "com.android.support:support-v13:24.0.0-beta1"
+    compile "com.android.support:cardview-v7:24.0.0-beta1"
+    compile "com.android.support:appcompat-v7:24.0.0-beta1"
 }
 
 // The sample build uses multiple directories to
@@ -31,7 +32,7 @@
 
 android {
     compileSdkVersion 23
-    buildToolsVersion "23.0.2"
+    buildToolsVersion "23.0.3"
 
     defaultConfig {
         minSdkVersion 19
diff --git a/prebuilts/gradle/CustomTransition/README.md b/prebuilts/gradle/CustomTransition/README.md
index 346767c..81253ac 100644
--- a/prebuilts/gradle/CustomTransition/README.md
+++ b/prebuilts/gradle/CustomTransition/README.md
@@ -32,8 +32,8 @@
 Pre-requisites
 --------------
 
-- Android SDK v23
-- Android Build Tools v23.0.2
+- Android SDK 23
+- Android Build Tools v23.0.3
 - Android Support Repository
 
 Screenshots
@@ -62,7 +62,7 @@
 License
 -------
 
-Copyright 2014 The Android Open Source Project, Inc.
+Copyright 2016 The Android Open Source Project, Inc.
 
 Licensed to the Apache Software Foundation (ASF) under one or more contributor
 license agreements.  See the NOTICE file distributed with this work for
diff --git a/prebuilts/gradle/CustomTransition/gradle/wrapper/gradle-wrapper.properties b/prebuilts/gradle/CustomTransition/gradle/wrapper/gradle-wrapper.properties
index fb05029..5e85628 100644
--- a/prebuilts/gradle/CustomTransition/gradle/wrapper/gradle-wrapper.properties
+++ b/prebuilts/gradle/CustomTransition/gradle/wrapper/gradle-wrapper.properties
@@ -3,4 +3,4 @@
 distributionPath=wrapper/dists
 zipStoreBase=GRADLE_USER_HOME
 zipStorePath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-2.8-all.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-2.10-all.zip
diff --git a/prebuilts/gradle/DataLayer/Application/build.gradle b/prebuilts/gradle/DataLayer/Application/build.gradle
index fb39f01..8fd521d 100644
--- a/prebuilts/gradle/DataLayer/Application/build.gradle
+++ b/prebuilts/gradle/DataLayer/Application/build.gradle
@@ -5,7 +5,7 @@
     }
 
     dependencies {
-        classpath 'com.android.tools.build:gradle:1.2.3'
+        classpath 'com.android.tools.build:gradle:2.1.2'
     }
 }
 
@@ -16,11 +16,12 @@
 }
 
 dependencies {
-    compile "com.android.support:support-v4:23.1.0"
-    compile "com.android.support:support-v13:23.1.0"
-    compile "com.android.support:cardview-v7:23.1.0"
+    compile "com.android.support:support-v4:24.0.0-beta1"
+    compile "com.android.support:support-v13:24.0.0-beta1"
+    compile "com.android.support:cardview-v7:24.0.0-beta1"
+    compile "com.android.support:appcompat-v7:24.0.0-beta1"
     compile 'com.google.android.gms:play-services-wearable:8.4.0'
-    compile 'com.android.support:support-v13:23.1.1'
+    compile 'com.android.support:support-v13:24.0.0-beta1'
     wearApp project(':Wearable')
 }
 
@@ -34,7 +35,7 @@
 
 android {
     compileSdkVersion 23
-    buildToolsVersion "23.0.2"
+    buildToolsVersion "23.0.3"
 
     defaultConfig {
         minSdkVersion 18
diff --git a/prebuilts/gradle/DataLayer/Application/src/main/java/com/example/android/wearable/datalayer/MainActivity.java b/prebuilts/gradle/DataLayer/Application/src/main/java/com/example/android/wearable/datalayer/MainActivity.java
index e559db6..ca86d7a 100644
--- a/prebuilts/gradle/DataLayer/Application/src/main/java/com/example/android/wearable/datalayer/MainActivity.java
+++ b/prebuilts/gradle/DataLayer/Application/src/main/java/com/example/android/wearable/datalayer/MainActivity.java
@@ -22,9 +22,9 @@
 import android.content.IntentSender;
 import android.content.pm.PackageManager;
 import android.graphics.Bitmap;
+import android.net.Uri;
 import android.os.AsyncTask;
 import android.os.Bundle;
-import android.os.Handler;
 import android.provider.MediaStore;
 import android.util.Log;
 import android.view.LayoutInflater;
@@ -41,8 +41,9 @@
 import com.google.android.gms.common.api.GoogleApiClient.ConnectionCallbacks;
 import com.google.android.gms.common.api.GoogleApiClient.OnConnectionFailedListener;
 import com.google.android.gms.common.api.ResultCallback;
-import com.google.android.gms.common.data.FreezableUtils;
 import com.google.android.gms.wearable.Asset;
+import com.google.android.gms.wearable.CapabilityApi;
+import com.google.android.gms.wearable.CapabilityInfo;
 import com.google.android.gms.wearable.DataApi;
 import com.google.android.gms.wearable.DataApi.DataItemResult;
 import com.google.android.gms.wearable.DataEvent;
@@ -61,7 +62,6 @@
 import java.util.Collection;
 import java.util.Date;
 import java.util.HashSet;
-import java.util.List;
 import java.util.concurrent.ScheduledExecutorService;
 import java.util.concurrent.ScheduledFuture;
 import java.util.concurrent.ScheduledThreadPoolExecutor;
@@ -72,17 +72,20 @@
  * item every second while it is open. Also allows user to take a photo and send that as an asset
  * to the paired wearable.
  */
-public class MainActivity extends Activity implements DataApi.DataListener,
-        MessageApi.MessageListener, NodeApi.NodeListener, ConnectionCallbacks,
+public class MainActivity extends Activity implements
+        CapabilityApi.CapabilityListener,
+        MessageApi.MessageListener,
+        DataApi.DataListener,
+        ConnectionCallbacks,
         OnConnectionFailedListener {
 
     private static final String TAG = "MainActivity";
 
-    /**
-     * Request code for launching the Intent to resolve Google Play services errors.
-     */
+    //Request code for launching the Intent to resolve Google Play services errors.
     private static final int REQUEST_RESOLVE_ERROR = 1000;
 
+    private static final int REQUEST_IMAGE_CAPTURE = 1;
+
     private static final String START_ACTIVITY_PATH = "/start-activity";
     private static final String COUNT_PATH = "/count";
     private static final String IMAGE_PATH = "/image";
@@ -100,18 +103,14 @@
     private View mStartActivityBtn;
 
     private DataItemAdapter mDataItemListAdapter;
-    private Handler mHandler;
 
     // Send DataItems.
     private ScheduledExecutorService mGeneratorExecutor;
     private ScheduledFuture<?> mDataItemGeneratorFuture;
 
-    static final int REQUEST_IMAGE_CAPTURE = 1;
-
     @Override
-    public void onCreate(Bundle b) {
-        super.onCreate(b);
-        mHandler = new Handler();
+    public void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
         LOGD(TAG, "onCreate");
         mCameraSupported = getPackageManager().hasSystemFeature(PackageManager.FEATURE_CAMERA);
         setContentView(R.layout.main_activity);
@@ -131,15 +130,6 @@
     }
 
     @Override
-    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
-        if (requestCode == REQUEST_IMAGE_CAPTURE && resultCode == RESULT_OK) {
-            Bundle extras = data.getExtras();
-            mImageBitmap = (Bitmap) extras.get("data");
-            mThumbView.setImageBitmap(mImageBitmap);
-        }
-    }
-
-    @Override
     protected void onStart() {
         super.onStart();
         if (!mResolvingError) {
@@ -162,16 +152,25 @@
 
     @Override
     protected void onStop() {
-        if (!mResolvingError) {
+        if (!mResolvingError && (mGoogleApiClient != null) && (mGoogleApiClient.isConnected())) {
             Wearable.DataApi.removeListener(mGoogleApiClient, this);
             Wearable.MessageApi.removeListener(mGoogleApiClient, this);
-            Wearable.NodeApi.removeListener(mGoogleApiClient, this);
+            Wearable.CapabilityApi.removeListener(mGoogleApiClient, this);
             mGoogleApiClient.disconnect();
         }
         super.onStop();
     }
 
-    @Override //ConnectionCallbacks
+    @Override
+    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
+        if (requestCode == REQUEST_IMAGE_CAPTURE && resultCode == RESULT_OK) {
+            Bundle extras = data.getExtras();
+            mImageBitmap = (Bitmap) extras.get("data");
+            mThumbView.setImageBitmap(mImageBitmap);
+        }
+    }
+
+    @Override
     public void onConnected(Bundle connectionHint) {
         LOGD(TAG, "Google API Client was connected");
         mResolvingError = false;
@@ -179,157 +178,100 @@
         mSendPhotoBtn.setEnabled(mCameraSupported);
         Wearable.DataApi.addListener(mGoogleApiClient, this);
         Wearable.MessageApi.addListener(mGoogleApiClient, this);
-        Wearable.NodeApi.addListener(mGoogleApiClient, this);
+        Wearable.CapabilityApi.addListener(
+                mGoogleApiClient, this, Uri.parse("wear://"), CapabilityApi.FILTER_REACHABLE);
     }
 
-    @Override //ConnectionCallbacks
+    @Override
     public void onConnectionSuspended(int cause) {
         LOGD(TAG, "Connection to Google API client was suspended");
         mStartActivityBtn.setEnabled(false);
         mSendPhotoBtn.setEnabled(false);
     }
 
-    @Override //OnConnectionFailedListener
+    @Override
     public void onConnectionFailed(ConnectionResult result) {
-        if (mResolvingError) {
-            // Already attempting to resolve an error.
-            return;
-        } else if (result.hasResolution()) {
-            try {
-                mResolvingError = true;
-                result.startResolutionForResult(this, REQUEST_RESOLVE_ERROR);
-            } catch (IntentSender.SendIntentException e) {
-                // There was an error with the resolution intent. Try again.
-                mGoogleApiClient.connect();
+        if (!mResolvingError) {
+
+            if (result.hasResolution()) {
+                try {
+                    mResolvingError = true;
+                    result.startResolutionForResult(this, REQUEST_RESOLVE_ERROR);
+                } catch (IntentSender.SendIntentException e) {
+                    // There was an error with the resolution intent. Try again.
+                    mGoogleApiClient.connect();
+                }
+            } else {
+                Log.e(TAG, "Connection to Google API client has failed");
+                mResolvingError = false;
+                mStartActivityBtn.setEnabled(false);
+                mSendPhotoBtn.setEnabled(false);
+                Wearable.DataApi.removeListener(mGoogleApiClient, this);
+                Wearable.MessageApi.removeListener(mGoogleApiClient, this);
+                Wearable.CapabilityApi.removeListener(mGoogleApiClient, this);
             }
-        } else {
-            Log.e(TAG, "Connection to Google API client has failed");
-            mResolvingError = false;
-            mStartActivityBtn.setEnabled(false);
-            mSendPhotoBtn.setEnabled(false);
-            Wearable.DataApi.removeListener(mGoogleApiClient, this);
-            Wearable.MessageApi.removeListener(mGoogleApiClient, this);
-            Wearable.NodeApi.removeListener(mGoogleApiClient, this);
         }
     }
 
-    @Override //DataListener
+    @Override
     public void onDataChanged(DataEventBuffer dataEvents) {
         LOGD(TAG, "onDataChanged: " + dataEvents);
-        // Need to freeze the dataEvents so they will exist later on the UI thread
-        final List<DataEvent> events = FreezableUtils.freezeIterable(dataEvents);
-        runOnUiThread(new Runnable() {
-            @Override
-            public void run() {
-                for (DataEvent event : events) {
-                    if (event.getType() == DataEvent.TYPE_CHANGED) {
-                        mDataItemListAdapter.add(
-                                new Event("DataItem Changed", event.getDataItem().toString()));
-                    } else if (event.getType() == DataEvent.TYPE_DELETED) {
-                        mDataItemListAdapter.add(
-                                new Event("DataItem Deleted", event.getDataItem().toString()));
-                    }
-                }
+
+        for (DataEvent event : dataEvents) {
+            if (event.getType() == DataEvent.TYPE_CHANGED) {
+                mDataItemListAdapter.add(
+                        new Event("DataItem Changed", event.getDataItem().toString()));
+            } else if (event.getType() == DataEvent.TYPE_DELETED) {
+                mDataItemListAdapter.add(
+                        new Event("DataItem Deleted", event.getDataItem().toString()));
             }
-        });
+        }
     }
 
-    @Override //MessageListener
+    @Override
     public void onMessageReceived(final MessageEvent messageEvent) {
-        LOGD(TAG, "onMessageReceived() A message from watch was received:" + messageEvent
-                .getRequestId() + " " + messageEvent.getPath());
-        mHandler.post(new Runnable() {
-            @Override
-            public void run() {
-                mDataItemListAdapter.add(new Event("Message from watch", messageEvent.toString()));
-            }
-        });
+        LOGD(TAG, "onMessageReceived() A message from watch was received:"
+                + messageEvent.getRequestId() + " " + messageEvent.getPath());
 
+        mDataItemListAdapter.add(new Event("Message from watch", messageEvent.toString()));
     }
 
-    @Override //NodeListener
-    public void onPeerConnected(final Node peer) {
-        LOGD(TAG, "onPeerConnected: " + peer);
-        mHandler.post(new Runnable() {
-            @Override
-            public void run() {
-                mDataItemListAdapter.add(new Event("Connected", peer.toString()));
-            }
-        });
+    @Override
+    public void onCapabilityChanged(final CapabilityInfo capabilityInfo) {
+        LOGD(TAG, "onCapabilityChanged: " + capabilityInfo);
 
-    }
-
-    @Override //NodeListener
-    public void onPeerDisconnected(final Node peer) {
-        LOGD(TAG, "onPeerDisconnected: " + peer);
-        mHandler.post(new Runnable() {
-            @Override
-            public void run() {
-                mDataItemListAdapter.add(new Event("Disconnected", peer.toString()));
-            }
-        });
+        mDataItemListAdapter.add(new Event("onCapabilityChanged", capabilityInfo.toString()));
     }
 
     /**
-     * A View Adapter for presenting the Event objects in a list
+     * Sets up UI components and their callback handlers.
      */
-    private static class DataItemAdapter extends ArrayAdapter<Event> {
+    private void setupViews() {
+        mSendPhotoBtn = (Button) findViewById(R.id.sendPhoto);
+        mThumbView = (ImageView) findViewById(R.id.imageView);
+        mDataItemList = (ListView) findViewById(R.id.data_item_list);
+        mStartActivityBtn = findViewById(R.id.start_wearable_activity);
+    }
 
-        private final Context mContext;
+    public void onTakePhotoClick(View view) {
+        dispatchTakePictureIntent();
+    }
 
-        public DataItemAdapter(Context context, int unusedResource) {
-            super(context, unusedResource);
-            mContext = context;
-        }
-
-        @Override
-        public View getView(int position, View convertView, ViewGroup parent) {
-            ViewHolder holder;
-            if (convertView == null) {
-                holder = new ViewHolder();
-                LayoutInflater inflater = (LayoutInflater) mContext.getSystemService(
-                        Context.LAYOUT_INFLATER_SERVICE);
-                convertView = inflater.inflate(android.R.layout.two_line_list_item, null);
-                convertView.setTag(holder);
-                holder.text1 = (TextView) convertView.findViewById(android.R.id.text1);
-                holder.text2 = (TextView) convertView.findViewById(android.R.id.text2);
-            } else {
-                holder = (ViewHolder) convertView.getTag();
-            }
-            Event event = getItem(position);
-            holder.text1.setText(event.title);
-            holder.text2.setText(event.text);
-            return convertView;
-        }
-
-        private class ViewHolder {
-
-            TextView text1;
-            TextView text2;
+    public void onSendPhotoClick(View view) {
+        if (null != mImageBitmap && mGoogleApiClient.isConnected()) {
+            sendPhoto(toAsset(mImageBitmap));
         }
     }
 
-    private class Event {
+    /**
+     * Sends an RPC to start a fullscreen Activity on the wearable.
+     */
+    public void onStartWearableActivityClick(View view) {
+        LOGD(TAG, "Generating RPC");
 
-        String title;
-        String text;
-
-        public Event(String title, String text) {
-            this.title = title;
-            this.text = text;
-        }
-    }
-
-    private Collection<String> getNodes() {
-        HashSet<String> results = new HashSet<>();
-        NodeApi.GetConnectedNodesResult nodes =
-                Wearable.NodeApi.getConnectedNodes(mGoogleApiClient).await();
-
-        for (Node node : nodes.getNodes()) {
-            results.add(node.getId());
-        }
-
-        return results;
+        // Trigger an AsyncTask that will query for a list of connected nodes and send a
+        // "start-activity" message to each connected node.
+        new StartWearableActivityTask().execute();
     }
 
     private void sendStartActivityMessage(String node) {
@@ -347,61 +289,6 @@
         );
     }
 
-    private class StartWearableActivityTask extends AsyncTask<Void, Void, Void> {
-
-        @Override
-        protected Void doInBackground(Void... args) {
-            Collection<String> nodes = getNodes();
-            for (String node : nodes) {
-                sendStartActivityMessage(node);
-            }
-            return null;
-        }
-    }
-
-    /**
-     * Sends an RPC to start a fullscreen Activity on the wearable.
-     */
-    public void onStartWearableActivityClick(View view) {
-        LOGD(TAG, "Generating RPC");
-
-        // Trigger an AsyncTask that will query for a list of connected nodes and send a
-        // "start-activity" message to each connected node.
-        new StartWearableActivityTask().execute();
-    }
-
-    /**
-     * Generates a DataItem based on an incrementing count.
-     */
-    private class DataItemGenerator implements Runnable {
-
-        private int count = 0;
-
-        @Override
-        public void run() {
-            PutDataMapRequest putDataMapRequest = PutDataMapRequest.create(COUNT_PATH);
-            putDataMapRequest.getDataMap().putInt(COUNT_KEY, count++);
-            putDataMapRequest.setUrgent();
-            PutDataRequest request = putDataMapRequest.asPutDataRequest();
-            request.setUrgent();
-
-            LOGD(TAG, "Generating DataItem: " + request);
-            if (!mGoogleApiClient.isConnected()) {
-                return;
-            }
-            Wearable.DataApi.putDataItem(mGoogleApiClient, request)
-                    .setResultCallback(new ResultCallback<DataItemResult>() {
-                        @Override
-                        public void onResult(DataItemResult dataItemResult) {
-                            if (!dataItemResult.getStatus().isSuccess()) {
-                                Log.e(TAG, "ERROR: failed to putDataItem, status code: "
-                                        + dataItemResult.getStatus().getStatusCode());
-                            }
-                        }
-                    });
-        }
-    }
-
     /**
      * Dispatches an {@link android.content.Intent} to take a photo. Result will be returned back
      * in onActivityResult().
@@ -437,7 +324,7 @@
     }
 
     /**
-     * Sends the asset that was created form the photo we took by adding it to the Data Item store.
+     * Sends the asset that was created from the photo we took by adding it to the Data Item store.
      */
     private void sendPhoto(Asset asset) {
         PutDataMapRequest dataMap = PutDataMapRequest.create(IMAGE_PATH);
@@ -454,27 +341,18 @@
                                 .isSuccess());
                     }
                 });
-
     }
 
-    public void onTakePhotoClick(View view) {
-        dispatchTakePictureIntent();
-    }
+    private Collection<String> getNodes() {
+        HashSet<String> results = new HashSet<>();
+        NodeApi.GetConnectedNodesResult nodes =
+                Wearable.NodeApi.getConnectedNodes(mGoogleApiClient).await();
 
-    public void onSendPhotoClick(View view) {
-        if (null != mImageBitmap && mGoogleApiClient.isConnected()) {
-            sendPhoto(toAsset(mImageBitmap));
+        for (Node node : nodes.getNodes()) {
+            results.add(node.getId());
         }
-    }
 
-    /**
-     * Sets up UI components and their callback handlers.
-     */
-    private void setupViews() {
-        mSendPhotoBtn = (Button) findViewById(R.id.sendPhoto);
-        mThumbView = (ImageView) findViewById(R.id.imageView);
-        mDataItemList = (ListView) findViewById(R.id.data_item_list);
-        mStartActivityBtn = findViewById(R.id.start_wearable_activity);
+        return results;
     }
 
     /**
@@ -486,4 +364,96 @@
         }
     }
 
-}
+    /**
+     * A View Adapter for presenting the Event objects in a list
+     */
+    private static class DataItemAdapter extends ArrayAdapter<Event> {
+
+        private final Context mContext;
+
+        public DataItemAdapter(Context context, int unusedResource) {
+            super(context, unusedResource);
+            mContext = context;
+        }
+
+        @Override
+        public View getView(int position, View convertView, ViewGroup parent) {
+            ViewHolder holder;
+            if (convertView == null) {
+                holder = new ViewHolder();
+                LayoutInflater inflater = (LayoutInflater) mContext.getSystemService(
+                        Context.LAYOUT_INFLATER_SERVICE);
+                convertView = inflater.inflate(android.R.layout.two_line_list_item, null);
+                convertView.setTag(holder);
+                holder.text1 = (TextView) convertView.findViewById(android.R.id.text1);
+                holder.text2 = (TextView) convertView.findViewById(android.R.id.text2);
+            } else {
+                holder = (ViewHolder) convertView.getTag();
+            }
+            Event event = getItem(position);
+            holder.text1.setText(event.title);
+            holder.text2.setText(event.text);
+            return convertView;
+        }
+
+        private class ViewHolder {
+            TextView text1;
+            TextView text2;
+        }
+    }
+
+    private class Event {
+
+        String title;
+        String text;
+
+        public Event(String title, String text) {
+            this.title = title;
+            this.text = text;
+        }
+    }
+
+    private class StartWearableActivityTask extends AsyncTask<Void, Void, Void> {
+
+        @Override
+        protected Void doInBackground(Void... args) {
+            Collection<String> nodes = getNodes();
+            for (String node : nodes) {
+                sendStartActivityMessage(node);
+            }
+            return null;
+        }
+    }
+
+    /**
+     * Generates a DataItem based on an incrementing count.
+     */
+    private class DataItemGenerator implements Runnable {
+
+        private int count = 0;
+
+        @Override
+        public void run() {
+            PutDataMapRequest putDataMapRequest = PutDataMapRequest.create(COUNT_PATH);
+            putDataMapRequest.getDataMap().putInt(COUNT_KEY, count++);
+
+            PutDataRequest request = putDataMapRequest.asPutDataRequest();
+            request.setUrgent();
+
+            LOGD(TAG, "Generating DataItem: " + request);
+            if (!mGoogleApiClient.isConnected()) {
+                return;
+            }
+            Wearable.DataApi.putDataItem(mGoogleApiClient, request)
+                    .setResultCallback(new ResultCallback<DataItemResult>() {
+                        @Override
+                        public void onResult(DataItemResult dataItemResult) {
+                            if (!dataItemResult.getStatus().isSuccess()) {
+                                Log.e(TAG, "ERROR: failed to putDataItem, status code: "
+                                        + dataItemResult.getStatus().getStatusCode());
+                            }
+                        }
+                    });
+        }
+    }
+}
\ No newline at end of file
diff --git a/prebuilts/gradle/DataLayer/README.md b/prebuilts/gradle/DataLayer/README.md
index d8bd5a4..688fcb4 100644
--- a/prebuilts/gradle/DataLayer/README.md
+++ b/prebuilts/gradle/DataLayer/README.md
@@ -27,8 +27,8 @@
 Pre-requisites
 --------------
 
-- Android SDK v23
-- Android Build Tools v23.0.2
+- Android SDK 23
+- Android Build Tools v23.0.3
 - Android Support Repository
 
 Screenshots
@@ -57,7 +57,7 @@
 License
 -------
 
-Copyright 2014 The Android Open Source Project, Inc.
+Copyright 2016 The Android Open Source Project, Inc.
 
 Licensed to the Apache Software Foundation (ASF) under one or more contributor
 license agreements.  See the NOTICE file distributed with this work for
diff --git a/prebuilts/gradle/DataLayer/Wearable/build.gradle b/prebuilts/gradle/DataLayer/Wearable/build.gradle
index cb1382e..6170762 100644
--- a/prebuilts/gradle/DataLayer/Wearable/build.gradle
+++ b/prebuilts/gradle/DataLayer/Wearable/build.gradle
@@ -5,7 +5,7 @@
     }
 
     dependencies {
-        classpath 'com.android.tools.build:gradle:1.2.3'
+        classpath 'com.android.tools.build:gradle:2.1.2'
     }
 }
 
@@ -18,7 +18,7 @@
 
 
     compile 'com.google.android.gms:play-services-wearable:8.4.0'
-    compile 'com.android.support:support-v13:23.3.0'
+    compile 'com.android.support:support-v13:24.0.0-beta1'
 
     compile 'com.google.android.support:wearable:1.4.0'
 
@@ -35,7 +35,7 @@
 android {
     compileSdkVersion 23
 
-    buildToolsVersion "23.0.2"
+    buildToolsVersion "23.0.3"
 
     defaultConfig {
         versionCode 1
diff --git a/prebuilts/gradle/DataLayer/Wearable/src/main/AndroidManifest.xml b/prebuilts/gradle/DataLayer/Wearable/src/main/AndroidManifest.xml
index 5567365..6608bb7 100644
--- a/prebuilts/gradle/DataLayer/Wearable/src/main/AndroidManifest.xml
+++ b/prebuilts/gradle/DataLayer/Wearable/src/main/AndroidManifest.xml
@@ -18,7 +18,7 @@
         package="com.example.android.wearable.datalayer" >
 
     <uses-sdk android:minSdkVersion="20"
-              android:targetSdkVersion="22" />
+              android:targetSdkVersion="23" />
 
     <uses-feature android:name="android.hardware.type.watch" />
 
@@ -35,10 +35,15 @@
         <service
                 android:name=".DataLayerListenerService" >
             <intent-filter>
-                <action android:name="com.google.android.gms.wearable.BIND_LISTENER" />
+                <!-- listeners receive events that match the action and data filters -->
+                <action android:name="com.google.android.gms.wearable.DATA_CHANGED" />
+                <data android:scheme="wear" android:host="*" android:pathPrefix="/count"/>
+            </intent-filter>
+            <intent-filter>
+                <action android:name="com.google.android.gms.wearable.MESSAGE_RECEIVED" />
+                <data android:scheme="wear" android:host="*" android:pathPrefix="/start-activity"/>
             </intent-filter>
         </service>
-
         <activity
             android:name=".MainActivity"
             android:label="@string/app_name">
@@ -52,4 +57,4 @@
             </intent-filter>
         </activity>
     </application>
-</manifest>
+</manifest>
\ No newline at end of file
diff --git a/prebuilts/gradle/DataLayer/Wearable/src/main/java/com/example/android/wearable/datalayer/DataLayerListenerService.java b/prebuilts/gradle/DataLayer/Wearable/src/main/java/com/example/android/wearable/datalayer/DataLayerListenerService.java
index 67dcef9..020cd15 100644
--- a/prebuilts/gradle/DataLayer/Wearable/src/main/java/com/example/android/wearable/datalayer/DataLayerListenerService.java
+++ b/prebuilts/gradle/DataLayer/Wearable/src/main/java/com/example/android/wearable/datalayer/DataLayerListenerService.java
@@ -25,11 +25,9 @@
 import com.google.android.gms.wearable.DataEvent;
 import com.google.android.gms.wearable.DataEventBuffer;
 import com.google.android.gms.wearable.MessageEvent;
-import com.google.android.gms.wearable.Node;
 import com.google.android.gms.wearable.Wearable;
 import com.google.android.gms.wearable.WearableListenerService;
 
-import java.util.List;
 import java.util.concurrent.TimeUnit;
 
 /**
@@ -37,7 +35,7 @@
  */
 public class DataLayerListenerService extends WearableListenerService {
 
-    private static final String TAG = "DataLayerListenerServic";
+    private static final String TAG = "DataLayerService";
 
     private static final String START_ACTIVITY_PATH = "/start-activity";
     private static final String DATA_ITEM_RECEIVED_PATH = "/data-item-received";
@@ -98,19 +96,9 @@
         }
     }
 
-    @Override
-    public void onPeerConnected(Node peer) {
-        LOGD(TAG, "onPeerConnected: " + peer);
-    }
-
-    @Override
-    public void onPeerDisconnected(Node peer) {
-        LOGD(TAG, "onPeerDisconnected: " + peer);
-    }
-
     public static void LOGD(final String tag, String message) {
         if (Log.isLoggable(tag, Log.DEBUG)) {
             Log.d(tag, message);
         }
     }
-}
+}
\ No newline at end of file
diff --git a/prebuilts/gradle/DataLayer/Wearable/src/main/java/com/example/android/wearable/datalayer/MainActivity.java b/prebuilts/gradle/DataLayer/Wearable/src/main/java/com/example/android/wearable/datalayer/MainActivity.java
index b3cb253..402912f 100644
--- a/prebuilts/gradle/DataLayer/Wearable/src/main/java/com/example/android/wearable/datalayer/MainActivity.java
+++ b/prebuilts/gradle/DataLayer/Wearable/src/main/java/com/example/android/wearable/datalayer/MainActivity.java
@@ -23,9 +23,9 @@
 import android.app.FragmentManager;
 import android.graphics.Bitmap;
 import android.graphics.BitmapFactory;
+import android.net.Uri;
 import android.os.AsyncTask;
 import android.os.Bundle;
-import android.os.Handler;
 import android.support.wearable.view.DotsPageIndicator;
 import android.support.wearable.view.FragmentGridPagerAdapter;
 import android.support.wearable.view.GridViewPager;
@@ -54,7 +54,6 @@
 import com.google.android.gms.wearable.MessageApi;
 import com.google.android.gms.wearable.MessageEvent;
 import com.google.android.gms.wearable.Node;
-import com.google.android.gms.wearable.NodeApi;
 import com.google.android.gms.wearable.Wearable;
 
 import java.io.InputStream;
@@ -78,9 +77,12 @@
  * </li>
  * </ul>
  */
-public class MainActivity extends Activity implements ConnectionCallbacks,
-        OnConnectionFailedListener, DataApi.DataListener, MessageApi.MessageListener,
-        NodeApi.NodeListener {
+public class MainActivity extends Activity implements
+        ConnectionCallbacks,
+        OnConnectionFailedListener,
+        DataApi.DataListener,
+        MessageApi.MessageListener,
+        CapabilityApi.CapabilityListener {
 
     private static final String TAG = "MainActivity";
     private static final String CAPABILITY_1_NAME = "capability_1";
@@ -92,8 +94,8 @@
     private AssetFragment mAssetFragment;
 
     @Override
-    public void onCreate(Bundle b) {
-        super.onCreate(b);
+    public void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
         setContentView(R.layout.main_activity);
         getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
         setupViews();
@@ -112,11 +114,14 @@
 
     @Override
     protected void onPause() {
+        if ((mGoogleApiClient != null) && mGoogleApiClient.isConnected()) {
+            Wearable.DataApi.removeListener(mGoogleApiClient, this);
+            Wearable.MessageApi.removeListener(mGoogleApiClient, this);
+            Wearable.CapabilityApi.removeListener(mGoogleApiClient, this);
+            mGoogleApiClient.disconnect();
+        }
+
         super.onPause();
-        Wearable.DataApi.removeListener(mGoogleApiClient, this);
-        Wearable.MessageApi.removeListener(mGoogleApiClient, this);
-        Wearable.NodeApi.removeListener(mGoogleApiClient, this);
-        mGoogleApiClient.disconnect();
     }
 
     @Override
@@ -124,7 +129,8 @@
         LOGD(TAG, "onConnected(): Successfully connected to Google API client");
         Wearable.DataApi.addListener(mGoogleApiClient, this);
         Wearable.MessageApi.addListener(mGoogleApiClient, this);
-        Wearable.NodeApi.addListener(mGoogleApiClient, this);
+        Wearable.CapabilityApi.addListener(
+                mGoogleApiClient, this, Uri.parse("wear://"), CapabilityApi.FILTER_REACHABLE);
     }
 
     @Override
@@ -244,13 +250,9 @@
     }
 
     @Override
-    public void onPeerConnected(Node node) {
-        mDataFragment.appendItem("Node Connected", node.getId());
-    }
-
-    @Override
-    public void onPeerDisconnected(Node node) {
-        mDataFragment.appendItem("Node Disconnected", node.getId());
+    public void onCapabilityChanged(CapabilityInfo capabilityInfo) {
+        LOGD(TAG, "onCapabilityChanged: " + capabilityInfo);
+        mDataFragment.appendItem("onCapabilityChanged", capabilityInfo.toString());
     }
 
     private void setupViews() {
@@ -312,7 +314,7 @@
         @Override
         protected Bitmap doInBackground(Asset... params) {
 
-            if(params.length > 0) {
+            if (params.length > 0) {
 
                 Asset asset = params[0];
 
@@ -334,11 +336,11 @@
         @Override
         protected void onPostExecute(Bitmap bitmap) {
 
-            if(bitmap != null) {
+            if (bitmap != null) {
                 LOGD(TAG, "Setting background image on second page..");
                 moveToPage(1);
                 mAssetFragment.setBackgroundImage(bitmap);
             }
         }
     }
-}
+}
\ No newline at end of file
diff --git a/prebuilts/gradle/DataLayer/gradle/wrapper/gradle-wrapper.properties b/prebuilts/gradle/DataLayer/gradle/wrapper/gradle-wrapper.properties
index 07fc193..69aad78 100644
--- a/prebuilts/gradle/DataLayer/gradle/wrapper/gradle-wrapper.properties
+++ b/prebuilts/gradle/DataLayer/gradle/wrapper/gradle-wrapper.properties
@@ -1,6 +1,6 @@
-#Wed Apr 10 15:27:10 PDT 2013
+#Tue Apr 12 16:28:18 PDT 2016
 distributionBase=GRADLE_USER_HOME
 distributionPath=wrapper/dists
 zipStoreBase=GRADLE_USER_HOME
 zipStorePath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-2.8-all.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-2.10-all.zip
diff --git a/prebuilts/gradle/DelayedConfirmation/.google/packaging.yaml b/prebuilts/gradle/DelayedConfirmation/.google/packaging.yaml
index efb574f..6ee1ed9 100644
--- a/prebuilts/gradle/DelayedConfirmation/.google/packaging.yaml
+++ b/prebuilts/gradle/DelayedConfirmation/.google/packaging.yaml
@@ -4,7 +4,7 @@
 # This file is used by Google as part of our samples packaging process.
 # End users may safely ignore this file. It has no relevance to other systems.
 ---
-status:       PUBLISHED
+status:       DEPRECATED
 technologies: [Android]
 categories:   [Wearable]
 languages:    [Java]
diff --git a/prebuilts/gradle/DelayedConfirmation/Application/build.gradle b/prebuilts/gradle/DelayedConfirmation/Application/build.gradle
index fb39f01..8fd521d 100644
--- a/prebuilts/gradle/DelayedConfirmation/Application/build.gradle
+++ b/prebuilts/gradle/DelayedConfirmation/Application/build.gradle
@@ -5,7 +5,7 @@
     }
 
     dependencies {
-        classpath 'com.android.tools.build:gradle:1.2.3'
+        classpath 'com.android.tools.build:gradle:2.1.2'
     }
 }
 
@@ -16,11 +16,12 @@
 }
 
 dependencies {
-    compile "com.android.support:support-v4:23.1.0"
-    compile "com.android.support:support-v13:23.1.0"
-    compile "com.android.support:cardview-v7:23.1.0"
+    compile "com.android.support:support-v4:24.0.0-beta1"
+    compile "com.android.support:support-v13:24.0.0-beta1"
+    compile "com.android.support:cardview-v7:24.0.0-beta1"
+    compile "com.android.support:appcompat-v7:24.0.0-beta1"
     compile 'com.google.android.gms:play-services-wearable:8.4.0'
-    compile 'com.android.support:support-v13:23.1.1'
+    compile 'com.android.support:support-v13:24.0.0-beta1'
     wearApp project(':Wearable')
 }
 
@@ -34,7 +35,7 @@
 
 android {
     compileSdkVersion 23
-    buildToolsVersion "23.0.2"
+    buildToolsVersion "23.0.3"
 
     defaultConfig {
         minSdkVersion 18
diff --git a/prebuilts/gradle/DelayedConfirmation/README.md b/prebuilts/gradle/DelayedConfirmation/README.md
index 13a33d7..95b4fcc 100644
--- a/prebuilts/gradle/DelayedConfirmation/README.md
+++ b/prebuilts/gradle/DelayedConfirmation/README.md
@@ -12,8 +12,8 @@
 Pre-requisites
 --------------
 
-- Android SDK v23
-- Android Build Tools v23.0.2
+- Android SDK 23
+- Android Build Tools v23.0.3
 - Android Support Repository
 
 Getting Started
@@ -37,7 +37,7 @@
 License
 -------
 
-Copyright 2014 The Android Open Source Project, Inc.
+Copyright 2016 The Android Open Source Project, Inc.
 
 Licensed to the Apache Software Foundation (ASF) under one or more contributor
 license agreements.  See the NOTICE file distributed with this work for
diff --git a/prebuilts/gradle/DelayedConfirmation/Wearable/build.gradle b/prebuilts/gradle/DelayedConfirmation/Wearable/build.gradle
index cb1382e..6170762 100644
--- a/prebuilts/gradle/DelayedConfirmation/Wearable/build.gradle
+++ b/prebuilts/gradle/DelayedConfirmation/Wearable/build.gradle
@@ -5,7 +5,7 @@
     }
 
     dependencies {
-        classpath 'com.android.tools.build:gradle:1.2.3'
+        classpath 'com.android.tools.build:gradle:2.1.2'
     }
 }
 
@@ -18,7 +18,7 @@
 
 
     compile 'com.google.android.gms:play-services-wearable:8.4.0'
-    compile 'com.android.support:support-v13:23.3.0'
+    compile 'com.android.support:support-v13:24.0.0-beta1'
 
     compile 'com.google.android.support:wearable:1.4.0'
 
@@ -35,7 +35,7 @@
 android {
     compileSdkVersion 23
 
-    buildToolsVersion "23.0.2"
+    buildToolsVersion "23.0.3"
 
     defaultConfig {
         versionCode 1
diff --git a/prebuilts/gradle/DelayedConfirmation/gradle/wrapper/gradle-wrapper.properties b/prebuilts/gradle/DelayedConfirmation/gradle/wrapper/gradle-wrapper.properties
index 07fc193..d570517 100644
--- a/prebuilts/gradle/DelayedConfirmation/gradle/wrapper/gradle-wrapper.properties
+++ b/prebuilts/gradle/DelayedConfirmation/gradle/wrapper/gradle-wrapper.properties
@@ -3,4 +3,4 @@
 distributionPath=wrapper/dists
 zipStoreBase=GRADLE_USER_HOME
 zipStorePath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-2.8-all.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-2.10-all.zip
diff --git a/prebuilts/gradle/DeviceOwner/Application/build.gradle b/prebuilts/gradle/DeviceOwner/Application/build.gradle
index ba404cc..c45ed11 100644
--- a/prebuilts/gradle/DeviceOwner/Application/build.gradle
+++ b/prebuilts/gradle/DeviceOwner/Application/build.gradle
@@ -5,7 +5,7 @@
     }
 
     dependencies {
-        classpath 'com.android.tools.build:gradle:1.2.3'
+        classpath 'com.android.tools.build:gradle:2.1.2'
     }
 }
 
@@ -16,9 +16,10 @@
 }
 
 dependencies {
-    compile "com.android.support:support-v4:23.1.0"
-    compile "com.android.support:support-v13:23.1.0"
-    compile "com.android.support:cardview-v7:23.1.0"
+    compile "com.android.support:support-v4:24.0.0-beta1"
+    compile "com.android.support:support-v13:24.0.0-beta1"
+    compile "com.android.support:cardview-v7:24.0.0-beta1"
+    compile "com.android.support:appcompat-v7:24.0.0-beta1"
 }
 
 // The sample build uses multiple directories to
@@ -31,7 +32,7 @@
 
 android {
     compileSdkVersion 23
-    buildToolsVersion "23.0.2"
+    buildToolsVersion "23.0.3"
 
     defaultConfig {
         minSdkVersion 21
diff --git a/prebuilts/gradle/DeviceOwner/README.md b/prebuilts/gradle/DeviceOwner/README.md
index 6c33314..7fe2964 100644
--- a/prebuilts/gradle/DeviceOwner/README.md
+++ b/prebuilts/gradle/DeviceOwner/README.md
@@ -30,8 +30,8 @@
 Pre-requisites
 --------------
 
-- Android SDK v23
-- Android Build Tools v23.0.2
+- Android SDK 23
+- Android Build Tools v23.0.3
 - Android Support Repository
 
 Screenshots
@@ -60,7 +60,7 @@
 License
 -------
 
-Copyright 2014 The Android Open Source Project, Inc.
+Copyright 2016 The Android Open Source Project, Inc.
 
 Licensed to the Apache Software Foundation (ASF) under one or more contributor
 license agreements.  See the NOTICE file distributed with this work for
diff --git a/prebuilts/gradle/DeviceOwner/gradle/wrapper/gradle-wrapper.properties b/prebuilts/gradle/DeviceOwner/gradle/wrapper/gradle-wrapper.properties
index 22997e5..6be9a46 100644
--- a/prebuilts/gradle/DeviceOwner/gradle/wrapper/gradle-wrapper.properties
+++ b/prebuilts/gradle/DeviceOwner/gradle/wrapper/gradle-wrapper.properties
@@ -3,4 +3,4 @@
 distributionPath=wrapper/dists
 zipStoreBase=GRADLE_USER_HOME
 zipStorePath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-2.8-all.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-2.10-all.zip
diff --git a/prebuilts/gradle/DirectBoot/Application/build.gradle b/prebuilts/gradle/DirectBoot/Application/build.gradle
index a22c17d..732141d 100644
--- a/prebuilts/gradle/DirectBoot/Application/build.gradle
+++ b/prebuilts/gradle/DirectBoot/Application/build.gradle
@@ -5,7 +5,7 @@
     }
 
     dependencies {
-        classpath 'com.android.tools.build:gradle:2.0.0'
+        classpath 'com.android.tools.build:gradle:2.1.2'
     }
 }
 
@@ -16,15 +16,15 @@
 }
 
 dependencies {
-    compile "com.android.support:support-v4:24.0.0-alpha1"
-    compile "com.android.support:support-v13:24.0.0-alpha1"
-    compile "com.android.support:cardview-v7:24.0.0-alpha1"
-    compile "com.android.support:appcompat-v7:24.0.0-alpha1"
-    compile 'com.android.support:appcompat-v7:24.0.0-alpha1'
-    compile 'com.android.support:support-v4:24.0.0-alpha1'
-    compile 'com.android.support:support-v13:24.0.0-alpha1'
-    compile 'com.android.support:recyclerview-v7:24.0.0-alpha1'
-    compile 'com.android.support:design:24.0.0-alpha1'
+    compile "com.android.support:support-v4:24.0.0-beta1"
+    compile "com.android.support:support-v13:24.0.0-beta1"
+    compile "com.android.support:cardview-v7:24.0.0-beta1"
+    compile "com.android.support:appcompat-v7:24.0.0-beta1"
+    compile 'com.android.support:appcompat-v7:24.0.0-beta1'
+    compile 'com.android.support:support-v4:24.0.0-beta1'
+    compile 'com.android.support:support-v13:24.0.0-beta1'
+    compile 'com.android.support:recyclerview-v7:24.0.0-beta1'
+    compile 'com.android.support:design:24.0.0-beta1'
 }
 
 // The sample build uses multiple directories to
@@ -36,12 +36,12 @@
     'template'] // boilerplate code that is generated by the sample template process
 
 android {
-    compileSdkVersion "android-N"
-    buildToolsVersion "24.0.0 rc1"
+    compileSdkVersion 24
+    buildToolsVersion "23.0.3"
 
     defaultConfig {
-        minSdkVersion "N"
-        targetSdkVersion "N"
+        minSdkVersion 24
+        targetSdkVersion 24
     }
 
     compileOptions {
diff --git a/prebuilts/gradle/DirectBoot/Application/src/main/AndroidManifest.xml b/prebuilts/gradle/DirectBoot/Application/src/main/AndroidManifest.xml
index 8d6daf9..be3be93 100644
--- a/prebuilts/gradle/DirectBoot/Application/src/main/AndroidManifest.xml
+++ b/prebuilts/gradle/DirectBoot/Application/src/main/AndroidManifest.xml
@@ -25,7 +25,7 @@
         android:allowBackup="true"
         android:label="@string/app_name"
         android:icon="@mipmap/ic_launcher"
-        android:theme="@style/AppTheme"
+        android:theme="@style/Theme.AppCompat.Light"
         >
 
         <activity
diff --git a/prebuilts/gradle/DirectBoot/README.md b/prebuilts/gradle/DirectBoot/README.md
index 2d5466e..a37db30 100644
--- a/prebuilts/gradle/DirectBoot/README.md
+++ b/prebuilts/gradle/DirectBoot/README.md
@@ -20,7 +20,7 @@
     - A new storage location which is always available while the device is booted, both before and after any user credentials are entered
 
 Apps can mark individual components as being direct boot aware which indicates to the system that they can safely run when
-Credential protected storage is unavailable (an direct boot aware component primarily relies on data stored in the new Device protected storage area, 
+Credential protected storage is unavailable (an direct boot aware component primarily relies on data stored in the new Device protected storage area,
 but they may access Credential protected data when unlocked) by adding `directBootAware="true"` in the manifest.
 ```
 <activity|provider|receiver|service ...
@@ -43,8 +43,8 @@
 Pre-requisites
 --------------
 
-- Android SDK Preview N
-- Android Build Tools v24.0.0 rc1
+- Android SDK 24
+- Android Build Tools v23.0.3
 - Android Support Repository
 
 Screenshots
diff --git a/prebuilts/gradle/DirectShare/Application/build.gradle b/prebuilts/gradle/DirectShare/Application/build.gradle
index de3e4f9..6a7bac7 100644
--- a/prebuilts/gradle/DirectShare/Application/build.gradle
+++ b/prebuilts/gradle/DirectShare/Application/build.gradle
@@ -5,7 +5,7 @@
     }
 
     dependencies {
-        classpath 'com.android.tools.build:gradle:1.2.3'
+        classpath 'com.android.tools.build:gradle:2.1.2'
     }
 }
 
@@ -16,9 +16,10 @@
 }
 
 dependencies {
-    compile "com.android.support:support-v4:23.1.0"
-    compile "com.android.support:support-v13:23.1.0"
-    compile "com.android.support:cardview-v7:23.1.0"
+    compile "com.android.support:support-v4:24.0.0-beta1"
+    compile "com.android.support:support-v13:24.0.0-beta1"
+    compile "com.android.support:cardview-v7:24.0.0-beta1"
+    compile "com.android.support:appcompat-v7:24.0.0-beta1"
 }
 
 // The sample build uses multiple directories to
@@ -31,7 +32,7 @@
 
 android {
     compileSdkVersion 23
-    buildToolsVersion "23.0.2"
+    buildToolsVersion "23.0.3"
 
     defaultConfig {
         minSdkVersion 23
diff --git a/prebuilts/gradle/DirectShare/README.md b/prebuilts/gradle/DirectShare/README.md
index 6f36c02..33609b0 100644
--- a/prebuilts/gradle/DirectShare/README.md
+++ b/prebuilts/gradle/DirectShare/README.md
@@ -28,8 +28,8 @@
 Pre-requisites
 --------------
 
-- Android SDK v23
-- Android Build Tools v23.0.2
+- Android SDK 23
+- Android Build Tools v23.0.3
 - Android Support Repository
 
 Screenshots
@@ -58,7 +58,7 @@
 License
 -------
 
-Copyright 2014 The Android Open Source Project, Inc.
+Copyright 2016 The Android Open Source Project, Inc.
 
 Licensed to the Apache Software Foundation (ASF) under one or more contributor
 license agreements.  See the NOTICE file distributed with this work for
diff --git a/prebuilts/gradle/DirectShare/gradle/wrapper/gradle-wrapper.properties b/prebuilts/gradle/DirectShare/gradle/wrapper/gradle-wrapper.properties
index 07fc193..03c59c2 100644
--- a/prebuilts/gradle/DirectShare/gradle/wrapper/gradle-wrapper.properties
+++ b/prebuilts/gradle/DirectShare/gradle/wrapper/gradle-wrapper.properties
@@ -3,4 +3,4 @@
 distributionPath=wrapper/dists
 zipStoreBase=GRADLE_USER_HOME
 zipStorePath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-2.8-all.zip
+distributionUrl=http\://services.gradle.org/distributions/gradle-2.10-bin.zip
diff --git a/prebuilts/gradle/DirectorySelection/Application/build.gradle b/prebuilts/gradle/DirectorySelection/Application/build.gradle
index 9b51d93..ea0bd99 100644
--- a/prebuilts/gradle/DirectorySelection/Application/build.gradle
+++ b/prebuilts/gradle/DirectorySelection/Application/build.gradle
@@ -5,7 +5,7 @@
     }
 
     dependencies {
-        classpath 'com.android.tools.build:gradle:1.2.3'
+        classpath 'com.android.tools.build:gradle:2.1.2'
     }
 }
 
@@ -16,9 +16,10 @@
 }
 
 dependencies {
-    compile "com.android.support:support-v4:23.1.0"
-    compile "com.android.support:support-v13:23.1.0"
-    compile "com.android.support:cardview-v7:23.1.0"
+    compile "com.android.support:support-v4:24.0.0-beta1"
+    compile "com.android.support:support-v13:24.0.0-beta1"
+    compile "com.android.support:cardview-v7:24.0.0-beta1"
+    compile "com.android.support:appcompat-v7:24.0.0-beta1"
     compile 'com.android.support:recyclerview-v7:+'
 }
 
@@ -32,7 +33,7 @@
 
 android {
     compileSdkVersion 23
-    buildToolsVersion "23.0.2"
+    buildToolsVersion "23.0.3"
 
     defaultConfig {
         minSdkVersion 21
diff --git a/prebuilts/gradle/DirectorySelection/README.md b/prebuilts/gradle/DirectorySelection/README.md
index b15ee7a..e9f369c 100644
--- a/prebuilts/gradle/DirectorySelection/README.md
+++ b/prebuilts/gradle/DirectorySelection/README.md
@@ -107,8 +107,8 @@
 Pre-requisites
 --------------
 
-- Android SDK v23
-- Android Build Tools v23.0.2
+- Android SDK 23
+- Android Build Tools v23.0.3
 - Android Support Repository
 
 Screenshots
@@ -137,7 +137,7 @@
 License
 -------
 
-Copyright 2014 The Android Open Source Project, Inc.
+Copyright 2016 The Android Open Source Project, Inc.
 
 Licensed to the Apache Software Foundation (ASF) under one or more contributor
 license agreements.  See the NOTICE file distributed with this work for
diff --git a/prebuilts/gradle/DirectorySelection/gradle/wrapper/gradle-wrapper.properties b/prebuilts/gradle/DirectorySelection/gradle/wrapper/gradle-wrapper.properties
index 263f57d..3e29ec9 100644
--- a/prebuilts/gradle/DirectorySelection/gradle/wrapper/gradle-wrapper.properties
+++ b/prebuilts/gradle/DirectorySelection/gradle/wrapper/gradle-wrapper.properties
@@ -3,4 +3,4 @@
 distributionPath=wrapper/dists
 zipStoreBase=GRADLE_USER_HOME
 zipStorePath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-2.8-all.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-2.10-all.zip
diff --git a/prebuilts/gradle/DisplayingBitmaps/Application/build.gradle b/prebuilts/gradle/DisplayingBitmaps/Application/build.gradle
index 00c60d5..0602b69 100644
--- a/prebuilts/gradle/DisplayingBitmaps/Application/build.gradle
+++ b/prebuilts/gradle/DisplayingBitmaps/Application/build.gradle
@@ -5,7 +5,7 @@
     }
 
     dependencies {
-        classpath 'com.android.tools.build:gradle:1.2.3'
+        classpath 'com.android.tools.build:gradle:2.1.2'
     }
 }
 
@@ -16,9 +16,10 @@
 }
 
 dependencies {
-    compile "com.android.support:support-v4:23.1.0"
-    compile "com.android.support:gridlayout-v7:23.1.0"
-    compile "com.android.support:cardview-v7:23.1.0"
+    compile "com.android.support:support-v4:24.0.0-beta1"
+    compile "com.android.support:gridlayout-v7:24.0.0-beta1"
+    compile "com.android.support:cardview-v7:24.0.0-beta1"
+    compile "com.android.support:appcompat-v7:24.0.0-beta1"
 }
 
 // The sample build uses multiple directories to
@@ -31,7 +32,7 @@
 
 android {
     compileSdkVersion 23
-    buildToolsVersion "23.0.2"
+    buildToolsVersion "23.0.3"
 
     defaultConfig {
         minSdkVersion 9
diff --git a/prebuilts/gradle/DisplayingBitmaps/README.md b/prebuilts/gradle/DisplayingBitmaps/README.md
index e47b105..e1d2c6d 100644
--- a/prebuilts/gradle/DisplayingBitmaps/README.md
+++ b/prebuilts/gradle/DisplayingBitmaps/README.md
@@ -20,8 +20,8 @@
 Pre-requisites
 --------------
 
-- Android SDK v23
-- Android Build Tools v23.0.2
+- Android SDK 23
+- Android Build Tools v23.0.3
 - Android Support Repository
 
 Screenshots
@@ -50,7 +50,7 @@
 License
 -------
 
-Copyright 2014 The Android Open Source Project, Inc.
+Copyright 2016 The Android Open Source Project, Inc.
 
 Licensed to the Apache Software Foundation (ASF) under one or more contributor
 license agreements.  See the NOTICE file distributed with this work for
diff --git a/prebuilts/gradle/DisplayingBitmaps/gradle/wrapper/gradle-wrapper.properties b/prebuilts/gradle/DisplayingBitmaps/gradle/wrapper/gradle-wrapper.properties
index 07fc193..d570517 100644
--- a/prebuilts/gradle/DisplayingBitmaps/gradle/wrapper/gradle-wrapper.properties
+++ b/prebuilts/gradle/DisplayingBitmaps/gradle/wrapper/gradle-wrapper.properties
@@ -3,4 +3,4 @@
 distributionPath=wrapper/dists
 zipStoreBase=GRADLE_USER_HOME
 zipStorePath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-2.8-all.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-2.10-all.zip
diff --git a/prebuilts/gradle/DocumentCentricApps/Application/build.gradle b/prebuilts/gradle/DocumentCentricApps/Application/build.gradle
index ba404cc..c45ed11 100644
--- a/prebuilts/gradle/DocumentCentricApps/Application/build.gradle
+++ b/prebuilts/gradle/DocumentCentricApps/Application/build.gradle
@@ -5,7 +5,7 @@
     }
 
     dependencies {
-        classpath 'com.android.tools.build:gradle:1.2.3'
+        classpath 'com.android.tools.build:gradle:2.1.2'
     }
 }
 
@@ -16,9 +16,10 @@
 }
 
 dependencies {
-    compile "com.android.support:support-v4:23.1.0"
-    compile "com.android.support:support-v13:23.1.0"
-    compile "com.android.support:cardview-v7:23.1.0"
+    compile "com.android.support:support-v4:24.0.0-beta1"
+    compile "com.android.support:support-v13:24.0.0-beta1"
+    compile "com.android.support:cardview-v7:24.0.0-beta1"
+    compile "com.android.support:appcompat-v7:24.0.0-beta1"
 }
 
 // The sample build uses multiple directories to
@@ -31,7 +32,7 @@
 
 android {
     compileSdkVersion 23
-    buildToolsVersion "23.0.2"
+    buildToolsVersion "23.0.3"
 
     defaultConfig {
         minSdkVersion 21
diff --git a/prebuilts/gradle/DocumentCentricApps/README.md b/prebuilts/gradle/DocumentCentricApps/README.md
index 5ff321d..3668cb1 100644
--- a/prebuilts/gradle/DocumentCentricApps/README.md
+++ b/prebuilts/gradle/DocumentCentricApps/README.md
@@ -25,8 +25,8 @@
 Pre-requisites
 --------------
 
-- Android SDK v23
-- Android Build Tools v23.0.2
+- Android SDK 23
+- Android Build Tools v23.0.3
 - Android Support Repository
 
 Screenshots
@@ -55,7 +55,7 @@
 License
 -------
 
-Copyright 2014 The Android Open Source Project, Inc.
+Copyright 2016 The Android Open Source Project, Inc.
 
 Licensed to the Apache Software Foundation (ASF) under one or more contributor
 license agreements.  See the NOTICE file distributed with this work for
diff --git a/prebuilts/gradle/DocumentCentricApps/gradle/wrapper/gradle-wrapper.properties b/prebuilts/gradle/DocumentCentricApps/gradle/wrapper/gradle-wrapper.properties
index 07fc193..d570517 100644
--- a/prebuilts/gradle/DocumentCentricApps/gradle/wrapper/gradle-wrapper.properties
+++ b/prebuilts/gradle/DocumentCentricApps/gradle/wrapper/gradle-wrapper.properties
@@ -3,4 +3,4 @@
 distributionPath=wrapper/dists
 zipStoreBase=GRADLE_USER_HOME
 zipStorePath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-2.8-all.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-2.10-all.zip
diff --git a/prebuilts/gradle/DocumentCentricRelinquishIdentity/Application/build.gradle b/prebuilts/gradle/DocumentCentricRelinquishIdentity/Application/build.gradle
index ba404cc..c45ed11 100644
--- a/prebuilts/gradle/DocumentCentricRelinquishIdentity/Application/build.gradle
+++ b/prebuilts/gradle/DocumentCentricRelinquishIdentity/Application/build.gradle
@@ -5,7 +5,7 @@
     }
 
     dependencies {
-        classpath 'com.android.tools.build:gradle:1.2.3'
+        classpath 'com.android.tools.build:gradle:2.1.2'
     }
 }
 
@@ -16,9 +16,10 @@
 }
 
 dependencies {
-    compile "com.android.support:support-v4:23.1.0"
-    compile "com.android.support:support-v13:23.1.0"
-    compile "com.android.support:cardview-v7:23.1.0"
+    compile "com.android.support:support-v4:24.0.0-beta1"
+    compile "com.android.support:support-v13:24.0.0-beta1"
+    compile "com.android.support:cardview-v7:24.0.0-beta1"
+    compile "com.android.support:appcompat-v7:24.0.0-beta1"
 }
 
 // The sample build uses multiple directories to
@@ -31,7 +32,7 @@
 
 android {
     compileSdkVersion 23
-    buildToolsVersion "23.0.2"
+    buildToolsVersion "23.0.3"
 
     defaultConfig {
         minSdkVersion 21
diff --git a/prebuilts/gradle/DocumentCentricRelinquishIdentity/README.md b/prebuilts/gradle/DocumentCentricRelinquishIdentity/README.md
index 8688e8d..2b621a4 100644
--- a/prebuilts/gradle/DocumentCentricRelinquishIdentity/README.md
+++ b/prebuilts/gradle/DocumentCentricRelinquishIdentity/README.md
@@ -7,8 +7,8 @@
 Pre-requisites
 --------------
 
-- Android SDK v23
-- Android Build Tools v23.0.2
+- Android SDK 23
+- Android Build Tools v23.0.3
 - Android Support Repository
 
 Getting Started
@@ -32,7 +32,7 @@
 License
 -------
 
-Copyright 2014 The Android Open Source Project, Inc.
+Copyright 2016 The Android Open Source Project, Inc.
 
 Licensed to the Apache Software Foundation (ASF) under one or more contributor
 license agreements.  See the NOTICE file distributed with this work for
diff --git a/prebuilts/gradle/DocumentCentricRelinquishIdentity/gradle/wrapper/gradle-wrapper.properties b/prebuilts/gradle/DocumentCentricRelinquishIdentity/gradle/wrapper/gradle-wrapper.properties
index 07fc193..d570517 100644
--- a/prebuilts/gradle/DocumentCentricRelinquishIdentity/gradle/wrapper/gradle-wrapper.properties
+++ b/prebuilts/gradle/DocumentCentricRelinquishIdentity/gradle/wrapper/gradle-wrapper.properties
@@ -3,4 +3,4 @@
 distributionPath=wrapper/dists
 zipStoreBase=GRADLE_USER_HOME
 zipStorePath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-2.8-all.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-2.10-all.zip
diff --git a/prebuilts/gradle/DoneBar/Application/build.gradle b/prebuilts/gradle/DoneBar/Application/build.gradle
index 394eb93..f757b43 100644
--- a/prebuilts/gradle/DoneBar/Application/build.gradle
+++ b/prebuilts/gradle/DoneBar/Application/build.gradle
@@ -5,7 +5,7 @@
     }
 
     dependencies {
-        classpath 'com.android.tools.build:gradle:1.2.3'
+        classpath 'com.android.tools.build:gradle:2.1.2'
     }
 }
 
@@ -16,9 +16,10 @@
 }
 
 dependencies {
-    compile "com.android.support:support-v4:23.1.0"
-    compile "com.android.support:support-v13:23.1.0"
-    compile "com.android.support:cardview-v7:23.1.0"
+    compile "com.android.support:support-v4:24.0.0-beta1"
+    compile "com.android.support:support-v13:24.0.0-beta1"
+    compile "com.android.support:cardview-v7:24.0.0-beta1"
+    compile "com.android.support:appcompat-v7:24.0.0-beta1"
 }
 
 // The sample build uses multiple directories to
@@ -31,7 +32,7 @@
 
 android {
     compileSdkVersion 23
-    buildToolsVersion "23.0.2"
+    buildToolsVersion "23.0.3"
 
     defaultConfig {
         minSdkVersion 14
diff --git a/prebuilts/gradle/DoneBar/README.md b/prebuilts/gradle/DoneBar/README.md
index 5314ed6..9dc3093 100644
--- a/prebuilts/gradle/DoneBar/README.md
+++ b/prebuilts/gradle/DoneBar/README.md
@@ -31,8 +31,8 @@
 Pre-requisites
 --------------
 
-- Android SDK v23
-- Android Build Tools v23.0.2
+- Android SDK 23
+- Android Build Tools v23.0.3
 - Android Support Repository
 
 Screenshots
@@ -61,7 +61,7 @@
 License
 -------
 
-Copyright 2014 The Android Open Source Project, Inc.
+Copyright 2016 The Android Open Source Project, Inc.
 
 Licensed to the Apache Software Foundation (ASF) under one or more contributor
 license agreements.  See the NOTICE file distributed with this work for
diff --git a/prebuilts/gradle/DoneBar/gradle/wrapper/gradle-wrapper.properties b/prebuilts/gradle/DoneBar/gradle/wrapper/gradle-wrapper.properties
index 07fc193..d570517 100644
--- a/prebuilts/gradle/DoneBar/gradle/wrapper/gradle-wrapper.properties
+++ b/prebuilts/gradle/DoneBar/gradle/wrapper/gradle-wrapper.properties
@@ -3,4 +3,4 @@
 distributionPath=wrapper/dists
 zipStoreBase=GRADLE_USER_HOME
 zipStorePath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-2.8-all.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-2.10-all.zip
diff --git a/prebuilts/gradle/DrawableTinting/Application/build.gradle b/prebuilts/gradle/DrawableTinting/Application/build.gradle
index ba404cc..c45ed11 100644
--- a/prebuilts/gradle/DrawableTinting/Application/build.gradle
+++ b/prebuilts/gradle/DrawableTinting/Application/build.gradle
@@ -5,7 +5,7 @@
     }
 
     dependencies {
-        classpath 'com.android.tools.build:gradle:1.2.3'
+        classpath 'com.android.tools.build:gradle:2.1.2'
     }
 }
 
@@ -16,9 +16,10 @@
 }
 
 dependencies {
-    compile "com.android.support:support-v4:23.1.0"
-    compile "com.android.support:support-v13:23.1.0"
-    compile "com.android.support:cardview-v7:23.1.0"
+    compile "com.android.support:support-v4:24.0.0-beta1"
+    compile "com.android.support:support-v13:24.0.0-beta1"
+    compile "com.android.support:cardview-v7:24.0.0-beta1"
+    compile "com.android.support:appcompat-v7:24.0.0-beta1"
 }
 
 // The sample build uses multiple directories to
@@ -31,7 +32,7 @@
 
 android {
     compileSdkVersion 23
-    buildToolsVersion "23.0.2"
+    buildToolsVersion "23.0.3"
 
     defaultConfig {
         minSdkVersion 21
diff --git a/prebuilts/gradle/DrawableTinting/README.md b/prebuilts/gradle/DrawableTinting/README.md
index 60ed7e6..8f5d73a 100644
--- a/prebuilts/gradle/DrawableTinting/README.md
+++ b/prebuilts/gradle/DrawableTinting/README.md
@@ -16,8 +16,8 @@
 Pre-requisites
 --------------
 
-- Android SDK v23
-- Android Build Tools v23.0.2
+- Android SDK 23
+- Android Build Tools v23.0.3
 - Android Support Repository
 
 Getting Started
@@ -41,7 +41,7 @@
 License
 -------
 
-Copyright 2014 The Android Open Source Project, Inc.
+Copyright 2016 The Android Open Source Project, Inc.
 
 Licensed to the Apache Software Foundation (ASF) under one or more contributor
 license agreements.  See the NOTICE file distributed with this work for
diff --git a/prebuilts/gradle/DrawableTinting/gradle/wrapper/gradle-wrapper.properties b/prebuilts/gradle/DrawableTinting/gradle/wrapper/gradle-wrapper.properties
index 07fc193..d570517 100644
--- a/prebuilts/gradle/DrawableTinting/gradle/wrapper/gradle-wrapper.properties
+++ b/prebuilts/gradle/DrawableTinting/gradle/wrapper/gradle-wrapper.properties
@@ -3,4 +3,4 @@
 distributionPath=wrapper/dists
 zipStoreBase=GRADLE_USER_HOME
 zipStorePath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-2.8-all.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-2.10-all.zip
diff --git a/prebuilts/gradle/ElevationBasic/Application/build.gradle b/prebuilts/gradle/ElevationBasic/Application/build.gradle
index 3bffd32..aeece30 100644
--- a/prebuilts/gradle/ElevationBasic/Application/build.gradle
+++ b/prebuilts/gradle/ElevationBasic/Application/build.gradle
@@ -5,7 +5,7 @@
     }
 
     dependencies {
-        classpath 'com.android.tools.build:gradle:1.2.3'
+        classpath 'com.android.tools.build:gradle:2.1.2'
     }
 }
 
@@ -16,9 +16,10 @@
 }
 
 dependencies {
-    compile "com.android.support:support-v4:23.1.0"
-    compile "com.android.support:support-v13:23.1.0"
-    compile "com.android.support:cardview-v7:23.1.0"
+    compile "com.android.support:support-v4:24.0.0-beta1"
+    compile "com.android.support:support-v13:24.0.0-beta1"
+    compile "com.android.support:cardview-v7:24.0.0-beta1"
+    compile "com.android.support:appcompat-v7:24.0.0-beta1"
 }
 
 // The sample build uses multiple directories to
@@ -31,7 +32,7 @@
 
 android {
     compileSdkVersion 21
-    buildToolsVersion "23.0.2"
+    buildToolsVersion "23.0.3"
 
     defaultConfig {
         minSdkVersion 21
diff --git a/prebuilts/gradle/ElevationBasic/README.md b/prebuilts/gradle/ElevationBasic/README.md
index 8a7ea3b..10dcc2c 100644
--- a/prebuilts/gradle/ElevationBasic/README.md
+++ b/prebuilts/gradle/ElevationBasic/README.md
@@ -41,8 +41,8 @@
 Pre-requisites
 --------------
 
-- Android SDK v21
-- Android Build Tools v23.0.2
+- Android SDK 21
+- Android Build Tools v23.0.3
 - Android Support Repository
 
 Screenshots
@@ -71,7 +71,7 @@
 License
 -------
 
-Copyright 2014 The Android Open Source Project, Inc.
+Copyright 2016 The Android Open Source Project, Inc.
 
 Licensed to the Apache Software Foundation (ASF) under one or more contributor
 license agreements.  See the NOTICE file distributed with this work for
diff --git a/prebuilts/gradle/ElevationBasic/gradle/wrapper/gradle-wrapper.properties b/prebuilts/gradle/ElevationBasic/gradle/wrapper/gradle-wrapper.properties
index f1b6ded..32af84e 100644
--- a/prebuilts/gradle/ElevationBasic/gradle/wrapper/gradle-wrapper.properties
+++ b/prebuilts/gradle/ElevationBasic/gradle/wrapper/gradle-wrapper.properties
@@ -3,4 +3,4 @@
 distributionPath=wrapper/dists
 zipStoreBase=GRADLE_USER_HOME
 zipStorePath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-2.8-all.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-2.10-all.zip
diff --git a/prebuilts/gradle/ElevationDrag/Application/build.gradle b/prebuilts/gradle/ElevationDrag/Application/build.gradle
index 3bffd32..aeece30 100644
--- a/prebuilts/gradle/ElevationDrag/Application/build.gradle
+++ b/prebuilts/gradle/ElevationDrag/Application/build.gradle
@@ -5,7 +5,7 @@
     }
 
     dependencies {
-        classpath 'com.android.tools.build:gradle:1.2.3'
+        classpath 'com.android.tools.build:gradle:2.1.2'
     }
 }
 
@@ -16,9 +16,10 @@
 }
 
 dependencies {
-    compile "com.android.support:support-v4:23.1.0"
-    compile "com.android.support:support-v13:23.1.0"
-    compile "com.android.support:cardview-v7:23.1.0"
+    compile "com.android.support:support-v4:24.0.0-beta1"
+    compile "com.android.support:support-v13:24.0.0-beta1"
+    compile "com.android.support:cardview-v7:24.0.0-beta1"
+    compile "com.android.support:appcompat-v7:24.0.0-beta1"
 }
 
 // The sample build uses multiple directories to
@@ -31,7 +32,7 @@
 
 android {
     compileSdkVersion 21
-    buildToolsVersion "23.0.2"
+    buildToolsVersion "23.0.3"
 
     defaultConfig {
         minSdkVersion 21
diff --git a/prebuilts/gradle/ElevationDrag/README.md b/prebuilts/gradle/ElevationDrag/README.md
index be38cd7..d573478 100644
--- a/prebuilts/gradle/ElevationDrag/README.md
+++ b/prebuilts/gradle/ElevationDrag/README.md
@@ -24,8 +24,8 @@
 Pre-requisites
 --------------
 
-- Android SDK v21
-- Android Build Tools v23.0.2
+- Android SDK 21
+- Android Build Tools v23.0.3
 - Android Support Repository
 
 Screenshots
@@ -54,7 +54,7 @@
 License
 -------
 
-Copyright 2014 The Android Open Source Project, Inc.
+Copyright 2016 The Android Open Source Project, Inc.
 
 Licensed to the Apache Software Foundation (ASF) under one or more contributor
 license agreements.  See the NOTICE file distributed with this work for
diff --git a/prebuilts/gradle/ElevationDrag/gradle/gradle/wrapper/gradle-wrapper.jar b/prebuilts/gradle/ElevationDrag/gradle/gradle/wrapper/gradle-wrapper.jar
deleted file mode 100644
index 5838598..0000000
--- a/prebuilts/gradle/ElevationDrag/gradle/gradle/wrapper/gradle-wrapper.jar
+++ /dev/null
Binary files differ
diff --git a/prebuilts/gradle/ElevationDrag/gradle/gradle/wrapper/gradle-wrapper.properties b/prebuilts/gradle/ElevationDrag/gradle/gradle/wrapper/gradle-wrapper.properties
deleted file mode 100644
index 533e53d..0000000
--- a/prebuilts/gradle/ElevationDrag/gradle/gradle/wrapper/gradle-wrapper.properties
+++ /dev/null
@@ -1,6 +0,0 @@
-#Tue May 20 13:33:02 BST 2014
-distributionBase=GRADLE_USER_HOME
-distributionPath=wrapper/dists
-zipStoreBase=GRADLE_USER_HOME
-zipStorePath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-2.5-all.zip
diff --git a/prebuilts/gradle/ElevationDrag/gradle/wrapper/gradle-wrapper.properties b/prebuilts/gradle/ElevationDrag/gradle/wrapper/gradle-wrapper.properties
index 07fc193..d570517 100644
--- a/prebuilts/gradle/ElevationDrag/gradle/wrapper/gradle-wrapper.properties
+++ b/prebuilts/gradle/ElevationDrag/gradle/wrapper/gradle-wrapper.properties
@@ -3,4 +3,4 @@
 distributionPath=wrapper/dists
 zipStoreBase=GRADLE_USER_HOME
 zipStorePath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-2.8-all.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-2.10-all.zip
diff --git a/prebuilts/gradle/ElizaChat/.google/packaging.yaml b/prebuilts/gradle/ElizaChat/.google/packaging.yaml
index 76f9f31..48c0e7a 100644
--- a/prebuilts/gradle/ElizaChat/.google/packaging.yaml
+++ b/prebuilts/gradle/ElizaChat/.google/packaging.yaml
@@ -4,7 +4,7 @@
 # This file is used by Google as part of our samples packaging process.
 # End users may safely ignore this file. It has no relevance to other systems.
 ---
-status:       PUBLISHED
+status:       DEPRECATED
 technologies: [Android]
 categories:   [Wearable]
 languages:    [Java]
diff --git a/prebuilts/gradle/ElizaChat/Application/build.gradle b/prebuilts/gradle/ElizaChat/Application/build.gradle
index ae1d811..b8072d1 100644
--- a/prebuilts/gradle/ElizaChat/Application/build.gradle
+++ b/prebuilts/gradle/ElizaChat/Application/build.gradle
@@ -5,7 +5,7 @@
     }
 
     dependencies {
-        classpath 'com.android.tools.build:gradle:1.2.3'
+        classpath 'com.android.tools.build:gradle:2.1.2'
     }
 }
 
@@ -16,9 +16,10 @@
 }
 
 dependencies {
-    compile "com.android.support:support-v4:23.1.0"
-    compile "com.android.support:support-v13:23.1.0"
-    compile "com.android.support:cardview-v7:23.1.0"
+    compile "com.android.support:support-v4:24.0.0-beta1"
+    compile "com.android.support:support-v13:24.0.0-beta1"
+    compile "com.android.support:cardview-v7:24.0.0-beta1"
+    compile "com.android.support:appcompat-v7:24.0.0-beta1"
 }
 
 // The sample build uses multiple directories to
@@ -31,7 +32,7 @@
 
 android {
     compileSdkVersion 23
-    buildToolsVersion "23.0.2"
+    buildToolsVersion "23.0.3"
 
     defaultConfig {
         minSdkVersion 18
diff --git a/prebuilts/gradle/ElizaChat/README.md b/prebuilts/gradle/ElizaChat/README.md
index cfc5ba1..efaf95d 100644
--- a/prebuilts/gradle/ElizaChat/README.md
+++ b/prebuilts/gradle/ElizaChat/README.md
@@ -67,8 +67,8 @@
 Pre-requisites
 --------------
 
-- Android SDK v23
-- Android Build Tools v23.0.2
+- Android SDK 23
+- Android Build Tools v23.0.3
 - Android Support Repository
 
 Screenshots
@@ -97,7 +97,7 @@
 License
 -------
 
-Copyright 2014 The Android Open Source Project, Inc.
+Copyright 2016 The Android Open Source Project, Inc.
 
 Licensed to the Apache Software Foundation (ASF) under one or more contributor
 license agreements.  See the NOTICE file distributed with this work for
diff --git a/prebuilts/gradle/ElizaChat/gradle/wrapper/gradle-wrapper.properties b/prebuilts/gradle/ElizaChat/gradle/wrapper/gradle-wrapper.properties
index 07fc193..d570517 100644
--- a/prebuilts/gradle/ElizaChat/gradle/wrapper/gradle-wrapper.properties
+++ b/prebuilts/gradle/ElizaChat/gradle/wrapper/gradle-wrapper.properties
@@ -3,4 +3,4 @@
 distributionPath=wrapper/dists
 zipStoreBase=GRADLE_USER_HOME
 zipStorePath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-2.8-all.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-2.10-all.zip
diff --git a/prebuilts/gradle/FindMyPhone/.google/packaging.yaml b/prebuilts/gradle/FindMyPhone/.google/packaging.yaml
index 59428ae..cc7cf91 100644
--- a/prebuilts/gradle/FindMyPhone/.google/packaging.yaml
+++ b/prebuilts/gradle/FindMyPhone/.google/packaging.yaml
@@ -4,7 +4,7 @@
 # This file is used by Google as part of our samples packaging process.
 # End users may safely ignore this file. It has no relevance to other systems.
 ---
-status:       PUBLISHED
+status:       DEPRECATED
 technologies: [Android]
 categories:   [Wearable]
 languages:    [Java]
diff --git a/prebuilts/gradle/FindMyPhone/Application/build.gradle b/prebuilts/gradle/FindMyPhone/Application/build.gradle
index fb39f01..8fd521d 100644
--- a/prebuilts/gradle/FindMyPhone/Application/build.gradle
+++ b/prebuilts/gradle/FindMyPhone/Application/build.gradle
@@ -5,7 +5,7 @@
     }
 
     dependencies {
-        classpath 'com.android.tools.build:gradle:1.2.3'
+        classpath 'com.android.tools.build:gradle:2.1.2'
     }
 }
 
@@ -16,11 +16,12 @@
 }
 
 dependencies {
-    compile "com.android.support:support-v4:23.1.0"
-    compile "com.android.support:support-v13:23.1.0"
-    compile "com.android.support:cardview-v7:23.1.0"
+    compile "com.android.support:support-v4:24.0.0-beta1"
+    compile "com.android.support:support-v13:24.0.0-beta1"
+    compile "com.android.support:cardview-v7:24.0.0-beta1"
+    compile "com.android.support:appcompat-v7:24.0.0-beta1"
     compile 'com.google.android.gms:play-services-wearable:8.4.0'
-    compile 'com.android.support:support-v13:23.1.1'
+    compile 'com.android.support:support-v13:24.0.0-beta1'
     wearApp project(':Wearable')
 }
 
@@ -34,7 +35,7 @@
 
 android {
     compileSdkVersion 23
-    buildToolsVersion "23.0.2"
+    buildToolsVersion "23.0.3"
 
     defaultConfig {
         minSdkVersion 18
diff --git a/prebuilts/gradle/FindMyPhone/README.md b/prebuilts/gradle/FindMyPhone/README.md
index 80150e0..80825dd 100644
--- a/prebuilts/gradle/FindMyPhone/README.md
+++ b/prebuilts/gradle/FindMyPhone/README.md
@@ -10,8 +10,8 @@
 Pre-requisites
 --------------
 
-- Android SDK v23
-- Android Build Tools v23.0.2
+- Android SDK 23
+- Android Build Tools v23.0.3
 - Android Support Repository
 
 Getting Started
@@ -35,7 +35,7 @@
 License
 -------
 
-Copyright 2014 The Android Open Source Project, Inc.
+Copyright 2016 The Android Open Source Project, Inc.
 
 Licensed to the Apache Software Foundation (ASF) under one or more contributor
 license agreements.  See the NOTICE file distributed with this work for
diff --git a/prebuilts/gradle/FindMyPhone/Wearable/build.gradle b/prebuilts/gradle/FindMyPhone/Wearable/build.gradle
index cb1382e..6170762 100644
--- a/prebuilts/gradle/FindMyPhone/Wearable/build.gradle
+++ b/prebuilts/gradle/FindMyPhone/Wearable/build.gradle
@@ -5,7 +5,7 @@
     }
 
     dependencies {
-        classpath 'com.android.tools.build:gradle:1.2.3'
+        classpath 'com.android.tools.build:gradle:2.1.2'
     }
 }
 
@@ -18,7 +18,7 @@
 
 
     compile 'com.google.android.gms:play-services-wearable:8.4.0'
-    compile 'com.android.support:support-v13:23.3.0'
+    compile 'com.android.support:support-v13:24.0.0-beta1'
 
     compile 'com.google.android.support:wearable:1.4.0'
 
@@ -35,7 +35,7 @@
 android {
     compileSdkVersion 23
 
-    buildToolsVersion "23.0.2"
+    buildToolsVersion "23.0.3"
 
     defaultConfig {
         versionCode 1
diff --git a/prebuilts/gradle/FindMyPhone/gradle/wrapper/gradle-wrapper.properties b/prebuilts/gradle/FindMyPhone/gradle/wrapper/gradle-wrapper.properties
index 07fc193..d570517 100644
--- a/prebuilts/gradle/FindMyPhone/gradle/wrapper/gradle-wrapper.properties
+++ b/prebuilts/gradle/FindMyPhone/gradle/wrapper/gradle-wrapper.properties
@@ -3,4 +3,4 @@
 distributionPath=wrapper/dists
 zipStoreBase=GRADLE_USER_HOME
 zipStorePath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-2.8-all.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-2.10-all.zip
diff --git a/prebuilts/gradle/FingerprintDialog/Application/build.gradle b/prebuilts/gradle/FingerprintDialog/Application/build.gradle
index 1d4d651..6a7bac7 100644
--- a/prebuilts/gradle/FingerprintDialog/Application/build.gradle
+++ b/prebuilts/gradle/FingerprintDialog/Application/build.gradle
@@ -5,7 +5,7 @@
     }
 
     dependencies {
-        classpath 'com.android.tools.build:gradle:1.2.3'
+        classpath 'com.android.tools.build:gradle:2.1.2'
     }
 }
 
@@ -16,13 +16,10 @@
 }
 
 dependencies {
-    compile "com.android.support:support-v4:23.1.0"
-    compile "com.android.support:support-v13:23.1.0"
-    compile "com.android.support:cardview-v7:23.1.0"
-    compile 'com.squareup.dagger:dagger:1.2.2'
-    compile 'com.squareup.dagger:dagger-compiler:1.2.2'
-    compile 'junit:junit:4.12'
-    compile 'org.mockito:mockito-core:1.10.19'
+    compile "com.android.support:support-v4:24.0.0-beta1"
+    compile "com.android.support:support-v13:24.0.0-beta1"
+    compile "com.android.support:cardview-v7:24.0.0-beta1"
+    compile "com.android.support:appcompat-v7:24.0.0-beta1"
 }
 
 // The sample build uses multiple directories to
@@ -35,7 +32,7 @@
 
 android {
     compileSdkVersion 23
-    buildToolsVersion "23.0.2"
+    buildToolsVersion "23.0.3"
 
     defaultConfig {
         minSdkVersion 23
diff --git a/prebuilts/gradle/FingerprintDialog/Application/src/main/AndroidManifest.xml b/prebuilts/gradle/FingerprintDialog/Application/src/main/AndroidManifest.xml
index 3b19fbe..77d9949 100644
--- a/prebuilts/gradle/FingerprintDialog/Application/src/main/AndroidManifest.xml
+++ b/prebuilts/gradle/FingerprintDialog/Application/src/main/AndroidManifest.xml
@@ -22,14 +22,13 @@
     <uses-permission android:name="android.permission.USE_FINGERPRINT"/>
 
     <application
-            android:name=".InjectedApplication"
             android:allowBackup="true"
-            android:label="@string/app_name"
+            android:label="@string/application_name"
             android:icon="@mipmap/ic_launcher"
-            android:theme="@style/AppTheme">
+            android:theme="@style/Theme.AppCompat.Light">
 
         <activity android:name=".MainActivity"
-                  android:label="@string/app_name">
+                  android:label="@string/application_name">
             <intent-filter>
                 <action android:name="android.intent.action.MAIN"/>
                 <category android:name="android.intent.category.LAUNCHER"/>
diff --git a/prebuilts/gradle/FingerprintDialog/Application/src/main/java/com/example/android/fingerprintdialog/FingerprintAuthenticationDialogFragment.java b/prebuilts/gradle/FingerprintDialog/Application/src/main/java/com/example/android/fingerprintdialog/FingerprintAuthenticationDialogFragment.java
index b17ebb0..cb240db 100644
--- a/prebuilts/gradle/FingerprintDialog/Application/src/main/java/com/example/android/fingerprintdialog/FingerprintAuthenticationDialogFragment.java
+++ b/prebuilts/gradle/FingerprintDialog/Application/src/main/java/com/example/android/fingerprintdialog/FingerprintAuthenticationDialogFragment.java
@@ -21,6 +21,7 @@
 import android.content.SharedPreferences;
 import android.hardware.fingerprint.FingerprintManager;
 import android.os.Bundle;
+import android.preference.PreferenceManager;
 import android.view.KeyEvent;
 import android.view.LayoutInflater;
 import android.view.View;
@@ -33,8 +34,6 @@
 import android.widget.ImageView;
 import android.widget.TextView;
 
-import javax.inject.Inject;
-
 /**
  * A dialog which uses fingerprint APIs to authenticate the user, and falls back to password
  * authentication if fingerprint is not available.
@@ -57,12 +56,8 @@
     private FingerprintUiHelper mFingerprintUiHelper;
     private MainActivity mActivity;
 
-    @Inject FingerprintUiHelper.FingerprintUiHelperBuilder mFingerprintUiHelperBuilder;
-    @Inject InputMethodManager mInputMethodManager;
-    @Inject SharedPreferences mSharedPreferences;
-
-    @Inject
-    public FingerprintAuthenticationDialogFragment() {}
+    private InputMethodManager mInputMethodManager;
+    private SharedPreferences mSharedPreferences;
 
     @Override
     public void onCreate(Bundle savedInstanceState) {
@@ -106,7 +101,8 @@
                 v.findViewById(R.id.use_fingerprint_in_future_check);
         mNewFingerprintEnrolledTextView = (TextView)
                 v.findViewById(R.id.new_fingerprint_enrolled_description);
-        mFingerprintUiHelper = mFingerprintUiHelperBuilder.build(
+        mFingerprintUiHelper = new FingerprintUiHelper(
+                mActivity.getSystemService(FingerprintManager.class),
                 (ImageView) v.findViewById(R.id.fingerprint_icon),
                 (TextView) v.findViewById(R.id.fingerprint_status), this);
         updateStage();
@@ -141,6 +137,8 @@
     public void onAttach(Activity activity) {
         super.onAttach(activity);
         mActivity = (MainActivity) activity;
+        mInputMethodManager = mActivity.getSystemService(InputMethodManager.class);
+        mSharedPreferences = PreferenceManager.getDefaultSharedPreferences(mActivity);
     }
 
     /**
diff --git a/prebuilts/gradle/FingerprintDialog/Application/src/main/java/com/example/android/fingerprintdialog/FingerprintModule.java b/prebuilts/gradle/FingerprintDialog/Application/src/main/java/com/example/android/fingerprintdialog/FingerprintModule.java
deleted file mode 100644
index 964e1f6..0000000
--- a/prebuilts/gradle/FingerprintDialog/Application/src/main/java/com/example/android/fingerprintdialog/FingerprintModule.java
+++ /dev/null
@@ -1,107 +0,0 @@
-/*
- * Copyright (C) 2015 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License
- */
-
-package com.example.android.fingerprintdialog;
-
-import android.app.KeyguardManager;
-import android.content.Context;
-import android.content.SharedPreferences;
-import android.hardware.fingerprint.FingerprintManager;
-import android.preference.PreferenceManager;
-import android.security.keystore.KeyProperties;
-import android.view.inputmethod.InputMethodManager;
-
-import java.security.KeyStore;
-import java.security.KeyStoreException;
-import java.security.NoSuchAlgorithmException;
-import java.security.NoSuchProviderException;
-
-import javax.crypto.Cipher;
-import javax.crypto.KeyGenerator;
-import javax.crypto.NoSuchPaddingException;
-
-import dagger.Module;
-import dagger.Provides;
-
-/**
- * Dagger module for Fingerprint APIs.
- */
-@Module(
-        library = true,
-        injects = {MainActivity.class}
-)
-public class FingerprintModule {
-
-    private final Context mContext;
-
-    public FingerprintModule(Context context) {
-        mContext = context;
-    }
-
-    @Provides
-    public Context providesContext() {
-        return mContext;
-    }
-
-    @Provides
-    public FingerprintManager providesFingerprintManager(Context context) {
-        return context.getSystemService(FingerprintManager.class);
-    }
-
-    @Provides
-    public KeyguardManager providesKeyguardManager(Context context) {
-        return context.getSystemService(KeyguardManager.class);
-    }
-
-    @Provides
-    public KeyStore providesKeystore() {
-        try {
-            return KeyStore.getInstance("AndroidKeyStore");
-        } catch (KeyStoreException e) {
-            throw new RuntimeException("Failed to get an instance of KeyStore", e);
-        }
-    }
-
-    @Provides
-    public KeyGenerator providesKeyGenerator() {
-        try {
-            return KeyGenerator.getInstance(KeyProperties.KEY_ALGORITHM_AES, "AndroidKeyStore");
-        } catch (NoSuchAlgorithmException | NoSuchProviderException e) {
-            throw new RuntimeException("Failed to get an instance of KeyGenerator", e);
-        }
-    }
-
-    @Provides
-    public Cipher providesCipher(KeyStore keyStore) {
-        try {
-            return Cipher.getInstance(KeyProperties.KEY_ALGORITHM_AES + "/"
-                    + KeyProperties.BLOCK_MODE_CBC + "/"
-                    + KeyProperties.ENCRYPTION_PADDING_PKCS7);
-        } catch (NoSuchAlgorithmException | NoSuchPaddingException e) {
-            throw new RuntimeException("Failed to get an instance of Cipher", e);
-        }
-    }
-
-    @Provides
-    public InputMethodManager providesInputMethodManager(Context context) {
-        return (InputMethodManager) context.getSystemService(Context.INPUT_METHOD_SERVICE);
-    }
-
-    @Provides
-    public SharedPreferences providesSharedPreferences(Context context) {
-        return PreferenceManager.getDefaultSharedPreferences(context);
-    }
-}
diff --git a/prebuilts/gradle/FingerprintDialog/Application/src/main/java/com/example/android/fingerprintdialog/FingerprintUiHelper.java b/prebuilts/gradle/FingerprintDialog/Application/src/main/java/com/example/android/fingerprintdialog/FingerprintUiHelper.java
index 92fcdb1..be81646 100644
--- a/prebuilts/gradle/FingerprintDialog/Application/src/main/java/com/example/android/fingerprintdialog/FingerprintUiHelper.java
+++ b/prebuilts/gradle/FingerprintDialog/Application/src/main/java/com/example/android/fingerprintdialog/FingerprintUiHelper.java
@@ -16,22 +16,18 @@
 
 package com.example.android.fingerprintdialog;
 
-import com.google.common.annotations.VisibleForTesting;
-
 import android.hardware.fingerprint.FingerprintManager;
 import android.os.CancellationSignal;
 import android.widget.ImageView;
 import android.widget.TextView;
 
-import javax.inject.Inject;
-
 /**
  * Small helper class to manage text/icon around fingerprint authentication UI.
  */
 public class FingerprintUiHelper extends FingerprintManager.AuthenticationCallback {
 
-    @VisibleForTesting static final long ERROR_TIMEOUT_MILLIS = 1600;
-    @VisibleForTesting static final long SUCCESS_DELAY_MILLIS = 1300;
+    private static final long ERROR_TIMEOUT_MILLIS = 1600;
+    private static final long SUCCESS_DELAY_MILLIS = 1300;
 
     private final FingerprintManager mFingerprintManager;
     private final ImageView mIcon;
@@ -39,31 +35,12 @@
     private final Callback mCallback;
     private CancellationSignal mCancellationSignal;
 
-    @VisibleForTesting boolean mSelfCancelled;
+    private boolean mSelfCancelled;
 
     /**
-     * Builder class for {@link FingerprintUiHelper} in which injected fields from Dagger
-     * holds its fields and takes other arguments in the {@link #build} method.
+     * Constructor for {@link FingerprintUiHelper}.
      */
-    public static class FingerprintUiHelperBuilder {
-        private final FingerprintManager mFingerPrintManager;
-
-        @Inject
-        public FingerprintUiHelperBuilder(FingerprintManager fingerprintManager) {
-            mFingerPrintManager = fingerprintManager;
-        }
-
-        public FingerprintUiHelper build(ImageView icon, TextView errorTextView, Callback callback) {
-            return new FingerprintUiHelper(mFingerPrintManager, icon, errorTextView,
-                    callback);
-        }
-    }
-
-    /**
-     * Constructor for {@link FingerprintUiHelper}. This method is expected to be called from
-     * only the {@link FingerprintUiHelperBuilder} class.
-     */
-    private FingerprintUiHelper(FingerprintManager fingerprintManager,
+    FingerprintUiHelper(FingerprintManager fingerprintManager,
             ImageView icon, TextView errorTextView, Callback callback) {
         mFingerprintManager = fingerprintManager;
         mIcon = icon;
@@ -72,6 +49,8 @@
     }
 
     public boolean isFingerprintAuthAvailable() {
+        // The line below prevents the false positive inspection from Android Studio
+        // noinspection ResourceType
         return mFingerprintManager.isHardwareDetected()
                 && mFingerprintManager.hasEnrolledFingerprints();
     }
@@ -82,6 +61,8 @@
         }
         mCancellationSignal = new CancellationSignal();
         mSelfCancelled = false;
+        // The line below prevents the false positive inspection from Android Studio
+        // noinspection ResourceType
         mFingerprintManager
                 .authenticate(cryptoObject, mCancellationSignal, 0 /* flags */, this, null);
         mIcon.setImageResource(R.drawable.ic_fp_40px);
@@ -144,8 +125,7 @@
         mErrorTextView.postDelayed(mResetErrorTextRunnable, ERROR_TIMEOUT_MILLIS);
     }
 
-    @VisibleForTesting
-    Runnable mResetErrorTextRunnable = new Runnable() {
+    private Runnable mResetErrorTextRunnable = new Runnable() {
         @Override
         public void run() {
             mErrorTextView.setTextColor(
diff --git a/prebuilts/gradle/FingerprintDialog/Application/src/main/java/com/example/android/fingerprintdialog/InjectedApplication.java b/prebuilts/gradle/FingerprintDialog/Application/src/main/java/com/example/android/fingerprintdialog/InjectedApplication.java
deleted file mode 100644
index b7075a9..0000000
--- a/prebuilts/gradle/FingerprintDialog/Application/src/main/java/com/example/android/fingerprintdialog/InjectedApplication.java
+++ /dev/null
@@ -1,59 +0,0 @@
-/*
- * Copyright (C) 2015 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License
- */
-
-package com.example.android.fingerprintdialog;
-
-import android.app.Application;
-import android.util.Log;
-
-import dagger.ObjectGraph;
-
-/**
- * The Application class of the sample which holds the ObjectGraph in Dagger and enables
- * dependency injection.
- */
-public class InjectedApplication extends Application {
-
-    private static final String TAG = InjectedApplication.class.getSimpleName();
-
-    private ObjectGraph mObjectGraph;
-
-    @Override
-    public void onCreate() {
-        super.onCreate();
-
-        initObjectGraph(new FingerprintModule(this));
-    }
-
-    /**
-     * Initialize the Dagger module. Passing null or mock modules can be used for testing.
-     *
-     * @param module for Dagger
-     */
-    public void initObjectGraph(Object module) {
-        mObjectGraph = module != null ? ObjectGraph.create(module) : null;
-    }
-
-    public void inject(Object object) {
-        if (mObjectGraph == null) {
-            // This usually happens during tests.
-            Log.i(TAG, "Object graph is not initialized.");
-            return;
-        }
-        mObjectGraph.inject(object);
-    }
-
-}
diff --git a/prebuilts/gradle/FingerprintDialog/Application/src/main/java/com/example/android/fingerprintdialog/MainActivity.java b/prebuilts/gradle/FingerprintDialog/Application/src/main/java/com/example/android/fingerprintdialog/MainActivity.java
index 7caf9e6..77c8788 100644
--- a/prebuilts/gradle/FingerprintDialog/Application/src/main/java/com/example/android/fingerprintdialog/MainActivity.java
+++ b/prebuilts/gradle/FingerprintDialog/Application/src/main/java/com/example/android/fingerprintdialog/MainActivity.java
@@ -22,6 +22,7 @@
 import android.content.SharedPreferences;
 import android.hardware.fingerprint.FingerprintManager;
 import android.os.Bundle;
+import android.preference.PreferenceManager;
 import android.security.keystore.KeyGenParameterSpec;
 import android.security.keystore.KeyPermanentlyInvalidatedException;
 import android.security.keystore.KeyProperties;
@@ -40,6 +41,7 @@
 import java.security.KeyStore;
 import java.security.KeyStoreException;
 import java.security.NoSuchAlgorithmException;
+import java.security.NoSuchProviderException;
 import java.security.UnrecoverableKeyException;
 import java.security.cert.CertificateException;
 
@@ -47,8 +49,8 @@
 import javax.crypto.Cipher;
 import javax.crypto.IllegalBlockSizeException;
 import javax.crypto.KeyGenerator;
+import javax.crypto.NoSuchPaddingException;
 import javax.crypto.SecretKey;
-import javax.inject.Inject;
 
 /**
  * Main entry point for the sample, showing a backpack and "Purchase" button.
@@ -62,22 +64,40 @@
     /** Alias for our key in the Android Key Store */
     private static final String KEY_NAME = "my_key";
 
-    @Inject KeyguardManager mKeyguardManager;
-    @Inject FingerprintManager mFingerprintManager;
-    @Inject FingerprintAuthenticationDialogFragment mFragment;
-    @Inject KeyStore mKeyStore;
-    @Inject KeyGenerator mKeyGenerator;
-    @Inject Cipher mCipher;
-    @Inject SharedPreferences mSharedPreferences;
+    private KeyStore mKeyStore;
+    private KeyGenerator mKeyGenerator;
+    private Cipher mCipher;
+    private SharedPreferences mSharedPreferences;
 
     @Override
     protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
-        ((InjectedApplication) getApplication()).inject(this);
-
         setContentView(R.layout.activity_main);
+
+        try {
+            mKeyStore = KeyStore.getInstance("AndroidKeyStore");
+        } catch (KeyStoreException e) {
+            throw new RuntimeException("Failed to get an instance of KeyStore", e);
+        }
+        try {
+            mKeyGenerator = KeyGenerator
+                    .getInstance(KeyProperties.KEY_ALGORITHM_AES, "AndroidKeyStore");
+        } catch (NoSuchAlgorithmException | NoSuchProviderException e) {
+            throw new RuntimeException("Failed to get an instance of KeyGenerator", e);
+        }
+        try {
+            mCipher = Cipher.getInstance(KeyProperties.KEY_ALGORITHM_AES + "/"
+                    + KeyProperties.BLOCK_MODE_CBC + "/"
+                    + KeyProperties.ENCRYPTION_PADDING_PKCS7);
+        } catch (NoSuchAlgorithmException | NoSuchPaddingException e) {
+            throw new RuntimeException("Failed to get an instance of Cipher", e);
+        }
+        mSharedPreferences = PreferenceManager.getDefaultSharedPreferences(this);
+
+        KeyguardManager keyguardManager = getSystemService(KeyguardManager.class);
+        FingerprintManager fingerprintManager = getSystemService(FingerprintManager.class);
         Button purchaseButton = (Button) findViewById(R.id.purchase_button);
-        if (!mKeyguardManager.isKeyguardSecure()) {
+        if (!keyguardManager.isKeyguardSecure()) {
             // Show a message that the user hasn't set up a fingerprint or lock screen.
             Toast.makeText(this,
                     "Secure lock screen hasn't set up.\n"
@@ -87,8 +107,11 @@
             return;
         }
 
-        //noinspection ResourceType
-        if (!mFingerprintManager.hasEnrolledFingerprints()) {
+        // Now the protection level of USE_FINGERPRINT permission is normal instead of dangerous.
+        // See http://developer.android.com/reference/android/Manifest.permission.html#USE_FINGERPRINT
+        // The line below prevents the false positive inspection from Android Studio
+        // noinspection ResourceType
+        if (!fingerprintManager.hasEnrolledFingerprints()) {
             purchaseButton.setEnabled(false);
             // This happens when no fingerprints are registered.
             Toast.makeText(this,
@@ -107,30 +130,33 @@
                 // Set up the crypto object for later. The object will be authenticated by use
                 // of the fingerprint.
                 if (initCipher()) {
-
-                    // Show the fingerprint dialog. The user has the option to use the fingerprint with
-                    // crypto, or you can fall back to using a server-side verified password.
-                    mFragment.setCryptoObject(new FingerprintManager.CryptoObject(mCipher));
+                    // Show the fingerprint dialog. The user has the option to use the fingerprint
+                    // with crypto, or you can fall back to using a server-side verified password.
+                    FingerprintAuthenticationDialogFragment fragment
+                            = new FingerprintAuthenticationDialogFragment();
+                    fragment.setCryptoObject(new FingerprintManager.CryptoObject(mCipher));
                     boolean useFingerprintPreference = mSharedPreferences
                             .getBoolean(getString(R.string.use_fingerprint_to_authenticate_key),
                                     true);
                     if (useFingerprintPreference) {
-                        mFragment.setStage(
+                        fragment.setStage(
                                 FingerprintAuthenticationDialogFragment.Stage.FINGERPRINT);
                     } else {
-                        mFragment.setStage(
+                        fragment.setStage(
                                 FingerprintAuthenticationDialogFragment.Stage.PASSWORD);
                     }
-                    mFragment.show(getFragmentManager(), DIALOG_FRAGMENT_TAG);
+                    fragment.show(getFragmentManager(), DIALOG_FRAGMENT_TAG);
                 } else {
                     // This happens if the lock screen has been disabled or or a fingerprint got
                     // enrolled. Thus show the dialog to authenticate with their password first
                     // and ask the user if they want to authenticate with fingerprints in the
                     // future
-                    mFragment.setCryptoObject(new FingerprintManager.CryptoObject(mCipher));
-                    mFragment.setStage(
+                    FingerprintAuthenticationDialogFragment fragment
+                            = new FingerprintAuthenticationDialogFragment();
+                    fragment.setCryptoObject(new FingerprintManager.CryptoObject(mCipher));
+                    fragment.setStage(
                             FingerprintAuthenticationDialogFragment.Stage.NEW_FINGERPRINT_ENROLLED);
-                    mFragment.show(getFragmentManager(), DIALOG_FRAGMENT_TAG);
+                    fragment.show(getFragmentManager(), DIALOG_FRAGMENT_TAG);
                 }
             }
         });
@@ -210,8 +236,8 @@
                     KeyProperties.PURPOSE_ENCRYPT |
                             KeyProperties.PURPOSE_DECRYPT)
                     .setBlockModes(KeyProperties.BLOCK_MODE_CBC)
-                            // Require the user to authenticate with a fingerprint to authorize every use
-                            // of the key
+                    // Require the user to authenticate with a fingerprint to authorize every use
+                    // of the key
                     .setUserAuthenticationRequired(true)
                     .setEncryptionPaddings(KeyProperties.ENCRYPTION_PADDING_PKCS7)
                     .build());
diff --git a/prebuilts/gradle/FingerprintDialog/Application/src/main/res/values/strings.xml b/prebuilts/gradle/FingerprintDialog/Application/src/main/res/values/strings.xml
index 9f5a6fd..77d1176 100644
--- a/prebuilts/gradle/FingerprintDialog/Application/src/main/res/values/strings.xml
+++ b/prebuilts/gradle/FingerprintDialog/Application/src/main/res/values/strings.xml
@@ -15,6 +15,12 @@
   ~ limitations under the License
   -->
 <resources>
+    <!--
+      The similar strings app_name is added in the Application/template directory, but depending
+      on the template directory makes it hard for the sample buildable with Android.mk.
+      Thus defining the application_name with different name from the template.
+    -->
+    <string name="application_name">FingerprintDialog</string>
     <string name="action_settings">Settings</string>
     <string name="cancel">Cancel</string>
     <string name="use_password">Use password</string>
diff --git a/prebuilts/gradle/FingerprintDialog/README.md b/prebuilts/gradle/FingerprintDialog/README.md
index a860abd..6d73a5f 100644
--- a/prebuilts/gradle/FingerprintDialog/README.md
+++ b/prebuilts/gradle/FingerprintDialog/README.md
@@ -35,8 +35,8 @@
 Pre-requisites
 --------------
 
-- Android SDK v23
-- Android Build Tools v23.0.2
+- Android SDK 23
+- Android Build Tools v23.0.3
 - Android Support Repository
 
 Screenshots
@@ -65,7 +65,7 @@
 License
 -------
 
-Copyright 2014 The Android Open Source Project, Inc.
+Copyright 2016 The Android Open Source Project, Inc.
 
 Licensed to the Apache Software Foundation (ASF) under one or more contributor
 license agreements.  See the NOTICE file distributed with this work for
diff --git a/prebuilts/gradle/FingerprintDialog/gradle/wrapper/gradle-wrapper.properties b/prebuilts/gradle/FingerprintDialog/gradle/wrapper/gradle-wrapper.properties
index 203da3a..13b1b48 100644
--- a/prebuilts/gradle/FingerprintDialog/gradle/wrapper/gradle-wrapper.properties
+++ b/prebuilts/gradle/FingerprintDialog/gradle/wrapper/gradle-wrapper.properties
@@ -3,4 +3,4 @@
 distributionPath=wrapper/dists
 zipStoreBase=GRADLE_USER_HOME
 zipStorePath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-2.8-all.zip
+distributionUrl=http\://services.gradle.org/distributions/gradle-2.10-all.zip
diff --git a/prebuilts/gradle/Flashlight/.google/packaging.yaml b/prebuilts/gradle/Flashlight/.google/packaging.yaml
index 34b9d95..6ad9e2f 100644
--- a/prebuilts/gradle/Flashlight/.google/packaging.yaml
+++ b/prebuilts/gradle/Flashlight/.google/packaging.yaml
@@ -4,7 +4,7 @@
 # This file is used by Google as part of our samples packaging process.
 # End users may safely ignore this file. It has no relevance to other systems.
 ---
-status:       PUBLISHED
+status:       DEPRECATED
 technologies: [Android]
 categories:   [Wearable]
 languages:    [Java]
diff --git a/prebuilts/gradle/Flashlight/README.md b/prebuilts/gradle/Flashlight/README.md
index 9bfb704..9d43138 100644
--- a/prebuilts/gradle/Flashlight/README.md
+++ b/prebuilts/gradle/Flashlight/README.md
@@ -18,8 +18,8 @@
 Pre-requisites
 --------------
 
-- Android SDK v23
-- Android Build Tools v23.0.2
+- Android SDK 23
+- Android Build Tools v23.0.3
 - Android Support Repository
 
 Screenshots
@@ -48,7 +48,7 @@
 License
 -------
 
-Copyright 2014 The Android Open Source Project, Inc.
+Copyright 2016 The Android Open Source Project, Inc.
 
 Licensed to the Apache Software Foundation (ASF) under one or more contributor
 license agreements.  See the NOTICE file distributed with this work for
diff --git a/prebuilts/gradle/Flashlight/Wearable/build.gradle b/prebuilts/gradle/Flashlight/Wearable/build.gradle
index cb1382e..6170762 100644
--- a/prebuilts/gradle/Flashlight/Wearable/build.gradle
+++ b/prebuilts/gradle/Flashlight/Wearable/build.gradle
@@ -5,7 +5,7 @@
     }
 
     dependencies {
-        classpath 'com.android.tools.build:gradle:1.2.3'
+        classpath 'com.android.tools.build:gradle:2.1.2'
     }
 }
 
@@ -18,7 +18,7 @@
 
 
     compile 'com.google.android.gms:play-services-wearable:8.4.0'
-    compile 'com.android.support:support-v13:23.3.0'
+    compile 'com.android.support:support-v13:24.0.0-beta1'
 
     compile 'com.google.android.support:wearable:1.4.0'
 
@@ -35,7 +35,7 @@
 android {
     compileSdkVersion 23
 
-    buildToolsVersion "23.0.2"
+    buildToolsVersion "23.0.3"
 
     defaultConfig {
         versionCode 1
diff --git a/prebuilts/gradle/Flashlight/gradle/wrapper/gradle-wrapper.properties b/prebuilts/gradle/Flashlight/gradle/wrapper/gradle-wrapper.properties
index 07fc193..d570517 100644
--- a/prebuilts/gradle/Flashlight/gradle/wrapper/gradle-wrapper.properties
+++ b/prebuilts/gradle/Flashlight/gradle/wrapper/gradle-wrapper.properties
@@ -3,4 +3,4 @@
 distributionPath=wrapper/dists
 zipStoreBase=GRADLE_USER_HOME
 zipStorePath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-2.8-all.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-2.10-all.zip
diff --git a/prebuilts/gradle/FloatingActionButtonBasic/Application/build.gradle b/prebuilts/gradle/FloatingActionButtonBasic/Application/build.gradle
index 3bffd32..aeece30 100644
--- a/prebuilts/gradle/FloatingActionButtonBasic/Application/build.gradle
+++ b/prebuilts/gradle/FloatingActionButtonBasic/Application/build.gradle
@@ -5,7 +5,7 @@
     }
 
     dependencies {
-        classpath 'com.android.tools.build:gradle:1.2.3'
+        classpath 'com.android.tools.build:gradle:2.1.2'
     }
 }
 
@@ -16,9 +16,10 @@
 }
 
 dependencies {
-    compile "com.android.support:support-v4:23.1.0"
-    compile "com.android.support:support-v13:23.1.0"
-    compile "com.android.support:cardview-v7:23.1.0"
+    compile "com.android.support:support-v4:24.0.0-beta1"
+    compile "com.android.support:support-v13:24.0.0-beta1"
+    compile "com.android.support:cardview-v7:24.0.0-beta1"
+    compile "com.android.support:appcompat-v7:24.0.0-beta1"
 }
 
 // The sample build uses multiple directories to
@@ -31,7 +32,7 @@
 
 android {
     compileSdkVersion 21
-    buildToolsVersion "23.0.2"
+    buildToolsVersion "23.0.3"
 
     defaultConfig {
         minSdkVersion 21
diff --git a/prebuilts/gradle/FloatingActionButtonBasic/README.md b/prebuilts/gradle/FloatingActionButtonBasic/README.md
index 2961d78..ed7dd2c 100644
--- a/prebuilts/gradle/FloatingActionButtonBasic/README.md
+++ b/prebuilts/gradle/FloatingActionButtonBasic/README.md
@@ -25,8 +25,8 @@
 Pre-requisites
 --------------
 
-- Android SDK v21
-- Android Build Tools v23.0.2
+- Android SDK 21
+- Android Build Tools v23.0.3
 - Android Support Repository
 
 Screenshots
@@ -55,7 +55,7 @@
 License
 -------
 
-Copyright 2014 The Android Open Source Project, Inc.
+Copyright 2016 The Android Open Source Project, Inc.
 
 Licensed to the Apache Software Foundation (ASF) under one or more contributor
 license agreements.  See the NOTICE file distributed with this work for
diff --git a/prebuilts/gradle/FloatingActionButtonBasic/gradle/gradle/wrapper/gradle-wrapper.jar b/prebuilts/gradle/FloatingActionButtonBasic/gradle/gradle/wrapper/gradle-wrapper.jar
deleted file mode 100644
index 0087cd3..0000000
--- a/prebuilts/gradle/FloatingActionButtonBasic/gradle/gradle/wrapper/gradle-wrapper.jar
+++ /dev/null
Binary files differ
diff --git a/prebuilts/gradle/FloatingActionButtonBasic/gradle/gradlew b/prebuilts/gradle/FloatingActionButtonBasic/gradle/gradlew
deleted file mode 100644
index 91a7e26..0000000
--- a/prebuilts/gradle/FloatingActionButtonBasic/gradle/gradlew
+++ /dev/null
@@ -1,164 +0,0 @@
-#!/usr/bin/env bash
-
-##############################################################################
-##
-##  Gradle start up script for UN*X
-##
-##############################################################################
-
-# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
-DEFAULT_JVM_OPTS=""
-
-APP_NAME="Gradle"
-APP_BASE_NAME=`basename "$0"`
-
-# Use the maximum available, or set MAX_FD != -1 to use that value.
-MAX_FD="maximum"
-
-warn ( ) {
-    echo "$*"
-}
-
-die ( ) {
-    echo
-    echo "$*"
-    echo
-    exit 1
-}
-
-# OS specific support (must be 'true' or 'false').
-cygwin=false
-msys=false
-darwin=false
-case "`uname`" in
-  CYGWIN* )
-    cygwin=true
-    ;;
-  Darwin* )
-    darwin=true
-    ;;
-  MINGW* )
-    msys=true
-    ;;
-esac
-
-# For Cygwin, ensure paths are in UNIX format before anything is touched.
-if $cygwin ; then
-    [ -n "$JAVA_HOME" ] && JAVA_HOME=`cygpath --unix "$JAVA_HOME"`
-fi
-
-# Attempt to set APP_HOME
-# Resolve links: $0 may be a link
-PRG="$0"
-# Need this for relative symlinks.
-while [ -h "$PRG" ] ; do
-    ls=`ls -ld "$PRG"`
-    link=`expr "$ls" : '.*-> \(.*\)$'`
-    if expr "$link" : '/.*' > /dev/null; then
-        PRG="$link"
-    else
-        PRG=`dirname "$PRG"`"/$link"
-    fi
-done
-SAVED="`pwd`"
-cd "`dirname \"$PRG\"`/" >&-
-APP_HOME="`pwd -P`"
-cd "$SAVED" >&-
-
-CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
-
-# Determine the Java command to use to start the JVM.
-if [ -n "$JAVA_HOME" ] ; then
-    if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
-        # IBM's JDK on AIX uses strange locations for the executables
-        JAVACMD="$JAVA_HOME/jre/sh/java"
-    else
-        JAVACMD="$JAVA_HOME/bin/java"
-    fi
-    if [ ! -x "$JAVACMD" ] ; then
-        die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
-
-Please set the JAVA_HOME variable in your environment to match the
-location of your Java installation."
-    fi
-else
-    JAVACMD="java"
-    which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
-
-Please set the JAVA_HOME variable in your environment to match the
-location of your Java installation."
-fi
-
-# Increase the maximum file descriptors if we can.
-if [ "$cygwin" = "false" -a "$darwin" = "false" ] ; then
-    MAX_FD_LIMIT=`ulimit -H -n`
-    if [ $? -eq 0 ] ; then
-        if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
-            MAX_FD="$MAX_FD_LIMIT"
-        fi
-        ulimit -n $MAX_FD
-        if [ $? -ne 0 ] ; then
-            warn "Could not set maximum file descriptor limit: $MAX_FD"
-        fi
-    else
-        warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT"
-    fi
-fi
-
-# For Darwin, add options to specify how the application appears in the dock
-if $darwin; then
-    GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
-fi
-
-# For Cygwin, switch paths to Windows format before running java
-if $cygwin ; then
-    APP_HOME=`cygpath --path --mixed "$APP_HOME"`
-    CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
-
-    # We build the pattern for arguments to be converted via cygpath
-    ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
-    SEP=""
-    for dir in $ROOTDIRSRAW ; do
-        ROOTDIRS="$ROOTDIRS$SEP$dir"
-        SEP="|"
-    done
-    OURCYGPATTERN="(^($ROOTDIRS))"
-    # Add a user-defined pattern to the cygpath arguments
-    if [ "$GRADLE_CYGPATTERN" != "" ] ; then
-        OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)"
-    fi
-    # Now convert the arguments - kludge to limit ourselves to /bin/sh
-    i=0
-    for arg in "$@" ; do
-        CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -`
-        CHECK2=`echo "$arg"|egrep -c "^-"`                                 ### Determine if an option
-
-        if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then                    ### Added a condition
-            eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"`
-        else
-            eval `echo args$i`="\"$arg\""
-        fi
-        i=$((i+1))
-    done
-    case $i in
-        (0) set -- ;;
-        (1) set -- "$args0" ;;
-        (2) set -- "$args0" "$args1" ;;
-        (3) set -- "$args0" "$args1" "$args2" ;;
-        (4) set -- "$args0" "$args1" "$args2" "$args3" ;;
-        (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
-        (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
-        (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
-        (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
-        (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
-    esac
-fi
-
-# Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules
-function splitJvmOpts() {
-    JVM_OPTS=("$@")
-}
-eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS
-JVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME"
-
-exec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "$@"
diff --git a/prebuilts/gradle/FloatingActionButtonBasic/gradle/gradlew.bat b/prebuilts/gradle/FloatingActionButtonBasic/gradle/gradlew.bat
deleted file mode 100644
index 8a0b282..0000000
--- a/prebuilts/gradle/FloatingActionButtonBasic/gradle/gradlew.bat
+++ /dev/null
@@ -1,90 +0,0 @@
-@if "%DEBUG%" == "" @echo off
-@rem ##########################################################################
-@rem
-@rem  Gradle startup script for Windows
-@rem
-@rem ##########################################################################
-
-@rem Set local scope for the variables with windows NT shell
-if "%OS%"=="Windows_NT" setlocal
-
-@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
-set DEFAULT_JVM_OPTS=
-
-set DIRNAME=%~dp0
-if "%DIRNAME%" == "" set DIRNAME=.
-set APP_BASE_NAME=%~n0
-set APP_HOME=%DIRNAME%
-
-@rem Find java.exe
-if defined JAVA_HOME goto findJavaFromJavaHome
-
-set JAVA_EXE=java.exe
-%JAVA_EXE% -version >NUL 2>&1
-if "%ERRORLEVEL%" == "0" goto init
-
-echo.
-echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
-echo.
-echo Please set the JAVA_HOME variable in your environment to match the
-echo location of your Java installation.
-
-goto fail
-
-:findJavaFromJavaHome
-set JAVA_HOME=%JAVA_HOME:"=%
-set JAVA_EXE=%JAVA_HOME%/bin/java.exe
-
-if exist "%JAVA_EXE%" goto init
-
-echo.
-echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
-echo.
-echo Please set the JAVA_HOME variable in your environment to match the
-echo location of your Java installation.
-
-goto fail
-
-:init
-@rem Get command-line arguments, handling Windowz variants
-
-if not "%OS%" == "Windows_NT" goto win9xME_args
-if "%@eval[2+2]" == "4" goto 4NT_args
-
-:win9xME_args
-@rem Slurp the command line arguments.
-set CMD_LINE_ARGS=
-set _SKIP=2
-
-:win9xME_args_slurp
-if "x%~1" == "x" goto execute
-
-set CMD_LINE_ARGS=%*
-goto execute
-
-:4NT_args
-@rem Get arguments from the 4NT Shell from JP Software
-set CMD_LINE_ARGS=%$
-
-:execute
-@rem Setup the command line
-
-set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
-
-@rem Execute Gradle
-"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS%
-
-:end
-@rem End local scope for the variables with windows NT shell
-if "%ERRORLEVEL%"=="0" goto mainEnd
-
-:fail
-rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
-rem the _cmd.exe /c_ return code!
-if  not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
-exit /b 1
-
-:mainEnd
-if "%OS%"=="Windows_NT" endlocal
-
-:omega
diff --git a/prebuilts/gradle/FloatingActionButtonBasic/gradle/wrapper/gradle-wrapper.properties b/prebuilts/gradle/FloatingActionButtonBasic/gradle/wrapper/gradle-wrapper.properties
index f15b32c..9b778a3 100644
--- a/prebuilts/gradle/FloatingActionButtonBasic/gradle/wrapper/gradle-wrapper.properties
+++ b/prebuilts/gradle/FloatingActionButtonBasic/gradle/wrapper/gradle-wrapper.properties
@@ -3,4 +3,4 @@
 distributionPath=wrapper/dists
 zipStoreBase=GRADLE_USER_HOME
 zipStorePath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-2.8-all.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-2.10-all.zip
diff --git a/prebuilts/gradle/Geofencing/.google/packaging.yaml b/prebuilts/gradle/Geofencing/.google/packaging.yaml
index 0b84cdb..7816fd5 100644
--- a/prebuilts/gradle/Geofencing/.google/packaging.yaml
+++ b/prebuilts/gradle/Geofencing/.google/packaging.yaml
@@ -4,7 +4,7 @@
 # This file is used by Google as part of our samples packaging process.
 # End users may safely ignore this file. It has no relevance to other systems.
 ---
-status:       PUBLISHED
+status:       DEPRECATED
 technologies: [Android]
 categories:   [Wearable, Sensors]
 languages:    [Java]
diff --git a/prebuilts/gradle/Geofencing/Application/build.gradle b/prebuilts/gradle/Geofencing/Application/build.gradle
index fdd599e..ad583e6 100644
--- a/prebuilts/gradle/Geofencing/Application/build.gradle
+++ b/prebuilts/gradle/Geofencing/Application/build.gradle
@@ -5,7 +5,7 @@
     }
 
     dependencies {
-        classpath 'com.android.tools.build:gradle:1.2.3'
+        classpath 'com.android.tools.build:gradle:2.1.2'
     }
 }
 
@@ -16,12 +16,13 @@
 }
 
 dependencies {
-    compile "com.android.support:support-v4:23.1.0"
-    compile "com.android.support:support-v13:23.1.0"
-    compile "com.android.support:cardview-v7:23.1.0"
-    compile 'com.google.android.gms:play-services-location:8.3.0'
+    compile "com.android.support:support-v4:24.0.0-beta1"
+    compile "com.android.support:support-v13:24.0.0-beta1"
+    compile "com.android.support:cardview-v7:24.0.0-beta1"
+    compile "com.android.support:appcompat-v7:24.0.0-beta1"
+    compile 'com.google.android.gms:play-services-location:8.4.0'
     compile 'com.google.android.gms:play-services-wearable:8.4.0'
-    compile 'com.android.support:support-v13:23.1.1'
+    compile 'com.android.support:support-v13:24.0.0-beta1'
     wearApp project(':Wearable')
 }
 
@@ -35,7 +36,7 @@
 
 android {
     compileSdkVersion 23
-    buildToolsVersion "23.0.2"
+    buildToolsVersion "23.0.3"
 
     defaultConfig {
         minSdkVersion 18
diff --git a/prebuilts/gradle/Geofencing/README.md b/prebuilts/gradle/Geofencing/README.md
index ce1f7aa..a326012 100644
--- a/prebuilts/gradle/Geofencing/README.md
+++ b/prebuilts/gradle/Geofencing/README.md
@@ -36,8 +36,8 @@
 Pre-requisites
 --------------
 
-- Android SDK v23
-- Android Build Tools v23.0.2
+- Android SDK 23
+- Android Build Tools v23.0.3
 - Android Support Repository
 
 Screenshots
@@ -66,7 +66,7 @@
 License
 -------
 
-Copyright 2014 The Android Open Source Project, Inc.
+Copyright 2016 The Android Open Source Project, Inc.
 
 Licensed to the Apache Software Foundation (ASF) under one or more contributor
 license agreements.  See the NOTICE file distributed with this work for
diff --git a/prebuilts/gradle/Geofencing/Wearable/build.gradle b/prebuilts/gradle/Geofencing/Wearable/build.gradle
index cb1382e..6170762 100644
--- a/prebuilts/gradle/Geofencing/Wearable/build.gradle
+++ b/prebuilts/gradle/Geofencing/Wearable/build.gradle
@@ -5,7 +5,7 @@
     }
 
     dependencies {
-        classpath 'com.android.tools.build:gradle:1.2.3'
+        classpath 'com.android.tools.build:gradle:2.1.2'
     }
 }
 
@@ -18,7 +18,7 @@
 
 
     compile 'com.google.android.gms:play-services-wearable:8.4.0'
-    compile 'com.android.support:support-v13:23.3.0'
+    compile 'com.android.support:support-v13:24.0.0-beta1'
 
     compile 'com.google.android.support:wearable:1.4.0'
 
@@ -35,7 +35,7 @@
 android {
     compileSdkVersion 23
 
-    buildToolsVersion "23.0.2"
+    buildToolsVersion "23.0.3"
 
     defaultConfig {
         versionCode 1
diff --git a/prebuilts/gradle/Geofencing/gradle/wrapper/gradle-wrapper.properties b/prebuilts/gradle/Geofencing/gradle/wrapper/gradle-wrapper.properties
index 07fc193..d570517 100644
--- a/prebuilts/gradle/Geofencing/gradle/wrapper/gradle-wrapper.properties
+++ b/prebuilts/gradle/Geofencing/gradle/wrapper/gradle-wrapper.properties
@@ -3,4 +3,4 @@
 distributionPath=wrapper/dists
 zipStoreBase=GRADLE_USER_HOME
 zipStorePath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-2.8-all.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-2.10-all.zip
diff --git a/prebuilts/gradle/GridViewPager/README.md b/prebuilts/gradle/GridViewPager/README.md
index 737f325..86970bc 100644
--- a/prebuilts/gradle/GridViewPager/README.md
+++ b/prebuilts/gradle/GridViewPager/README.md
@@ -7,8 +7,8 @@
 Pre-requisites
 --------------
 
-- Android SDK v23
-- Android Build Tools v23.0.2
+- Android SDK 23
+- Android Build Tools v23.0.3
 - Android Support Repository
 
 Getting Started
@@ -32,7 +32,7 @@
 License
 -------
 
-Copyright 2014 The Android Open Source Project, Inc.
+Copyright 2016 The Android Open Source Project, Inc.
 
 Licensed to the Apache Software Foundation (ASF) under one or more contributor
 license agreements.  See the NOTICE file distributed with this work for
diff --git a/prebuilts/gradle/GridViewPager/Wearable/build.gradle b/prebuilts/gradle/GridViewPager/Wearable/build.gradle
index d31eedd..fa8f537 100644
--- a/prebuilts/gradle/GridViewPager/Wearable/build.gradle
+++ b/prebuilts/gradle/GridViewPager/Wearable/build.gradle
@@ -5,7 +5,7 @@
     }
 
     dependencies {
-        classpath 'com.android.tools.build:gradle:1.2.3'
+        classpath 'com.android.tools.build:gradle:2.1.2'
     }
 }
 
@@ -18,7 +18,7 @@
 
 
     compile 'com.google.android.gms:play-services-wearable:8.4.0'
-    compile 'com.android.support:support-v13:23.3.0'
+    compile 'com.android.support:support-v13:24.0.0-beta1'
 
     compile 'com.google.android.support:wearable:1.4.0'
 
@@ -35,7 +35,7 @@
 android {
     compileSdkVersion 23
 
-    buildToolsVersion "23.0.2"
+    buildToolsVersion "23.0.3"
 
     defaultConfig {
         versionCode 1
diff --git a/prebuilts/gradle/GridViewPager/gradle/wrapper/gradle-wrapper.properties b/prebuilts/gradle/GridViewPager/gradle/wrapper/gradle-wrapper.properties
index 07fc193..d570517 100644
--- a/prebuilts/gradle/GridViewPager/gradle/wrapper/gradle-wrapper.properties
+++ b/prebuilts/gradle/GridViewPager/gradle/wrapper/gradle-wrapper.properties
@@ -3,4 +3,4 @@
 distributionPath=wrapper/dists
 zipStoreBase=GRADLE_USER_HOME
 zipStorePath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-2.8-all.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-2.10-all.zip
diff --git a/prebuilts/gradle/HdrViewfinder/Application/build.gradle b/prebuilts/gradle/HdrViewfinder/Application/build.gradle
index 4bcc6b1..42874d4 100644
--- a/prebuilts/gradle/HdrViewfinder/Application/build.gradle
+++ b/prebuilts/gradle/HdrViewfinder/Application/build.gradle
@@ -5,7 +5,7 @@
     }
 
     dependencies {
-        classpath 'com.android.tools.build:gradle:1.2.3'
+        classpath 'com.android.tools.build:gradle:2.1.2'
     }
 }
 
@@ -16,10 +16,11 @@
 }
 
 dependencies {
-    compile "com.android.support:support-v4:23.1.0"
-    compile "com.android.support:support-v13:23.1.0"
-    compile "com.android.support:cardview-v7:23.1.0"
-    compile 'com.android.support:design:23.0.0'
+    compile "com.android.support:support-v4:24.0.0-beta1"
+    compile "com.android.support:support-v13:24.0.0-beta1"
+    compile "com.android.support:cardview-v7:24.0.0-beta1"
+    compile "com.android.support:appcompat-v7:24.0.0-beta1"
+    compile 'com.android.support:design:24.0.0-beta1'
 }
 
 // The sample build uses multiple directories to
@@ -32,7 +33,7 @@
 
 android {
     compileSdkVersion 23
-    buildToolsVersion "23.0.2"
+    buildToolsVersion "23.0.3"
 
     defaultConfig {
         minSdkVersion 21
diff --git a/prebuilts/gradle/HdrViewfinder/README.md b/prebuilts/gradle/HdrViewfinder/README.md
index 8b830d9..30c0d68 100644
--- a/prebuilts/gradle/HdrViewfinder/README.md
+++ b/prebuilts/gradle/HdrViewfinder/README.md
@@ -43,8 +43,8 @@
 Pre-requisites
 --------------
 
-- Android SDK v23
-- Android Build Tools v23.0.2
+- Android SDK 23
+- Android Build Tools v23.0.3
 - Android Support Repository
 
 Screenshots
@@ -73,7 +73,7 @@
 License
 -------
 
-Copyright 2014 The Android Open Source Project, Inc.
+Copyright 2016 The Android Open Source Project, Inc.
 
 Licensed to the Apache Software Foundation (ASF) under one or more contributor
 license agreements.  See the NOTICE file distributed with this work for
diff --git a/prebuilts/gradle/HdrViewfinder/gradle/wrapper/gradle-wrapper.properties b/prebuilts/gradle/HdrViewfinder/gradle/wrapper/gradle-wrapper.properties
index 07fc193..d570517 100644
--- a/prebuilts/gradle/HdrViewfinder/gradle/wrapper/gradle-wrapper.properties
+++ b/prebuilts/gradle/HdrViewfinder/gradle/wrapper/gradle-wrapper.properties
@@ -3,4 +3,4 @@
 distributionPath=wrapper/dists
 zipStoreBase=GRADLE_USER_HOME
 zipStorePath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-2.8-all.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-2.10-all.zip
diff --git a/prebuilts/gradle/HorizontalPaging/Application/build.gradle b/prebuilts/gradle/HorizontalPaging/Application/build.gradle
index 013768e..2915ada 100644
--- a/prebuilts/gradle/HorizontalPaging/Application/build.gradle
+++ b/prebuilts/gradle/HorizontalPaging/Application/build.gradle
@@ -5,7 +5,7 @@
     }
 
     dependencies {
-        classpath 'com.android.tools.build:gradle:1.2.3'
+        classpath 'com.android.tools.build:gradle:2.1.2'
     }
 }
 
@@ -16,9 +16,10 @@
 }
 
 dependencies {
-    compile "com.android.support:support-v4:23.1.0"
-    compile "com.android.support:gridlayout-v7:23.1.0"
-    compile "com.android.support:cardview-v7:23.1.0"
+    compile "com.android.support:support-v4:24.0.0-beta1"
+    compile "com.android.support:gridlayout-v7:24.0.0-beta1"
+    compile "com.android.support:cardview-v7:24.0.0-beta1"
+    compile "com.android.support:appcompat-v7:24.0.0-beta1"
 }
 
 // The sample build uses multiple directories to
@@ -31,7 +32,7 @@
 
 android {
     compileSdkVersion 23
-    buildToolsVersion "23.0.2"
+    buildToolsVersion "23.0.3"
 
     defaultConfig {
         minSdkVersion 11
diff --git a/prebuilts/gradle/HorizontalPaging/README.md b/prebuilts/gradle/HorizontalPaging/README.md
index 011b17e..a3f84a6 100644
--- a/prebuilts/gradle/HorizontalPaging/README.md
+++ b/prebuilts/gradle/HorizontalPaging/README.md
@@ -30,8 +30,8 @@
 Pre-requisites
 --------------
 
-- Android SDK v23
-- Android Build Tools v23.0.2
+- Android SDK 23
+- Android Build Tools v23.0.3
 - Android Support Repository
 
 Screenshots
@@ -60,7 +60,7 @@
 License
 -------
 
-Copyright 2014 The Android Open Source Project, Inc.
+Copyright 2016 The Android Open Source Project, Inc.
 
 Licensed to the Apache Software Foundation (ASF) under one or more contributor
 license agreements.  See the NOTICE file distributed with this work for
diff --git a/prebuilts/gradle/HorizontalPaging/gradle/wrapper/gradle-wrapper.properties b/prebuilts/gradle/HorizontalPaging/gradle/wrapper/gradle-wrapper.properties
index 07fc193..d570517 100644
--- a/prebuilts/gradle/HorizontalPaging/gradle/wrapper/gradle-wrapper.properties
+++ b/prebuilts/gradle/HorizontalPaging/gradle/wrapper/gradle-wrapper.properties
@@ -3,4 +3,4 @@
 distributionPath=wrapper/dists
 zipStoreBase=GRADLE_USER_HOME
 zipStorePath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-2.8-all.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-2.10-all.zip
diff --git a/prebuilts/gradle/ImmersiveMode/Application/build.gradle b/prebuilts/gradle/ImmersiveMode/Application/build.gradle
index 013768e..2915ada 100644
--- a/prebuilts/gradle/ImmersiveMode/Application/build.gradle
+++ b/prebuilts/gradle/ImmersiveMode/Application/build.gradle
@@ -5,7 +5,7 @@
     }
 
     dependencies {
-        classpath 'com.android.tools.build:gradle:1.2.3'
+        classpath 'com.android.tools.build:gradle:2.1.2'
     }
 }
 
@@ -16,9 +16,10 @@
 }
 
 dependencies {
-    compile "com.android.support:support-v4:23.1.0"
-    compile "com.android.support:gridlayout-v7:23.1.0"
-    compile "com.android.support:cardview-v7:23.1.0"
+    compile "com.android.support:support-v4:24.0.0-beta1"
+    compile "com.android.support:gridlayout-v7:24.0.0-beta1"
+    compile "com.android.support:cardview-v7:24.0.0-beta1"
+    compile "com.android.support:appcompat-v7:24.0.0-beta1"
 }
 
 // The sample build uses multiple directories to
@@ -31,7 +32,7 @@
 
 android {
     compileSdkVersion 23
-    buildToolsVersion "23.0.2"
+    buildToolsVersion "23.0.3"
 
     defaultConfig {
         minSdkVersion 11
diff --git a/prebuilts/gradle/ImmersiveMode/README.md b/prebuilts/gradle/ImmersiveMode/README.md
index 80cb929..060bf8e 100644
--- a/prebuilts/gradle/ImmersiveMode/README.md
+++ b/prebuilts/gradle/ImmersiveMode/README.md
@@ -9,8 +9,8 @@
 Pre-requisites
 --------------
 
-- Android SDK v23
-- Android Build Tools v23.0.2
+- Android SDK 23
+- Android Build Tools v23.0.3
 - Android Support Repository
 
 Getting Started
@@ -34,7 +34,7 @@
 License
 -------
 
-Copyright 2014 The Android Open Source Project, Inc.
+Copyright 2016 The Android Open Source Project, Inc.
 
 Licensed to the Apache Software Foundation (ASF) under one or more contributor
 license agreements.  See the NOTICE file distributed with this work for
diff --git a/prebuilts/gradle/ImmersiveMode/gradle/wrapper/gradle-wrapper.properties b/prebuilts/gradle/ImmersiveMode/gradle/wrapper/gradle-wrapper.properties
index 07fc193..d570517 100644
--- a/prebuilts/gradle/ImmersiveMode/gradle/wrapper/gradle-wrapper.properties
+++ b/prebuilts/gradle/ImmersiveMode/gradle/wrapper/gradle-wrapper.properties
@@ -3,4 +3,4 @@
 distributionPath=wrapper/dists
 zipStoreBase=GRADLE_USER_HOME
 zipStorePath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-2.8-all.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-2.10-all.zip
diff --git a/prebuilts/gradle/Interpolator/Application/build.gradle b/prebuilts/gradle/Interpolator/Application/build.gradle
index ba404cc..c45ed11 100644
--- a/prebuilts/gradle/Interpolator/Application/build.gradle
+++ b/prebuilts/gradle/Interpolator/Application/build.gradle
@@ -5,7 +5,7 @@
     }
 
     dependencies {
-        classpath 'com.android.tools.build:gradle:1.2.3'
+        classpath 'com.android.tools.build:gradle:2.1.2'
     }
 }
 
@@ -16,9 +16,10 @@
 }
 
 dependencies {
-    compile "com.android.support:support-v4:23.1.0"
-    compile "com.android.support:support-v13:23.1.0"
-    compile "com.android.support:cardview-v7:23.1.0"
+    compile "com.android.support:support-v4:24.0.0-beta1"
+    compile "com.android.support:support-v13:24.0.0-beta1"
+    compile "com.android.support:cardview-v7:24.0.0-beta1"
+    compile "com.android.support:appcompat-v7:24.0.0-beta1"
 }
 
 // The sample build uses multiple directories to
@@ -31,7 +32,7 @@
 
 android {
     compileSdkVersion 23
-    buildToolsVersion "23.0.2"
+    buildToolsVersion "23.0.3"
 
     defaultConfig {
         minSdkVersion 21
diff --git a/prebuilts/gradle/Interpolator/README.md b/prebuilts/gradle/Interpolator/README.md
index dfd9c07..40053a4 100644
--- a/prebuilts/gradle/Interpolator/README.md
+++ b/prebuilts/gradle/Interpolator/README.md
@@ -23,8 +23,8 @@
 Pre-requisites
 --------------
 
-- Android SDK v23
-- Android Build Tools v23.0.2
+- Android SDK 23
+- Android Build Tools v23.0.3
 - Android Support Repository
 
 Screenshots
@@ -53,7 +53,7 @@
 License
 -------
 
-Copyright 2014 The Android Open Source Project, Inc.
+Copyright 2016 The Android Open Source Project, Inc.
 
 Licensed to the Apache Software Foundation (ASF) under one or more contributor
 license agreements.  See the NOTICE file distributed with this work for
diff --git a/prebuilts/gradle/Interpolator/gradle/wrapper/gradle-wrapper.properties b/prebuilts/gradle/Interpolator/gradle/wrapper/gradle-wrapper.properties
index 07fc193..d570517 100644
--- a/prebuilts/gradle/Interpolator/gradle/wrapper/gradle-wrapper.properties
+++ b/prebuilts/gradle/Interpolator/gradle/wrapper/gradle-wrapper.properties
@@ -3,4 +3,4 @@
 distributionPath=wrapper/dists
 zipStoreBase=GRADLE_USER_HOME
 zipStorePath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-2.8-all.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-2.10-all.zip
diff --git a/prebuilts/gradle/JobScheduler/Application/build.gradle b/prebuilts/gradle/JobScheduler/Application/build.gradle
index 3bffd32..aeece30 100644
--- a/prebuilts/gradle/JobScheduler/Application/build.gradle
+++ b/prebuilts/gradle/JobScheduler/Application/build.gradle
@@ -5,7 +5,7 @@
     }
 
     dependencies {
-        classpath 'com.android.tools.build:gradle:1.2.3'
+        classpath 'com.android.tools.build:gradle:2.1.2'
     }
 }
 
@@ -16,9 +16,10 @@
 }
 
 dependencies {
-    compile "com.android.support:support-v4:23.1.0"
-    compile "com.android.support:support-v13:23.1.0"
-    compile "com.android.support:cardview-v7:23.1.0"
+    compile "com.android.support:support-v4:24.0.0-beta1"
+    compile "com.android.support:support-v13:24.0.0-beta1"
+    compile "com.android.support:cardview-v7:24.0.0-beta1"
+    compile "com.android.support:appcompat-v7:24.0.0-beta1"
 }
 
 // The sample build uses multiple directories to
@@ -31,7 +32,7 @@
 
 android {
     compileSdkVersion 21
-    buildToolsVersion "23.0.2"
+    buildToolsVersion "23.0.3"
 
     defaultConfig {
         minSdkVersion 21
diff --git a/prebuilts/gradle/JobScheduler/README.md b/prebuilts/gradle/JobScheduler/README.md
index 96d64e0..90c018c 100644
--- a/prebuilts/gradle/JobScheduler/README.md
+++ b/prebuilts/gradle/JobScheduler/README.md
@@ -8,8 +8,8 @@
 Pre-requisites
 --------------
 
-- Android SDK v21
-- Android Build Tools v23.0.2
+- Android SDK 21
+- Android Build Tools v23.0.3
 - Android Support Repository
 
 Getting Started
@@ -33,7 +33,7 @@
 License
 -------
 
-Copyright 2014 The Android Open Source Project, Inc.
+Copyright 2016 The Android Open Source Project, Inc.
 
 Licensed to the Apache Software Foundation (ASF) under one or more contributor
 license agreements.  See the NOTICE file distributed with this work for
diff --git a/prebuilts/gradle/JobScheduler/gradle/wrapper/gradle-wrapper.properties b/prebuilts/gradle/JobScheduler/gradle/wrapper/gradle-wrapper.properties
index 07fc193..d570517 100644
--- a/prebuilts/gradle/JobScheduler/gradle/wrapper/gradle-wrapper.properties
+++ b/prebuilts/gradle/JobScheduler/gradle/wrapper/gradle-wrapper.properties
@@ -3,4 +3,4 @@
 distributionPath=wrapper/dists
 zipStoreBase=GRADLE_USER_HOME
 zipStorePath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-2.8-all.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-2.10-all.zip
diff --git a/prebuilts/gradle/JumpingJack/README.md b/prebuilts/gradle/JumpingJack/README.md
index 46166fa..88b94e1 100644
--- a/prebuilts/gradle/JumpingJack/README.md
+++ b/prebuilts/gradle/JumpingJack/README.md
@@ -44,8 +44,8 @@
 Pre-requisites
 --------------
 
-- Android SDK v23
-- Android Build Tools v23.0.2
+- Android SDK 23
+- Android Build Tools v23.0.3
 - Android Support Repository
 
 Screenshots
@@ -74,7 +74,7 @@
 License
 -------
 
-Copyright 2014 The Android Open Source Project, Inc.
+Copyright 2016 The Android Open Source Project, Inc.
 
 Licensed to the Apache Software Foundation (ASF) under one or more contributor
 license agreements.  See the NOTICE file distributed with this work for
diff --git a/prebuilts/gradle/JumpingJack/Wearable/build.gradle b/prebuilts/gradle/JumpingJack/Wearable/build.gradle
index d31eedd..fa8f537 100644
--- a/prebuilts/gradle/JumpingJack/Wearable/build.gradle
+++ b/prebuilts/gradle/JumpingJack/Wearable/build.gradle
@@ -5,7 +5,7 @@
     }
 
     dependencies {
-        classpath 'com.android.tools.build:gradle:1.2.3'
+        classpath 'com.android.tools.build:gradle:2.1.2'
     }
 }
 
@@ -18,7 +18,7 @@
 
 
     compile 'com.google.android.gms:play-services-wearable:8.4.0'
-    compile 'com.android.support:support-v13:23.3.0'
+    compile 'com.android.support:support-v13:24.0.0-beta1'
 
     compile 'com.google.android.support:wearable:1.4.0'
 
@@ -35,7 +35,7 @@
 android {
     compileSdkVersion 23
 
-    buildToolsVersion "23.0.2"
+    buildToolsVersion "23.0.3"
 
     defaultConfig {
         versionCode 1
diff --git a/prebuilts/gradle/JumpingJack/gradle/wrapper/gradle-wrapper.properties b/prebuilts/gradle/JumpingJack/gradle/wrapper/gradle-wrapper.properties
index 07fc193..d570517 100644
--- a/prebuilts/gradle/JumpingJack/gradle/wrapper/gradle-wrapper.properties
+++ b/prebuilts/gradle/JumpingJack/gradle/wrapper/gradle-wrapper.properties
@@ -3,4 +3,4 @@
 distributionPath=wrapper/dists
 zipStoreBase=GRADLE_USER_HOME
 zipStorePath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-2.8-all.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-2.10-all.zip
diff --git a/prebuilts/gradle/LNotifications/Application/build.gradle b/prebuilts/gradle/LNotifications/Application/build.gradle
index 5266205..c849ff3 100644
--- a/prebuilts/gradle/LNotifications/Application/build.gradle
+++ b/prebuilts/gradle/LNotifications/Application/build.gradle
@@ -5,7 +5,7 @@
     }
 
     dependencies {
-        classpath 'com.android.tools.build:gradle:1.2.3'
+        classpath 'com.android.tools.build:gradle:2.1.2'
     }
 }
 
@@ -16,9 +16,10 @@
 }
 
 dependencies {
-    compile "com.android.support:support-v4:23.1.0"
-    compile "com.android.support:support-v13:23.1.0"
-    compile "com.android.support:cardview-v7:23.1.0"
+    compile "com.android.support:support-v4:24.0.0-beta1"
+    compile "com.android.support:support-v13:24.0.0-beta1"
+    compile "com.android.support:cardview-v7:24.0.0-beta1"
+    compile "com.android.support:appcompat-v7:24.0.0-beta1"
 }
 
 // The sample build uses multiple directories to
@@ -31,7 +32,7 @@
 
 android {
     compileSdkVersion 23
-    buildToolsVersion "23.0.2"
+    buildToolsVersion "23.0.3"
 
     defaultConfig {
         minSdkVersion 21
diff --git a/prebuilts/gradle/LNotifications/README.md b/prebuilts/gradle/LNotifications/README.md
index 7c2c631..0e4468f 100644
--- a/prebuilts/gradle/LNotifications/README.md
+++ b/prebuilts/gradle/LNotifications/README.md
@@ -26,8 +26,8 @@
 Pre-requisites
 --------------
 
-- Android SDK v23
-- Android Build Tools v23.0.2
+- Android SDK 23
+- Android Build Tools v23.0.3
 - Android Support Repository
 
 Screenshots
@@ -56,7 +56,7 @@
 License
 -------
 
-Copyright 2014 The Android Open Source Project, Inc.
+Copyright 2016 The Android Open Source Project, Inc.
 
 Licensed to the Apache Software Foundation (ASF) under one or more contributor
 license agreements.  See the NOTICE file distributed with this work for
diff --git a/prebuilts/gradle/LNotifications/gradle/wrapper/gradle-wrapper.properties b/prebuilts/gradle/LNotifications/gradle/wrapper/gradle-wrapper.properties
index 828f2e6..2fa0ecc 100644
--- a/prebuilts/gradle/LNotifications/gradle/wrapper/gradle-wrapper.properties
+++ b/prebuilts/gradle/LNotifications/gradle/wrapper/gradle-wrapper.properties
@@ -3,4 +3,4 @@
 distributionPath=wrapper/dists
 zipStoreBase=GRADLE_USER_HOME
 zipStorePath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-2.8-all.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-2.10-all.zip
diff --git a/prebuilts/gradle/MediaBrowserService/Application/build.gradle b/prebuilts/gradle/MediaBrowserService/Application/build.gradle
index 2ce105e..5330b45 100644
--- a/prebuilts/gradle/MediaBrowserService/Application/build.gradle
+++ b/prebuilts/gradle/MediaBrowserService/Application/build.gradle
@@ -5,7 +5,7 @@
     }
 
     dependencies {
-        classpath 'com.android.tools.build:gradle:1.2.3'
+        classpath 'com.android.tools.build:gradle:2.1.2'
     }
 }
 
@@ -14,9 +14,9 @@
 
 dependencies {
 
-    compile "com.android.support:support-v4:21.0.2"
-    compile "com.android.support:support-v13:21.0.2"
-    compile "com.android.support:cardview-v7:21.0.2"
+    compile "com.android.support:support-v4:24.0.0-beta1"
+    compile "com.android.support:support-v13:24.0.0-beta1"
+    compile "com.android.support:cardview-v7:24.0.0-beta1"
 
 }
 
@@ -30,7 +30,7 @@
 
 android {
     compileSdkVersion 23
-    buildToolsVersion "23.0.2"
+    buildToolsVersion "23.0.3"
 
     defaultConfig {
         minSdkVersion 21
diff --git a/prebuilts/gradle/MediaBrowserService/README.md b/prebuilts/gradle/MediaBrowserService/README.md
index 3d07e7d..5ae05e5 100644
--- a/prebuilts/gradle/MediaBrowserService/README.md
+++ b/prebuilts/gradle/MediaBrowserService/README.md
@@ -72,8 +72,8 @@
 Pre-requisites
 --------------
 
-- Android SDK v23
-- Android Build Tools v23.0.2
+- Android SDK 23
+- Android Build Tools v23.0.3
 - Android Support Repository
 
 Screenshots
@@ -102,7 +102,7 @@
 License
 -------
 
-Copyright 2014 The Android Open Source Project, Inc.
+Copyright 2016 The Android Open Source Project, Inc.
 
 Licensed to the Apache Software Foundation (ASF) under one or more contributor
 license agreements.  See the NOTICE file distributed with this work for
diff --git a/prebuilts/gradle/MediaBrowserService/gradle/wrapper/gradle-wrapper.properties b/prebuilts/gradle/MediaBrowserService/gradle/wrapper/gradle-wrapper.properties
index 07fc193..d570517 100644
--- a/prebuilts/gradle/MediaBrowserService/gradle/wrapper/gradle-wrapper.properties
+++ b/prebuilts/gradle/MediaBrowserService/gradle/wrapper/gradle-wrapper.properties
@@ -3,4 +3,4 @@
 distributionPath=wrapper/dists
 zipStoreBase=GRADLE_USER_HOME
 zipStorePath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-2.8-all.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-2.10-all.zip
diff --git a/prebuilts/gradle/MediaEffects/Application/build.gradle b/prebuilts/gradle/MediaEffects/Application/build.gradle
index 394eb93..f757b43 100644
--- a/prebuilts/gradle/MediaEffects/Application/build.gradle
+++ b/prebuilts/gradle/MediaEffects/Application/build.gradle
@@ -5,7 +5,7 @@
     }
 
     dependencies {
-        classpath 'com.android.tools.build:gradle:1.2.3'
+        classpath 'com.android.tools.build:gradle:2.1.2'
     }
 }
 
@@ -16,9 +16,10 @@
 }
 
 dependencies {
-    compile "com.android.support:support-v4:23.1.0"
-    compile "com.android.support:support-v13:23.1.0"
-    compile "com.android.support:cardview-v7:23.1.0"
+    compile "com.android.support:support-v4:24.0.0-beta1"
+    compile "com.android.support:support-v13:24.0.0-beta1"
+    compile "com.android.support:cardview-v7:24.0.0-beta1"
+    compile "com.android.support:appcompat-v7:24.0.0-beta1"
 }
 
 // The sample build uses multiple directories to
@@ -31,7 +32,7 @@
 
 android {
     compileSdkVersion 23
-    buildToolsVersion "23.0.2"
+    buildToolsVersion "23.0.3"
 
     defaultConfig {
         minSdkVersion 14
diff --git a/prebuilts/gradle/MediaEffects/README.md b/prebuilts/gradle/MediaEffects/README.md
index 052d356..780d3e8 100644
--- a/prebuilts/gradle/MediaEffects/README.md
+++ b/prebuilts/gradle/MediaEffects/README.md
@@ -21,8 +21,8 @@
 Pre-requisites
 --------------
 
-- Android SDK v23
-- Android Build Tools v23.0.2
+- Android SDK 23
+- Android Build Tools v23.0.3
 - Android Support Repository
 
 Screenshots
@@ -51,7 +51,7 @@
 License
 -------
 
-Copyright 2014 The Android Open Source Project, Inc.
+Copyright 2016 The Android Open Source Project, Inc.
 
 Licensed to the Apache Software Foundation (ASF) under one or more contributor
 license agreements.  See the NOTICE file distributed with this work for
diff --git a/prebuilts/gradle/MediaEffects/gradle/wrapper/gradle-wrapper.properties b/prebuilts/gradle/MediaEffects/gradle/wrapper/gradle-wrapper.properties
index 07fc193..d570517 100644
--- a/prebuilts/gradle/MediaEffects/gradle/wrapper/gradle-wrapper.properties
+++ b/prebuilts/gradle/MediaEffects/gradle/wrapper/gradle-wrapper.properties
@@ -3,4 +3,4 @@
 distributionPath=wrapper/dists
 zipStoreBase=GRADLE_USER_HOME
 zipStorePath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-2.8-all.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-2.10-all.zip
diff --git a/prebuilts/gradle/MediaRecorder/Application/build.gradle b/prebuilts/gradle/MediaRecorder/Application/build.gradle
index 3e0c25f..3db6809 100644
--- a/prebuilts/gradle/MediaRecorder/Application/build.gradle
+++ b/prebuilts/gradle/MediaRecorder/Application/build.gradle
@@ -5,7 +5,7 @@
     }
 
     dependencies {
-        classpath 'com.android.tools.build:gradle:1.2.3'
+        classpath 'com.android.tools.build:gradle:2.1.2'
     }
 }
 
@@ -16,9 +16,10 @@
 }
 
 dependencies {
-    compile "com.android.support:support-v4:23.1.0"
-    compile "com.android.support:support-v13:23.1.0"
-    compile "com.android.support:cardview-v7:23.1.0"
+    compile "com.android.support:support-v4:24.0.0-beta1"
+    compile "com.android.support:support-v13:24.0.0-beta1"
+    compile "com.android.support:cardview-v7:24.0.0-beta1"
+    compile "com.android.support:appcompat-v7:24.0.0-beta1"
 }
 
 // The sample build uses multiple directories to
@@ -31,7 +32,7 @@
 
 android {
     compileSdkVersion 23
-    buildToolsVersion "23.0.2"
+    buildToolsVersion "23.0.3"
 
     defaultConfig {
         minSdkVersion 16
diff --git a/prebuilts/gradle/MediaRecorder/Application/src/main/java/com/example/android/common/media/CameraHelper.java b/prebuilts/gradle/MediaRecorder/Application/src/main/java/com/example/android/common/media/CameraHelper.java
index 1fa8416..b578767 100644
--- a/prebuilts/gradle/MediaRecorder/Application/src/main/java/com/example/android/common/media/CameraHelper.java
+++ b/prebuilts/gradle/MediaRecorder/Application/src/main/java/com/example/android/common/media/CameraHelper.java
@@ -36,49 +36,57 @@
     public static final int MEDIA_TYPE_VIDEO = 2;
 
     /**
-     * Iterate over supported camera preview sizes to see which one best fits the
+     * Iterate over supported camera video sizes to see which one best fits the
      * dimensions of the given view while maintaining the aspect ratio. If none can,
      * be lenient with the aspect ratio.
      *
-     * @param sizes Supported camera preview sizes.
-     * @param w The width of the view.
-     * @param h The height of the view.
-     * @return Best match camera preview size to fit in the view.
+     * @param supportedVideoSizes Supported camera video sizes.
+     * @param previewSizes Supported camera preview sizes.
+     * @param w     The width of the view.
+     * @param h     The height of the view.
+     * @return Best match camera video size to fit in the view.
      */
-    public static  Camera.Size getOptimalPreviewSize(List<Camera.Size> sizes, int w, int h) {
+    public static Camera.Size getOptimalVideoSize(List<Camera.Size> supportedVideoSizes,
+            List<Camera.Size> previewSizes, int w, int h) {
         // Use a very small tolerance because we want an exact match.
         final double ASPECT_TOLERANCE = 0.1;
         double targetRatio = (double) w / h;
-        if (sizes == null)
-            return null;
 
+        // Supported video sizes list might be null, it means that we are allowed to use the preview
+        // sizes
+        List<Camera.Size> videoSizes;
+        if (supportedVideoSizes != null) {
+            videoSizes = supportedVideoSizes;
+        } else {
+            videoSizes = previewSizes;
+        }
         Camera.Size optimalSize = null;
 
-        // Start with max value and refine as we iterate over available preview sizes. This is the
+        // Start with max value and refine as we iterate over available video sizes. This is the
         // minimum difference between view and camera height.
         double minDiff = Double.MAX_VALUE;
 
         // Target view height
         int targetHeight = h;
 
-        // Try to find a preview size that matches aspect ratio and the target view size.
+        // Try to find a video size that matches aspect ratio and the target view size.
         // Iterate over all available sizes and pick the largest size that can fit in the view and
         // still maintain the aspect ratio.
-        for (Camera.Size size : sizes) {
+        for (Camera.Size size : videoSizes) {
             double ratio = (double) size.width / size.height;
             if (Math.abs(ratio - targetRatio) > ASPECT_TOLERANCE)
                 continue;
-            if (Math.abs(size.height - targetHeight) < minDiff) {
+            if (Math.abs(size.height - targetHeight) < minDiff && previewSizes.contains(size)) {
                 optimalSize = size;
                 minDiff = Math.abs(size.height - targetHeight);
             }
         }
 
-        // Cannot find preview size that matches the aspect ratio, ignore the requirement
+        // Cannot find video size that matches the aspect ratio, ignore the requirement
         if (optimalSize == null) {
             minDiff = Double.MAX_VALUE;
-            for (Camera.Size size : sizes) {
-                if (Math.abs(size.height - targetHeight) < minDiff) {
+            for (Camera.Size size : videoSizes) {
+                if (Math.abs(size.height - targetHeight) < minDiff && previewSizes.contains(size)) {
                     optimalSize = size;
                     minDiff = Math.abs(size.height - targetHeight);
                 }
diff --git a/prebuilts/gradle/MediaRecorder/Application/src/main/java/com/example/android/mediarecorder/MainActivity.java b/prebuilts/gradle/MediaRecorder/Application/src/main/java/com/example/android/mediarecorder/MainActivity.java
index 8587636..102ff4d 100644
--- a/prebuilts/gradle/MediaRecorder/Application/src/main/java/com/example/android/mediarecorder/MainActivity.java
+++ b/prebuilts/gradle/MediaRecorder/Application/src/main/java/com/example/android/mediarecorder/MainActivity.java
@@ -32,6 +32,7 @@
 
 import com.example.android.common.media.CameraHelper;
 
+import java.io.File;
 import java.io.IOException;
 import java.util.List;
 
@@ -45,6 +46,7 @@
     private Camera mCamera;
     private TextureView mPreview;
     private MediaRecorder mMediaRecorder;
+    private File mOutputFile;
 
     private boolean isRecording = false;
     private static final String TAG = "Recorder";
@@ -71,7 +73,15 @@
             // BEGIN_INCLUDE(stop_release_media_recorder)
 
             // stop recording and release camera
-            mMediaRecorder.stop();  // stop the recording
+            try {
+                mMediaRecorder.stop();  // stop the recording
+            } catch (RuntimeException e) {
+                // RuntimeException is thrown when stop() is called immediately after start().
+                // In this case the output file is not properly constructed ans should be deleted.
+                Log.d(TAG, "RuntimeException: stop() is called immediately after start()");
+                //noinspection ResultOfMethodCallIgnored
+                mOutputFile.delete();
+            }
             releaseMediaRecorder(); // release the MediaRecorder object
             mCamera.lock();         // take camera access back from MediaRecorder
 
@@ -137,8 +147,9 @@
         // dimensions of our preview surface.
         Camera.Parameters parameters = mCamera.getParameters();
         List<Camera.Size> mSupportedPreviewSizes = parameters.getSupportedPreviewSizes();
-        Camera.Size optimalSize = CameraHelper.getOptimalPreviewSize(mSupportedPreviewSizes,
-                mPreview.getWidth(), mPreview.getHeight());
+        List<Camera.Size> mSupportedVideoSizes = parameters.getSupportedVideoSizes();
+        Camera.Size optimalSize = CameraHelper.getOptimalVideoSize(mSupportedVideoSizes,
+                mSupportedPreviewSizes, mPreview.getWidth(), mPreview.getHeight());
 
         // Use the same size for recording profile.
         CamcorderProfile profile = CamcorderProfile.get(CamcorderProfile.QUALITY_HIGH);
@@ -174,8 +185,11 @@
         mMediaRecorder.setProfile(profile);
 
         // Step 4: Set output file
-        mMediaRecorder.setOutputFile(CameraHelper.getOutputMediaFile(
-                CameraHelper.MEDIA_TYPE_VIDEO).toString());
+        mOutputFile = CameraHelper.getOutputMediaFile(CameraHelper.MEDIA_TYPE_VIDEO);
+        if (mOutputFile == null) {
+            return false;
+        }
+        mMediaRecorder.setOutputFile(mOutputFile.getPath());
         // END_INCLUDE (configure_media_recorder)
 
         // Step 5: Prepare configured MediaRecorder
@@ -227,4 +241,4 @@
         }
     }
 
-}
\ No newline at end of file
+}
diff --git a/prebuilts/gradle/MediaRecorder/README.md b/prebuilts/gradle/MediaRecorder/README.md
index ed234cd..9669f16 100644
--- a/prebuilts/gradle/MediaRecorder/README.md
+++ b/prebuilts/gradle/MediaRecorder/README.md
@@ -25,8 +25,8 @@
 Pre-requisites
 --------------
 
-- Android SDK v23
-- Android Build Tools v23.0.2
+- Android SDK 23
+- Android Build Tools v23.0.3
 - Android Support Repository
 
 Screenshots
@@ -55,7 +55,7 @@
 License
 -------
 
-Copyright 2014 The Android Open Source Project, Inc.
+Copyright 2016 The Android Open Source Project, Inc.
 
 Licensed to the Apache Software Foundation (ASF) under one or more contributor
 license agreements.  See the NOTICE file distributed with this work for
diff --git a/prebuilts/gradle/MediaRecorder/gradle/wrapper/gradle-wrapper.properties b/prebuilts/gradle/MediaRecorder/gradle/wrapper/gradle-wrapper.properties
index 07fc193..d570517 100644
--- a/prebuilts/gradle/MediaRecorder/gradle/wrapper/gradle-wrapper.properties
+++ b/prebuilts/gradle/MediaRecorder/gradle/wrapper/gradle-wrapper.properties
@@ -3,4 +3,4 @@
 distributionPath=wrapper/dists
 zipStoreBase=GRADLE_USER_HOME
 zipStorePath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-2.8-all.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-2.10-all.zip
diff --git a/prebuilts/gradle/MediaRouter/Application/build.gradle b/prebuilts/gradle/MediaRouter/Application/build.gradle
index 322fd6c..65e5ac8 100644
--- a/prebuilts/gradle/MediaRouter/Application/build.gradle
+++ b/prebuilts/gradle/MediaRouter/Application/build.gradle
@@ -5,7 +5,7 @@
     }
 
     dependencies {
-        classpath 'com.android.tools.build:gradle:1.2.3'
+        classpath 'com.android.tools.build:gradle:2.1.2'
     }
 }
 
@@ -16,11 +16,12 @@
 }
 
 dependencies {
-    compile "com.android.support:support-v4:23.1.0"
-    compile "com.android.support:support-v13:23.1.0"
-    compile "com.android.support:cardview-v7:23.1.0"
-    compile 'com.android.support:appcompat-v7:21.0.2'
-    compile 'com.android.support:mediarouter-v7:21.0.2'
+    compile "com.android.support:support-v4:24.0.0-beta1"
+    compile "com.android.support:support-v13:24.0.0-beta1"
+    compile "com.android.support:cardview-v7:24.0.0-beta1"
+    compile "com.android.support:appcompat-v7:24.0.0-beta1"
+    compile 'com.android.support:appcompat-v7:24.0.0-beta1'
+    compile 'com.android.support:mediarouter-v7:24.0.0-beta1'
 }
 
 // The sample build uses multiple directories to
@@ -33,7 +34,7 @@
 
 android {
     compileSdkVersion 23
-    buildToolsVersion "23.0.2"
+    buildToolsVersion "23.0.3"
 
     defaultConfig {
         minSdkVersion 13
diff --git a/prebuilts/gradle/MediaRouter/README.md b/prebuilts/gradle/MediaRouter/README.md
index e4af4ee..6b43472 100644
--- a/prebuilts/gradle/MediaRouter/README.md
+++ b/prebuilts/gradle/MediaRouter/README.md
@@ -7,8 +7,8 @@
 Pre-requisites
 --------------
 
-- Android SDK v23
-- Android Build Tools v23.0.2
+- Android SDK 23
+- Android Build Tools v23.0.3
 - Android Support Repository
 
 Getting Started
@@ -32,7 +32,7 @@
 License
 -------
 
-Copyright 2014 The Android Open Source Project, Inc.
+Copyright 2016 The Android Open Source Project, Inc.
 
 Licensed to the Apache Software Foundation (ASF) under one or more contributor
 license agreements.  See the NOTICE file distributed with this work for
diff --git a/prebuilts/gradle/MediaRouter/gradle/wrapper/gradle-wrapper.properties b/prebuilts/gradle/MediaRouter/gradle/wrapper/gradle-wrapper.properties
index 07fc193..d570517 100644
--- a/prebuilts/gradle/MediaRouter/gradle/wrapper/gradle-wrapper.properties
+++ b/prebuilts/gradle/MediaRouter/gradle/wrapper/gradle-wrapper.properties
@@ -3,4 +3,4 @@
 distributionPath=wrapper/dists
 zipStoreBase=GRADLE_USER_HOME
 zipStorePath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-2.8-all.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-2.10-all.zip
diff --git a/prebuilts/gradle/MessagingService/.google/packaging.yaml b/prebuilts/gradle/MessagingService/.google/packaging.yaml
index 1967364..9edf19e 100644
--- a/prebuilts/gradle/MessagingService/.google/packaging.yaml
+++ b/prebuilts/gradle/MessagingService/.google/packaging.yaml
@@ -6,7 +6,7 @@
 ---
 status:       PUBLISHED
 technologies: [Android]
-categories:   [UI, Notification]
+categories:   [Android N Preview]
 languages:    [Java]
 solutions:    [Mobile]
 github:       android-MessagingService
diff --git a/prebuilts/gradle/MessagingService/Application/build.gradle b/prebuilts/gradle/MessagingService/Application/build.gradle
index 2ce105e..2e2b995 100644
--- a/prebuilts/gradle/MessagingService/Application/build.gradle
+++ b/prebuilts/gradle/MessagingService/Application/build.gradle
@@ -5,7 +5,7 @@
     }
 
     dependencies {
-        classpath 'com.android.tools.build:gradle:1.2.3'
+        classpath 'com.android.tools.build:gradle:2.1.2'
     }
 }
 
@@ -14,9 +14,9 @@
 
 dependencies {
 
-    compile "com.android.support:support-v4:21.0.2"
-    compile "com.android.support:support-v13:21.0.2"
-    compile "com.android.support:cardview-v7:21.0.2"
+    compile "com.android.support:support-v4:24.0.0-beta1"
+    compile "com.android.support:support-v13:24.0.0-beta1"
+    compile "com.android.support:cardview-v7:24.0.0-beta1"
 
 }
 
@@ -29,12 +29,12 @@
     'template'] // boilerplate code that is generated by the sample template process
 
 android {
-    compileSdkVersion 23
-    buildToolsVersion "23.0.2"
+    compileSdkVersion 24
+    buildToolsVersion "23.0.3"
 
     defaultConfig {
         minSdkVersion 21
-        targetSdkVersion 23
+        targetSdkVersion 24
     }
 
     compileOptions {
diff --git a/prebuilts/gradle/MessagingService/Application/src/main/java/com/example/android/messagingservice/MessageReplyReceiver.java b/prebuilts/gradle/MessagingService/Application/src/main/java/com/example/android/messagingservice/MessageReplyReceiver.java
index 0a3eba6..7a48acf 100644
--- a/prebuilts/gradle/MessagingService/Application/src/main/java/com/example/android/messagingservice/MessageReplyReceiver.java
+++ b/prebuilts/gradle/MessagingService/Application/src/main/java/com/example/android/messagingservice/MessageReplyReceiver.java
@@ -16,15 +16,21 @@
 
 package com.example.android.messagingservice;
 
+import android.app.Notification;
 import android.content.BroadcastReceiver;
 import android.content.Context;
 import android.content.Intent;
+import android.graphics.BitmapFactory;
 import android.os.Bundle;
+import android.support.v4.app.NotificationManagerCompat;
 import android.support.v4.app.RemoteInput;
+import android.support.v4.text.TextUtilsCompat;
+import android.support.v4.app.NotificationCompat;
+import android.text.TextUtils;
 import android.util.Log;
 
 /**
- * A receiver that gets called when a reply is sent to a given conversationId
+ * A receiver that gets called when a reply is sent to a given conversationId.
  */
 public class MessageReplyReceiver extends BroadcastReceiver {
 
@@ -39,6 +45,17 @@
                 Log.d(TAG, "Got reply (" + reply + ") for ConversationId " + conversationId);
                 MessageLogger.logMessage(context, "ConversationId: " + conversationId +
                         " received a reply: [" + reply + "]");
+
+                // Update the notification to stop the progress spinner.
+                NotificationManagerCompat notificationManager =
+                        NotificationManagerCompat.from(context);
+                Notification repliedNotification = new NotificationCompat.Builder(context)
+                        .setSmallIcon(R.drawable.notification_icon)
+                        .setLargeIcon(BitmapFactory.decodeResource(
+                                context.getResources(), R.drawable.android_contact))
+                        .setContentText(context.getString(R.string.replied))
+                        .build();
+                notificationManager.notify(conversationId, repliedNotification);
             }
         }
     }
@@ -51,7 +68,8 @@
     private CharSequence getMessageText(Intent intent) {
         Bundle remoteInput = RemoteInput.getResultsFromIntent(intent);
         if (remoteInput != null) {
-            return remoteInput.getCharSequence(MessagingService.EXTRA_VOICE_REPLY);
+            return remoteInput.getCharSequence(
+                    MessagingService.EXTRA_REMOTE_REPLY);
         }
         return null;
     }
diff --git a/prebuilts/gradle/MessagingService/Application/src/main/java/com/example/android/messagingservice/MessagingService.java b/prebuilts/gradle/MessagingService/Application/src/main/java/com/example/android/messagingservice/MessagingService.java
index 73199ed..77689cd 100644
--- a/prebuilts/gradle/MessagingService/Application/src/main/java/com/example/android/messagingservice/MessagingService.java
+++ b/prebuilts/gradle/MessagingService/Application/src/main/java/com/example/android/messagingservice/MessagingService.java
@@ -39,11 +39,10 @@
     private static final String EOL = "\n";
     private static final String READ_ACTION =
             "com.example.android.messagingservice.ACTION_MESSAGE_READ";
-
     public static final String REPLY_ACTION =
             "com.example.android.messagingservice.ACTION_MESSAGE_REPLY";
     public static final String CONVERSATION_ID = "conversation_id";
-    public static final String EXTRA_VOICE_REPLY = "extra_voice_reply";
+    public static final String EXTRA_REMOTE_REPLY = "extra_remote_reply";
     public static final int MSG_SEND_NOTIFICATION = 1;
 
     private NotificationManagerCompat mNotificationManager;
@@ -93,9 +92,10 @@
                 getMessageReadIntent(conversation.getConversationId()),
                 PendingIntent.FLAG_UPDATE_CURRENT);
 
-        // Build a RemoteInput for receiving voice input in a Car Notification
-        RemoteInput remoteInput = new RemoteInput.Builder(EXTRA_VOICE_REPLY)
-                .setLabel(getApplicationContext().getString(R.string.notification_reply))
+        // Build a RemoteInput for receiving voice input in a Car Notification or text input on
+        // devices that support text input (like devices on Android N and above).
+        RemoteInput remoteInput = new RemoteInput.Builder(EXTRA_REMOTE_REPLY)
+                .setLabel(getString(R.string.reply))
                 .build();
 
         // Building a Pending Intent for the reply action to trigger
@@ -104,6 +104,12 @@
                 getMessageReplyIntent(conversation.getConversationId()),
                 PendingIntent.FLAG_UPDATE_CURRENT);
 
+        // Build an Android N compatible Remote Input enabled action.
+        NotificationCompat.Action actionReplyByRemoteInput = new NotificationCompat.Action.Builder(
+                R.drawable.notification_icon, getString(R.string.reply), replyIntent)
+                .addRemoteInput(remoteInput)
+                .build();
+
         // Create the UnreadConversation and populate it with the participant name,
         // read and reply intents.
         UnreadConversation.Builder unreadConvBuilder =
@@ -134,8 +140,9 @@
                 .setContentIntent(readPendingIntent)
                 .extend(new CarExtender()
                         .setUnreadConversation(unreadConvBuilder.build())
-                        .setColor(getApplicationContext()
-                                .getResources().getColor(R.color.default_color_light)));
+                        .setColor(getApplicationContext().getResources()
+                                .getColor(R.color.default_color_light)))
+                .addAction(actionReplyByRemoteInput);
 
         MessageLogger.logMessage(getApplicationContext(), "Sending notification "
                 + conversation.getConversationId() + " conversation: " + conversation);
diff --git a/prebuilts/gradle/MessagingService/Application/src/main/res/values/strings.xml b/prebuilts/gradle/MessagingService/Application/src/main/res/values/strings.xml
index 3f8390d..31e25ec 100644
--- a/prebuilts/gradle/MessagingService/Application/src/main/res/values/strings.xml
+++ b/prebuilts/gradle/MessagingService/Application/src/main/res/values/strings.xml
@@ -16,7 +16,8 @@
   -->
 <resources>
     <string name="app_name">Messaging Sample</string>
-    <string name="notification_reply">Reply by Voice</string>
+    <string name="replied">Replied</string>
+    <string name="reply">Reply</string>
     <string name="send_2_conversations">Send 2 conversations with 1 message</string>
     <string name="send_1_conversation">Send 1 conversation with 1 message</string>
     <string name="send_1_conv_3_messages">Send 1 conversation with 3 messages</string>
diff --git a/prebuilts/gradle/MessagingService/README.md b/prebuilts/gradle/MessagingService/README.md
index fb86bbc..1228827 100644
--- a/prebuilts/gradle/MessagingService/README.md
+++ b/prebuilts/gradle/MessagingService/README.md
@@ -3,9 +3,13 @@
 ===================================
 
 This sample shows a simple service that sends notifications using
-NotificationCompat. In addition to sending a notification, it also extends
-the notification with a CarExtender to make it compatible with Android Auto.
-Each unread conversation from a user is sent as a distinct notification.
+NotificationCompat. It also extends the notification with Remote
+Input to allow Android N devices to reply via text directly from
+the notification without having to open an App. The same Remote
+Input object also allows Android Auto users to respond by voice
+when the notification is presented there.
+Note: Each unread conversation from a user is sent as a distinct
+notification.
 
 Introduction
 ------------
@@ -46,8 +50,8 @@
 Pre-requisites
 --------------
 
-- Android SDK v23
-- Android Build Tools v23.0.2
+- Android SDK 24
+- Android Build Tools v23.0.3
 - Android Support Repository
 
 Screenshots
@@ -76,7 +80,7 @@
 License
 -------
 
-Copyright 2014 The Android Open Source Project, Inc.
+Copyright 2016 The Android Open Source Project, Inc.
 
 Licensed to the Apache Software Foundation (ASF) under one or more contributor
 license agreements.  See the NOTICE file distributed with this work for
diff --git a/prebuilts/gradle/MessagingService/gradle/wrapper/gradle-wrapper.properties b/prebuilts/gradle/MessagingService/gradle/wrapper/gradle-wrapper.properties
index 07fc193..d570517 100644
--- a/prebuilts/gradle/MessagingService/gradle/wrapper/gradle-wrapper.properties
+++ b/prebuilts/gradle/MessagingService/gradle/wrapper/gradle-wrapper.properties
@@ -3,4 +3,4 @@
 distributionPath=wrapper/dists
 zipStoreBase=GRADLE_USER_HOME
 zipStorePath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-2.8-all.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-2.10-all.zip
diff --git a/prebuilts/gradle/MidiScope/Application/build.gradle b/prebuilts/gradle/MidiScope/Application/build.gradle
index de3e4f9..6a7bac7 100644
--- a/prebuilts/gradle/MidiScope/Application/build.gradle
+++ b/prebuilts/gradle/MidiScope/Application/build.gradle
@@ -5,7 +5,7 @@
     }
 
     dependencies {
-        classpath 'com.android.tools.build:gradle:1.2.3'
+        classpath 'com.android.tools.build:gradle:2.1.2'
     }
 }
 
@@ -16,9 +16,10 @@
 }
 
 dependencies {
-    compile "com.android.support:support-v4:23.1.0"
-    compile "com.android.support:support-v13:23.1.0"
-    compile "com.android.support:cardview-v7:23.1.0"
+    compile "com.android.support:support-v4:24.0.0-beta1"
+    compile "com.android.support:support-v13:24.0.0-beta1"
+    compile "com.android.support:cardview-v7:24.0.0-beta1"
+    compile "com.android.support:appcompat-v7:24.0.0-beta1"
 }
 
 // The sample build uses multiple directories to
@@ -31,7 +32,7 @@
 
 android {
     compileSdkVersion 23
-    buildToolsVersion "23.0.2"
+    buildToolsVersion "23.0.3"
 
     defaultConfig {
         minSdkVersion 23
diff --git a/prebuilts/gradle/MidiScope/README.md b/prebuilts/gradle/MidiScope/README.md
index 0ffdf1f..a276d5a 100644
--- a/prebuilts/gradle/MidiScope/README.md
+++ b/prebuilts/gradle/MidiScope/README.md
@@ -19,8 +19,8 @@
 Pre-requisites
 --------------
 
-- Android SDK v23
-- Android Build Tools v23.0.2
+- Android SDK 23
+- Android Build Tools v23.0.3
 - Android Support Repository
 
 Screenshots
@@ -49,7 +49,7 @@
 License
 -------
 
-Copyright 2014 The Android Open Source Project, Inc.
+Copyright 2016 The Android Open Source Project, Inc.
 
 Licensed to the Apache Software Foundation (ASF) under one or more contributor
 license agreements.  See the NOTICE file distributed with this work for
diff --git a/prebuilts/gradle/MidiScope/gradle/wrapper/gradle-wrapper.properties b/prebuilts/gradle/MidiScope/gradle/wrapper/gradle-wrapper.properties
index 07fc193..03c59c2 100644
--- a/prebuilts/gradle/MidiScope/gradle/wrapper/gradle-wrapper.properties
+++ b/prebuilts/gradle/MidiScope/gradle/wrapper/gradle-wrapper.properties
@@ -3,4 +3,4 @@
 distributionPath=wrapper/dists
 zipStoreBase=GRADLE_USER_HOME
 zipStorePath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-2.8-all.zip
+distributionUrl=http\://services.gradle.org/distributions/gradle-2.10-bin.zip
diff --git a/prebuilts/gradle/MidiSynth/Application/build.gradle b/prebuilts/gradle/MidiSynth/Application/build.gradle
index de3e4f9..6a7bac7 100644
--- a/prebuilts/gradle/MidiSynth/Application/build.gradle
+++ b/prebuilts/gradle/MidiSynth/Application/build.gradle
@@ -5,7 +5,7 @@
     }
 
     dependencies {
-        classpath 'com.android.tools.build:gradle:1.2.3'
+        classpath 'com.android.tools.build:gradle:2.1.2'
     }
 }
 
@@ -16,9 +16,10 @@
 }
 
 dependencies {
-    compile "com.android.support:support-v4:23.1.0"
-    compile "com.android.support:support-v13:23.1.0"
-    compile "com.android.support:cardview-v7:23.1.0"
+    compile "com.android.support:support-v4:24.0.0-beta1"
+    compile "com.android.support:support-v13:24.0.0-beta1"
+    compile "com.android.support:cardview-v7:24.0.0-beta1"
+    compile "com.android.support:appcompat-v7:24.0.0-beta1"
 }
 
 // The sample build uses multiple directories to
@@ -31,7 +32,7 @@
 
 android {
     compileSdkVersion 23
-    buildToolsVersion "23.0.2"
+    buildToolsVersion "23.0.3"
 
     defaultConfig {
         minSdkVersion 23
diff --git a/prebuilts/gradle/MidiSynth/README.md b/prebuilts/gradle/MidiSynth/README.md
index cad3a1a..5f5f141 100644
--- a/prebuilts/gradle/MidiSynth/README.md
+++ b/prebuilts/gradle/MidiSynth/README.md
@@ -24,8 +24,8 @@
 Pre-requisites
 --------------
 
-- Android SDK v23
-- Android Build Tools v23.0.2
+- Android SDK 23
+- Android Build Tools v23.0.3
 - Android Support Repository
 
 Screenshots
@@ -54,7 +54,7 @@
 License
 -------
 
-Copyright 2014 The Android Open Source Project, Inc.
+Copyright 2016 The Android Open Source Project, Inc.
 
 Licensed to the Apache Software Foundation (ASF) under one or more contributor
 license agreements.  See the NOTICE file distributed with this work for
diff --git a/prebuilts/gradle/MidiSynth/gradle/wrapper/gradle-wrapper.properties b/prebuilts/gradle/MidiSynth/gradle/wrapper/gradle-wrapper.properties
index 07fc193..03c59c2 100644
--- a/prebuilts/gradle/MidiSynth/gradle/wrapper/gradle-wrapper.properties
+++ b/prebuilts/gradle/MidiSynth/gradle/wrapper/gradle-wrapper.properties
@@ -3,4 +3,4 @@
 distributionPath=wrapper/dists
 zipStoreBase=GRADLE_USER_HOME
 zipStorePath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-2.8-all.zip
+distributionUrl=http\://services.gradle.org/distributions/gradle-2.10-bin.zip
diff --git a/prebuilts/gradle/MultiWindowPlayground/Application/build.gradle b/prebuilts/gradle/MultiWindowPlayground/Application/build.gradle
index ce29114..87039df 100644
--- a/prebuilts/gradle/MultiWindowPlayground/Application/build.gradle
+++ b/prebuilts/gradle/MultiWindowPlayground/Application/build.gradle
@@ -20,7 +20,7 @@
     }
 
     dependencies {
-        classpath 'com.android.tools.build:gradle:2.0.0'
+        classpath 'com.android.tools.build:gradle:2.1.2'
     }
 }
 
@@ -33,13 +33,13 @@
 apply plugin: 'com.android.application'
 
 android {
-    compileSdkVersion 'android-N'
-    buildToolsVersion '24.0.0 rc1'
+    compileSdkVersion 24
+    buildToolsVersion '23.0.3'
 
     defaultConfig {
         applicationId "com.android.multiwindowplayground"
-        minSdkVersion 'N'
-        targetSdkVersion 'N'
+        minSdkVersion 24
+        targetSdkVersion 24
         versionCode 1
         versionName "1.0"
         testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
@@ -60,7 +60,7 @@
 dependencies {
     compile fileTree(include: ['*.jar'], dir: 'libs')
     testCompile 'junit:junit:4.12'
-    compile 'com.android.support:appcompat-v7:24.0.0-alpha1'
-    androidTestCompile 'com.android.support:support-annotations:24.0.0-alpha1'
+    compile 'com.android.support:appcompat-v7:24.0.0-beta1'
+    androidTestCompile 'com.android.support:support-annotations:24.0.0-beta1'
     androidTestCompile 'com.android.support.test.espresso:espresso-core:2.2.1'
 }
diff --git a/prebuilts/gradle/MultiWindowPlayground/Application/src/main/AndroidManifest.xml b/prebuilts/gradle/MultiWindowPlayground/Application/src/main/AndroidManifest.xml
index c242903..25b21bd 100644
--- a/prebuilts/gradle/MultiWindowPlayground/Application/src/main/AndroidManifest.xml
+++ b/prebuilts/gradle/MultiWindowPlayground/Application/src/main/AndroidManifest.xml
@@ -52,8 +52,8 @@
                 android:defaultHeight="500dp"
                 android:defaultWidth="750dp"
                 android:gravity="top|end"
-                android:minimalWidth="500dp"
-                android:minimalHeight="500dp" />
+                android:minWidth="500dp"
+                android:minHeight="500dp" />
         </activity>
 
         <!-- In split-screen mode, this Activity is launched adjacent to another Activity. This is
diff --git a/prebuilts/gradle/MultiWindowPlayground/README.md b/prebuilts/gradle/MultiWindowPlayground/README.md
index ccdcd0e..eadd385 100644
--- a/prebuilts/gradle/MultiWindowPlayground/README.md
+++ b/prebuilts/gradle/MultiWindowPlayground/README.md
@@ -48,8 +48,8 @@
 Pre-requisites
 --------------
 
-- Android SDK Preview N
-- Android Build Tools v24.0.0 rc1
+- Android SDK 24
+- Android Build Tools v23.0.3
 - Android Support Repository
 
 Screenshots
diff --git a/prebuilts/gradle/NavigationDrawer/Application/build.gradle b/prebuilts/gradle/NavigationDrawer/Application/build.gradle
index 69c3be3..ef10dbe 100644
--- a/prebuilts/gradle/NavigationDrawer/Application/build.gradle
+++ b/prebuilts/gradle/NavigationDrawer/Application/build.gradle
@@ -5,7 +5,7 @@
     }
 
     dependencies {
-        classpath 'com.android.tools.build:gradle:1.2.3'
+        classpath 'com.android.tools.build:gradle:2.1.2'
     }
 }
 
@@ -16,10 +16,10 @@
 }
 
 dependencies {
-    compile 'com.android.support:support-v13:21.0.2'
-    compile 'com.android.support:appcompat-v7:21.0.2'
-    compile 'com.android.support:recyclerview-v7:21.0.2'
-    compile 'com.android.support:cardview-v7:21.0.2'
+    compile 'com.android.support:support-v13:24.0.0-beta1'
+    compile 'com.android.support:appcompat-v7:24.0.0-beta1'
+    compile 'com.android.support:recyclerview-v7:24.0.0-beta1'
+    compile 'com.android.support:cardview-v7:24.0.0-beta1'
 }
 
 // The sample build uses multiple directories to
@@ -31,12 +31,12 @@
     'template'] // boilerplate code that is generated by the sample template process
 
 android {
-    compileSdkVersion 21
-    buildToolsVersion "23.0.2"
+    compileSdkVersion 23
+    buildToolsVersion "23.0.3"
 
     defaultConfig {
         minSdkVersion 21
-        targetSdkVersion 21
+        targetSdkVersion 23
     }
 
     compileOptions {
diff --git a/prebuilts/gradle/NavigationDrawer/README.md b/prebuilts/gradle/NavigationDrawer/README.md
index 641f147..373ab4a 100644
--- a/prebuilts/gradle/NavigationDrawer/README.md
+++ b/prebuilts/gradle/NavigationDrawer/README.md
@@ -8,8 +8,8 @@
 Pre-requisites
 --------------
 
-- Android SDK v21
-- Android Build Tools v23.0.2
+- Android SDK 23
+- Android Build Tools v23.0.3
 - Android Support Repository
 
 Getting Started
@@ -33,7 +33,7 @@
 License
 -------
 
-Copyright 2014 The Android Open Source Project, Inc.
+Copyright 2016 The Android Open Source Project, Inc.
 
 Licensed to the Apache Software Foundation (ASF) under one or more contributor
 license agreements.  See the NOTICE file distributed with this work for
diff --git a/prebuilts/gradle/NavigationDrawer/gradle/wrapper/gradle-wrapper.properties b/prebuilts/gradle/NavigationDrawer/gradle/wrapper/gradle-wrapper.properties
index 5288c6d..d9a65b6 100644
--- a/prebuilts/gradle/NavigationDrawer/gradle/wrapper/gradle-wrapper.properties
+++ b/prebuilts/gradle/NavigationDrawer/gradle/wrapper/gradle-wrapper.properties
@@ -3,4 +3,4 @@
 distributionPath=wrapper/dists
 zipStoreBase=GRADLE_USER_HOME
 zipStorePath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-2.8-all.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-2.10-all.zip
diff --git a/prebuilts/gradle/NetworkConnect/Application/build.gradle b/prebuilts/gradle/NetworkConnect/Application/build.gradle
index 128220f..1fd5c2c 100644
--- a/prebuilts/gradle/NetworkConnect/Application/build.gradle
+++ b/prebuilts/gradle/NetworkConnect/Application/build.gradle
@@ -5,7 +5,7 @@
     }
 
     dependencies {
-        classpath 'com.android.tools.build:gradle:1.2.3'
+        classpath 'com.android.tools.build:gradle:2.1.2'
     }
 }
 
@@ -16,9 +16,10 @@
 }
 
 dependencies {
-    compile "com.android.support:support-v4:23.1.0"
-    compile "com.android.support:gridlayout-v7:23.1.0"
-    compile "com.android.support:cardview-v7:23.1.0"
+    compile "com.android.support:support-v4:24.0.0-beta1"
+    compile "com.android.support:gridlayout-v7:24.0.0-beta1"
+    compile "com.android.support:cardview-v7:24.0.0-beta1"
+    compile "com.android.support:appcompat-v7:24.0.0-beta1"
 }
 
 // The sample build uses multiple directories to
@@ -31,7 +32,7 @@
 
 android {
     compileSdkVersion 23
-    buildToolsVersion "23.0.2"
+    buildToolsVersion "23.0.3"
 
     defaultConfig {
         minSdkVersion 8
diff --git a/prebuilts/gradle/NetworkConnect/README.md b/prebuilts/gradle/NetworkConnect/README.md
index 42e5021..debdfb5 100644
--- a/prebuilts/gradle/NetworkConnect/README.md
+++ b/prebuilts/gradle/NetworkConnect/README.md
@@ -17,8 +17,8 @@
 Pre-requisites
 --------------
 
-- Android SDK v23
-- Android Build Tools v23.0.2
+- Android SDK 23
+- Android Build Tools v23.0.3
 - Android Support Repository
 
 Screenshots
@@ -47,7 +47,7 @@
 License
 -------
 
-Copyright 2014 The Android Open Source Project, Inc.
+Copyright 2016 The Android Open Source Project, Inc.
 
 Licensed to the Apache Software Foundation (ASF) under one or more contributor
 license agreements.  See the NOTICE file distributed with this work for
diff --git a/prebuilts/gradle/NetworkConnect/gradle/wrapper/gradle-wrapper.properties b/prebuilts/gradle/NetworkConnect/gradle/wrapper/gradle-wrapper.properties
index 07fc193..d570517 100644
--- a/prebuilts/gradle/NetworkConnect/gradle/wrapper/gradle-wrapper.properties
+++ b/prebuilts/gradle/NetworkConnect/gradle/wrapper/gradle-wrapper.properties
@@ -3,4 +3,4 @@
 distributionPath=wrapper/dists
 zipStoreBase=GRADLE_USER_HOME
 zipStorePath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-2.8-all.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-2.10-all.zip
diff --git a/prebuilts/gradle/NfcProvisioning/Application/build.gradle b/prebuilts/gradle/NfcProvisioning/Application/build.gradle
index 5266205..c849ff3 100644
--- a/prebuilts/gradle/NfcProvisioning/Application/build.gradle
+++ b/prebuilts/gradle/NfcProvisioning/Application/build.gradle
@@ -5,7 +5,7 @@
     }
 
     dependencies {
-        classpath 'com.android.tools.build:gradle:1.2.3'
+        classpath 'com.android.tools.build:gradle:2.1.2'
     }
 }
 
@@ -16,9 +16,10 @@
 }
 
 dependencies {
-    compile "com.android.support:support-v4:23.1.0"
-    compile "com.android.support:support-v13:23.1.0"
-    compile "com.android.support:cardview-v7:23.1.0"
+    compile "com.android.support:support-v4:24.0.0-beta1"
+    compile "com.android.support:support-v13:24.0.0-beta1"
+    compile "com.android.support:cardview-v7:24.0.0-beta1"
+    compile "com.android.support:appcompat-v7:24.0.0-beta1"
 }
 
 // The sample build uses multiple directories to
@@ -31,7 +32,7 @@
 
 android {
     compileSdkVersion 23
-    buildToolsVersion "23.0.2"
+    buildToolsVersion "23.0.3"
 
     defaultConfig {
         minSdkVersion 21
diff --git a/prebuilts/gradle/NfcProvisioning/Application/src/main/java/com/example/android/nfcprovisioning/ProvisioningValuesLoader.java b/prebuilts/gradle/NfcProvisioning/Application/src/main/java/com/example/android/nfcprovisioning/ProvisioningValuesLoader.java
index 2203c30..73a6053 100644
--- a/prebuilts/gradle/NfcProvisioning/Application/src/main/java/com/example/android/nfcprovisioning/ProvisioningValuesLoader.java
+++ b/prebuilts/gradle/NfcProvisioning/Application/src/main/java/com/example/android/nfcprovisioning/ProvisioningValuesLoader.java
@@ -30,8 +30,12 @@
 import java.io.File;
 import java.io.FileReader;
 import java.io.IOException;
+import java.io.StringWriter;
 import java.util.HashMap;
+import java.util.HashSet;
 import java.util.Map;
+import java.util.Properties;
+import java.util.Set;
 import java.util.TimeZone;
 
 /**
@@ -55,6 +59,7 @@
     public Map<String, String> loadInBackground() {
         HashMap<String, String> values = new HashMap<>();
         loadFromDisk(values);
+        gatherAdminExtras(values);
         loadSystemValues(values);
         return values;
     }
@@ -130,6 +135,29 @@
         }
     }
 
+    private void gatherAdminExtras(HashMap<String, String> values) {
+        HashMap<String, String> newMap = new HashMap<String, String>();
+        Properties props = new Properties();
+        Set<String>keys = new HashSet(values.keySet());
+        for (String key : keys) {
+            if (key.startsWith("android.app.extra")) {
+                continue;
+            }
+            props.put(key, values.get(key));
+            values.remove(key);
+        }
+        StringWriter sw = new StringWriter();
+        try{
+            props.store(sw, "admin extras bundle");
+            values.put(DevicePolicyManager.EXTRA_PROVISIONING_ADMIN_EXTRAS_BUNDLE,
+                    sw.toString());
+            Log.d(TAG, "Admin extras bundle=" + values.get(
+                    DevicePolicyManager.EXTRA_PROVISIONING_ADMIN_EXTRAS_BUNDLE));
+        } catch (IOException e) {
+            Log.e(TAG, "Unable to build admin extras bundle");
+        }
+    }
+
     private void loadSystemValues(HashMap<String, String> values) {
         Context context = getContext();
         putIfMissing(values, DevicePolicyManager.EXTRA_PROVISIONING_DEVICE_ADMIN_PACKAGE_NAME,
diff --git a/prebuilts/gradle/NfcProvisioning/README.md b/prebuilts/gradle/NfcProvisioning/README.md
index b26d5a6..c79b653 100644
--- a/prebuilts/gradle/NfcProvisioning/README.md
+++ b/prebuilts/gradle/NfcProvisioning/README.md
@@ -33,8 +33,8 @@
 Pre-requisites
 --------------
 
-- Android SDK v23
-- Android Build Tools v23.0.2
+- Android SDK 23
+- Android Build Tools v23.0.3
 - Android Support Repository
 
 Screenshots
@@ -63,7 +63,7 @@
 License
 -------
 
-Copyright 2014 The Android Open Source Project, Inc.
+Copyright 2016 The Android Open Source Project, Inc.
 
 Licensed to the Apache Software Foundation (ASF) under one or more contributor
 license agreements.  See the NOTICE file distributed with this work for
diff --git a/prebuilts/gradle/NfcProvisioning/gradle/wrapper/gradle-wrapper.properties b/prebuilts/gradle/NfcProvisioning/gradle/wrapper/gradle-wrapper.properties
index 862673d..ee35487 100644
--- a/prebuilts/gradle/NfcProvisioning/gradle/wrapper/gradle-wrapper.properties
+++ b/prebuilts/gradle/NfcProvisioning/gradle/wrapper/gradle-wrapper.properties
@@ -3,4 +3,4 @@
 distributionPath=wrapper/dists
 zipStoreBase=GRADLE_USER_HOME
 zipStorePath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-2.8-all.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-2.10-all.zip
diff --git a/prebuilts/gradle/Notifications/Application/build.gradle b/prebuilts/gradle/Notifications/Application/build.gradle
index fb39f01..8fd521d 100644
--- a/prebuilts/gradle/Notifications/Application/build.gradle
+++ b/prebuilts/gradle/Notifications/Application/build.gradle
@@ -5,7 +5,7 @@
     }
 
     dependencies {
-        classpath 'com.android.tools.build:gradle:1.2.3'
+        classpath 'com.android.tools.build:gradle:2.1.2'
     }
 }
 
@@ -16,11 +16,12 @@
 }
 
 dependencies {
-    compile "com.android.support:support-v4:23.1.0"
-    compile "com.android.support:support-v13:23.1.0"
-    compile "com.android.support:cardview-v7:23.1.0"
+    compile "com.android.support:support-v4:24.0.0-beta1"
+    compile "com.android.support:support-v13:24.0.0-beta1"
+    compile "com.android.support:cardview-v7:24.0.0-beta1"
+    compile "com.android.support:appcompat-v7:24.0.0-beta1"
     compile 'com.google.android.gms:play-services-wearable:8.4.0'
-    compile 'com.android.support:support-v13:23.1.1'
+    compile 'com.android.support:support-v13:24.0.0-beta1'
     wearApp project(':Wearable')
 }
 
@@ -34,7 +35,7 @@
 
 android {
     compileSdkVersion 23
-    buildToolsVersion "23.0.2"
+    buildToolsVersion "23.0.3"
 
     defaultConfig {
         minSdkVersion 18
diff --git a/prebuilts/gradle/Notifications/README.md b/prebuilts/gradle/Notifications/README.md
index a595b39..f326e95 100644
--- a/prebuilts/gradle/Notifications/README.md
+++ b/prebuilts/gradle/Notifications/README.md
@@ -23,8 +23,8 @@
 Pre-requisites
 --------------
 
-- Android SDK v23
-- Android Build Tools v23.0.2
+- Android SDK 23
+- Android Build Tools v23.0.3
 - Android Support Repository
 
 Screenshots
@@ -53,7 +53,7 @@
 License
 -------
 
-Copyright 2014 The Android Open Source Project, Inc.
+Copyright 2016 The Android Open Source Project, Inc.
 
 Licensed to the Apache Software Foundation (ASF) under one or more contributor
 license agreements.  See the NOTICE file distributed with this work for
diff --git a/prebuilts/gradle/Notifications/Wearable/build.gradle b/prebuilts/gradle/Notifications/Wearable/build.gradle
index cb1382e..6170762 100644
--- a/prebuilts/gradle/Notifications/Wearable/build.gradle
+++ b/prebuilts/gradle/Notifications/Wearable/build.gradle
@@ -5,7 +5,7 @@
     }
 
     dependencies {
-        classpath 'com.android.tools.build:gradle:1.2.3'
+        classpath 'com.android.tools.build:gradle:2.1.2'
     }
 }
 
@@ -18,7 +18,7 @@
 
 
     compile 'com.google.android.gms:play-services-wearable:8.4.0'
-    compile 'com.android.support:support-v13:23.3.0'
+    compile 'com.android.support:support-v13:24.0.0-beta1'
 
     compile 'com.google.android.support:wearable:1.4.0'
 
@@ -35,7 +35,7 @@
 android {
     compileSdkVersion 23
 
-    buildToolsVersion "23.0.2"
+    buildToolsVersion "23.0.3"
 
     defaultConfig {
         versionCode 1
diff --git a/prebuilts/gradle/Notifications/gradle/wrapper/gradle-wrapper.properties b/prebuilts/gradle/Notifications/gradle/wrapper/gradle-wrapper.properties
index 07fc193..d570517 100644
--- a/prebuilts/gradle/Notifications/gradle/wrapper/gradle-wrapper.properties
+++ b/prebuilts/gradle/Notifications/gradle/wrapper/gradle-wrapper.properties
@@ -3,4 +3,4 @@
 distributionPath=wrapper/dists
 zipStoreBase=GRADLE_USER_HOME
 zipStorePath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-2.8-all.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-2.10-all.zip
diff --git a/prebuilts/gradle/PdfRendererBasic/Application/build.gradle b/prebuilts/gradle/PdfRendererBasic/Application/build.gradle
index ba34a08..c4072f5 100644
--- a/prebuilts/gradle/PdfRendererBasic/Application/build.gradle
+++ b/prebuilts/gradle/PdfRendererBasic/Application/build.gradle
@@ -5,7 +5,7 @@
     }
 
     dependencies {
-        classpath 'com.android.tools.build:gradle:1.2.3'
+        classpath 'com.android.tools.build:gradle:2.1.2'
     }
 }
 
@@ -16,9 +16,10 @@
 }
 
 dependencies {
-    compile "com.android.support:support-v4:23.1.0"
-    compile "com.android.support:support-v13:23.1.0"
-    compile "com.android.support:cardview-v7:23.1.0"
+    compile "com.android.support:support-v4:24.0.0-beta1"
+    compile "com.android.support:support-v13:24.0.0-beta1"
+    compile "com.android.support:cardview-v7:24.0.0-beta1"
+    compile "com.android.support:appcompat-v7:24.0.0-beta1"
 }
 
 // The sample build uses multiple directories to
@@ -31,7 +32,7 @@
 
 android {
     compileSdkVersion 21
-    buildToolsVersion "23.0.2"
+    buildToolsVersion "23.0.3"
 
     defaultConfig {
         minSdkVersion 21
diff --git a/prebuilts/gradle/PdfRendererBasic/README.md b/prebuilts/gradle/PdfRendererBasic/README.md
index 9a686ed..11aaa54 100644
--- a/prebuilts/gradle/PdfRendererBasic/README.md
+++ b/prebuilts/gradle/PdfRendererBasic/README.md
@@ -35,8 +35,8 @@
 Pre-requisites
 --------------
 
-- Android SDK v21
-- Android Build Tools v23.0.2
+- Android SDK 21
+- Android Build Tools v23.0.3
 - Android Support Repository
 
 Screenshots
@@ -65,7 +65,7 @@
 License
 -------
 
-Copyright 2014 The Android Open Source Project, Inc.
+Copyright 2016 The Android Open Source Project, Inc.
 
 Licensed to the Apache Software Foundation (ASF) under one or more contributor
 license agreements.  See the NOTICE file distributed with this work for
diff --git a/prebuilts/gradle/PdfRendererBasic/gradle/wrapper/gradle-wrapper.properties b/prebuilts/gradle/PdfRendererBasic/gradle/wrapper/gradle-wrapper.properties
index 07fc193..d570517 100644
--- a/prebuilts/gradle/PdfRendererBasic/gradle/wrapper/gradle-wrapper.properties
+++ b/prebuilts/gradle/PdfRendererBasic/gradle/wrapper/gradle-wrapper.properties
@@ -3,4 +3,4 @@
 distributionPath=wrapper/dists
 zipStoreBase=GRADLE_USER_HOME
 zipStorePath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-2.8-all.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-2.10-all.zip
diff --git a/prebuilts/gradle/PermissionRequest/Application/build.gradle b/prebuilts/gradle/PermissionRequest/Application/build.gradle
index ba404cc..c45ed11 100644
--- a/prebuilts/gradle/PermissionRequest/Application/build.gradle
+++ b/prebuilts/gradle/PermissionRequest/Application/build.gradle
@@ -5,7 +5,7 @@
     }
 
     dependencies {
-        classpath 'com.android.tools.build:gradle:1.2.3'
+        classpath 'com.android.tools.build:gradle:2.1.2'
     }
 }
 
@@ -16,9 +16,10 @@
 }
 
 dependencies {
-    compile "com.android.support:support-v4:23.1.0"
-    compile "com.android.support:support-v13:23.1.0"
-    compile "com.android.support:cardview-v7:23.1.0"
+    compile "com.android.support:support-v4:24.0.0-beta1"
+    compile "com.android.support:support-v13:24.0.0-beta1"
+    compile "com.android.support:cardview-v7:24.0.0-beta1"
+    compile "com.android.support:appcompat-v7:24.0.0-beta1"
 }
 
 // The sample build uses multiple directories to
@@ -31,7 +32,7 @@
 
 android {
     compileSdkVersion 23
-    buildToolsVersion "23.0.2"
+    buildToolsVersion "23.0.3"
 
     defaultConfig {
         minSdkVersion 21
diff --git a/prebuilts/gradle/PermissionRequest/README.md b/prebuilts/gradle/PermissionRequest/README.md
index f15108e..6a8abcb 100644
--- a/prebuilts/gradle/PermissionRequest/README.md
+++ b/prebuilts/gradle/PermissionRequest/README.md
@@ -46,8 +46,8 @@
 Pre-requisites
 --------------
 
-- Android SDK v23
-- Android Build Tools v23.0.2
+- Android SDK 23
+- Android Build Tools v23.0.3
 - Android Support Repository
 
 Screenshots
@@ -76,7 +76,7 @@
 License
 -------
 
-Copyright 2014 The Android Open Source Project, Inc.
+Copyright 2016 The Android Open Source Project, Inc.
 
 Licensed to the Apache Software Foundation (ASF) under one or more contributor
 license agreements.  See the NOTICE file distributed with this work for
diff --git a/prebuilts/gradle/PermissionRequest/gradle/wrapper/gradle-wrapper.properties b/prebuilts/gradle/PermissionRequest/gradle/wrapper/gradle-wrapper.properties
index 2b7c590..e0de4e6 100644
--- a/prebuilts/gradle/PermissionRequest/gradle/wrapper/gradle-wrapper.properties
+++ b/prebuilts/gradle/PermissionRequest/gradle/wrapper/gradle-wrapper.properties
@@ -3,4 +3,4 @@
 distributionPath=wrapper/dists
 zipStoreBase=GRADLE_USER_HOME
 zipStorePath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-2.8-all.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-2.10-all.zip
diff --git a/prebuilts/gradle/Quiz/.google/packaging.yaml b/prebuilts/gradle/Quiz/.google/packaging.yaml
index 6542cc2..9d86e17 100644
--- a/prebuilts/gradle/Quiz/.google/packaging.yaml
+++ b/prebuilts/gradle/Quiz/.google/packaging.yaml
@@ -4,7 +4,7 @@
 # This file is used by Google as part of our samples packaging process.
 # End users may safely ignore this file. It has no relevance to other systems.
 ---
-status:       PUBLISHED
+status:       DEPRECATED
 technologies: [Android]
 categories:   [Wearable]
 languages:    [Java]
diff --git a/prebuilts/gradle/Quiz/Application/build.gradle b/prebuilts/gradle/Quiz/Application/build.gradle
index fb39f01..8fd521d 100644
--- a/prebuilts/gradle/Quiz/Application/build.gradle
+++ b/prebuilts/gradle/Quiz/Application/build.gradle
@@ -5,7 +5,7 @@
     }
 
     dependencies {
-        classpath 'com.android.tools.build:gradle:1.2.3'
+        classpath 'com.android.tools.build:gradle:2.1.2'
     }
 }
 
@@ -16,11 +16,12 @@
 }
 
 dependencies {
-    compile "com.android.support:support-v4:23.1.0"
-    compile "com.android.support:support-v13:23.1.0"
-    compile "com.android.support:cardview-v7:23.1.0"
+    compile "com.android.support:support-v4:24.0.0-beta1"
+    compile "com.android.support:support-v13:24.0.0-beta1"
+    compile "com.android.support:cardview-v7:24.0.0-beta1"
+    compile "com.android.support:appcompat-v7:24.0.0-beta1"
     compile 'com.google.android.gms:play-services-wearable:8.4.0'
-    compile 'com.android.support:support-v13:23.1.1'
+    compile 'com.android.support:support-v13:24.0.0-beta1'
     wearApp project(':Wearable')
 }
 
@@ -34,7 +35,7 @@
 
 android {
     compileSdkVersion 23
-    buildToolsVersion "23.0.2"
+    buildToolsVersion "23.0.3"
 
     defaultConfig {
         minSdkVersion 18
diff --git a/prebuilts/gradle/Quiz/README.md b/prebuilts/gradle/Quiz/README.md
index 12cd855..780e0db 100644
--- a/prebuilts/gradle/Quiz/README.md
+++ b/prebuilts/gradle/Quiz/README.md
@@ -13,8 +13,8 @@
 Pre-requisites
 --------------
 
-- Android SDK v23
-- Android Build Tools v23.0.2
+- Android SDK 23
+- Android Build Tools v23.0.3
 - Android Support Repository
 
 Getting Started
@@ -38,7 +38,7 @@
 License
 -------
 
-Copyright 2014 The Android Open Source Project, Inc.
+Copyright 2016 The Android Open Source Project, Inc.
 
 Licensed to the Apache Software Foundation (ASF) under one or more contributor
 license agreements.  See the NOTICE file distributed with this work for
diff --git a/prebuilts/gradle/Quiz/Wearable/build.gradle b/prebuilts/gradle/Quiz/Wearable/build.gradle
index cb1382e..6170762 100644
--- a/prebuilts/gradle/Quiz/Wearable/build.gradle
+++ b/prebuilts/gradle/Quiz/Wearable/build.gradle
@@ -5,7 +5,7 @@
     }
 
     dependencies {
-        classpath 'com.android.tools.build:gradle:1.2.3'
+        classpath 'com.android.tools.build:gradle:2.1.2'
     }
 }
 
@@ -18,7 +18,7 @@
 
 
     compile 'com.google.android.gms:play-services-wearable:8.4.0'
-    compile 'com.android.support:support-v13:23.3.0'
+    compile 'com.android.support:support-v13:24.0.0-beta1'
 
     compile 'com.google.android.support:wearable:1.4.0'
 
@@ -35,7 +35,7 @@
 android {
     compileSdkVersion 23
 
-    buildToolsVersion "23.0.2"
+    buildToolsVersion "23.0.3"
 
     defaultConfig {
         versionCode 1
diff --git a/prebuilts/gradle/Quiz/gradle/wrapper/gradle-wrapper.properties b/prebuilts/gradle/Quiz/gradle/wrapper/gradle-wrapper.properties
index 07fc193..d570517 100644
--- a/prebuilts/gradle/Quiz/gradle/wrapper/gradle-wrapper.properties
+++ b/prebuilts/gradle/Quiz/gradle/wrapper/gradle-wrapper.properties
@@ -3,4 +3,4 @@
 distributionPath=wrapper/dists
 zipStoreBase=GRADLE_USER_HOME
 zipStorePath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-2.8-all.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-2.10-all.zip
diff --git a/prebuilts/gradle/RecipeAssistant/.google/packaging.yaml b/prebuilts/gradle/RecipeAssistant/.google/packaging.yaml
index 4f6b0f4..9249374 100644
--- a/prebuilts/gradle/RecipeAssistant/.google/packaging.yaml
+++ b/prebuilts/gradle/RecipeAssistant/.google/packaging.yaml
@@ -4,7 +4,7 @@
 # This file is used by Google as part of our samples packaging process.
 # End users may safely ignore this file. It has no relevance to other systems.
 ---
-status:       PUBLISHED
+status:       DEPRECATED
 technologies: [Android]
 categories:   [Wearable]
 languages:    [Java]
diff --git a/prebuilts/gradle/RecipeAssistant/Application/build.gradle b/prebuilts/gradle/RecipeAssistant/Application/build.gradle
index ae1d811..b8072d1 100644
--- a/prebuilts/gradle/RecipeAssistant/Application/build.gradle
+++ b/prebuilts/gradle/RecipeAssistant/Application/build.gradle
@@ -5,7 +5,7 @@
     }
 
     dependencies {
-        classpath 'com.android.tools.build:gradle:1.2.3'
+        classpath 'com.android.tools.build:gradle:2.1.2'
     }
 }
 
@@ -16,9 +16,10 @@
 }
 
 dependencies {
-    compile "com.android.support:support-v4:23.1.0"
-    compile "com.android.support:support-v13:23.1.0"
-    compile "com.android.support:cardview-v7:23.1.0"
+    compile "com.android.support:support-v4:24.0.0-beta1"
+    compile "com.android.support:support-v13:24.0.0-beta1"
+    compile "com.android.support:cardview-v7:24.0.0-beta1"
+    compile "com.android.support:appcompat-v7:24.0.0-beta1"
 }
 
 // The sample build uses multiple directories to
@@ -31,7 +32,7 @@
 
 android {
     compileSdkVersion 23
-    buildToolsVersion "23.0.2"
+    buildToolsVersion "23.0.3"
 
     defaultConfig {
         minSdkVersion 18
diff --git a/prebuilts/gradle/RecipeAssistant/README.md b/prebuilts/gradle/RecipeAssistant/README.md
index a97ea1e..3e59cb0 100644
--- a/prebuilts/gradle/RecipeAssistant/README.md
+++ b/prebuilts/gradle/RecipeAssistant/README.md
@@ -12,8 +12,8 @@
 Pre-requisites
 --------------
 
-- Android SDK v23
-- Android Build Tools v23.0.2
+- Android SDK 23
+- Android Build Tools v23.0.3
 - Android Support Repository
 
 Getting Started
@@ -37,7 +37,7 @@
 License
 -------
 
-Copyright 2014 The Android Open Source Project, Inc.
+Copyright 2016 The Android Open Source Project, Inc.
 
 Licensed to the Apache Software Foundation (ASF) under one or more contributor
 license agreements.  See the NOTICE file distributed with this work for
diff --git a/prebuilts/gradle/RecipeAssistant/gradle/wrapper/gradle-wrapper.properties b/prebuilts/gradle/RecipeAssistant/gradle/wrapper/gradle-wrapper.properties
index 07fc193..d570517 100644
--- a/prebuilts/gradle/RecipeAssistant/gradle/wrapper/gradle-wrapper.properties
+++ b/prebuilts/gradle/RecipeAssistant/gradle/wrapper/gradle-wrapper.properties
@@ -3,4 +3,4 @@
 distributionPath=wrapper/dists
 zipStoreBase=GRADLE_USER_HOME
 zipStorePath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-2.8-all.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-2.10-all.zip
diff --git a/prebuilts/gradle/RecyclerView/Application/build.gradle b/prebuilts/gradle/RecyclerView/Application/build.gradle
index b485aab..1907476 100644
--- a/prebuilts/gradle/RecyclerView/Application/build.gradle
+++ b/prebuilts/gradle/RecyclerView/Application/build.gradle
@@ -5,7 +5,7 @@
     }
 
     dependencies {
-        classpath 'com.android.tools.build:gradle:1.2.3'
+        classpath 'com.android.tools.build:gradle:2.1.2'
     }
 }
 
@@ -16,10 +16,11 @@
 }
 
 dependencies {
-    compile "com.android.support:support-v4:23.1.0"
-    compile "com.android.support:gridlayout-v7:23.1.0"
-    compile "com.android.support:cardview-v7:23.1.0"
-    compile 'com.android.support:recyclerview-v7:21.0.2'
+    compile "com.android.support:support-v4:24.0.0-beta1"
+    compile "com.android.support:gridlayout-v7:24.0.0-beta1"
+    compile "com.android.support:cardview-v7:24.0.0-beta1"
+    compile "com.android.support:appcompat-v7:24.0.0-beta1"
+    compile 'com.android.support:recyclerview-v7:24.0.0-beta1'
 }
 
 // The sample build uses multiple directories to
@@ -32,7 +33,7 @@
 
 android {
     compileSdkVersion 23
-    buildToolsVersion "23.0.2"
+    buildToolsVersion "23.0.3"
 
     defaultConfig {
         minSdkVersion 7
diff --git a/prebuilts/gradle/RecyclerView/Application/src/main/java/com/example/android/recyclerview/CustomAdapter.java b/prebuilts/gradle/RecyclerView/Application/src/main/java/com/example/android/recyclerview/CustomAdapter.java
index 40f9375..de704ea 100644
--- a/prebuilts/gradle/RecyclerView/Application/src/main/java/com/example/android/recyclerview/CustomAdapter.java
+++ b/prebuilts/gradle/RecyclerView/Application/src/main/java/com/example/android/recyclerview/CustomAdapter.java
@@ -45,7 +45,7 @@
             v.setOnClickListener(new View.OnClickListener() {
                 @Override
                 public void onClick(View v) {
-                    Log.d(TAG, "Element " + getPosition() + " clicked.");
+                    Log.d(TAG, "Element " + getAdapterPosition() + " clicked.");
                 }
             });
             textView = (TextView) v.findViewById(R.id.textView);
diff --git a/prebuilts/gradle/RecyclerView/README.md b/prebuilts/gradle/RecyclerView/README.md
index 33c5476..302a735 100644
--- a/prebuilts/gradle/RecyclerView/README.md
+++ b/prebuilts/gradle/RecyclerView/README.md
@@ -29,8 +29,8 @@
 Pre-requisites
 --------------
 
-- Android SDK v23
-- Android Build Tools v23.0.2
+- Android SDK 23
+- Android Build Tools v23.0.3
 - Android Support Repository
 
 Screenshots
@@ -59,7 +59,7 @@
 License
 -------
 
-Copyright 2014 The Android Open Source Project, Inc.
+Copyright 2016 The Android Open Source Project, Inc.
 
 Licensed to the Apache Software Foundation (ASF) under one or more contributor
 license agreements.  See the NOTICE file distributed with this work for
diff --git a/prebuilts/gradle/RecyclerView/gradle/wrapper/gradle-wrapper.properties b/prebuilts/gradle/RecyclerView/gradle/wrapper/gradle-wrapper.properties
index 8505d8d..b87c376 100644
--- a/prebuilts/gradle/RecyclerView/gradle/wrapper/gradle-wrapper.properties
+++ b/prebuilts/gradle/RecyclerView/gradle/wrapper/gradle-wrapper.properties
@@ -3,4 +3,4 @@
 distributionPath=wrapper/dists
 zipStoreBase=GRADLE_USER_HOME
 zipStorePath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-2.8-all.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-2.10-all.zip
diff --git a/prebuilts/gradle/RenderScriptIntrinsic/Application/build.gradle b/prebuilts/gradle/RenderScriptIntrinsic/Application/build.gradle
index 8bcd226..a7d093c 100644
--- a/prebuilts/gradle/RenderScriptIntrinsic/Application/build.gradle
+++ b/prebuilts/gradle/RenderScriptIntrinsic/Application/build.gradle
@@ -5,7 +5,7 @@
     }
 
     dependencies {
-        classpath 'com.android.tools.build:gradle:1.2.3'
+        classpath 'com.android.tools.build:gradle:2.1.2'
     }
 }
 
@@ -16,9 +16,10 @@
 }
 
 dependencies {
-    compile "com.android.support:support-v4:23.1.0"
-    compile "com.android.support:support-v13:23.1.0"
-    compile "com.android.support:cardview-v7:23.1.0"
+    compile "com.android.support:support-v4:24.0.0-beta1"
+    compile "com.android.support:support-v13:24.0.0-beta1"
+    compile "com.android.support:cardview-v7:24.0.0-beta1"
+    compile "com.android.support:appcompat-v7:24.0.0-beta1"
     compile files('renderscript-v8.jar')
 }
 
@@ -32,7 +33,7 @@
 
 android {
     compileSdkVersion 23
-    buildToolsVersion "23.0.2"
+    buildToolsVersion "23.0.3"
 
     defaultConfig {
         minSdkVersion 13
diff --git a/prebuilts/gradle/RenderScriptIntrinsic/README.md b/prebuilts/gradle/RenderScriptIntrinsic/README.md
index 553d699..2c35c39 100644
--- a/prebuilts/gradle/RenderScriptIntrinsic/README.md
+++ b/prebuilts/gradle/RenderScriptIntrinsic/README.md
@@ -36,8 +36,8 @@
 Pre-requisites
 --------------
 
-- Android SDK v23
-- Android Build Tools v23.0.2
+- Android SDK 23
+- Android Build Tools v23.0.3
 - Android Support Repository
 
 Screenshots
@@ -66,7 +66,7 @@
 License
 -------
 
-Copyright 2014 The Android Open Source Project, Inc.
+Copyright 2016 The Android Open Source Project, Inc.
 
 Licensed to the Apache Software Foundation (ASF) under one or more contributor
 license agreements.  See the NOTICE file distributed with this work for
diff --git a/prebuilts/gradle/RenderScriptIntrinsic/gradle/wrapper/gradle-wrapper.properties b/prebuilts/gradle/RenderScriptIntrinsic/gradle/wrapper/gradle-wrapper.properties
index d2ce766..6d297b3 100644
--- a/prebuilts/gradle/RenderScriptIntrinsic/gradle/wrapper/gradle-wrapper.properties
+++ b/prebuilts/gradle/RenderScriptIntrinsic/gradle/wrapper/gradle-wrapper.properties
@@ -3,4 +3,4 @@
 distributionPath=wrapper/dists
 zipStoreBase=GRADLE_USER_HOME
 zipStorePath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-2.8-all.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-2.10-all.zip
diff --git a/prebuilts/gradle/RepeatingAlarm/Application/build.gradle b/prebuilts/gradle/RepeatingAlarm/Application/build.gradle
index 013768e..2915ada 100644
--- a/prebuilts/gradle/RepeatingAlarm/Application/build.gradle
+++ b/prebuilts/gradle/RepeatingAlarm/Application/build.gradle
@@ -5,7 +5,7 @@
     }
 
     dependencies {
-        classpath 'com.android.tools.build:gradle:1.2.3'
+        classpath 'com.android.tools.build:gradle:2.1.2'
     }
 }
 
@@ -16,9 +16,10 @@
 }
 
 dependencies {
-    compile "com.android.support:support-v4:23.1.0"
-    compile "com.android.support:gridlayout-v7:23.1.0"
-    compile "com.android.support:cardview-v7:23.1.0"
+    compile "com.android.support:support-v4:24.0.0-beta1"
+    compile "com.android.support:gridlayout-v7:24.0.0-beta1"
+    compile "com.android.support:cardview-v7:24.0.0-beta1"
+    compile "com.android.support:appcompat-v7:24.0.0-beta1"
 }
 
 // The sample build uses multiple directories to
@@ -31,7 +32,7 @@
 
 android {
     compileSdkVersion 23
-    buildToolsVersion "23.0.2"
+    buildToolsVersion "23.0.3"
 
     defaultConfig {
         minSdkVersion 11
diff --git a/prebuilts/gradle/RepeatingAlarm/README.md b/prebuilts/gradle/RepeatingAlarm/README.md
index ea67a26..ce31094 100644
--- a/prebuilts/gradle/RepeatingAlarm/README.md
+++ b/prebuilts/gradle/RepeatingAlarm/README.md
@@ -8,8 +8,8 @@
 Pre-requisites
 --------------
 
-- Android SDK v23
-- Android Build Tools v23.0.2
+- Android SDK 23
+- Android Build Tools v23.0.3
 - Android Support Repository
 
 Getting Started
@@ -33,7 +33,7 @@
 License
 -------
 
-Copyright 2014 The Android Open Source Project, Inc.
+Copyright 2016 The Android Open Source Project, Inc.
 
 Licensed to the Apache Software Foundation (ASF) under one or more contributor
 license agreements.  See the NOTICE file distributed with this work for
diff --git a/prebuilts/gradle/RepeatingAlarm/gradle/wrapper/gradle-wrapper.properties b/prebuilts/gradle/RepeatingAlarm/gradle/wrapper/gradle-wrapper.properties
index 07fc193..d570517 100644
--- a/prebuilts/gradle/RepeatingAlarm/gradle/wrapper/gradle-wrapper.properties
+++ b/prebuilts/gradle/RepeatingAlarm/gradle/wrapper/gradle-wrapper.properties
@@ -3,4 +3,4 @@
 distributionPath=wrapper/dists
 zipStoreBase=GRADLE_USER_HOME
 zipStorePath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-2.8-all.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-2.10-all.zip
diff --git a/prebuilts/gradle/RevealEffectBasic/Application/build.gradle b/prebuilts/gradle/RevealEffectBasic/Application/build.gradle
index 3bffd32..aeece30 100644
--- a/prebuilts/gradle/RevealEffectBasic/Application/build.gradle
+++ b/prebuilts/gradle/RevealEffectBasic/Application/build.gradle
@@ -5,7 +5,7 @@
     }
 
     dependencies {
-        classpath 'com.android.tools.build:gradle:1.2.3'
+        classpath 'com.android.tools.build:gradle:2.1.2'
     }
 }
 
@@ -16,9 +16,10 @@
 }
 
 dependencies {
-    compile "com.android.support:support-v4:23.1.0"
-    compile "com.android.support:support-v13:23.1.0"
-    compile "com.android.support:cardview-v7:23.1.0"
+    compile "com.android.support:support-v4:24.0.0-beta1"
+    compile "com.android.support:support-v13:24.0.0-beta1"
+    compile "com.android.support:cardview-v7:24.0.0-beta1"
+    compile "com.android.support:appcompat-v7:24.0.0-beta1"
 }
 
 // The sample build uses multiple directories to
@@ -31,7 +32,7 @@
 
 android {
     compileSdkVersion 21
-    buildToolsVersion "23.0.2"
+    buildToolsVersion "23.0.3"
 
     defaultConfig {
         minSdkVersion 21
diff --git a/prebuilts/gradle/RevealEffectBasic/README.md b/prebuilts/gradle/RevealEffectBasic/README.md
index e6e5254..98ce674 100644
--- a/prebuilts/gradle/RevealEffectBasic/README.md
+++ b/prebuilts/gradle/RevealEffectBasic/README.md
@@ -27,8 +27,8 @@
 Pre-requisites
 --------------
 
-- Android SDK v21
-- Android Build Tools v23.0.2
+- Android SDK 21
+- Android Build Tools v23.0.3
 - Android Support Repository
 
 Screenshots
@@ -57,7 +57,7 @@
 License
 -------
 
-Copyright 2014 The Android Open Source Project, Inc.
+Copyright 2016 The Android Open Source Project, Inc.
 
 Licensed to the Apache Software Foundation (ASF) under one or more contributor
 license agreements.  See the NOTICE file distributed with this work for
diff --git a/prebuilts/gradle/RevealEffectBasic/gradle/gradle/wrapper/gradle-wrapper.jar b/prebuilts/gradle/RevealEffectBasic/gradle/gradle/wrapper/gradle-wrapper.jar
deleted file mode 100644
index 5838598..0000000
--- a/prebuilts/gradle/RevealEffectBasic/gradle/gradle/wrapper/gradle-wrapper.jar
+++ /dev/null
Binary files differ
diff --git a/prebuilts/gradle/RevealEffectBasic/gradle/gradle/wrapper/gradle-wrapper.properties b/prebuilts/gradle/RevealEffectBasic/gradle/gradle/wrapper/gradle-wrapper.properties
deleted file mode 100644
index a42b95d..0000000
--- a/prebuilts/gradle/RevealEffectBasic/gradle/gradle/wrapper/gradle-wrapper.properties
+++ /dev/null
@@ -1,6 +0,0 @@
-#Fri May 23 13:44:29 BST 2014
-distributionBase=GRADLE_USER_HOME
-distributionPath=wrapper/dists
-zipStoreBase=GRADLE_USER_HOME
-zipStorePath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-2.5-all.zip
diff --git a/prebuilts/gradle/RevealEffectBasic/gradle/gradlew b/prebuilts/gradle/RevealEffectBasic/gradle/gradlew
deleted file mode 100644
index 91a7e26..0000000
--- a/prebuilts/gradle/RevealEffectBasic/gradle/gradlew
+++ /dev/null
@@ -1,164 +0,0 @@
-#!/usr/bin/env bash
-
-##############################################################################
-##
-##  Gradle start up script for UN*X
-##
-##############################################################################
-
-# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
-DEFAULT_JVM_OPTS=""
-
-APP_NAME="Gradle"
-APP_BASE_NAME=`basename "$0"`
-
-# Use the maximum available, or set MAX_FD != -1 to use that value.
-MAX_FD="maximum"
-
-warn ( ) {
-    echo "$*"
-}
-
-die ( ) {
-    echo
-    echo "$*"
-    echo
-    exit 1
-}
-
-# OS specific support (must be 'true' or 'false').
-cygwin=false
-msys=false
-darwin=false
-case "`uname`" in
-  CYGWIN* )
-    cygwin=true
-    ;;
-  Darwin* )
-    darwin=true
-    ;;
-  MINGW* )
-    msys=true
-    ;;
-esac
-
-# For Cygwin, ensure paths are in UNIX format before anything is touched.
-if $cygwin ; then
-    [ -n "$JAVA_HOME" ] && JAVA_HOME=`cygpath --unix "$JAVA_HOME"`
-fi
-
-# Attempt to set APP_HOME
-# Resolve links: $0 may be a link
-PRG="$0"
-# Need this for relative symlinks.
-while [ -h "$PRG" ] ; do
-    ls=`ls -ld "$PRG"`
-    link=`expr "$ls" : '.*-> \(.*\)$'`
-    if expr "$link" : '/.*' > /dev/null; then
-        PRG="$link"
-    else
-        PRG=`dirname "$PRG"`"/$link"
-    fi
-done
-SAVED="`pwd`"
-cd "`dirname \"$PRG\"`/" >&-
-APP_HOME="`pwd -P`"
-cd "$SAVED" >&-
-
-CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
-
-# Determine the Java command to use to start the JVM.
-if [ -n "$JAVA_HOME" ] ; then
-    if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
-        # IBM's JDK on AIX uses strange locations for the executables
-        JAVACMD="$JAVA_HOME/jre/sh/java"
-    else
-        JAVACMD="$JAVA_HOME/bin/java"
-    fi
-    if [ ! -x "$JAVACMD" ] ; then
-        die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
-
-Please set the JAVA_HOME variable in your environment to match the
-location of your Java installation."
-    fi
-else
-    JAVACMD="java"
-    which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
-
-Please set the JAVA_HOME variable in your environment to match the
-location of your Java installation."
-fi
-
-# Increase the maximum file descriptors if we can.
-if [ "$cygwin" = "false" -a "$darwin" = "false" ] ; then
-    MAX_FD_LIMIT=`ulimit -H -n`
-    if [ $? -eq 0 ] ; then
-        if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
-            MAX_FD="$MAX_FD_LIMIT"
-        fi
-        ulimit -n $MAX_FD
-        if [ $? -ne 0 ] ; then
-            warn "Could not set maximum file descriptor limit: $MAX_FD"
-        fi
-    else
-        warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT"
-    fi
-fi
-
-# For Darwin, add options to specify how the application appears in the dock
-if $darwin; then
-    GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
-fi
-
-# For Cygwin, switch paths to Windows format before running java
-if $cygwin ; then
-    APP_HOME=`cygpath --path --mixed "$APP_HOME"`
-    CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
-
-    # We build the pattern for arguments to be converted via cygpath
-    ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
-    SEP=""
-    for dir in $ROOTDIRSRAW ; do
-        ROOTDIRS="$ROOTDIRS$SEP$dir"
-        SEP="|"
-    done
-    OURCYGPATTERN="(^($ROOTDIRS))"
-    # Add a user-defined pattern to the cygpath arguments
-    if [ "$GRADLE_CYGPATTERN" != "" ] ; then
-        OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)"
-    fi
-    # Now convert the arguments - kludge to limit ourselves to /bin/sh
-    i=0
-    for arg in "$@" ; do
-        CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -`
-        CHECK2=`echo "$arg"|egrep -c "^-"`                                 ### Determine if an option
-
-        if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then                    ### Added a condition
-            eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"`
-        else
-            eval `echo args$i`="\"$arg\""
-        fi
-        i=$((i+1))
-    done
-    case $i in
-        (0) set -- ;;
-        (1) set -- "$args0" ;;
-        (2) set -- "$args0" "$args1" ;;
-        (3) set -- "$args0" "$args1" "$args2" ;;
-        (4) set -- "$args0" "$args1" "$args2" "$args3" ;;
-        (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
-        (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
-        (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
-        (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
-        (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
-    esac
-fi
-
-# Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules
-function splitJvmOpts() {
-    JVM_OPTS=("$@")
-}
-eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS
-JVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME"
-
-exec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "$@"
diff --git a/prebuilts/gradle/RevealEffectBasic/gradle/gradlew.bat b/prebuilts/gradle/RevealEffectBasic/gradle/gradlew.bat
deleted file mode 100644
index aec9973..0000000
--- a/prebuilts/gradle/RevealEffectBasic/gradle/gradlew.bat
+++ /dev/null
@@ -1,90 +0,0 @@
-@if "%DEBUG%" == "" @echo off

-@rem ##########################################################################

-@rem

-@rem  Gradle startup script for Windows

-@rem

-@rem ##########################################################################

-

-@rem Set local scope for the variables with windows NT shell

-if "%OS%"=="Windows_NT" setlocal

-

-@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.

-set DEFAULT_JVM_OPTS=

-

-set DIRNAME=%~dp0

-if "%DIRNAME%" == "" set DIRNAME=.

-set APP_BASE_NAME=%~n0

-set APP_HOME=%DIRNAME%

-

-@rem Find java.exe

-if defined JAVA_HOME goto findJavaFromJavaHome

-

-set JAVA_EXE=java.exe

-%JAVA_EXE% -version >NUL 2>&1

-if "%ERRORLEVEL%" == "0" goto init

-

-echo.

-echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.

-echo.

-echo Please set the JAVA_HOME variable in your environment to match the

-echo location of your Java installation.

-

-goto fail

-

-:findJavaFromJavaHome

-set JAVA_HOME=%JAVA_HOME:"=%

-set JAVA_EXE=%JAVA_HOME%/bin/java.exe

-

-if exist "%JAVA_EXE%" goto init

-

-echo.

-echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%

-echo.

-echo Please set the JAVA_HOME variable in your environment to match the

-echo location of your Java installation.

-

-goto fail

-

-:init

-@rem Get command-line arguments, handling Windowz variants

-

-if not "%OS%" == "Windows_NT" goto win9xME_args

-if "%@eval[2+2]" == "4" goto 4NT_args

-

-:win9xME_args

-@rem Slurp the command line arguments.

-set CMD_LINE_ARGS=

-set _SKIP=2

-

-:win9xME_args_slurp

-if "x%~1" == "x" goto execute

-

-set CMD_LINE_ARGS=%*

-goto execute

-

-:4NT_args

-@rem Get arguments from the 4NT Shell from JP Software

-set CMD_LINE_ARGS=%$

-

-:execute

-@rem Setup the command line

-

-set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar

-

-@rem Execute Gradle

-"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS%

-

-:end

-@rem End local scope for the variables with windows NT shell

-if "%ERRORLEVEL%"=="0" goto mainEnd

-

-:fail

-rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of

-rem the _cmd.exe /c_ return code!

-if  not "" == "%GRADLE_EXIT_CONSOLE%" exit 1

-exit /b 1

-

-:mainEnd

-if "%OS%"=="Windows_NT" endlocal

-

-:omega

diff --git a/prebuilts/gradle/RevealEffectBasic/gradle/wrapper/gradle-wrapper.properties b/prebuilts/gradle/RevealEffectBasic/gradle/wrapper/gradle-wrapper.properties
index 07fc193..d570517 100644
--- a/prebuilts/gradle/RevealEffectBasic/gradle/wrapper/gradle-wrapper.properties
+++ b/prebuilts/gradle/RevealEffectBasic/gradle/wrapper/gradle-wrapper.properties
@@ -3,4 +3,4 @@
 distributionPath=wrapper/dists
 zipStoreBase=GRADLE_USER_HOME
 zipStorePath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-2.8-all.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-2.10-all.zip
diff --git a/prebuilts/gradle/RuntimePermissions/Application/build.gradle b/prebuilts/gradle/RuntimePermissions/Application/build.gradle
index 0c6a89c..1155496 100644
--- a/prebuilts/gradle/RuntimePermissions/Application/build.gradle
+++ b/prebuilts/gradle/RuntimePermissions/Application/build.gradle
@@ -5,7 +5,7 @@
     }
 
     dependencies {
-        classpath 'com.android.tools.build:gradle:1.2.3'
+        classpath 'com.android.tools.build:gradle:2.1.2'
     }
 }
 
@@ -16,12 +16,13 @@
 }
 
 dependencies {
-    compile "com.android.support:support-v4:23.1.0"
-    compile "com.android.support:support-v13:23.1.0"
-    compile "com.android.support:cardview-v7:23.1.0"
-    compile 'com.android.support:appcompat-v7:23.0.0'
-    compile 'com.android.support:support-v4:23.0.0'
-    compile 'com.android.support:design:23.0.0'
+    compile "com.android.support:support-v4:24.0.0-beta1"
+    compile "com.android.support:support-v13:24.0.0-beta1"
+    compile "com.android.support:cardview-v7:24.0.0-beta1"
+    compile "com.android.support:appcompat-v7:24.0.0-beta1"
+    compile 'com.android.support:appcompat-v7:24.0.0-beta1'
+    compile 'com.android.support:support-v4:24.0.0-beta1'
+    compile 'com.android.support:design:24.0.0-beta1'
 }
 
 // The sample build uses multiple directories to
@@ -34,7 +35,7 @@
 
 android {
     compileSdkVersion 23
-    buildToolsVersion "23.0.2"
+    buildToolsVersion "23.0.3"
 
     defaultConfig {
         minSdkVersion 15
diff --git a/prebuilts/gradle/RuntimePermissions/README.md b/prebuilts/gradle/RuntimePermissions/README.md
index 3390c33..f1271ec 100644
--- a/prebuilts/gradle/RuntimePermissions/README.md
+++ b/prebuilts/gradle/RuntimePermissions/README.md
@@ -31,8 +31,8 @@
 Pre-requisites
 --------------
 
-- Android SDK v23
-- Android Build Tools v23.0.2
+- Android SDK 23
+- Android Build Tools v23.0.3
 - Android Support Repository
 
 Screenshots
@@ -61,7 +61,7 @@
 License
 -------
 
-Copyright 2014 The Android Open Source Project, Inc.
+Copyright 2016 The Android Open Source Project, Inc.
 
 Licensed to the Apache Software Foundation (ASF) under one or more contributor
 license agreements.  See the NOTICE file distributed with this work for
diff --git a/prebuilts/gradle/RuntimePermissions/gradle/wrapper/gradle-wrapper.properties b/prebuilts/gradle/RuntimePermissions/gradle/wrapper/gradle-wrapper.properties
index cd50297..fdad773 100644
--- a/prebuilts/gradle/RuntimePermissions/gradle/wrapper/gradle-wrapper.properties
+++ b/prebuilts/gradle/RuntimePermissions/gradle/wrapper/gradle-wrapper.properties
@@ -3,4 +3,4 @@
 distributionPath=wrapper/dists
 zipStoreBase=GRADLE_USER_HOME
 zipStorePath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-2.8-all.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-2.10-all.zip
diff --git a/prebuilts/gradle/RuntimePermissionsBasic/Application/build.gradle b/prebuilts/gradle/RuntimePermissionsBasic/Application/build.gradle
index 0c6a89c..1155496 100644
--- a/prebuilts/gradle/RuntimePermissionsBasic/Application/build.gradle
+++ b/prebuilts/gradle/RuntimePermissionsBasic/Application/build.gradle
@@ -5,7 +5,7 @@
     }
 
     dependencies {
-        classpath 'com.android.tools.build:gradle:1.2.3'
+        classpath 'com.android.tools.build:gradle:2.1.2'
     }
 }
 
@@ -16,12 +16,13 @@
 }
 
 dependencies {
-    compile "com.android.support:support-v4:23.1.0"
-    compile "com.android.support:support-v13:23.1.0"
-    compile "com.android.support:cardview-v7:23.1.0"
-    compile 'com.android.support:appcompat-v7:23.0.0'
-    compile 'com.android.support:support-v4:23.0.0'
-    compile 'com.android.support:design:23.0.0'
+    compile "com.android.support:support-v4:24.0.0-beta1"
+    compile "com.android.support:support-v13:24.0.0-beta1"
+    compile "com.android.support:cardview-v7:24.0.0-beta1"
+    compile "com.android.support:appcompat-v7:24.0.0-beta1"
+    compile 'com.android.support:appcompat-v7:24.0.0-beta1'
+    compile 'com.android.support:support-v4:24.0.0-beta1'
+    compile 'com.android.support:design:24.0.0-beta1'
 }
 
 // The sample build uses multiple directories to
@@ -34,7 +35,7 @@
 
 android {
     compileSdkVersion 23
-    buildToolsVersion "23.0.2"
+    buildToolsVersion "23.0.3"
 
     defaultConfig {
         minSdkVersion 15
diff --git a/prebuilts/gradle/RuntimePermissionsBasic/README.md b/prebuilts/gradle/RuntimePermissionsBasic/README.md
index 861412d..e75e686 100644
--- a/prebuilts/gradle/RuntimePermissionsBasic/README.md
+++ b/prebuilts/gradle/RuntimePermissionsBasic/README.md
@@ -22,8 +22,8 @@
 Pre-requisites
 --------------
 
-- Android SDK v23
-- Android Build Tools v23.0.2
+- Android SDK 23
+- Android Build Tools v23.0.3
 - Android Support Repository
 
 Screenshots
@@ -52,7 +52,7 @@
 License
 -------
 
-Copyright 2014 The Android Open Source Project, Inc.
+Copyright 2016 The Android Open Source Project, Inc.
 
 Licensed to the Apache Software Foundation (ASF) under one or more contributor
 license agreements.  See the NOTICE file distributed with this work for
diff --git a/prebuilts/gradle/RuntimePermissionsBasic/gradle/wrapper/gradle-wrapper.properties b/prebuilts/gradle/RuntimePermissionsBasic/gradle/wrapper/gradle-wrapper.properties
index cd50297..fdad773 100644
--- a/prebuilts/gradle/RuntimePermissionsBasic/gradle/wrapper/gradle-wrapper.properties
+++ b/prebuilts/gradle/RuntimePermissionsBasic/gradle/wrapper/gradle-wrapper.properties
@@ -3,4 +3,4 @@
 distributionPath=wrapper/dists
 zipStoreBase=GRADLE_USER_HOME
 zipStorePath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-2.8-all.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-2.10-all.zip
diff --git a/prebuilts/gradle/RuntimePermissionsWear/Application/build.gradle b/prebuilts/gradle/RuntimePermissionsWear/Application/build.gradle
index c199c5e..89255d7 100644
--- a/prebuilts/gradle/RuntimePermissionsWear/Application/build.gradle
+++ b/prebuilts/gradle/RuntimePermissionsWear/Application/build.gradle
@@ -5,7 +5,7 @@
     }
 
     dependencies {
-        classpath 'com.android.tools.build:gradle:1.2.3'
+        classpath 'com.android.tools.build:gradle:2.1.2'
     }
 }
 
@@ -17,10 +17,10 @@
 }
 
 dependencies {
-    compile 'com.android.support:appcompat-v7:23.1.0'
-    compile 'com.android.support:design:23.1.0'
+    compile 'com.android.support:appcompat-v7:24.0.0-beta1'
+    compile 'com.android.support:design:24.0.0-beta1'
     compile 'com.google.android.gms:play-services-wearable:8.4.0'
-    compile 'com.android.support:support-v13:23.1.1'
+    compile 'com.android.support:support-v13:24.0.0-beta1'
     compile project(':Shared')
     wearApp project(':Wearable')
 }
@@ -36,7 +36,7 @@
 android {
     compileSdkVersion 23
 
-    buildToolsVersion "23.0.2"
+    buildToolsVersion "23.0.3"
 
     defaultConfig {
         minSdkVersion 18
diff --git a/prebuilts/gradle/RuntimePermissionsWear/Application/src/main/AndroidManifest.xml b/prebuilts/gradle/RuntimePermissionsWear/Application/src/main/AndroidManifest.xml
index 861cad3..d8a6a28 100644
--- a/prebuilts/gradle/RuntimePermissionsWear/Application/src/main/AndroidManifest.xml
+++ b/prebuilts/gradle/RuntimePermissionsWear/Application/src/main/AndroidManifest.xml
@@ -66,7 +66,8 @@
             android:enabled="true"
             android:exported="true" >
             <intent-filter>
-                <action android:name="com.google.android.gms.wearable.BIND_LISTENER" />
+                <action android:name="com.google.android.gms.wearable.MESSAGE_RECEIVED" />
+                <data android:scheme="wear" android:host="*" android:pathPrefix="/"/>
             </intent-filter>
         </service>
     </application>
diff --git a/prebuilts/gradle/RuntimePermissionsWear/README.md b/prebuilts/gradle/RuntimePermissionsWear/README.md
index 5752f0d..9388d4e 100644
--- a/prebuilts/gradle/RuntimePermissionsWear/README.md
+++ b/prebuilts/gradle/RuntimePermissionsWear/README.md
@@ -37,8 +37,8 @@
 Pre-requisites
 --------------
 
-- Android SDK v23
-- Android Build Tools v23.0.2
+- Android SDK 23
+- Android Build Tools v23.0.3
 - Android Support Repository
 
 Screenshots
@@ -67,7 +67,7 @@
 License
 -------
 
-Copyright 2014 The Android Open Source Project, Inc.
+Copyright 2016 The Android Open Source Project, Inc.
 
 Licensed to the Apache Software Foundation (ASF) under one or more contributor
 license agreements.  See the NOTICE file distributed with this work for
diff --git a/prebuilts/gradle/RuntimePermissionsWear/Shared/build.gradle b/prebuilts/gradle/RuntimePermissionsWear/Shared/build.gradle
index daea9d0..74dd6c9 100644
--- a/prebuilts/gradle/RuntimePermissionsWear/Shared/build.gradle
+++ b/prebuilts/gradle/RuntimePermissionsWear/Shared/build.gradle
@@ -5,7 +5,7 @@
     }
 
     dependencies {
-        classpath 'com.android.tools.build:gradle:1.2.3'
+        classpath 'com.android.tools.build:gradle:2.1.2'
     }
 }
 
@@ -28,7 +28,7 @@
 android {
     compileSdkVersion 23
 
-    buildToolsVersion "23.0.2"
+    buildToolsVersion "23.0.3"
 
     defaultConfig {
         minSdkVersion 18
diff --git a/prebuilts/gradle/RuntimePermissionsWear/Wearable/build.gradle b/prebuilts/gradle/RuntimePermissionsWear/Wearable/build.gradle
index 2f09eb0..d769f1a 100644
--- a/prebuilts/gradle/RuntimePermissionsWear/Wearable/build.gradle
+++ b/prebuilts/gradle/RuntimePermissionsWear/Wearable/build.gradle
@@ -5,7 +5,7 @@
     }
 
     dependencies {
-        classpath 'com.android.tools.build:gradle:1.2.3'
+        classpath 'com.android.tools.build:gradle:2.1.2'
     }
 }
 
@@ -19,7 +19,7 @@
 
 dependencies {
     compile 'com.google.android.gms:play-services-wearable:8.4.0'
-    compile 'com.android.support:support-v13:23.3.0'
+    compile 'com.android.support:support-v13:24.0.0-beta1'
 
     compile 'com.google.android.support:wearable:1.4.0'
 
@@ -37,7 +37,7 @@
 android {
     compileSdkVersion 23
 
-    buildToolsVersion "23.0.2"
+    buildToolsVersion "23.0.3"
 
     defaultConfig {
         versionCode 1
diff --git a/prebuilts/gradle/RuntimePermissionsWear/Wearable/src/main/AndroidManifest.xml b/prebuilts/gradle/RuntimePermissionsWear/Wearable/src/main/AndroidManifest.xml
index 43218d7..e654253 100644
--- a/prebuilts/gradle/RuntimePermissionsWear/Wearable/src/main/AndroidManifest.xml
+++ b/prebuilts/gradle/RuntimePermissionsWear/Wearable/src/main/AndroidManifest.xml
@@ -61,7 +61,8 @@
             android:enabled="true"
             android:exported="true" >
             <intent-filter>
-                <action android:name="com.google.android.gms.wearable.BIND_LISTENER" />
+                <action android:name="com.google.android.gms.wearable.MESSAGE_RECEIVED" />
+                <data android:scheme="wear" android:host="*" android:pathPrefix="/"/>
             </intent-filter>
         </service>
     </application>
diff --git a/prebuilts/gradle/RuntimePermissionsWear/gradle/wrapper/gradle-wrapper.properties b/prebuilts/gradle/RuntimePermissionsWear/gradle/wrapper/gradle-wrapper.properties
index 07fc193..b034583 100644
--- a/prebuilts/gradle/RuntimePermissionsWear/gradle/wrapper/gradle-wrapper.properties
+++ b/prebuilts/gradle/RuntimePermissionsWear/gradle/wrapper/gradle-wrapper.properties
@@ -1,6 +1,6 @@
-#Wed Apr 10 15:27:10 PDT 2013
+#Thu Apr 14 11:01:23 PDT 2016
 distributionBase=GRADLE_USER_HOME
 distributionPath=wrapper/dists
 zipStoreBase=GRADLE_USER_HOME
 zipStorePath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-2.8-all.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-2.10-all.zip
diff --git a/prebuilts/gradle/RuntimePermissionsWear/gradlew b/prebuilts/gradle/RuntimePermissionsWear/gradlew
old mode 100644
new mode 100755
diff --git a/prebuilts/gradle/ScopedDirectoryAccess/Application/build.gradle b/prebuilts/gradle/ScopedDirectoryAccess/Application/build.gradle
index dcf1fec..b31c41b 100644
--- a/prebuilts/gradle/ScopedDirectoryAccess/Application/build.gradle
+++ b/prebuilts/gradle/ScopedDirectoryAccess/Application/build.gradle
@@ -5,7 +5,7 @@
     }
 
     dependencies {
-        classpath 'com.android.tools.build:gradle:2.0.0'
+        classpath 'com.android.tools.build:gradle:2.1.2'
     }
 }
 
@@ -16,15 +16,13 @@
 }
 
 dependencies {
-
-
-    provided "com.google.android.wearable:wearable:1.0.0"
-
-    compile 'com.google.android.gms:play-services-wearable:8.4.0'
-    compile 'com.android.support:support-v13:23.3.0'
-
-    compile 'com.google.android.support:wearable:2.0.0-alpha1'
-
+    compile "com.android.support:support-v4:24.0.0-beta1"
+    compile "com.android.support:support-v13:24.0.0-beta1"
+    compile "com.android.support:cardview-v7:24.0.0-beta1"
+    compile "com.android.support:appcompat-v7:24.0.0-beta1"
+    compile 'com.android.support:appcompat-v7:24.0.0-beta1'
+    compile 'com.android.support:recyclerview-v7:24.0.0-beta1'
+    compile 'com.android.support:support-v4:24.0.0-beta1'
 }
 
 // The sample build uses multiple directories to
@@ -36,16 +34,12 @@
     'template'] // boilerplate code that is generated by the sample template process
 
 android {
-    compileSdkVersion "android-N"
-    buildToolsVersion "24.0.0 rc1"
+    compileSdkVersion 24
+    buildToolsVersion "23.0.3"
 
     defaultConfig {
-        versionCode 1
-        versionName "1.0"
-
-        minSdkVersion 23
-
-        targetSdkVersion 23
+        minSdkVersion 24
+        targetSdkVersion 24
     }
 
     compileOptions {
diff --git a/prebuilts/gradle/ScopedDirectoryAccess/Application/src/main/AndroidManifest.xml b/prebuilts/gradle/ScopedDirectoryAccess/Application/src/main/AndroidManifest.xml
index b82d1ae..6a189d6 100644
--- a/prebuilts/gradle/ScopedDirectoryAccess/Application/src/main/AndroidManifest.xml
+++ b/prebuilts/gradle/ScopedDirectoryAccess/Application/src/main/AndroidManifest.xml
@@ -23,7 +23,7 @@
         android:allowBackup="true"
         android:label="@string/app_name"
         android:icon="@mipmap/ic_launcher"
-        android:theme="@style/AppTheme">
+        android:theme="@style/Theme.AppCompat.Light">
 
         <activity
             android:name=".MainActivity"
diff --git a/prebuilts/gradle/ScopedDirectoryAccess/Application/src/main/java/com/example/android/scopeddirectoryaccess/ScopedDirectoryAccessFragment.java b/prebuilts/gradle/ScopedDirectoryAccess/Application/src/main/java/com/example/android/scopeddirectoryaccess/ScopedDirectoryAccessFragment.java
index 08f04bc..23f1bb3 100644
--- a/prebuilts/gradle/ScopedDirectoryAccess/Application/src/main/java/com/example/android/scopeddirectoryaccess/ScopedDirectoryAccessFragment.java
+++ b/prebuilts/gradle/ScopedDirectoryAccess/Application/src/main/java/com/example/android/scopeddirectoryaccess/ScopedDirectoryAccessFragment.java
@@ -18,6 +18,7 @@
 
 import android.app.Activity;
 import android.content.ContentResolver;
+import android.content.Context;
 import android.content.Intent;
 import android.database.Cursor;
 import android.net.Uri;
@@ -34,10 +35,12 @@
 import android.view.ViewGroup;
 import android.widget.ArrayAdapter;
 import android.widget.Button;
+import android.widget.LinearLayout;
 import android.widget.Spinner;
 import android.widget.TextView;
 
 import java.util.ArrayList;
+import java.util.List;
 
 /**
  * Fragment that displays the directory contents.
@@ -54,9 +57,11 @@
             DocumentsContract.Document.COLUMN_DOCUMENT_ID,
     };
 
+    private Activity mActivity;
     private StorageManager mStorageManager;
     private TextView mCurrentDirectoryTextView;
     private TextView mNothingInDirectoryTextView;
+    private TextView mPrimaryVolumeNameTextView;
     private Spinner mDirectoriesSpinner;
     private DirectoryEntryAdapter mAdapter;
     private ArrayList<DirectoryEntry> mDirectoryEntries;
@@ -71,9 +76,10 @@
     }
 
     @Override
-    public void onActivityCreated(Bundle savedInstanceState) {
-        super.onActivityCreated(savedInstanceState);
-        mStorageManager = getActivity().getSystemService(StorageManager.class);
+    public void onAttach(Context context) {
+        super.onAttach(context);
+        mActivity = getActivity();
+        mStorageManager = mActivity.getSystemService(StorageManager.class);
     }
 
     @Override
@@ -100,17 +106,52 @@
                 .findViewById(R.id.textview_current_directory);
         mNothingInDirectoryTextView = (TextView) rootView
                 .findViewById(R.id.textview_nothing_in_directory);
-        Button openPictureButton = (Button) rootView.findViewById(R.id.button_open_directory);
+        mPrimaryVolumeNameTextView = (TextView) rootView
+                .findViewById(R.id.textview_primary_volume_name);
+
+        // Set onClickListener for the primary volume
+        Button openPictureButton = (Button) rootView
+                .findViewById(R.id.button_open_directory_primary_volume);
         openPictureButton.setOnClickListener(new View.OnClickListener() {
             @Override
             public void onClick(View view) {
                 String selected = mDirectoriesSpinner.getSelectedItem().toString();
                 String directoryName = getDirectoryName(selected);
-                StorageVolume storageVolume = mStorageManager.getPrimaryVolume();
+                StorageVolume storageVolume = mStorageManager.getPrimaryStorageVolume();
                 Intent intent = storageVolume.createAccessIntent(directoryName);
                 startActivityForResult(intent, OPEN_DIRECTORY_REQUEST_CODE);
             }
         });
+
+        // Set onClickListener for the external volumes if exists
+        List<StorageVolume> storageVolumes = mStorageManager.getStorageVolumes();
+        LinearLayout containerVolumes = (LinearLayout) mActivity
+                .findViewById(R.id.container_volumes);
+        for (final StorageVolume volume : storageVolumes) {
+            String volumeDescription = volume.getDescription(mActivity);
+            if (volume.isPrimary()) {
+                // Primary volume area is already added...
+                if (volumeDescription != null) {
+                    // ...but with a default name: set it to the real name when available.
+                    mPrimaryVolumeNameTextView.setText(volumeDescription);
+                }
+                continue;
+            }
+            LinearLayout volumeArea = (LinearLayout) mActivity.getLayoutInflater()
+                    .inflate(R.layout.volume_entry, containerVolumes);
+            TextView volumeName = (TextView) volumeArea.findViewById(R.id.textview_volume_name);
+            volumeName.setText(volumeDescription);
+            Button button = (Button) volumeArea.findViewById(R.id.button_open_directory);
+            button.setOnClickListener(new View.OnClickListener() {
+                @Override
+                public void onClick(View view) {
+                    String selected = mDirectoriesSpinner.getSelectedItem().toString();
+                    String directoryName = getDirectoryName(selected);
+                    Intent intent = volume.createAccessIntent(directoryName);
+                    startActivityForResult(intent, OPEN_DIRECTORY_REQUEST_CODE);
+                }
+            });
+        }
         RecyclerView recyclerView = (RecyclerView) rootView
                 .findViewById(R.id.recyclerview_directory_entries);
         if (savedInstanceState != null) {
diff --git a/prebuilts/gradle/ScopedDirectoryAccess/Application/src/main/res/layout/fragment_scoped_directory_access.xml b/prebuilts/gradle/ScopedDirectoryAccess/Application/src/main/res/layout/fragment_scoped_directory_access.xml
index 3104e9b..dfee2aa 100644
--- a/prebuilts/gradle/ScopedDirectoryAccess/Application/src/main/res/layout/fragment_scoped_directory_access.xml
+++ b/prebuilts/gradle/ScopedDirectoryAccess/Application/src/main/res/layout/fragment_scoped_directory_access.xml
@@ -1,5 +1,4 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
+<?xml version="1.0" encoding="utf-8"?><!--
  Copyright 2016 The Android Open Source Project
 
  Licensed under the Apache License, Version 2.0 (the "License");
@@ -22,40 +21,61 @@
     android:orientation="vertical"
     android:padding="@dimen/margin_medium">
 
-    <LinearLayout android:layout_width="wrap_content"
+    <LinearLayout
+        android:id="@+id/container_volumes"
+        android:layout_width="wrap_content"
         android:layout_height="wrap_content"
-        android:orientation="horizontal"
+        android:orientation="vertical"
         >
 
-        <Spinner
-            android:id="@+id/spinner_directories"
+        <LinearLayout
+            xmlns:android="http://schemas.android.com/apk/res/android"
             android:layout_width="wrap_content"
-            android:layout_height="wrap_content" />
+            android:layout_height="wrap_content"
+            android:orientation="horizontal"
+            android:layout_marginBottom="@dimen/margin_small">
 
-        <Button android:id="@+id/button_open_directory"
-            android:text="@string/open_directory"
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"/>
+            <TextView
+                android:id="@+id/textview_primary_volume_name"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_marginEnd="@dimen/margin_medium"
+                android:text="@string/primary_volume_description"
+                />
+
+            <Button
+                android:id="@+id/button_open_directory_primary_volume"
+                android:text="@string/open_directory"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content" />
+        </LinearLayout>
     </LinearLayout>
 
-    <LinearLayout android:layout_width="wrap_content"
+    <Spinner
+        android:id="@+id/spinner_directories"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_marginBottom="@dimen/margin_small" />
+
+    <LinearLayout
+        android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         android:orientation="horizontal"
         android:layout_marginStart="@dimen/margin_small"
-        android:layout_marginEnd="@dimen/margin_small"
-        >
+        android:layout_marginEnd="@dimen/margin_small">
 
-        <TextView android:id="@+id/label_current_directory"
+        <TextView
+            android:id="@+id/label_current_directory"
             android:text="@string/selected_directory"
             android:layout_width="wrap_content"
-            android:layout_height="wrap_content"/>
+            android:layout_height="wrap_content" />
 
-        <TextView android:id="@+id/textview_current_directory"
+        <TextView
+            android:id="@+id/textview_current_directory"
             android:enabled="false"
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
-            android:textColor="#000000"
-            />
+            android:textColor="#000000" />
 
     </LinearLayout>
 
@@ -66,8 +86,7 @@
         android:layout_marginStart="@dimen/margin_small"
         android:layout_marginTop="@dimen/margin_medium"
         android:text="@string/nothing_in_directory"
-        android:visibility="gone"
-        />
+        android:visibility="gone" />
 
     <android.support.v7.widget.RecyclerView
         android:id="@+id/recyclerview_directory_entries"
@@ -77,8 +96,7 @@
         android:drawSelectorOnTop="true"
         android:layout_width="match_parent"
         android:layout_height="match_parent"
-        app:layoutManager="LinearLayoutManager"
-        />
+        app:layoutManager="LinearLayoutManager" />
 
 </LinearLayout>
 
diff --git a/prebuilts/gradle/ScopedDirectoryAccess/Application/src/main/res/layout/volume_entry.xml b/prebuilts/gradle/ScopedDirectoryAccess/Application/src/main/res/layout/volume_entry.xml
new file mode 100644
index 0000000..1686220
--- /dev/null
+++ b/prebuilts/gradle/ScopedDirectoryAccess/Application/src/main/res/layout/volume_entry.xml
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright 2016 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<LinearLayout
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="wrap_content"
+    android:layout_height="wrap_content"
+    android:orientation="horizontal"
+    android:layout_marginBottom="@dimen/margin_small">
+
+    <TextView
+        android:id="@+id/textview_volume_name"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_marginEnd="@dimen/margin_medium"
+        />
+
+    <Button
+        android:id="@+id/button_open_directory"
+        android:text="@string/open_directory"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content" />
+</LinearLayout>
\ No newline at end of file
diff --git a/prebuilts/gradle/ScopedDirectoryAccess/Application/src/main/res/values/strings.xml b/prebuilts/gradle/ScopedDirectoryAccess/Application/src/main/res/values/strings.xml
index a400246..8c4edcd 100644
--- a/prebuilts/gradle/ScopedDirectoryAccess/Application/src/main/res/values/strings.xml
+++ b/prebuilts/gradle/ScopedDirectoryAccess/Application/src/main/res/values/strings.xml
@@ -19,6 +19,7 @@
     <string name="open_directory">Open</string>
     <string name="selected_directory">Selected directory:\ </string>
     <string name="nothing_in_directory">Nothing in the directory</string>
+    <string name="primary_volume_description">Internal shared storage</string>
     <string-array name="directories">
         <item>ALARMS</item>
         <item>DCIM</item>
diff --git a/prebuilts/gradle/ScopedDirectoryAccess/README.md b/prebuilts/gradle/ScopedDirectoryAccess/README.md
index 6b917ca..2e29e27 100644
--- a/prebuilts/gradle/ScopedDirectoryAccess/README.md
+++ b/prebuilts/gradle/ScopedDirectoryAccess/README.md
@@ -36,8 +36,8 @@
 Pre-requisites
 --------------
 
-- Android SDK Preview N
-- Android Build Tools v24.0.0 rc1
+- Android SDK 24
+- Android Build Tools v23.0.3
 - Android Support Repository
 
 Screenshots
diff --git a/prebuilts/gradle/ScopedDirectoryAccess/gradle/wrapper/gradle-wrapper.properties b/prebuilts/gradle/ScopedDirectoryAccess/gradle/wrapper/gradle-wrapper.properties
index 36a3111..2e7b370 100644
--- a/prebuilts/gradle/ScopedDirectoryAccess/gradle/wrapper/gradle-wrapper.properties
+++ b/prebuilts/gradle/ScopedDirectoryAccess/gradle/wrapper/gradle-wrapper.properties
@@ -1,6 +1,6 @@
-#Mon Feb 08 18:26:13 JST 2016
+#Wed May 11 14:26:08 JST 2016
 distributionBase=GRADLE_USER_HOME
 distributionPath=wrapper/dists
 zipStoreBase=GRADLE_USER_HOME
 zipStorePath=wrapper/dists
-distributionUrl=http\://services.gradle.org/distributions/gradle-2.10-all.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-2.10-all.zip
diff --git a/prebuilts/gradle/ScreenCapture/Application/build.gradle b/prebuilts/gradle/ScreenCapture/Application/build.gradle
index ba404cc..c45ed11 100644
--- a/prebuilts/gradle/ScreenCapture/Application/build.gradle
+++ b/prebuilts/gradle/ScreenCapture/Application/build.gradle
@@ -5,7 +5,7 @@
     }
 
     dependencies {
-        classpath 'com.android.tools.build:gradle:1.2.3'
+        classpath 'com.android.tools.build:gradle:2.1.2'
     }
 }
 
@@ -16,9 +16,10 @@
 }
 
 dependencies {
-    compile "com.android.support:support-v4:23.1.0"
-    compile "com.android.support:support-v13:23.1.0"
-    compile "com.android.support:cardview-v7:23.1.0"
+    compile "com.android.support:support-v4:24.0.0-beta1"
+    compile "com.android.support:support-v13:24.0.0-beta1"
+    compile "com.android.support:cardview-v7:24.0.0-beta1"
+    compile "com.android.support:appcompat-v7:24.0.0-beta1"
 }
 
 // The sample build uses multiple directories to
@@ -31,7 +32,7 @@
 
 android {
     compileSdkVersion 23
-    buildToolsVersion "23.0.2"
+    buildToolsVersion "23.0.3"
 
     defaultConfig {
         minSdkVersion 21
diff --git a/prebuilts/gradle/ScreenCapture/README.md b/prebuilts/gradle/ScreenCapture/README.md
index d37ac79..3d46d45 100644
--- a/prebuilts/gradle/ScreenCapture/README.md
+++ b/prebuilts/gradle/ScreenCapture/README.md
@@ -26,8 +26,8 @@
 Pre-requisites
 --------------
 
-- Android SDK v23
-- Android Build Tools v23.0.2
+- Android SDK 23
+- Android Build Tools v23.0.3
 - Android Support Repository
 
 Screenshots
@@ -56,7 +56,7 @@
 License
 -------
 
-Copyright 2014 The Android Open Source Project, Inc.
+Copyright 2016 The Android Open Source Project, Inc.
 
 Licensed to the Apache Software Foundation (ASF) under one or more contributor
 license agreements.  See the NOTICE file distributed with this work for
diff --git a/prebuilts/gradle/ScreenCapture/gradle/wrapper/gradle-wrapper.properties b/prebuilts/gradle/ScreenCapture/gradle/wrapper/gradle-wrapper.properties
index 07fc193..d570517 100644
--- a/prebuilts/gradle/ScreenCapture/gradle/wrapper/gradle-wrapper.properties
+++ b/prebuilts/gradle/ScreenCapture/gradle/wrapper/gradle-wrapper.properties
@@ -3,4 +3,4 @@
 distributionPath=wrapper/dists
 zipStoreBase=GRADLE_USER_HOME
 zipStorePath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-2.8-all.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-2.10-all.zip
diff --git a/prebuilts/gradle/SkeletonWearableApp/.google/packaging.yaml b/prebuilts/gradle/SkeletonWearableApp/.google/packaging.yaml
index d0a72cf..7b52fd0 100644
--- a/prebuilts/gradle/SkeletonWearableApp/.google/packaging.yaml
+++ b/prebuilts/gradle/SkeletonWearableApp/.google/packaging.yaml
@@ -4,7 +4,7 @@
 # This file is used by Google as part of our samples packaging process.
 # End users may safely ignore this file. It has no relevance to other systems.
 ---
-status:       PUBLISHED
+status:       DEPRECATED
 technologies: [Android]
 categories:   [Getting Started, Wearable]
 languages:    [Java]
diff --git a/prebuilts/gradle/SkeletonWearableApp/README.md b/prebuilts/gradle/SkeletonWearableApp/README.md
index eecb6c7..5df07e4 100644
--- a/prebuilts/gradle/SkeletonWearableApp/README.md
+++ b/prebuilts/gradle/SkeletonWearableApp/README.md
@@ -21,8 +21,8 @@
 Pre-requisites
 --------------
 
-- Android SDK v23
-- Android Build Tools v23.0.2
+- Android SDK 23
+- Android Build Tools v23.0.3
 - Android Support Repository
 
 Screenshots
@@ -51,7 +51,7 @@
 License
 -------
 
-Copyright 2014 The Android Open Source Project, Inc.
+Copyright 2016 The Android Open Source Project, Inc.
 
 Licensed to the Apache Software Foundation (ASF) under one or more contributor
 license agreements.  See the NOTICE file distributed with this work for
diff --git a/prebuilts/gradle/SkeletonWearableApp/Wearable/build.gradle b/prebuilts/gradle/SkeletonWearableApp/Wearable/build.gradle
index d31eedd..fa8f537 100644
--- a/prebuilts/gradle/SkeletonWearableApp/Wearable/build.gradle
+++ b/prebuilts/gradle/SkeletonWearableApp/Wearable/build.gradle
@@ -5,7 +5,7 @@
     }
 
     dependencies {
-        classpath 'com.android.tools.build:gradle:1.2.3'
+        classpath 'com.android.tools.build:gradle:2.1.2'
     }
 }
 
@@ -18,7 +18,7 @@
 
 
     compile 'com.google.android.gms:play-services-wearable:8.4.0'
-    compile 'com.android.support:support-v13:23.3.0'
+    compile 'com.android.support:support-v13:24.0.0-beta1'
 
     compile 'com.google.android.support:wearable:1.4.0'
 
@@ -35,7 +35,7 @@
 android {
     compileSdkVersion 23
 
-    buildToolsVersion "23.0.2"
+    buildToolsVersion "23.0.3"
 
     defaultConfig {
         versionCode 1
diff --git a/prebuilts/gradle/SkeletonWearableApp/gradle/wrapper/gradle-wrapper.properties b/prebuilts/gradle/SkeletonWearableApp/gradle/wrapper/gradle-wrapper.properties
index 07fc193..d570517 100644
--- a/prebuilts/gradle/SkeletonWearableApp/gradle/wrapper/gradle-wrapper.properties
+++ b/prebuilts/gradle/SkeletonWearableApp/gradle/wrapper/gradle-wrapper.properties
@@ -3,4 +3,4 @@
 distributionPath=wrapper/dists
 zipStoreBase=GRADLE_USER_HOME
 zipStorePath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-2.8-all.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-2.10-all.zip
diff --git a/prebuilts/gradle/SlidingTabsBasic/Application/build.gradle b/prebuilts/gradle/SlidingTabsBasic/Application/build.gradle
index 394eb93..f757b43 100644
--- a/prebuilts/gradle/SlidingTabsBasic/Application/build.gradle
+++ b/prebuilts/gradle/SlidingTabsBasic/Application/build.gradle
@@ -5,7 +5,7 @@
     }
 
     dependencies {
-        classpath 'com.android.tools.build:gradle:1.2.3'
+        classpath 'com.android.tools.build:gradle:2.1.2'
     }
 }
 
@@ -16,9 +16,10 @@
 }
 
 dependencies {
-    compile "com.android.support:support-v4:23.1.0"
-    compile "com.android.support:support-v13:23.1.0"
-    compile "com.android.support:cardview-v7:23.1.0"
+    compile "com.android.support:support-v4:24.0.0-beta1"
+    compile "com.android.support:support-v13:24.0.0-beta1"
+    compile "com.android.support:cardview-v7:24.0.0-beta1"
+    compile "com.android.support:appcompat-v7:24.0.0-beta1"
 }
 
 // The sample build uses multiple directories to
@@ -31,7 +32,7 @@
 
 android {
     compileSdkVersion 23
-    buildToolsVersion "23.0.2"
+    buildToolsVersion "23.0.3"
 
     defaultConfig {
         minSdkVersion 14
diff --git a/prebuilts/gradle/SlidingTabsBasic/README.md b/prebuilts/gradle/SlidingTabsBasic/README.md
index 6157740..cc4ee05 100644
--- a/prebuilts/gradle/SlidingTabsBasic/README.md
+++ b/prebuilts/gradle/SlidingTabsBasic/README.md
@@ -8,8 +8,8 @@
 Pre-requisites
 --------------
 
-- Android SDK v23
-- Android Build Tools v23.0.2
+- Android SDK 23
+- Android Build Tools v23.0.3
 - Android Support Repository
 
 Getting Started
@@ -33,7 +33,7 @@
 License
 -------
 
-Copyright 2014 The Android Open Source Project, Inc.
+Copyright 2016 The Android Open Source Project, Inc.
 
 Licensed to the Apache Software Foundation (ASF) under one or more contributor
 license agreements.  See the NOTICE file distributed with this work for
diff --git a/prebuilts/gradle/SlidingTabsBasic/gradle/wrapper/gradle-wrapper.properties b/prebuilts/gradle/SlidingTabsBasic/gradle/wrapper/gradle-wrapper.properties
index fb05029..faca0a5 100644
--- a/prebuilts/gradle/SlidingTabsBasic/gradle/wrapper/gradle-wrapper.properties
+++ b/prebuilts/gradle/SlidingTabsBasic/gradle/wrapper/gradle-wrapper.properties
@@ -3,4 +3,5 @@
 distributionPath=wrapper/dists
 zipStoreBase=GRADLE_USER_HOME
 zipStorePath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-2.8-all.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-2.10-all.zip
+
diff --git a/prebuilts/gradle/SlidingTabsColors/Application/build.gradle b/prebuilts/gradle/SlidingTabsColors/Application/build.gradle
index 394eb93..f757b43 100644
--- a/prebuilts/gradle/SlidingTabsColors/Application/build.gradle
+++ b/prebuilts/gradle/SlidingTabsColors/Application/build.gradle
@@ -5,7 +5,7 @@
     }
 
     dependencies {
-        classpath 'com.android.tools.build:gradle:1.2.3'
+        classpath 'com.android.tools.build:gradle:2.1.2'
     }
 }
 
@@ -16,9 +16,10 @@
 }
 
 dependencies {
-    compile "com.android.support:support-v4:23.1.0"
-    compile "com.android.support:support-v13:23.1.0"
-    compile "com.android.support:cardview-v7:23.1.0"
+    compile "com.android.support:support-v4:24.0.0-beta1"
+    compile "com.android.support:support-v13:24.0.0-beta1"
+    compile "com.android.support:cardview-v7:24.0.0-beta1"
+    compile "com.android.support:appcompat-v7:24.0.0-beta1"
 }
 
 // The sample build uses multiple directories to
@@ -31,7 +32,7 @@
 
 android {
     compileSdkVersion 23
-    buildToolsVersion "23.0.2"
+    buildToolsVersion "23.0.3"
 
     defaultConfig {
         minSdkVersion 14
diff --git a/prebuilts/gradle/SlidingTabsColors/README.md b/prebuilts/gradle/SlidingTabsColors/README.md
index 1513a67..8f32ecf 100644
--- a/prebuilts/gradle/SlidingTabsColors/README.md
+++ b/prebuilts/gradle/SlidingTabsColors/README.md
@@ -25,8 +25,8 @@
 Pre-requisites
 --------------
 
-- Android SDK v23
-- Android Build Tools v23.0.2
+- Android SDK 23
+- Android Build Tools v23.0.3
 - Android Support Repository
 
 Screenshots
@@ -55,7 +55,7 @@
 License
 -------
 
-Copyright 2014 The Android Open Source Project, Inc.
+Copyright 2016 The Android Open Source Project, Inc.
 
 Licensed to the Apache Software Foundation (ASF) under one or more contributor
 license agreements.  See the NOTICE file distributed with this work for
diff --git a/prebuilts/gradle/SlidingTabsColors/gradle/wrapper/gradle-wrapper.properties b/prebuilts/gradle/SlidingTabsColors/gradle/wrapper/gradle-wrapper.properties
index fac5adc..8808285 100644
--- a/prebuilts/gradle/SlidingTabsColors/gradle/wrapper/gradle-wrapper.properties
+++ b/prebuilts/gradle/SlidingTabsColors/gradle/wrapper/gradle-wrapper.properties
@@ -3,4 +3,4 @@
 distributionPath=wrapper/dists
 zipStoreBase=GRADLE_USER_HOME
 zipStorePath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-2.8-all.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-2.10-all.zip
diff --git a/prebuilts/gradle/SpeedTracker/Application/build.gradle b/prebuilts/gradle/SpeedTracker/Application/build.gradle
index 6543f98..522fe37 100644
--- a/prebuilts/gradle/SpeedTracker/Application/build.gradle
+++ b/prebuilts/gradle/SpeedTracker/Application/build.gradle
@@ -5,7 +5,7 @@
     }
 
     dependencies {
-        classpath 'com.android.tools.build:gradle:1.2.3'
+        classpath 'com.android.tools.build:gradle:2.1.2'
     }
 }
 
@@ -17,10 +17,10 @@
 }
 
 dependencies {
-    compile 'com.android.support:design:23.0.1'
-    compile 'com.google.android.gms:play-services-location:8.3.0'
+    compile 'com.android.support:design:24.0.0-beta1'
+    compile 'com.google.android.gms:play-services-location:8.4.0'
     compile 'com.google.android.gms:play-services-wearable:8.4.0'
-    compile 'com.android.support:support-v13:23.1.1'
+    compile 'com.android.support:support-v13:24.0.0-beta1'
     compile project(':Shared')
     wearApp project(':Wearable')
 }
@@ -36,7 +36,7 @@
 android {
     compileSdkVersion 23
 
-    buildToolsVersion "23.0.2"
+    buildToolsVersion "23.0.3"
 
     defaultConfig {
         minSdkVersion 18
diff --git a/prebuilts/gradle/SpeedTracker/Application/src/main/AndroidManifest.xml b/prebuilts/gradle/SpeedTracker/Application/src/main/AndroidManifest.xml
index be88f6d..debd11d 100644
--- a/prebuilts/gradle/SpeedTracker/Application/src/main/AndroidManifest.xml
+++ b/prebuilts/gradle/SpeedTracker/Application/src/main/AndroidManifest.xml
@@ -48,7 +48,10 @@
         </activity>
         <service android:name=".db.UpdateService">
             <intent-filter>
-                <action android:name="com.google.android.gms.wearable.BIND_LISTENER" />
+                <!-- listeners receive events that match the action and data filters -->
+                <action android:name="com.google.android.gms.wearable.DATA_CHANGED" />
+                <!-- filters by Constants.PATH. -->
+                <data android:scheme="wear" android:host="*" android:pathPrefix="/location"/>
             </intent-filter>
         </service>
     </application>
diff --git a/prebuilts/gradle/SpeedTracker/README.md b/prebuilts/gradle/SpeedTracker/README.md
index b397dc4..2f4dfeb 100644
--- a/prebuilts/gradle/SpeedTracker/README.md
+++ b/prebuilts/gradle/SpeedTracker/README.md
@@ -16,8 +16,8 @@
 Pre-requisites
 --------------
 
-- Android SDK v23
-- Android Build Tools v23.0.2
+- Android SDK 23
+- Android Build Tools v23.0.3
 - Android Support Repository
 
 Getting Started
@@ -41,7 +41,7 @@
 License
 -------
 
-Copyright 2014 The Android Open Source Project, Inc.
+Copyright 2016 The Android Open Source Project, Inc.
 
 Licensed to the Apache Software Foundation (ASF) under one or more contributor
 license agreements.  See the NOTICE file distributed with this work for
diff --git a/prebuilts/gradle/SpeedTracker/Shared/build.gradle b/prebuilts/gradle/SpeedTracker/Shared/build.gradle
index daea9d0..74dd6c9 100644
--- a/prebuilts/gradle/SpeedTracker/Shared/build.gradle
+++ b/prebuilts/gradle/SpeedTracker/Shared/build.gradle
@@ -5,7 +5,7 @@
     }
 
     dependencies {
-        classpath 'com.android.tools.build:gradle:1.2.3'
+        classpath 'com.android.tools.build:gradle:2.1.2'
     }
 }
 
@@ -28,7 +28,7 @@
 android {
     compileSdkVersion 23
 
-    buildToolsVersion "23.0.2"
+    buildToolsVersion "23.0.3"
 
     defaultConfig {
         minSdkVersion 18
diff --git a/prebuilts/gradle/SpeedTracker/Wearable/build.gradle b/prebuilts/gradle/SpeedTracker/Wearable/build.gradle
index ced87a3..a16c936 100644
--- a/prebuilts/gradle/SpeedTracker/Wearable/build.gradle
+++ b/prebuilts/gradle/SpeedTracker/Wearable/build.gradle
@@ -5,7 +5,7 @@
     }
 
     dependencies {
-        classpath 'com.android.tools.build:gradle:1.2.3'
+        classpath 'com.android.tools.build:gradle:2.1.2'
     }
 }
 
@@ -18,9 +18,9 @@
 }
 
 dependencies {
-    compile 'com.google.android.gms:play-services-location:8.3.0'
+    compile 'com.google.android.gms:play-services-location:8.4.0'
     compile 'com.google.android.gms:play-services-wearable:8.4.0'
-    compile 'com.android.support:support-v13:23.3.0'
+    compile 'com.android.support:support-v13:24.0.0-beta1'
 
     compile 'com.google.android.support:wearable:1.4.0'
 
@@ -38,7 +38,7 @@
 android {
     compileSdkVersion 23
 
-    buildToolsVersion "23.0.2"
+    buildToolsVersion "23.0.3"
 
     defaultConfig {
         versionCode 1
diff --git a/prebuilts/gradle/SpeedTracker/Wearable/src/main/AndroidManifest.xml b/prebuilts/gradle/SpeedTracker/Wearable/src/main/AndroidManifest.xml
index c9cbad1..e120686 100644
--- a/prebuilts/gradle/SpeedTracker/Wearable/src/main/AndroidManifest.xml
+++ b/prebuilts/gradle/SpeedTracker/Wearable/src/main/AndroidManifest.xml
@@ -18,7 +18,7 @@
           package="com.example.android.wearable.speedtracker">
 
     <uses-feature android:name="android.hardware.type.watch"/>
-    <uses-feature android:name="android.hardware.location.gps" android:required="true" />
+    <uses-feature android:name="android.hardware.location.gps" android:required="false" />
     <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
     <uses-permission android:name="android.permission.WAKE_LOCK" />
 
diff --git a/prebuilts/gradle/SpeedTracker/Wearable/src/main/java/com/example/android/wearable/speedtracker/WearableMainActivity.java b/prebuilts/gradle/SpeedTracker/Wearable/src/main/java/com/example/android/wearable/speedtracker/WearableMainActivity.java
index 25f424c..66550c6 100644
--- a/prebuilts/gradle/SpeedTracker/Wearable/src/main/java/com/example/android/wearable/speedtracker/WearableMainActivity.java
+++ b/prebuilts/gradle/SpeedTracker/Wearable/src/main/java/com/example/android/wearable/speedtracker/WearableMainActivity.java
@@ -330,6 +330,13 @@
     public void onConnected(Bundle bundle) {
 
         Log.d(TAG, "onConnected()");
+        requestLocation();
+
+
+    }
+
+    private void requestLocation() {
+        Log.d(TAG, "requestLocation()");
 
         /*
          * mGpsPermissionApproved covers 23+ (M+) style permissions. If that is already approved or
@@ -464,6 +471,11 @@
                     && (grantResults[0] == PackageManager.PERMISSION_GRANTED)) {
                 Log.i(TAG, "GPS permission granted.");
                 mGpsPermissionApproved = true;
+
+                if(mGoogleApiClient != null && mGoogleApiClient.isConnected()) {
+                    requestLocation();
+                }
+
             } else {
                 Log.i(TAG, "GPS permission NOT granted.");
                 mGpsPermissionApproved = false;
diff --git a/prebuilts/gradle/SpeedTracker/Wearable/src/main/java/com/example/android/wearable/speedtracker/ui/LocationSettingActivity.java b/prebuilts/gradle/SpeedTracker/Wearable/src/main/java/com/example/android/wearable/speedtracker/ui/LocationSettingActivity.java
deleted file mode 100644
index 1f8be71..0000000
--- a/prebuilts/gradle/SpeedTracker/Wearable/src/main/java/com/example/android/wearable/speedtracker/ui/LocationSettingActivity.java
+++ /dev/null
@@ -1,75 +0,0 @@
-/*
- * Copyright (C) 2014 Google Inc. All Rights Reserved.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.example.android.wearable.speedtracker.ui;
-
-import android.app.Activity;
-import android.content.Context;
-import android.content.SharedPreferences;
-import android.os.Bundle;
-import android.preference.PreferenceManager;
-import android.view.View;
-import android.widget.TextView;
-
-import com.example.android.wearable.speedtracker.R;
-
-/**
- * A simple activity that allows the user to start or stop recording of GPS location data.
- */
-public class LocationSettingActivity extends Activity {
-
-    private static final String PREFS_KEY_SAVE_GPS = "save-gps";
-
-    @Override
-    protected void onCreate(Bundle savedInstanceState) {
-        super.onCreate(savedInstanceState);
-        setContentView(R.layout.saving_activity);
-        TextView textView = (TextView) findViewById(R.id.textView);
-        textView.setText(getGpsRecordingStatusFromPreferences(this) ? R.string.stop_saving_gps
-                : R.string.start_saving_gps);
-
-    }
-
-    public void onClick(View view) {
-        switch (view.getId()) {
-            case R.id.submitBtn:
-                saveGpsRecordingStatusToPreferences(LocationSettingActivity.this,
-                        !getGpsRecordingStatusFromPreferences(this));
-                break;
-            case R.id.cancelBtn:
-                break;
-        }
-        finish();
-    }
-
-    /**
-     * Get the persisted value for whether the app should record the GPS location data or not. If
-     * there is no prior value persisted, it returns {@code false}.
-     */
-    public static boolean getGpsRecordingStatusFromPreferences(Context context) {
-        SharedPreferences pref = PreferenceManager.getDefaultSharedPreferences(context);
-        return pref.getBoolean(PREFS_KEY_SAVE_GPS, false);
-    }
-
-    /**
-     * Persists the user selection to whether save the GPS location data or not.
-     */
-    public static void saveGpsRecordingStatusToPreferences(Context context, boolean value) {
-        SharedPreferences pref = PreferenceManager.getDefaultSharedPreferences(context);
-        pref.edit().putBoolean(PREFS_KEY_SAVE_GPS, value).apply();
-
-    }
-}
diff --git a/prebuilts/gradle/SpeedTracker/Wearable/src/main/res/layout/saving_activity.xml b/prebuilts/gradle/SpeedTracker/Wearable/src/main/res/layout/saving_activity.xml
deleted file mode 100644
index c37d959..0000000
--- a/prebuilts/gradle/SpeedTracker/Wearable/src/main/res/layout/saving_activity.xml
+++ /dev/null
@@ -1,63 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2014 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-
-<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:app="http://schemas.android.com/apk/res-auto"
-    android:layout_width="match_parent" android:layout_height="match_parent">
-    <View
-        android:id="@+id/center"
-        android:layout_width="0dp"
-        android:layout_height="0dp"
-        android:layout_centerInParent="true"/>
-    <TextView
-        android:id="@+id/textView"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:layout_centerHorizontal="true"
-        android:layout_above="@id/center"
-        android:layout_marginBottom="18dp"
-        android:fontFamily="sans-serif-light"
-        android:textSize="18sp"
-        android:text="@string/start_saving_gps"/>
-    <android.support.wearable.view.CircledImageView
-        android:id="@+id/cancelBtn"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:layout_gravity="center"
-        android:layout_below="@id/center"
-        android:layout_toLeftOf="@id/center"
-        android:layout_marginEnd="10dp"
-        android:src="@drawable/ic_cancel_80"
-        app:circle_color="@color/grey"
-        android:onClick="onClick"
-        app:circle_padding="@dimen/circle_padding"
-        app:circle_radius="@dimen/circle_radius"
-        app:circle_radius_pressed="@dimen/circle_radius_pressed" />
-    <android.support.wearable.view.CircledImageView
-        android:id="@+id/submitBtn"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:layout_gravity="center"
-        android:layout_below="@id/center"
-        android:layout_toRightOf="@id/center"
-        android:layout_marginStart="10dp"
-        android:src="@drawable/ic_confirmation_80"
-        app:circle_color="@color/blue"
-        android:onClick="onClick"
-        app:circle_padding="@dimen/circle_padding"
-        app:circle_radius="@dimen/circle_radius"
-        app:circle_radius_pressed="@dimen/circle_radius_pressed" />
-</RelativeLayout>
\ No newline at end of file
diff --git a/prebuilts/gradle/SpeedTracker/gradle/wrapper/gradle-wrapper.properties b/prebuilts/gradle/SpeedTracker/gradle/wrapper/gradle-wrapper.properties
index 07fc193..39c7c09 100644
--- a/prebuilts/gradle/SpeedTracker/gradle/wrapper/gradle-wrapper.properties
+++ b/prebuilts/gradle/SpeedTracker/gradle/wrapper/gradle-wrapper.properties
@@ -1,6 +1,6 @@
-#Wed Apr 10 15:27:10 PDT 2013
+#Fri Apr 15 16:28:53 PDT 2016
 distributionBase=GRADLE_USER_HOME
 distributionPath=wrapper/dists
 zipStoreBase=GRADLE_USER_HOME
 zipStorePath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-2.8-all.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-2.10-all.zip
diff --git a/prebuilts/gradle/StorageClient/Application/build.gradle b/prebuilts/gradle/StorageClient/Application/build.gradle
index 8592c25..b2fa9ed 100644
--- a/prebuilts/gradle/StorageClient/Application/build.gradle
+++ b/prebuilts/gradle/StorageClient/Application/build.gradle
@@ -5,7 +5,7 @@
     }
 
     dependencies {
-        classpath 'com.android.tools.build:gradle:1.2.3'
+        classpath 'com.android.tools.build:gradle:2.1.2'
     }
 }
 
@@ -16,9 +16,10 @@
 }
 
 dependencies {
-    compile "com.android.support:support-v4:23.1.0"
-    compile "com.android.support:support-v13:23.1.0"
-    compile "com.android.support:cardview-v7:23.1.0"
+    compile "com.android.support:support-v4:24.0.0-beta1"
+    compile "com.android.support:support-v13:24.0.0-beta1"
+    compile "com.android.support:cardview-v7:24.0.0-beta1"
+    compile "com.android.support:appcompat-v7:24.0.0-beta1"
 }
 
 // The sample build uses multiple directories to
@@ -31,7 +32,7 @@
 
 android {
     compileSdkVersion 23
-    buildToolsVersion "23.0.2"
+    buildToolsVersion "23.0.3"
 
     defaultConfig {
         minSdkVersion 16
diff --git a/prebuilts/gradle/StorageClient/README.md b/prebuilts/gradle/StorageClient/README.md
index cccdcd8..54f44e0 100644
--- a/prebuilts/gradle/StorageClient/README.md
+++ b/prebuilts/gradle/StorageClient/README.md
@@ -23,8 +23,8 @@
 Pre-requisites
 --------------
 
-- Android SDK v23
-- Android Build Tools v23.0.2
+- Android SDK 23
+- Android Build Tools v23.0.3
 - Android Support Repository
 
 Screenshots
@@ -53,7 +53,7 @@
 License
 -------
 
-Copyright 2014 The Android Open Source Project, Inc.
+Copyright 2016 The Android Open Source Project, Inc.
 
 Licensed to the Apache Software Foundation (ASF) under one or more contributor
 license agreements.  See the NOTICE file distributed with this work for
diff --git a/prebuilts/gradle/StorageClient/gradle/wrapper/gradle-wrapper.properties b/prebuilts/gradle/StorageClient/gradle/wrapper/gradle-wrapper.properties
index 07fc193..d570517 100644
--- a/prebuilts/gradle/StorageClient/gradle/wrapper/gradle-wrapper.properties
+++ b/prebuilts/gradle/StorageClient/gradle/wrapper/gradle-wrapper.properties
@@ -3,4 +3,4 @@
 distributionPath=wrapper/dists
 zipStoreBase=GRADLE_USER_HOME
 zipStorePath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-2.8-all.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-2.10-all.zip
diff --git a/prebuilts/gradle/StorageProvider/Application/build.gradle b/prebuilts/gradle/StorageProvider/Application/build.gradle
index e0b9674..e3dbe03 100644
--- a/prebuilts/gradle/StorageProvider/Application/build.gradle
+++ b/prebuilts/gradle/StorageProvider/Application/build.gradle
@@ -5,7 +5,7 @@
     }
 
     dependencies {
-        classpath 'com.android.tools.build:gradle:1.2.3'
+        classpath 'com.android.tools.build:gradle:2.1.2'
     }
 }
 
@@ -16,9 +16,10 @@
 }
 
 dependencies {
-    compile "com.android.support:support-v4:23.1.0"
-    compile "com.android.support:support-v13:23.1.0"
-    compile "com.android.support:cardview-v7:23.1.0"
+    compile "com.android.support:support-v4:24.0.0-beta1"
+    compile "com.android.support:support-v13:24.0.0-beta1"
+    compile "com.android.support:cardview-v7:24.0.0-beta1"
+    compile "com.android.support:appcompat-v7:24.0.0-beta1"
 }
 
 // The sample build uses multiple directories to
@@ -31,7 +32,7 @@
 
 android {
     compileSdkVersion 23
-    buildToolsVersion "23.0.2"
+    buildToolsVersion "23.0.3"
 
     defaultConfig {
         minSdkVersion 19
diff --git a/prebuilts/gradle/StorageProvider/Application/src/main/java/com/example/android/storageprovider/MyCloudFragment.java b/prebuilts/gradle/StorageProvider/Application/src/main/java/com/example/android/storageprovider/MyCloudFragment.java
deleted file mode 100644
index f624e90..0000000
--- a/prebuilts/gradle/StorageProvider/Application/src/main/java/com/example/android/storageprovider/MyCloudFragment.java
+++ /dev/null
@@ -1,105 +0,0 @@
-/*
-* Copyright 2013 The Android Open Source Project
-*
-* Licensed under the Apache License, Version 2.0 (the "License");
-* you may not use this file except in compliance with the License.
-* You may obtain a copy of the License at
-*
-*     http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-*/
-
-
-package com.example.android.storageprovider;
-
-
-import android.content.SharedPreferences;
-import android.os.Bundle;
-import android.provider.DocumentsContract;
-import android.support.v4.app.Fragment;
-import android.view.Menu;
-import android.view.MenuItem;
-
-import com.example.android.common.logger.Log;
-
-/**
- * Toggles the user's login status via a login menu option, and enables/disables the cloud storage
- * content provider.
- */
-public class MyCloudFragment extends Fragment {
-
-    private static final String TAG = "MyCloudFragment";
-    private static final String AUTHORITY = "com.example.android.storageprovider.documents";
-    private boolean mLoggedIn = false;
-
-    @Override
-    public void onCreate(Bundle savedInstanceState) {
-        super.onCreate(savedInstanceState);
-        mLoggedIn = readLoginValue();
-
-        setHasOptionsMenu(true);
-    }
-
-    @Override
-    public void onPrepareOptionsMenu(Menu menu) {
-        super.onPrepareOptionsMenu(menu);
-        MenuItem item = menu.findItem(R.id.sample_action);
-        item.setTitle(mLoggedIn ? R.string.log_out : R.string.log_in);
-    }
-
-    @Override
-    public boolean onOptionsItemSelected(MenuItem item) {
-        if (item.getItemId() == R.id.sample_action) {
-            toggleLogin();
-            item.setTitle(mLoggedIn ? R.string.log_out : R.string.log_in);
-
-            // BEGIN_INCLUDE(notify_change)
-            // Notify the system that the status of our roots has changed.  This will trigger
-            // a call to MyCloudProvider.queryRoots() and force a refresh of the system
-            // picker UI.  It's important to call this or stale results may persist.
-            getActivity().getContentResolver().notifyChange(DocumentsContract.buildRootsUri
-                    (AUTHORITY), null, false);
-            // END_INCLUDE(notify_change)
-        }
-        return true;
-    }
-
-    /**
-     * Dummy function to change the user's authorization status.
-     */
-    private void toggleLogin() {
-        // Replace this with your standard method of authentication to determine if your app
-        // should make the user's documents available.
-        mLoggedIn = !mLoggedIn;
-        writeLoginValue(mLoggedIn);
-        Log.i(TAG, getString(mLoggedIn ? R.string.logged_in_info : R.string.logged_out_info));
-    }
-
-    /**
-     * Dummy function to save whether the user is logged in.
-     */
-    private void writeLoginValue(boolean loggedIn) {
-        final SharedPreferences sharedPreferences =
-                getActivity().getSharedPreferences(getString(R.string.app_name),
-                        getActivity().MODE_PRIVATE);
-        sharedPreferences.edit().putBoolean(getString(R.string.key_logged_in), loggedIn).commit();
-    }
-
-    /**
-     * Dummy function to determine whether the user is logged in.
-     */
-    private boolean readLoginValue() {
-        final SharedPreferences sharedPreferences =
-                getActivity().getSharedPreferences(getString(R.string.app_name),
-                        getActivity().MODE_PRIVATE);
-        return sharedPreferences.getBoolean(getString(R.string.key_logged_in), false);
-    }
-
-}
-
-
diff --git a/prebuilts/gradle/StorageProvider/README.md b/prebuilts/gradle/StorageProvider/README.md
index 802f2e5..2cd88e4 100644
--- a/prebuilts/gradle/StorageProvider/README.md
+++ b/prebuilts/gradle/StorageProvider/README.md
@@ -20,8 +20,8 @@
 Pre-requisites
 --------------
 
-- Android SDK v23
-- Android Build Tools v23.0.2
+- Android SDK 23
+- Android Build Tools v23.0.3
 - Android Support Repository
 
 Screenshots
@@ -50,7 +50,7 @@
 License
 -------
 
-Copyright 2014 The Android Open Source Project, Inc.
+Copyright 2016 The Android Open Source Project, Inc.
 
 Licensed to the Apache Software Foundation (ASF) under one or more contributor
 license agreements.  See the NOTICE file distributed with this work for
diff --git a/prebuilts/gradle/StorageProvider/gradle/wrapper/gradle-wrapper.properties b/prebuilts/gradle/StorageProvider/gradle/wrapper/gradle-wrapper.properties
index 07fc193..d570517 100644
--- a/prebuilts/gradle/StorageProvider/gradle/wrapper/gradle-wrapper.properties
+++ b/prebuilts/gradle/StorageProvider/gradle/wrapper/gradle-wrapper.properties
@@ -3,4 +3,4 @@
 distributionPath=wrapper/dists
 zipStoreBase=GRADLE_USER_HOME
 zipStorePath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-2.8-all.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-2.10-all.zip
diff --git a/prebuilts/gradle/SwipeRefreshLayoutBasic/Application/build.gradle b/prebuilts/gradle/SwipeRefreshLayoutBasic/Application/build.gradle
index 394eb93..f757b43 100644
--- a/prebuilts/gradle/SwipeRefreshLayoutBasic/Application/build.gradle
+++ b/prebuilts/gradle/SwipeRefreshLayoutBasic/Application/build.gradle
@@ -5,7 +5,7 @@
     }
 
     dependencies {
-        classpath 'com.android.tools.build:gradle:1.2.3'
+        classpath 'com.android.tools.build:gradle:2.1.2'
     }
 }
 
@@ -16,9 +16,10 @@
 }
 
 dependencies {
-    compile "com.android.support:support-v4:23.1.0"
-    compile "com.android.support:support-v13:23.1.0"
-    compile "com.android.support:cardview-v7:23.1.0"
+    compile "com.android.support:support-v4:24.0.0-beta1"
+    compile "com.android.support:support-v13:24.0.0-beta1"
+    compile "com.android.support:cardview-v7:24.0.0-beta1"
+    compile "com.android.support:appcompat-v7:24.0.0-beta1"
 }
 
 // The sample build uses multiple directories to
@@ -31,7 +32,7 @@
 
 android {
     compileSdkVersion 23
-    buildToolsVersion "23.0.2"
+    buildToolsVersion "23.0.3"
 
     defaultConfig {
         minSdkVersion 14
diff --git a/prebuilts/gradle/SwipeRefreshLayoutBasic/README.md b/prebuilts/gradle/SwipeRefreshLayoutBasic/README.md
index f91ea1e..43da52b 100644
--- a/prebuilts/gradle/SwipeRefreshLayoutBasic/README.md
+++ b/prebuilts/gradle/SwipeRefreshLayoutBasic/README.md
@@ -9,8 +9,8 @@
 Pre-requisites
 --------------
 
-- Android SDK v23
-- Android Build Tools v23.0.2
+- Android SDK 23
+- Android Build Tools v23.0.3
 - Android Support Repository
 
 Getting Started
@@ -34,7 +34,7 @@
 License
 -------
 
-Copyright 2014 The Android Open Source Project, Inc.
+Copyright 2016 The Android Open Source Project, Inc.
 
 Licensed to the Apache Software Foundation (ASF) under one or more contributor
 license agreements.  See the NOTICE file distributed with this work for
diff --git a/prebuilts/gradle/SwipeRefreshLayoutBasic/gradle/wrapper/gradle-wrapper.properties b/prebuilts/gradle/SwipeRefreshLayoutBasic/gradle/wrapper/gradle-wrapper.properties
index 653fca1..b1cff39 100644
--- a/prebuilts/gradle/SwipeRefreshLayoutBasic/gradle/wrapper/gradle-wrapper.properties
+++ b/prebuilts/gradle/SwipeRefreshLayoutBasic/gradle/wrapper/gradle-wrapper.properties
@@ -3,4 +3,4 @@
 distributionPath=wrapper/dists
 zipStoreBase=GRADLE_USER_HOME
 zipStorePath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-2.8-all.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-2.10-all.zip
diff --git a/prebuilts/gradle/SwipeRefreshListFragment/Application/build.gradle b/prebuilts/gradle/SwipeRefreshListFragment/Application/build.gradle
index 394eb93..f757b43 100644
--- a/prebuilts/gradle/SwipeRefreshListFragment/Application/build.gradle
+++ b/prebuilts/gradle/SwipeRefreshListFragment/Application/build.gradle
@@ -5,7 +5,7 @@
     }
 
     dependencies {
-        classpath 'com.android.tools.build:gradle:1.2.3'
+        classpath 'com.android.tools.build:gradle:2.1.2'
     }
 }
 
@@ -16,9 +16,10 @@
 }
 
 dependencies {
-    compile "com.android.support:support-v4:23.1.0"
-    compile "com.android.support:support-v13:23.1.0"
-    compile "com.android.support:cardview-v7:23.1.0"
+    compile "com.android.support:support-v4:24.0.0-beta1"
+    compile "com.android.support:support-v13:24.0.0-beta1"
+    compile "com.android.support:cardview-v7:24.0.0-beta1"
+    compile "com.android.support:appcompat-v7:24.0.0-beta1"
 }
 
 // The sample build uses multiple directories to
@@ -31,7 +32,7 @@
 
 android {
     compileSdkVersion 23
-    buildToolsVersion "23.0.2"
+    buildToolsVersion "23.0.3"
 
     defaultConfig {
         minSdkVersion 14
diff --git a/prebuilts/gradle/SwipeRefreshListFragment/README.md b/prebuilts/gradle/SwipeRefreshListFragment/README.md
index d0e0d6b..1187231 100644
--- a/prebuilts/gradle/SwipeRefreshListFragment/README.md
+++ b/prebuilts/gradle/SwipeRefreshListFragment/README.md
@@ -23,8 +23,8 @@
 Pre-requisites
 --------------
 
-- Android SDK v23
-- Android Build Tools v23.0.2
+- Android SDK 23
+- Android Build Tools v23.0.3
 - Android Support Repository
 
 Screenshots
@@ -53,7 +53,7 @@
 License
 -------
 
-Copyright 2014 The Android Open Source Project, Inc.
+Copyright 2016 The Android Open Source Project, Inc.
 
 Licensed to the Apache Software Foundation (ASF) under one or more contributor
 license agreements.  See the NOTICE file distributed with this work for
diff --git a/prebuilts/gradle/SwipeRefreshListFragment/gradle/wrapper/gradle-wrapper.properties b/prebuilts/gradle/SwipeRefreshListFragment/gradle/wrapper/gradle-wrapper.properties
index 07fc193..d570517 100644
--- a/prebuilts/gradle/SwipeRefreshListFragment/gradle/wrapper/gradle-wrapper.properties
+++ b/prebuilts/gradle/SwipeRefreshListFragment/gradle/wrapper/gradle-wrapper.properties
@@ -3,4 +3,4 @@
 distributionPath=wrapper/dists
 zipStoreBase=GRADLE_USER_HOME
 zipStorePath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-2.8-all.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-2.10-all.zip
diff --git a/prebuilts/gradle/SwipeRefreshMultipleViews/Application/build.gradle b/prebuilts/gradle/SwipeRefreshMultipleViews/Application/build.gradle
index 394eb93..f757b43 100644
--- a/prebuilts/gradle/SwipeRefreshMultipleViews/Application/build.gradle
+++ b/prebuilts/gradle/SwipeRefreshMultipleViews/Application/build.gradle
@@ -5,7 +5,7 @@
     }
 
     dependencies {
-        classpath 'com.android.tools.build:gradle:1.2.3'
+        classpath 'com.android.tools.build:gradle:2.1.2'
     }
 }
 
@@ -16,9 +16,10 @@
 }
 
 dependencies {
-    compile "com.android.support:support-v4:23.1.0"
-    compile "com.android.support:support-v13:23.1.0"
-    compile "com.android.support:cardview-v7:23.1.0"
+    compile "com.android.support:support-v4:24.0.0-beta1"
+    compile "com.android.support:support-v13:24.0.0-beta1"
+    compile "com.android.support:cardview-v7:24.0.0-beta1"
+    compile "com.android.support:appcompat-v7:24.0.0-beta1"
 }
 
 // The sample build uses multiple directories to
@@ -31,7 +32,7 @@
 
 android {
     compileSdkVersion 23
-    buildToolsVersion "23.0.2"
+    buildToolsVersion "23.0.3"
 
     defaultConfig {
         minSdkVersion 14
diff --git a/prebuilts/gradle/SwipeRefreshMultipleViews/README.md b/prebuilts/gradle/SwipeRefreshMultipleViews/README.md
index 0de37bf..736495a 100644
--- a/prebuilts/gradle/SwipeRefreshMultipleViews/README.md
+++ b/prebuilts/gradle/SwipeRefreshMultipleViews/README.md
@@ -10,8 +10,8 @@
 Pre-requisites
 --------------
 
-- Android SDK v23
-- Android Build Tools v23.0.2
+- Android SDK 23
+- Android Build Tools v23.0.3
 - Android Support Repository
 
 Getting Started
@@ -35,7 +35,7 @@
 License
 -------
 
-Copyright 2014 The Android Open Source Project, Inc.
+Copyright 2016 The Android Open Source Project, Inc.
 
 Licensed to the Apache Software Foundation (ASF) under one or more contributor
 license agreements.  See the NOTICE file distributed with this work for
diff --git a/prebuilts/gradle/SwipeRefreshMultipleViews/gradle/wrapper/gradle-wrapper.properties b/prebuilts/gradle/SwipeRefreshMultipleViews/gradle/wrapper/gradle-wrapper.properties
index 07fc193..d570517 100644
--- a/prebuilts/gradle/SwipeRefreshMultipleViews/gradle/wrapper/gradle-wrapper.properties
+++ b/prebuilts/gradle/SwipeRefreshMultipleViews/gradle/wrapper/gradle-wrapper.properties
@@ -3,4 +3,4 @@
 distributionPath=wrapper/dists
 zipStoreBase=GRADLE_USER_HOME
 zipStorePath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-2.8-all.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-2.10-all.zip
diff --git a/prebuilts/gradle/SynchronizedNotifications/Application/build.gradle b/prebuilts/gradle/SynchronizedNotifications/Application/build.gradle
index 9d29f20..94343e7 100644
--- a/prebuilts/gradle/SynchronizedNotifications/Application/build.gradle
+++ b/prebuilts/gradle/SynchronizedNotifications/Application/build.gradle
@@ -5,7 +5,7 @@
     }
 
     dependencies {
-        classpath 'com.android.tools.build:gradle:1.2.3'
+        classpath 'com.android.tools.build:gradle:2.1.2'
     }
 }
 
@@ -18,7 +18,7 @@
 
 dependencies {
     compile 'com.google.android.gms:play-services-wearable:8.4.0'
-    compile 'com.android.support:support-v13:23.1.1'
+    compile 'com.android.support:support-v13:24.0.0-beta1'
     compile project(':Shared')
     wearApp project(':Wearable')
 }
@@ -34,7 +34,7 @@
 android {
     compileSdkVersion 23
 
-    buildToolsVersion "23.0.2"
+    buildToolsVersion "23.0.3"
 
     defaultConfig {
         minSdkVersion 18
diff --git a/prebuilts/gradle/SynchronizedNotifications/Application/src/main/AndroidManifest.xml b/prebuilts/gradle/SynchronizedNotifications/Application/src/main/AndroidManifest.xml
index 04a69e0..b2cba0c 100644
--- a/prebuilts/gradle/SynchronizedNotifications/Application/src/main/AndroidManifest.xml
+++ b/prebuilts/gradle/SynchronizedNotifications/Application/src/main/AndroidManifest.xml
@@ -42,8 +42,10 @@
         </activity>
         <service android:name=".DismissListener">
             <intent-filter>
-                <action
-                    android:name="com.google.android.gms.wearable.BIND_LISTENER" />
+                <!-- listeners receive events that match the action and data filters -->
+                <action android:name="com.google.android.gms.wearable.DATA_CHANGED" />
+                <!-- filters by Constants.BOTH_PATH ('/both') -->
+                <data android:scheme="wear" android:host="*" android:pathPrefix="/both"/>
             </intent-filter>
             <intent-filter>
                 <action
diff --git a/prebuilts/gradle/SynchronizedNotifications/README.md b/prebuilts/gradle/SynchronizedNotifications/README.md
index 30318b0..78c977c 100644
--- a/prebuilts/gradle/SynchronizedNotifications/README.md
+++ b/prebuilts/gradle/SynchronizedNotifications/README.md
@@ -51,8 +51,8 @@
 Pre-requisites
 --------------
 
-- Android SDK v23
-- Android Build Tools v23.0.2
+- Android SDK 23
+- Android Build Tools v23.0.3
 - Android Support Repository
 
 Screenshots
@@ -81,7 +81,7 @@
 License
 -------
 
-Copyright 2014 The Android Open Source Project, Inc.
+Copyright 2016 The Android Open Source Project, Inc.
 
 Licensed to the Apache Software Foundation (ASF) under one or more contributor
 license agreements.  See the NOTICE file distributed with this work for
diff --git a/prebuilts/gradle/SynchronizedNotifications/Shared/build.gradle b/prebuilts/gradle/SynchronizedNotifications/Shared/build.gradle
index daea9d0..74dd6c9 100644
--- a/prebuilts/gradle/SynchronizedNotifications/Shared/build.gradle
+++ b/prebuilts/gradle/SynchronizedNotifications/Shared/build.gradle
@@ -5,7 +5,7 @@
     }
 
     dependencies {
-        classpath 'com.android.tools.build:gradle:1.2.3'
+        classpath 'com.android.tools.build:gradle:2.1.2'
     }
 }
 
@@ -28,7 +28,7 @@
 android {
     compileSdkVersion 23
 
-    buildToolsVersion "23.0.2"
+    buildToolsVersion "23.0.3"
 
     defaultConfig {
         minSdkVersion 18
diff --git a/prebuilts/gradle/SynchronizedNotifications/Wearable/build.gradle b/prebuilts/gradle/SynchronizedNotifications/Wearable/build.gradle
index d5b10b0..276d8fd 100644
--- a/prebuilts/gradle/SynchronizedNotifications/Wearable/build.gradle
+++ b/prebuilts/gradle/SynchronizedNotifications/Wearable/build.gradle
@@ -5,7 +5,7 @@
     }
 
     dependencies {
-        classpath 'com.android.tools.build:gradle:1.2.3'
+        classpath 'com.android.tools.build:gradle:2.1.2'
     }
 }
 
@@ -19,7 +19,7 @@
 
 dependencies {
     compile 'com.google.android.gms:play-services-wearable:8.4.0'
-    compile 'com.android.support:support-v13:23.3.0'
+    compile 'com.android.support:support-v13:24.0.0-beta1'
 
     compile 'com.google.android.support:wearable:1.4.0'
 
@@ -37,7 +37,7 @@
 android {
     compileSdkVersion 23
 
-    buildToolsVersion "23.0.2"
+    buildToolsVersion "23.0.3"
 
     defaultConfig {
         versionCode 1
diff --git a/prebuilts/gradle/SynchronizedNotifications/Wearable/src/main/AndroidManifest.xml b/prebuilts/gradle/SynchronizedNotifications/Wearable/src/main/AndroidManifest.xml
index 5c4d259..2bc2fd8 100644
--- a/prebuilts/gradle/SynchronizedNotifications/Wearable/src/main/AndroidManifest.xml
+++ b/prebuilts/gradle/SynchronizedNotifications/Wearable/src/main/AndroidManifest.xml
@@ -41,8 +41,13 @@
         </activity>
         <service android:name=".NotificationUpdateService">
             <intent-filter>
-                <action
-                    android:name="com.google.android.gms.wearable.BIND_LISTENER" />
+                <!-- listeners receive events that match the action and data filters -->
+                <action android:name="com.google.android.gms.wearable.DATA_CHANGED" />
+
+                <!-- filters by Constants.BOTH_PATH ('/both') and
+                Constants.WATCH_ONLY_PATH ('/watch-only') -->
+                <data android:scheme="wear" android:host="*" android:pathPrefix="/both"/>
+                <data android:scheme="wear" android:host="*" android:pathPrefix="/watch-only"/>;
             </intent-filter>
             <intent-filter>
                 <action
diff --git a/prebuilts/gradle/SynchronizedNotifications/gradle/wrapper/gradle-wrapper.properties b/prebuilts/gradle/SynchronizedNotifications/gradle/wrapper/gradle-wrapper.properties
index 07fc193..44447c8 100644
--- a/prebuilts/gradle/SynchronizedNotifications/gradle/wrapper/gradle-wrapper.properties
+++ b/prebuilts/gradle/SynchronizedNotifications/gradle/wrapper/gradle-wrapper.properties
@@ -1,6 +1,6 @@
-#Wed Apr 10 15:27:10 PDT 2013
+#Fri Apr 15 17:18:22 PDT 2016
 distributionBase=GRADLE_USER_HOME
 distributionPath=wrapper/dists
 zipStoreBase=GRADLE_USER_HOME
 zipStorePath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-2.8-all.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-2.10-all.zip
diff --git a/prebuilts/gradle/TextLinkify/Application/build.gradle b/prebuilts/gradle/TextLinkify/Application/build.gradle
index 6ea7851..106dde3 100644
--- a/prebuilts/gradle/TextLinkify/Application/build.gradle
+++ b/prebuilts/gradle/TextLinkify/Application/build.gradle
@@ -5,7 +5,7 @@
     }
 
     dependencies {
-        classpath 'com.android.tools.build:gradle:1.2.3'
+        classpath 'com.android.tools.build:gradle:2.1.2'
     }
 }
 
@@ -16,7 +16,8 @@
 }
 
 dependencies {
-    compile "com.android.support:support-v4:23.1.0"
+    compile "com.android.support:support-v4:24.0.0-beta1"
+    compile "com.android.support:appcompat-v7:24.0.0-beta1"
 }
 
 // The sample build uses multiple directories to
@@ -29,7 +30,7 @@
 
 android {
     compileSdkVersion 23
-    buildToolsVersion "23.0.2"
+    buildToolsVersion "23.0.3"
 
     defaultConfig {
         minSdkVersion 4
diff --git a/prebuilts/gradle/TextLinkify/README.md b/prebuilts/gradle/TextLinkify/README.md
index 3a5116d..cc3b4ac 100644
--- a/prebuilts/gradle/TextLinkify/README.md
+++ b/prebuilts/gradle/TextLinkify/README.md
@@ -32,8 +32,8 @@
 Pre-requisites
 --------------
 
-- Android SDK v23
-- Android Build Tools v23.0.2
+- Android SDK 23
+- Android Build Tools v23.0.3
 - Android Support Repository
 
 Screenshots
@@ -62,7 +62,7 @@
 License
 -------
 
-Copyright 2014 The Android Open Source Project, Inc.
+Copyright 2016 The Android Open Source Project, Inc.
 
 Licensed to the Apache Software Foundation (ASF) under one or more contributor
 license agreements.  See the NOTICE file distributed with this work for
diff --git a/prebuilts/gradle/TextLinkify/gradle/wrapper/gradle-wrapper.properties b/prebuilts/gradle/TextLinkify/gradle/wrapper/gradle-wrapper.properties
index 07fc193..d570517 100644
--- a/prebuilts/gradle/TextLinkify/gradle/wrapper/gradle-wrapper.properties
+++ b/prebuilts/gradle/TextLinkify/gradle/wrapper/gradle-wrapper.properties
@@ -3,4 +3,4 @@
 distributionPath=wrapper/dists
 zipStoreBase=GRADLE_USER_HOME
 zipStorePath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-2.8-all.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-2.10-all.zip
diff --git a/prebuilts/gradle/TextSwitcher/Application/build.gradle b/prebuilts/gradle/TextSwitcher/Application/build.gradle
index 6ea7851..106dde3 100644
--- a/prebuilts/gradle/TextSwitcher/Application/build.gradle
+++ b/prebuilts/gradle/TextSwitcher/Application/build.gradle
@@ -5,7 +5,7 @@
     }
 
     dependencies {
-        classpath 'com.android.tools.build:gradle:1.2.3'
+        classpath 'com.android.tools.build:gradle:2.1.2'
     }
 }
 
@@ -16,7 +16,8 @@
 }
 
 dependencies {
-    compile "com.android.support:support-v4:23.1.0"
+    compile "com.android.support:support-v4:24.0.0-beta1"
+    compile "com.android.support:appcompat-v7:24.0.0-beta1"
 }
 
 // The sample build uses multiple directories to
@@ -29,7 +30,7 @@
 
 android {
     compileSdkVersion 23
-    buildToolsVersion "23.0.2"
+    buildToolsVersion "23.0.3"
 
     defaultConfig {
         minSdkVersion 4
diff --git a/prebuilts/gradle/TextSwitcher/README.md b/prebuilts/gradle/TextSwitcher/README.md
index 876288b..2abcf29 100644
--- a/prebuilts/gradle/TextSwitcher/README.md
+++ b/prebuilts/gradle/TextSwitcher/README.md
@@ -22,8 +22,8 @@
 Pre-requisites
 --------------
 
-- Android SDK v23
-- Android Build Tools v23.0.2
+- Android SDK 23
+- Android Build Tools v23.0.3
 - Android Support Repository
 
 Screenshots
@@ -52,7 +52,7 @@
 License
 -------
 
-Copyright 2014 The Android Open Source Project, Inc.
+Copyright 2016 The Android Open Source Project, Inc.
 
 Licensed to the Apache Software Foundation (ASF) under one or more contributor
 license agreements.  See the NOTICE file distributed with this work for
diff --git a/prebuilts/gradle/TextSwitcher/gradle/wrapper/gradle-wrapper.properties b/prebuilts/gradle/TextSwitcher/gradle/wrapper/gradle-wrapper.properties
index 07fc193..d570517 100644
--- a/prebuilts/gradle/TextSwitcher/gradle/wrapper/gradle-wrapper.properties
+++ b/prebuilts/gradle/TextSwitcher/gradle/wrapper/gradle-wrapper.properties
@@ -3,4 +3,4 @@
 distributionPath=wrapper/dists
 zipStoreBase=GRADLE_USER_HOME
 zipStorePath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-2.8-all.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-2.10-all.zip
diff --git a/prebuilts/gradle/Timer/.google/packaging.yaml b/prebuilts/gradle/Timer/.google/packaging.yaml
index 292c5ab..b875ae1 100644
--- a/prebuilts/gradle/Timer/.google/packaging.yaml
+++ b/prebuilts/gradle/Timer/.google/packaging.yaml
@@ -4,7 +4,7 @@
 # This file is used by Google as part of our samples packaging process.
 # End users may safely ignore this file. It has no relevance to other systems.
 ---
-status:       PUBLISHED
+status:       DEPRECATED
 technologies: [Android]
 categories:   [Wearable]
 languages:    [Java]
diff --git a/prebuilts/gradle/Timer/README.md b/prebuilts/gradle/Timer/README.md
index 303e705..c74a03d 100644
--- a/prebuilts/gradle/Timer/README.md
+++ b/prebuilts/gradle/Timer/README.md
@@ -8,8 +8,8 @@
 Pre-requisites
 --------------
 
-- Android SDK v23
-- Android Build Tools v23.0.2
+- Android SDK 23
+- Android Build Tools v23.0.3
 - Android Support Repository
 
 Getting Started
@@ -33,7 +33,7 @@
 License
 -------
 
-Copyright 2014 The Android Open Source Project, Inc.
+Copyright 2016 The Android Open Source Project, Inc.
 
 Licensed to the Apache Software Foundation (ASF) under one or more contributor
 license agreements.  See the NOTICE file distributed with this work for
diff --git a/prebuilts/gradle/Timer/Wearable/build.gradle b/prebuilts/gradle/Timer/Wearable/build.gradle
index d31eedd..fa8f537 100644
--- a/prebuilts/gradle/Timer/Wearable/build.gradle
+++ b/prebuilts/gradle/Timer/Wearable/build.gradle
@@ -5,7 +5,7 @@
     }
 
     dependencies {
-        classpath 'com.android.tools.build:gradle:1.2.3'
+        classpath 'com.android.tools.build:gradle:2.1.2'
     }
 }
 
@@ -18,7 +18,7 @@
 
 
     compile 'com.google.android.gms:play-services-wearable:8.4.0'
-    compile 'com.android.support:support-v13:23.3.0'
+    compile 'com.android.support:support-v13:24.0.0-beta1'
 
     compile 'com.google.android.support:wearable:1.4.0'
 
@@ -35,7 +35,7 @@
 android {
     compileSdkVersion 23
 
-    buildToolsVersion "23.0.2"
+    buildToolsVersion "23.0.3"
 
     defaultConfig {
         versionCode 1
diff --git a/prebuilts/gradle/Timer/gradle/wrapper/gradle-wrapper.properties b/prebuilts/gradle/Timer/gradle/wrapper/gradle-wrapper.properties
index 07fc193..d570517 100644
--- a/prebuilts/gradle/Timer/gradle/wrapper/gradle-wrapper.properties
+++ b/prebuilts/gradle/Timer/gradle/wrapper/gradle-wrapper.properties
@@ -3,4 +3,4 @@
 distributionPath=wrapper/dists
 zipStoreBase=GRADLE_USER_HOME
 zipStorePath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-2.8-all.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-2.10-all.zip
diff --git a/prebuilts/gradle/WatchFace/Application/build.gradle b/prebuilts/gradle/WatchFace/Application/build.gradle
index d5abd47..055e2d6 100644
--- a/prebuilts/gradle/WatchFace/Application/build.gradle
+++ b/prebuilts/gradle/WatchFace/Application/build.gradle
@@ -5,7 +5,7 @@
     }
 
     dependencies {
-        classpath 'com.android.tools.build:gradle:1.2.3'
+        classpath 'com.android.tools.build:gradle:2.1.2'
     }
 }
 
@@ -16,13 +16,14 @@
 }
 
 dependencies {
-    compile "com.android.support:support-v4:23.1.0"
-    compile "com.android.support:support-v13:23.1.0"
-    compile "com.android.support:cardview-v7:23.1.0"
-    compile 'com.google.android.support:wearable:1.3.0'
-    compile 'com.google.android.gms:play-services-fitness:8.3.0'
+    compile "com.android.support:support-v4:24.0.0-beta1"
+    compile "com.android.support:support-v13:24.0.0-beta1"
+    compile "com.android.support:cardview-v7:24.0.0-beta1"
+    compile "com.android.support:appcompat-v7:24.0.0-beta1"
+    compile 'com.google.android.support:wearable:1.4.0'
+    compile 'com.google.android.gms:play-services-fitness:8.4.0'
     compile 'com.google.android.gms:play-services-wearable:8.4.0'
-    compile 'com.android.support:support-v13:23.1.1'
+    compile 'com.android.support:support-v13:24.0.0-beta1'
     wearApp project(':Wearable')
 }
 
@@ -36,7 +37,7 @@
 
 android {
     compileSdkVersion 23
-    buildToolsVersion "23.0.2"
+    buildToolsVersion "23.0.3"
 
     defaultConfig {
         minSdkVersion 18
diff --git a/prebuilts/gradle/WatchFace/README.md b/prebuilts/gradle/WatchFace/README.md
index 0546be8..deae043 100644
--- a/prebuilts/gradle/WatchFace/README.md
+++ b/prebuilts/gradle/WatchFace/README.md
@@ -15,8 +15,8 @@
 Pre-requisites
 --------------
 
-- Android SDK v23
-- Android Build Tools v23.0.2
+- Android SDK 23
+- Android Build Tools v23.0.3
 - Android Support Repository
 
 Getting Started
@@ -40,7 +40,7 @@
 License
 -------
 
-Copyright 2014 The Android Open Source Project, Inc.
+Copyright 2016 The Android Open Source Project, Inc.
 
 Licensed to the Apache Software Foundation (ASF) under one or more contributor
 license agreements.  See the NOTICE file distributed with this work for
diff --git a/prebuilts/gradle/WatchFace/Wearable/build.gradle b/prebuilts/gradle/WatchFace/Wearable/build.gradle
index 0465189..92258a2 100644
--- a/prebuilts/gradle/WatchFace/Wearable/build.gradle
+++ b/prebuilts/gradle/WatchFace/Wearable/build.gradle
@@ -5,7 +5,7 @@
     }
 
     dependencies {
-        classpath 'com.android.tools.build:gradle:1.2.3'
+        classpath 'com.android.tools.build:gradle:2.1.2'
     }
 }
 
@@ -20,7 +20,7 @@
 
 
     compile 'com.google.android.gms:play-services-wearable:8.4.0'
-    compile 'com.android.support:support-v13:23.3.0'
+    compile 'com.android.support:support-v13:24.0.0-beta1'
 
     compile 'com.google.android.support:wearable:2.0.0-alpha1'
 
@@ -37,7 +37,7 @@
 android {
     compileSdkVersion 23
 
-    buildToolsVersion "23.0.2"
+    buildToolsVersion "23.0.3"
 
     defaultConfig {
         versionCode 1
diff --git a/prebuilts/gradle/WatchFace/Wearable/src/main/AndroidManifest.xml b/prebuilts/gradle/WatchFace/Wearable/src/main/AndroidManifest.xml
index ce042e4..a922297 100644
--- a/prebuilts/gradle/WatchFace/Wearable/src/main/AndroidManifest.xml
+++ b/prebuilts/gradle/WatchFace/Wearable/src/main/AndroidManifest.xml
@@ -132,6 +132,42 @@
                 <category android:name="com.google.android.wearable.watchface.category.WATCH_FACE" />
             </intent-filter>
         </service>
+
+        <service
+            android:name=".ComplicationSimpleWatchFaceService"
+            android:enabled="true"
+            android:label="@string/complication_simple"
+            android:permission="android.permission.BIND_WALLPAPER">
+            <meta-data
+                android:name="android.service.wallpaper"
+                android:resource="@xml/watch_face"/>
+            <meta-data
+                android:name="com.google.android.wearable.watchface.preview"
+                android:resource="@drawable/preview_complication_simple"/>
+            <meta-data
+                android:name="com.google.android.wearable.watchface.preview_circular"
+                android:resource="@drawable/preview_complication_simple"/>
+            <meta-data
+                android:name="com.google.android.wearable.watchface.wearableConfigurationAction"
+                android:value="com.example.android.wearable.watchface.CONFIG_COMPLICATION_SIMPLE"/>
+
+            <intent-filter>
+                <action android:name="android.service.wallpaper.WallpaperService"/>
+
+                <category android:name="com.google.android.wearable.watchface.category.WATCH_FACE"/>
+            </intent-filter>
+        </service>
+        <activity
+            android:name=".ComplicationSimpleConfigActivity"
+            android:label="@string/complication_simple">
+            <intent-filter>
+                <action android:name="com.example.android.wearable.watchface.CONFIG_COMPLICATION_SIMPLE"/>
+
+                <category android:name="com.google.android.wearable.watchface.category.WEARABLE_CONFIGURATION"/>
+                <category android:name="android.intent.category.DEFAULT"/>
+            </intent-filter>
+        </activity>
+
         <service
             android:name=".InteractiveWatchFaceService"
             android:label="@string/interactive_name"
@@ -218,7 +254,8 @@
         </service>
         <service android:name=".DigitalWatchFaceConfigListenerService" >
             <intent-filter>
-                <action android:name="com.google.android.gms.wearable.BIND_LISTENER" />
+                <action android:name="com.google.android.gms.wearable.MESSAGE_RECEIVED" />
+                <data android:scheme="wear" android:host="*" android:pathPrefix="/"/>
             </intent-filter>
         </service>
         <service
@@ -269,6 +306,35 @@
             android:name=".CalendarWatchFacePermissionActivity"
             android:label="@string/title_activity_calendar_watch_face_permission" >
         </activity>
+
+        <service
+            android:name=".provider.RandomNumberProviderService"
+            android:label="@string/complications_provider_random_number"
+            android:icon="@drawable/ic_launcher">
+
+            <intent-filter>
+                <action android:name="android.support.wearable.complications.ACTION_COMPLICATION_UPDATE_REQUEST"/>
+            </intent-filter>
+
+            <meta-data
+                android:name="android.support.wearable.complications.SUPPORTED_TYPES"
+                android:value="RANGED_VALUE,SHORT_TEXT,LONG_TEXT"/>
+            <!--
+            When your complication data provider is active, UPDATE_PERIOD_SECONDS specifies how
+            often you want the system to check for updates to the data. In this case, the time is
+            specified to a relatively short 120 seconds, so we can observe the result of this code
+            lab. In everyday use, developers should consider intervals in the order of minutes.
+            Also, remember that this is only a guidance for the system. Android Wear may update less
+            frequently.
+
+            If your app needs to push updates instead of updating on a regular schedule, you should
+            set this value to 0 and use ProviderUpdateRequester.requestUpdate() to trigger an update
+            request when you need one.
+            -->
+            <meta-data
+                android:name="android.support.wearable.complications.UPDATE_PERIOD_SECONDS"
+                android:value="120"/>
+        </service>
     </application>
 
 </manifest>
diff --git a/prebuilts/gradle/WatchFace/Wearable/src/main/java/com/example/android/wearable/watchface/ComplicationSimpleConfigActivity.java b/prebuilts/gradle/WatchFace/Wearable/src/main/java/com/example/android/wearable/watchface/ComplicationSimpleConfigActivity.java
new file mode 100644
index 0000000..66e208c
--- /dev/null
+++ b/prebuilts/gradle/WatchFace/Wearable/src/main/java/com/example/android/wearable/watchface/ComplicationSimpleConfigActivity.java
@@ -0,0 +1,191 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.example.android.wearable.watchface;
+
+import android.app.Activity;
+import android.content.ComponentName;
+import android.content.Context;
+import android.content.Intent;
+import android.content.res.TypedArray;
+import android.graphics.drawable.Drawable;
+import android.os.Bundle;
+import android.support.wearable.complications.ProviderChooserIntent;
+import android.support.wearable.view.WearableListView;
+import android.util.Log;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.ImageView;
+import android.widget.TextView;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * The watch-side config activity for {@link ComplicationSimpleWatchFaceService}, which
+ * allows for setting complications on the left and right of watch face.
+ */
+public class ComplicationSimpleConfigActivity extends Activity implements
+        WearableListView.ClickListener {
+
+    private static final String TAG = "CompSimpleConfig";
+
+    private static final int PROVIDER_CHOOSER_REQUEST_CODE = 1;
+
+    private WearableListView mWearableConfigListView;
+    private ConfigurationAdapter mAdapter;
+
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        setContentView(R.layout.activity_complication_simple_config);
+
+        mAdapter = new ConfigurationAdapter(getApplicationContext(), getComplicationItems());
+
+        mWearableConfigListView = (WearableListView) findViewById(R.id.wearable_list);
+        mWearableConfigListView.setAdapter(mAdapter);
+        mWearableConfigListView.setClickListener(this);
+    }
+
+    @Override
+    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
+        if (requestCode == PROVIDER_CHOOSER_REQUEST_CODE
+                && resultCode == RESULT_OK) {
+            finish();
+        }
+    }
+
+    @Override
+    public void onClick(WearableListView.ViewHolder viewHolder) {
+        if (Log.isLoggable(TAG, Log.DEBUG)) {
+            Log.d(TAG, "onClick()");
+        }
+
+        Integer tag = (Integer) viewHolder.itemView.getTag();
+        ComplicationItem complicationItem = mAdapter.getItem(tag);
+
+        startActivityForResult(ProviderChooserIntent.createProviderChooserIntent(
+                complicationItem.watchFace,
+                complicationItem.complicationId,
+                complicationItem.supportedTypes), PROVIDER_CHOOSER_REQUEST_CODE);
+    }
+
+    private List<ComplicationItem> getComplicationItems() {
+        ComponentName watchFace = new ComponentName(
+                getApplicationContext(), ComplicationSimpleWatchFaceService.class);
+
+        String[] complicationNames =
+                getResources().getStringArray(R.array.complication_simple_names);
+
+        int[] complicationIds = ComplicationSimpleWatchFaceService.COMPLICATION_IDS;
+
+        TypedArray icons = getResources().obtainTypedArray(R.array.complication_simple_icons);
+
+        List<ComplicationItem> items = new ArrayList<>();
+        for (int i = 0; i < complicationIds.length; i++) {
+            items.add(new ComplicationItem(watchFace,
+                    complicationIds[i],
+                    ComplicationSimpleWatchFaceService.COMPLICATION_SUPPORTED_TYPES[i],
+                    icons.getDrawable(i),
+                    complicationNames[i]));
+        }
+        return items;
+    }
+
+    @Override
+    public void onTopEmptyRegionClick() {
+        if (Log.isLoggable(TAG, Log.DEBUG)) {
+            Log.d(TAG, "onTopEmptyRegionClick()");
+        }
+    }
+
+    /*
+     * Inner class representing items of the ConfigurationAdapter (WearableListView.Adapter) class.
+     */
+    private final class ComplicationItem {
+        ComponentName watchFace;
+        int complicationId;
+        int[] supportedTypes;
+        Drawable icon;
+        String title;
+
+        public ComplicationItem(ComponentName watchFace, int complicationId, int[] supportedTypes,
+                                Drawable icon, String title) {
+            this.watchFace = watchFace;
+            this.complicationId = complicationId;
+            this.supportedTypes = supportedTypes;
+            this.icon = icon;
+            this.title = title;
+        }
+    }
+
+    private static class ConfigurationAdapter extends WearableListView.Adapter {
+
+        private Context mContext;
+        private final LayoutInflater mInflater;
+        private List<ComplicationItem> mItems;
+
+
+        public ConfigurationAdapter (Context context, List<ComplicationItem> items) {
+            mContext = context;
+            mInflater = LayoutInflater.from(mContext);
+            mItems = items;
+        }
+
+        // Provides a reference to the type of views you're using
+        public static class ItemViewHolder extends WearableListView.ViewHolder {
+            private ImageView iconImageView;
+            private TextView textView;
+            public ItemViewHolder(View itemView) {
+                super(itemView);
+                iconImageView = (ImageView) itemView.findViewById(R.id.icon);
+                textView = (TextView) itemView.findViewById(R.id.name);
+            }
+        }
+
+        @Override
+        public WearableListView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
+
+            // Inflate custom layout for list items.
+            return new ItemViewHolder(
+                    mInflater.inflate(R.layout.activity_complication_simple_list_item, null));
+        }
+
+        @Override
+        public void onBindViewHolder(WearableListView.ViewHolder holder, int position) {
+
+            ItemViewHolder itemHolder = (ItemViewHolder) holder;
+
+            ImageView imageView = itemHolder.iconImageView;
+            imageView.setImageDrawable(mItems.get(position).icon);
+
+            TextView textView = itemHolder.textView;
+            textView.setText(mItems.get(position).title);
+
+            holder.itemView.setTag(position);
+        }
+
+        @Override
+        public int getItemCount() {
+            return mItems.size();
+        }
+
+        public ComplicationItem getItem(int position) {
+            return mItems.get(position);
+        }
+    }
+
+}
\ No newline at end of file
diff --git a/prebuilts/gradle/WatchFace/Wearable/src/main/java/com/example/android/wearable/watchface/ComplicationSimpleWatchFaceService.java b/prebuilts/gradle/WatchFace/Wearable/src/main/java/com/example/android/wearable/watchface/ComplicationSimpleWatchFaceService.java
new file mode 100644
index 0000000..9eca2c3
--- /dev/null
+++ b/prebuilts/gradle/WatchFace/Wearable/src/main/java/com/example/android/wearable/watchface/ComplicationSimpleWatchFaceService.java
@@ -0,0 +1,744 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.example.android.wearable.watchface;
+
+import android.app.PendingIntent;
+import android.content.BroadcastReceiver;
+import android.content.Context;
+import android.content.Intent;
+import android.content.IntentFilter;
+import android.graphics.Bitmap;
+import android.graphics.BitmapFactory;
+import android.graphics.Canvas;
+import android.graphics.Color;
+import android.graphics.ColorMatrix;
+import android.graphics.ColorMatrixColorFilter;
+import android.graphics.Paint;
+import android.graphics.Rect;
+import android.graphics.Typeface;
+import android.os.Bundle;
+import android.os.Handler;
+import android.os.Message;
+import android.support.v7.graphics.Palette;
+import android.support.wearable.complications.ComplicationData;
+import android.support.wearable.complications.ComplicationText;
+import android.support.wearable.watchface.CanvasWatchFaceService;
+import android.support.wearable.watchface.WatchFaceService;
+import android.support.wearable.watchface.WatchFaceStyle;
+import android.text.TextUtils;
+import android.util.Log;
+import android.util.SparseArray;
+import android.view.SurfaceHolder;
+
+import java.util.Calendar;
+import java.util.TimeZone;
+import java.util.concurrent.TimeUnit;
+
+/**
+ * Demonstrates two simple complications in a watch face.
+ */
+public class ComplicationSimpleWatchFaceService extends CanvasWatchFaceService {
+    private static final String TAG = "SimpleComplicationWF";
+
+    // Unique IDs for each complication.
+    private static final int LEFT_DIAL_COMPLICATION = 0;
+    private static final int RIGHT_DIAL_COMPLICATION = 1;
+
+    // Left and right complication IDs as array for Complication API.
+    public static final int[] COMPLICATION_IDS = {LEFT_DIAL_COMPLICATION, RIGHT_DIAL_COMPLICATION};
+
+    // Left and right dial supported types.
+    public static final int[][] COMPLICATION_SUPPORTED_TYPES = {
+            {ComplicationData.TYPE_SHORT_TEXT},
+            {ComplicationData.TYPE_SHORT_TEXT}
+    };
+
+    /*
+     * Update rate in milliseconds for interactive mode. We update once a second to advance the
+     * second hand.
+     */
+    private static final long INTERACTIVE_UPDATE_RATE_MS = TimeUnit.SECONDS.toMillis(1);
+
+    @Override
+    public Engine onCreateEngine() {
+        return new Engine();
+    }
+
+    private class Engine extends CanvasWatchFaceService.Engine {
+        private static final int MSG_UPDATE_TIME = 0;
+
+        private static final float COMPLICATION_TEXT_SIZE = 38f;
+        private static final int COMPLICATION_TAP_BUFFER = 40;
+
+        private static final float HOUR_STROKE_WIDTH = 5f;
+        private static final float MINUTE_STROKE_WIDTH = 3f;
+        private static final float SECOND_TICK_STROKE_WIDTH = 2f;
+
+        private static final float CENTER_GAP_AND_CIRCLE_RADIUS = 4f;
+
+        private static final int SHADOW_RADIUS = 6;
+
+        private Calendar mCalendar;
+        private boolean mRegisteredTimeZoneReceiver = false;
+        private boolean mMuteMode;
+
+        private int mWidth;
+        private int mHeight;
+        private float mCenterX;
+        private float mCenterY;
+
+        private float mSecondHandLength;
+        private float mMinuteHandLength;
+        private float mHourHandLength;
+
+        // Colors for all hands (hour, minute, seconds, ticks) based on photo loaded.
+        private int mWatchHandColor;
+        private int mWatchHandHighlightColor;
+        private int mWatchHandShadowColor;
+
+        private Paint mHourPaint;
+        private Paint mMinutePaint;
+        private Paint mSecondPaint;
+        private Paint mTickAndCirclePaint;
+
+        private Paint mBackgroundPaint;
+        private Bitmap mBackgroundBitmap;
+        private Bitmap mGrayBackgroundBitmap;
+
+        // Variables for painting Complications
+        private Paint mComplicationPaint;
+
+        /* To properly place each complication, we need their x and y coordinates. While the width
+         * may change from moment to moment based on the time, the height will not change, so we
+         * store it as a local variable and only calculate it only when the surface changes
+         * (onSurfaceChanged()).
+         */
+        private int mComplicationsY;
+
+        /* Maps active complication ids to the data for that complication. Note: Data will only be
+         * present if the user has chosen a provider via the settings activity for the watch face.
+         */
+        private SparseArray<ComplicationData> mActiveComplicationDataSparseArray;
+
+        private boolean mAmbient;
+        private boolean mLowBitAmbient;
+        private boolean mBurnInProtection;
+
+        private Rect mPeekCardBounds = new Rect();
+
+        private final BroadcastReceiver mTimeZoneReceiver = new BroadcastReceiver() {
+            @Override
+            public void onReceive(Context context, Intent intent) {
+                mCalendar.setTimeZone(TimeZone.getDefault());
+                invalidate();
+            }
+        };
+
+        // Handler to update the time once a second in interactive mode.
+        private final Handler mUpdateTimeHandler = new Handler() {
+            @Override
+            public void handleMessage(Message message) {
+
+                if (Log.isLoggable(TAG, Log.DEBUG)) {
+                    Log.d(TAG, "updating time");
+                }
+                invalidate();
+                if (shouldTimerBeRunning()) {
+                    long timeMs = System.currentTimeMillis();
+                    long delayMs = INTERACTIVE_UPDATE_RATE_MS
+                            - (timeMs % INTERACTIVE_UPDATE_RATE_MS);
+                    mUpdateTimeHandler.sendEmptyMessageDelayed(MSG_UPDATE_TIME, delayMs);
+                }
+
+            }
+        };
+
+        @Override
+        public void onCreate(SurfaceHolder holder) {
+            if (Log.isLoggable(TAG, Log.DEBUG)) {
+                Log.d(TAG, "onCreate");
+            }
+            super.onCreate(holder);
+
+            mCalendar = Calendar.getInstance();
+
+            setWatchFaceStyle(new WatchFaceStyle.Builder(ComplicationSimpleWatchFaceService.this)
+                    .setCardPeekMode(WatchFaceStyle.PEEK_MODE_SHORT)
+                    .setAcceptsTapEvents(true)
+                    .setBackgroundVisibility(WatchFaceStyle.BACKGROUND_VISIBILITY_INTERRUPTIVE)
+                    .setShowSystemUiTime(false)
+                    .build());
+
+            initializeBackground();
+            initializeComplication();
+            initializeWatchFace();
+        }
+
+        private void initializeBackground() {
+            mBackgroundPaint = new Paint();
+            mBackgroundPaint.setColor(Color.BLACK);
+            mBackgroundBitmap = BitmapFactory.decodeResource(getResources(), R.drawable.bg);
+        }
+
+        private void initializeComplication() {
+            if (Log.isLoggable(TAG, Log.DEBUG)) {
+                Log.d(TAG, "initializeComplications()");
+            }
+            mActiveComplicationDataSparseArray = new SparseArray<>(COMPLICATION_IDS.length);
+
+            mComplicationPaint = new Paint();
+            mComplicationPaint.setColor(Color.WHITE);
+            mComplicationPaint.setTextSize(COMPLICATION_TEXT_SIZE);
+            mComplicationPaint.setTypeface(Typeface.create(Typeface.DEFAULT, Typeface.BOLD));
+            mComplicationPaint.setAntiAlias(true);
+
+            setActiveComplications(COMPLICATION_IDS);
+        }
+
+        private void initializeWatchFace() {
+            /* Set defaults for colors */
+            mWatchHandColor = Color.WHITE;
+            mWatchHandHighlightColor = Color.RED;
+            mWatchHandShadowColor = Color.BLACK;
+
+            mHourPaint = new Paint();
+            mHourPaint.setColor(mWatchHandColor);
+            mHourPaint.setStrokeWidth(HOUR_STROKE_WIDTH);
+            mHourPaint.setAntiAlias(true);
+            mHourPaint.setStrokeCap(Paint.Cap.ROUND);
+            mHourPaint.setShadowLayer(SHADOW_RADIUS, 0, 0, mWatchHandShadowColor);
+
+            mMinutePaint = new Paint();
+            mMinutePaint.setColor(mWatchHandColor);
+            mMinutePaint.setStrokeWidth(MINUTE_STROKE_WIDTH);
+            mMinutePaint.setAntiAlias(true);
+            mMinutePaint.setStrokeCap(Paint.Cap.ROUND);
+            mMinutePaint.setShadowLayer(SHADOW_RADIUS, 0, 0, mWatchHandShadowColor);
+
+            mSecondPaint = new Paint();
+            mSecondPaint.setColor(mWatchHandHighlightColor);
+            mSecondPaint.setStrokeWidth(SECOND_TICK_STROKE_WIDTH);
+            mSecondPaint.setAntiAlias(true);
+            mSecondPaint.setStrokeCap(Paint.Cap.ROUND);
+            mSecondPaint.setShadowLayer(SHADOW_RADIUS, 0, 0, mWatchHandShadowColor);
+
+            mTickAndCirclePaint = new Paint();
+            mTickAndCirclePaint.setColor(mWatchHandColor);
+            mTickAndCirclePaint.setStrokeWidth(SECOND_TICK_STROKE_WIDTH);
+            mTickAndCirclePaint.setAntiAlias(true);
+            mTickAndCirclePaint.setStyle(Paint.Style.STROKE);
+            mTickAndCirclePaint.setShadowLayer(SHADOW_RADIUS, 0, 0, mWatchHandShadowColor);
+
+            // Asynchronous call extract colors from background image to improve watch face style.
+            Palette.from(mBackgroundBitmap).generate(
+                    new Palette.PaletteAsyncListener() {
+                        public void onGenerated(Palette palette) {
+                            /*
+                             * Sometimes, palette is unable to generate a color palette
+                             * so we need to check that we have one.
+                             */
+                            if (palette != null) {
+                                Log.d("onGenerated", palette.toString());
+                                mWatchHandColor = palette.getVibrantColor(Color.WHITE);
+                                mWatchHandShadowColor = palette.getDarkMutedColor(Color.BLACK);
+                                updateWatchHandStyle();
+                            }
+                        }
+                    });
+        }
+
+        @Override
+        public void onDestroy() {
+            mUpdateTimeHandler.removeMessages(MSG_UPDATE_TIME);
+            super.onDestroy();
+        }
+
+        @Override
+        public void onPropertiesChanged(Bundle properties) {
+            super.onPropertiesChanged(properties);
+            if (Log.isLoggable(TAG, Log.DEBUG)) {
+                Log.d(TAG, "onPropertiesChanged: low-bit ambient = " + mLowBitAmbient);
+            }
+
+            mLowBitAmbient = properties.getBoolean(PROPERTY_LOW_BIT_AMBIENT, false);
+            mBurnInProtection = properties.getBoolean(PROPERTY_BURN_IN_PROTECTION, false);
+        }
+
+        /*
+         * Called when there is updated data for a complication id.
+         */
+        @Override
+        public void onComplicationDataUpdate(
+                int complicationId, ComplicationData complicationData) {
+            Log.d(TAG, "onComplicationDataUpdate() id: " + complicationId);
+
+            // Adds/updates active complication data in the array.
+            mActiveComplicationDataSparseArray.put(complicationId, complicationData);
+            invalidate();
+        }
+
+        @Override
+        public void onTapCommand(int tapType, int x, int y, long eventTime) {
+            Log.d(TAG, "OnTapCommand()");
+            switch (tapType) {
+                case TAP_TYPE_TAP:
+                    int tappedComplicationId = getTappedComplicationId(x, y);
+                    if (tappedComplicationId != -1) {
+                        onComplicationTap(tappedComplicationId);
+                    }
+                    break;
+            }
+        }
+
+        /*
+         * Determines if tap inside a complication area or returns -1.
+         */
+        private int getTappedComplicationId(int x, int y) {
+            ComplicationData complicationData;
+            long currentTimeMillis = System.currentTimeMillis();
+
+            for (int i = 0; i < COMPLICATION_IDS.length; i++) {
+                complicationData = mActiveComplicationDataSparseArray.get(COMPLICATION_IDS[i]);
+
+                if ((complicationData != null)
+                        && (complicationData.isActive(currentTimeMillis))
+                        && (complicationData.getType() != ComplicationData.TYPE_NOT_CONFIGURED)
+                        && (complicationData.getType() != ComplicationData.TYPE_EMPTY)) {
+
+                    Rect complicationBoundingRect = new Rect(0, 0, 0, 0);
+
+                    switch (COMPLICATION_IDS[i]) {
+                        case LEFT_DIAL_COMPLICATION:
+                            complicationBoundingRect.set(
+                                    0,                                          // left
+                                    mComplicationsY - COMPLICATION_TAP_BUFFER,  // top
+                                    (mWidth / 2),                               // right
+                                    ((int) COMPLICATION_TEXT_SIZE               // bottom
+                                            + mComplicationsY
+                                            + COMPLICATION_TAP_BUFFER));
+                            break;
+
+                        case RIGHT_DIAL_COMPLICATION:
+                            complicationBoundingRect.set(
+                                    (mWidth / 2),                               // left
+                                    mComplicationsY - COMPLICATION_TAP_BUFFER,  // top
+                                    mWidth,                                     // right
+                                    ((int) COMPLICATION_TEXT_SIZE               // bottom
+                                            + mComplicationsY
+                                            + COMPLICATION_TAP_BUFFER));
+                            break;
+                    }
+
+                    if (complicationBoundingRect.width() > 0) {
+                        if (complicationBoundingRect.contains(x, y)) {
+                            return COMPLICATION_IDS[i];
+                        }
+                    } else {
+                        Log.e(TAG, "Not a recognized complication id.");
+                    }
+                }
+            }
+            return -1;
+        }
+
+        /*
+         * Fires PendingIntent associated with complication (if it has one).
+         */
+        private void onComplicationTap(int complicationId) {
+            if (Log.isLoggable(TAG, Log.DEBUG)) {
+                Log.d(TAG, "onComplicationTap()");
+            }
+            ComplicationData complicationData =
+                    mActiveComplicationDataSparseArray.get(complicationId);
+
+            if ((complicationData != null) && (complicationData.getTapAction() != null)) {
+                try {
+                    complicationData.getTapAction().send();
+                } catch (PendingIntent.CanceledException e) {
+                    Log.e(TAG, "On complication tap action error " + e);
+                }
+                invalidate();
+            } else {
+                if (Log.isLoggable(TAG, Log.DEBUG)) {
+                    Log.d(TAG, "No PendingIntent for complication " + complicationId + ".");
+                }
+            }
+        }
+
+        @Override
+        public void onTimeTick() {
+            super.onTimeTick();
+            invalidate();
+        }
+
+        @Override
+        public void onAmbientModeChanged(boolean inAmbientMode) {
+            super.onAmbientModeChanged(inAmbientMode);
+            if (Log.isLoggable(TAG, Log.DEBUG)) {
+                Log.d(TAG, "onAmbientModeChanged: " + inAmbientMode);
+            }
+            mAmbient = inAmbientMode;
+
+            updateWatchHandStyle();
+
+            // Updates complication style
+            mComplicationPaint.setAntiAlias(!inAmbientMode);
+
+            // Check and trigger whether or not timer should be running (only in active mode).
+            updateTimer();
+        }
+
+        private void updateWatchHandStyle(){
+            if (mAmbient){
+                mHourPaint.setColor(Color.WHITE);
+                mMinutePaint.setColor(Color.WHITE);
+                mSecondPaint.setColor(Color.WHITE);
+                mTickAndCirclePaint.setColor(Color.WHITE);
+
+                mHourPaint.setAntiAlias(false);
+                mMinutePaint.setAntiAlias(false);
+                mSecondPaint.setAntiAlias(false);
+                mTickAndCirclePaint.setAntiAlias(false);
+
+                mHourPaint.clearShadowLayer();
+                mMinutePaint.clearShadowLayer();
+                mSecondPaint.clearShadowLayer();
+                mTickAndCirclePaint.clearShadowLayer();
+
+            } else {
+                mHourPaint.setColor(mWatchHandColor);
+                mMinutePaint.setColor(mWatchHandColor);
+                mSecondPaint.setColor(mWatchHandHighlightColor);
+                mTickAndCirclePaint.setColor(mWatchHandColor);
+
+                mHourPaint.setAntiAlias(true);
+                mMinutePaint.setAntiAlias(true);
+                mSecondPaint.setAntiAlias(true);
+                mTickAndCirclePaint.setAntiAlias(true);
+
+                mHourPaint.setShadowLayer(SHADOW_RADIUS, 0, 0, mWatchHandShadowColor);
+                mMinutePaint.setShadowLayer(SHADOW_RADIUS, 0, 0, mWatchHandShadowColor);
+                mSecondPaint.setShadowLayer(SHADOW_RADIUS, 0, 0, mWatchHandShadowColor);
+                mTickAndCirclePaint.setShadowLayer(SHADOW_RADIUS, 0, 0, mWatchHandShadowColor);
+            }
+        }
+
+        @Override
+        public void onInterruptionFilterChanged(int interruptionFilter) {
+            super.onInterruptionFilterChanged(interruptionFilter);
+            boolean inMuteMode = (interruptionFilter == WatchFaceService.INTERRUPTION_FILTER_NONE);
+
+            /* Dim display in mute mode. */
+            if (mMuteMode != inMuteMode) {
+                mMuteMode = inMuteMode;
+                mHourPaint.setAlpha(inMuteMode ? 100 : 255);
+                mMinutePaint.setAlpha(inMuteMode ? 100 : 255);
+                mSecondPaint.setAlpha(inMuteMode ? 80 : 255);
+                invalidate();
+            }
+        }
+
+        @Override
+        public void onSurfaceChanged(SurfaceHolder holder, int format, int width, int height) {
+            super.onSurfaceChanged(holder, format, width, height);
+
+            // Used for complications
+            mWidth = width;
+            mHeight = height;
+
+            /*
+             * Find the coordinates of the center point on the screen, and ignore the window
+             * insets, so that, on round watches with a "chin", the watch face is centered on the
+             * entire screen, not just the usable portion.
+             */
+            mCenterX = mWidth / 2f;
+            mCenterY = mHeight / 2f;
+
+            /*
+             * Since the height of the complications text does not change, we only have to
+             * recalculate when the surface changes.
+             */
+            mComplicationsY = (int) ((mHeight / 2) + (mComplicationPaint.getTextSize() / 2));
+
+            /*
+             * Calculate lengths of different hands based on watch screen size.
+             */
+            mSecondHandLength = (float) (mCenterX * 0.875);
+            mMinuteHandLength = (float) (mCenterX * 0.75);
+            mHourHandLength = (float) (mCenterX * 0.5);
+
+
+            /* Scale loaded background image (more efficient) if surface dimensions change. */
+            float scale = ((float) width) / (float) mBackgroundBitmap.getWidth();
+
+            mBackgroundBitmap = Bitmap.createScaledBitmap(mBackgroundBitmap,
+                    (int) (mBackgroundBitmap.getWidth() * scale),
+                    (int) (mBackgroundBitmap.getHeight() * scale), true);
+
+            /*
+             * Create a gray version of the image only if it will look nice on the device in
+             * ambient mode. That means we don't want devices that support burn-in
+             * protection (slight movements in pixels, not great for images going all the way to
+             * edges) and low ambient mode (degrades image quality).
+             *
+             * Also, if your watch face will know about all images ahead of time (users aren't
+             * selecting their own photos for the watch face), it will be more
+             * efficient to create a black/white version (png, etc.) and load that when you need it.
+             */
+            if (!mBurnInProtection && !mLowBitAmbient) {
+                initGrayBackgroundBitmap();
+            }
+        }
+
+        private void initGrayBackgroundBitmap() {
+            mGrayBackgroundBitmap = Bitmap.createBitmap(
+                    mBackgroundBitmap.getWidth(),
+                    mBackgroundBitmap.getHeight(),
+                    Bitmap.Config.ARGB_8888);
+            Canvas canvas = new Canvas(mGrayBackgroundBitmap);
+            Paint grayPaint = new Paint();
+            ColorMatrix colorMatrix = new ColorMatrix();
+            colorMatrix.setSaturation(0);
+            ColorMatrixColorFilter filter = new ColorMatrixColorFilter(colorMatrix);
+            grayPaint.setColorFilter(filter);
+            canvas.drawBitmap(mBackgroundBitmap, 0, 0, grayPaint);
+        }
+
+        @Override
+        public void onDraw(Canvas canvas, Rect bounds) {
+            if (Log.isLoggable(TAG, Log.DEBUG)) {
+                Log.d(TAG, "onDraw");
+            }
+            long now = System.currentTimeMillis();
+            mCalendar.setTimeInMillis(now);
+
+            drawBackground(canvas);
+            drawComplications(canvas, now);
+            drawWatchFace(canvas);
+
+
+        }
+
+        private void drawBackground(Canvas canvas) {
+            if (mAmbient && (mLowBitAmbient || mBurnInProtection)) {
+                canvas.drawColor(Color.BLACK);
+            } else if (mAmbient) {
+                canvas.drawBitmap(mGrayBackgroundBitmap, 0, 0, mBackgroundPaint);
+            } else {
+                canvas.drawBitmap(mBackgroundBitmap, 0, 0, mBackgroundPaint);
+            }
+        }
+
+        private void drawComplications(Canvas canvas, long currentTimeMillis) {
+            ComplicationData complicationData;
+
+            for (int i = 0; i < COMPLICATION_IDS.length; i++) {
+
+                complicationData = mActiveComplicationDataSparseArray.get(COMPLICATION_IDS[i]);
+
+                if ((complicationData != null)
+                        && (complicationData.isActive(currentTimeMillis))
+                        && (complicationData.getType() == ComplicationData.TYPE_SHORT_TEXT)) {
+
+                    ComplicationText mainText = complicationData.getShortText();
+                    ComplicationText subText = complicationData.getShortTitle();
+
+                    CharSequence complicationMessage =
+                            mainText.getText(getApplicationContext(), currentTimeMillis);
+
+                    /* In most cases you would want the subText (Title) under the mainText (Text),
+                     * but to keep it simple for the code lab, we are concatenating them all on one
+                     * line.
+                     */
+                    if (subText != null) {
+                        complicationMessage = TextUtils.concat(
+                                complicationMessage,
+                                " ",
+                                subText.getText(getApplicationContext(), currentTimeMillis));
+                    }
+
+                    //Log.d(TAG, "Comp id: " + COMPLICATION_IDS[i] + "\t" + complicationMessage);
+                    double textWidth =
+                            mComplicationPaint.measureText(
+                                    complicationMessage,
+                                    0,
+                                    complicationMessage.length());
+
+                    int complicationsX;
+
+                    if (COMPLICATION_IDS[i] == LEFT_DIAL_COMPLICATION) {
+                        complicationsX = (int) ((mWidth / 2) - textWidth) / 2;
+                    } else {
+                        // RIGHT_DIAL_COMPLICATION calculations
+                        int offset = (int) ((mWidth / 2) - textWidth) / 2;
+                        complicationsX = (mWidth / 2) + offset;
+                    }
+
+                    canvas.drawText(
+                            complicationMessage,
+                            0,
+                            complicationMessage.length(),
+                            complicationsX,
+                            mComplicationsY,
+                            mComplicationPaint);
+                }
+            }
+        }
+
+        private void drawWatchFace(Canvas canvas) {
+            /*
+             * Draw ticks. Usually you will want to bake this directly into the photo, but in
+             * cases where you want to allow users to select their own photos, this dynamically
+             * creates them on top of the photo.
+             */
+            float innerTickRadius = mCenterX - 10;
+            float outerTickRadius = mCenterX;
+            for (int tickIndex = 0; tickIndex < 12; tickIndex++) {
+                float tickRot = (float) (tickIndex * Math.PI * 2 / 12);
+                float innerX = (float) Math.sin(tickRot) * innerTickRadius;
+                float innerY = (float) -Math.cos(tickRot) * innerTickRadius;
+                float outerX = (float) Math.sin(tickRot) * outerTickRadius;
+                float outerY = (float) -Math.cos(tickRot) * outerTickRadius;
+                canvas.drawLine(mCenterX + innerX, mCenterY + innerY,
+                        mCenterX + outerX, mCenterY + outerY, mTickAndCirclePaint);
+            }
+
+            /*
+             * These calculations reflect the rotation in degrees per unit of time, e.g.,
+             * 360 / 60 = 6 and 360 / 12 = 30.
+             */
+            final float seconds =
+                    (mCalendar.get(Calendar.SECOND) + mCalendar.get(Calendar.MILLISECOND) / 1000f);
+            final float secondsRotation = seconds * 6f;
+
+            final float minutesRotation = mCalendar.get(Calendar.MINUTE) * 6f;
+
+            final float hourHandOffset = mCalendar.get(Calendar.MINUTE) / 2f;
+            final float hoursRotation = (mCalendar.get(Calendar.HOUR) * 30) + hourHandOffset;
+
+            /*
+             * Save the canvas state before we can begin to rotate it.
+             */
+            canvas.save();
+
+            canvas.rotate(hoursRotation, mCenterX, mCenterY);
+            canvas.drawLine(
+                    mCenterX,
+                    mCenterY - CENTER_GAP_AND_CIRCLE_RADIUS,
+                    mCenterX,
+                    mCenterY - mHourHandLength,
+                    mHourPaint);
+
+            canvas.rotate(minutesRotation - hoursRotation, mCenterX, mCenterY);
+            canvas.drawLine(
+                    mCenterX,
+                    mCenterY - CENTER_GAP_AND_CIRCLE_RADIUS,
+                    mCenterX,
+                    mCenterY - mMinuteHandLength,
+                    mMinutePaint);
+
+            /*
+             * Ensure the "seconds" hand is drawn only when we are in interactive mode.
+             * Otherwise, we only update the watch face once a minute.
+             */
+            if (!mAmbient) {
+                canvas.rotate(secondsRotation - minutesRotation, mCenterX, mCenterY);
+                canvas.drawLine(
+                        mCenterX,
+                        mCenterY - CENTER_GAP_AND_CIRCLE_RADIUS,
+                        mCenterX,
+                        mCenterY - mSecondHandLength,
+                        mSecondPaint);
+
+            }
+            canvas.drawCircle(
+                    mCenterX,
+                    mCenterY,
+                    CENTER_GAP_AND_CIRCLE_RADIUS,
+                    mTickAndCirclePaint);
+
+            /* Restore the canvas' original orientation. */
+            canvas.restore();
+
+            /* Draw rectangle behind peek card in ambient mode to improve readability. */
+            if (mAmbient) {
+                canvas.drawRect(mPeekCardBounds, mBackgroundPaint);
+            }
+        }
+
+        @Override
+        public void onVisibilityChanged(boolean visible) {
+            super.onVisibilityChanged(visible);
+
+            if (visible) {
+                registerReceiver();
+                // Update time zone in case it changed while we weren't visible.
+                mCalendar.setTimeZone(TimeZone.getDefault());
+                invalidate();
+            } else {
+                unregisterReceiver();
+            }
+
+            /* Check and trigger whether or not timer should be running (only in active mode). */
+            updateTimer();
+        }
+
+        @Override
+        public void onPeekCardPositionUpdate(Rect rect) {
+            super.onPeekCardPositionUpdate(rect);
+            mPeekCardBounds.set(rect);
+        }
+
+        private void registerReceiver() {
+            if (mRegisteredTimeZoneReceiver) {
+                return;
+            }
+            mRegisteredTimeZoneReceiver = true;
+            IntentFilter filter = new IntentFilter(Intent.ACTION_TIMEZONE_CHANGED);
+            ComplicationSimpleWatchFaceService.this.registerReceiver(mTimeZoneReceiver, filter);
+        }
+
+        private void unregisterReceiver() {
+            if (!mRegisteredTimeZoneReceiver) {
+                return;
+            }
+            mRegisteredTimeZoneReceiver = false;
+            ComplicationSimpleWatchFaceService.this.unregisterReceiver(mTimeZoneReceiver);
+        }
+
+        /**
+         * Starts/stops the {@link #mUpdateTimeHandler} timer based on the state of the watch face.
+         */
+        private void updateTimer() {
+            if (Log.isLoggable(TAG, Log.DEBUG)) {
+                Log.d(TAG, "updateTimer");
+            }
+            mUpdateTimeHandler.removeMessages(MSG_UPDATE_TIME);
+            if (shouldTimerBeRunning()) {
+                mUpdateTimeHandler.sendEmptyMessage(MSG_UPDATE_TIME);
+            }
+        }
+
+        /**
+         * Returns whether the {@link #mUpdateTimeHandler} timer should be running. The timer
+         * should only run in active mode.
+         */
+        private boolean shouldTimerBeRunning() {
+            return isVisible() && !mAmbient;
+        }
+    }
+}
\ No newline at end of file
diff --git a/prebuilts/gradle/WatchFace/Wearable/src/main/java/com/example/android/wearable/watchface/DigitalWatchFaceConfigListenerService.java b/prebuilts/gradle/WatchFace/Wearable/src/main/java/com/example/android/wearable/watchface/DigitalWatchFaceConfigListenerService.java
index 725c51a..8d99de6 100644
--- a/prebuilts/gradle/WatchFace/Wearable/src/main/java/com/example/android/wearable/watchface/DigitalWatchFaceConfigListenerService.java
+++ b/prebuilts/gradle/WatchFace/Wearable/src/main/java/com/example/android/wearable/watchface/DigitalWatchFaceConfigListenerService.java
@@ -40,6 +40,11 @@
 
     @Override // WearableListenerService
     public void onMessageReceived(MessageEvent messageEvent) {
+
+        if (Log.isLoggable(TAG, Log.DEBUG)) {
+            Log.d(TAG, "onMessageReceived: " + messageEvent);
+        }
+
         if (!messageEvent.getPath().equals(DigitalWatchFaceUtil.PATH_WITH_FEATURE)) {
             return;
         }
diff --git a/prebuilts/gradle/WatchFace/Wearable/src/main/java/com/example/android/wearable/watchface/FitDistanceWatchFaceService.java b/prebuilts/gradle/WatchFace/Wearable/src/main/java/com/example/android/wearable/watchface/FitDistanceWatchFaceService.java
index b29a190..6dee04e 100644
--- a/prebuilts/gradle/WatchFace/Wearable/src/main/java/com/example/android/wearable/watchface/FitDistanceWatchFaceService.java
+++ b/prebuilts/gradle/WatchFace/Wearable/src/main/java/com/example/android/wearable/watchface/FitDistanceWatchFaceService.java
@@ -62,7 +62,10 @@
  *
  * Authentication IS a requirement to request distance from Google Fit on Wear. Otherwise, distance
  * will always come back as zero (or stay at whatever the distance was prior to you
- * de-authorizing watchface).
+ * de-authorizing watchface). To authenticate and communicate with Google Fit, you must create a
+ * project in the Google Developers Console, activate the Fitness API, create an OAuth 2.0
+ * client ID, and register the public certificate from your app's signed APK. More details can be
+ * found here: https://developers.google.com/fit/android/get-started#step_3_enable_the_fitness_api
  *
  * In ambient mode, the seconds are replaced with an AM/PM indicator.
  *
diff --git a/prebuilts/gradle/WatchFace/Wearable/src/main/java/com/example/android/wearable/watchface/provider/RandomNumberProviderService.java b/prebuilts/gradle/WatchFace/Wearable/src/main/java/com/example/android/wearable/watchface/provider/RandomNumberProviderService.java
new file mode 100644
index 0000000..916f90f
--- /dev/null
+++ b/prebuilts/gradle/WatchFace/Wearable/src/main/java/com/example/android/wearable/watchface/provider/RandomNumberProviderService.java
@@ -0,0 +1,96 @@
+package com.example.android.wearable.watchface.provider;
+
+import android.support.wearable.complications.ComplicationData;
+import android.support.wearable.complications.ComplicationManager;
+import android.support.wearable.complications.ComplicationProviderService;
+import android.support.wearable.complications.ComplicationText;
+import android.util.Log;
+
+import java.util.Locale;
+
+/**
+ * Example Watch Face Complication data provider provides a random number on every update.
+ */
+public class RandomNumberProviderService extends ComplicationProviderService {
+
+    private static final String TAG = "RandomNumberProvider";
+
+    /*
+     * Called when a complication has been activated. The method is for any one-time
+     * (per complication) set-up.
+     *
+     * You can continue sending data for the active complicationId until onComplicationDeactivated()
+     * is called.
+     */
+    @Override
+    public void onComplicationActivated(
+            int complicationId, int dataType, ComplicationManager complicationManager) {
+        Log.d(TAG, "onComplicationActivated(): " + complicationId);
+        super.onComplicationActivated(complicationId, dataType, complicationManager);
+    }
+
+    /*
+     * Called when the complication needs updated data from your provider. There are four scenarios
+     * when this will happen:
+     *
+     *   1. An active watch face complication is changed to use this provider
+     *   2. A complication using this provider becomes active
+     *   3. The period of time you specified in the manifest has elapsed (UPDATE_PERIOD_SECONDS)
+     *   4. You triggered an update from your own class via the
+     *       ProviderUpdateRequester.requestUpdate() method.
+     */
+    @Override
+    public void onComplicationUpdate(
+            int complicationId, int dataType, ComplicationManager complicationManager) {
+        Log.d(TAG, "onComplicationUpdate()");
+
+
+        // Retrieve your data, in this case, we simply create a random number to display.
+        int randomNumber = (int) Math.floor(Math.random() * 10);
+
+        String randomNumberText =
+                String.format(Locale.getDefault(), "%d!", randomNumber);
+
+        ComplicationData complicationData = null;
+
+        switch (dataType) {
+            case ComplicationData.TYPE_RANGED_VALUE:
+                complicationData = new ComplicationData.Builder(ComplicationData.TYPE_RANGED_VALUE)
+                        .setValue(randomNumber)
+                        .setMinValue(0)
+                        .setMaxValue(10)
+                        .setShortText(ComplicationText.plainText(randomNumberText))
+                        .build();
+                break;
+            case ComplicationData.TYPE_SHORT_TEXT:
+                complicationData = new ComplicationData.Builder(ComplicationData.TYPE_SHORT_TEXT)
+                        .setShortText(ComplicationText.plainText(randomNumberText))
+                        .build();
+                break;
+            case ComplicationData.TYPE_LONG_TEXT:
+                complicationData = new ComplicationData.Builder(ComplicationData.TYPE_LONG_TEXT)
+                        .setLongText(
+                                ComplicationText.plainText("Random Number: " + randomNumberText))
+                        .build();
+                break;
+            default:
+                if (Log.isLoggable(TAG, Log.WARN)) {
+                    Log.w(TAG, "Unexpected complication type " + dataType);
+                }
+        }
+
+        if (complicationData != null) {
+            complicationManager.updateComplicationData(complicationId, complicationData);
+        }
+    }
+
+    /*
+     * Called when the complication has been deactivated. If you are updating the complication
+     * manager outside of this class with updates, you will want to update your class to stop.
+     */
+    @Override
+    public void onComplicationDeactivated(int complicationId) {
+        Log.d(TAG, "onComplicationDeactivated(): " + complicationId);
+        super.onComplicationDeactivated(complicationId);
+    }
+}
\ No newline at end of file
diff --git a/prebuilts/gradle/WatchFace/Wearable/src/main/res/drawable-hdpi/preview_complication_simple.png b/prebuilts/gradle/WatchFace/Wearable/src/main/res/drawable-hdpi/preview_complication_simple.png
new file mode 100644
index 0000000..48d25ef
--- /dev/null
+++ b/prebuilts/gradle/WatchFace/Wearable/src/main/res/drawable-hdpi/preview_complication_simple.png
Binary files differ
diff --git a/prebuilts/gradle/WatchFace/Wearable/src/main/res/drawable-xhdpi/complications_left_dial.png b/prebuilts/gradle/WatchFace/Wearable/src/main/res/drawable-xhdpi/complications_left_dial.png
new file mode 100644
index 0000000..93bb31c
--- /dev/null
+++ b/prebuilts/gradle/WatchFace/Wearable/src/main/res/drawable-xhdpi/complications_left_dial.png
Binary files differ
diff --git a/prebuilts/gradle/WatchFace/Wearable/src/main/res/drawable-xhdpi/complications_right_dial.png b/prebuilts/gradle/WatchFace/Wearable/src/main/res/drawable-xhdpi/complications_right_dial.png
new file mode 100644
index 0000000..5db3c98
--- /dev/null
+++ b/prebuilts/gradle/WatchFace/Wearable/src/main/res/drawable-xhdpi/complications_right_dial.png
Binary files differ
diff --git a/prebuilts/gradle/WatchFace/Wearable/src/main/res/layout/activity_complication_simple_config.xml b/prebuilts/gradle/WatchFace/Wearable/src/main/res/layout/activity_complication_simple_config.xml
new file mode 100644
index 0000000..01f5cac
--- /dev/null
+++ b/prebuilts/gradle/WatchFace/Wearable/src/main/res/layout/activity_complication_simple_config.xml
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  ~ Copyright (C) 2016 The Android Open Source Project
+  ~
+  ~ Licensed under the Apache License, Version 2.0 (the "License");
+  ~ you may not use this file except in compliance with the License.
+  ~ You may obtain a copy of the License at
+  ~
+  ~      http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License.
+  -->
+<LinearLayout
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:orientation="vertical"
+    android:background="@color/dark_grey"
+    android:paddingTop="4dp">
+
+    <TextView
+        android:id="@+id/header"
+        android:layout_width="match_parent"
+        android:gravity="center"
+        android:text="@string/complication_simple_config_name"
+        android:textSize="20sp"
+        android:layout_height="wrap_content"/>
+
+    <android.support.wearable.view.WearableListView
+        android:id="@+id/wearable_list"
+        android:layout_height="wrap_content"
+        android:layout_width="match_parent">
+    </android.support.wearable.view.WearableListView>
+</LinearLayout>
\ No newline at end of file
diff --git a/prebuilts/gradle/WatchFace/Wearable/src/main/res/layout/activity_complication_simple_list_item.xml b/prebuilts/gradle/WatchFace/Wearable/src/main/res/layout/activity_complication_simple_list_item.xml
new file mode 100644
index 0000000..e995271
--- /dev/null
+++ b/prebuilts/gradle/WatchFace/Wearable/src/main/res/layout/activity_complication_simple_list_item.xml
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  ~ Copyright (C) 2016 The Android Open Source Project
+  ~
+  ~ Licensed under the Apache License, Version 2.0 (the "License");
+  ~ you may not use this file except in compliance with the License.
+  ~ You may obtain a copy of the License at
+  ~
+  ~      http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License.
+  -->
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+              android:orientation="horizontal"
+              android:layout_width="match_parent"
+              android:layout_height="wrap_content"
+              android:layout_gravity="center">
+    <ImageView
+        android:id="@+id/icon"
+        android:layout_width="wrap_content"
+        android:layout_height="match_parent"/>
+
+    <TextView
+        android:id="@+id/name"
+        android:layout_width="wrap_content"
+        android:layout_height="match_parent"
+        android:gravity="center"
+        android:textColor="@color/white"
+        android:textSize="18sp"/>
+</LinearLayout>
\ No newline at end of file
diff --git a/prebuilts/gradle/WatchFace/Wearable/src/main/res/values/arrays.xml b/prebuilts/gradle/WatchFace/Wearable/src/main/res/values/arrays.xml
new file mode 100644
index 0000000..a2e37ac
--- /dev/null
+++ b/prebuilts/gradle/WatchFace/Wearable/src/main/res/values/arrays.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (C) 2014 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<resources>
+    <string-array name="complication_simple_names">
+        <item>Left dial</item>
+        <item>Right dial</item>
+    </string-array>
+    <array name="complication_simple_icons">
+        <item>@drawable/complications_left_dial</item>
+        <item>@drawable/complications_right_dial</item>
+    </array>
+</resources>
\ No newline at end of file
diff --git a/prebuilts/gradle/WatchFace/Wearable/src/main/res/values/strings.xml b/prebuilts/gradle/WatchFace/Wearable/src/main/res/values/strings.xml
index 4090995..e4b2717 100644
--- a/prebuilts/gradle/WatchFace/Wearable/src/main/res/values/strings.xml
+++ b/prebuilts/gradle/WatchFace/Wearable/src/main/res/values/strings.xml
@@ -18,6 +18,7 @@
     <string name="opengl_name">Sample OpenGL</string>
     <string name="interactive_name">Sample Interactive</string>
     <string name="analog_name">Sample Analog</string>
+    <string name="complication_simple">Sample Complication Simple</string>
     <string name="sweep_name">Sample Sweep</string>
     <string name="card_bounds_name">Sample Card Bounds</string>
     <string name="digital_name">Sample Digital</string>
@@ -42,6 +43,9 @@
     <string name="title_activity_calendar_watch_face_permission">Calendar Permission Activity</string>
     <string name="calendar_permission_text">WatchFace requires Calendar access.</string>
 
+    <string name="complication_simple_config_name">Configuration</string>
+    <string name="complications_provider_random_number">Random Number</string>
+
     <!-- TODO: this should be shared (needs covering all the samples with Gradle build model) -->
     <string name="color_black">Black</string>
     <string name="color_blue">Blue</string>
diff --git a/prebuilts/gradle/WatchFace/gradle/wrapper/gradle-wrapper.properties b/prebuilts/gradle/WatchFace/gradle/wrapper/gradle-wrapper.properties
index 07fc193..128405e 100644
--- a/prebuilts/gradle/WatchFace/gradle/wrapper/gradle-wrapper.properties
+++ b/prebuilts/gradle/WatchFace/gradle/wrapper/gradle-wrapper.properties
@@ -1,6 +1,6 @@
-#Wed Apr 10 15:27:10 PDT 2013
+#Thu May 12 20:18:40 PDT 2016
 distributionBase=GRADLE_USER_HOME
 distributionPath=wrapper/dists
 zipStoreBase=GRADLE_USER_HOME
 zipStorePath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-2.8-all.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-2.10-all.zip
diff --git a/prebuilts/gradle/WatchFace/screenshots/complication_simple_face.png b/prebuilts/gradle/WatchFace/screenshots/complication_simple_face.png
new file mode 100644
index 0000000..f756b14
--- /dev/null
+++ b/prebuilts/gradle/WatchFace/screenshots/complication_simple_face.png
Binary files differ
diff --git a/prebuilts/gradle/WatchViewStub/README.md b/prebuilts/gradle/WatchViewStub/README.md
index 39c2809..04f4017 100644
--- a/prebuilts/gradle/WatchViewStub/README.md
+++ b/prebuilts/gradle/WatchViewStub/README.md
@@ -16,8 +16,8 @@
 Pre-requisites
 --------------
 
-- Android SDK v23
-- Android Build Tools v23.0.2
+- Android SDK 23
+- Android Build Tools v23.0.3
 - Android Support Repository
 
 Screenshots
@@ -46,7 +46,7 @@
 License
 -------
 
-Copyright 2014 The Android Open Source Project, Inc.
+Copyright 2016 The Android Open Source Project, Inc.
 
 Licensed to the Apache Software Foundation (ASF) under one or more contributor
 license agreements.  See the NOTICE file distributed with this work for
diff --git a/prebuilts/gradle/WatchViewStub/Wearable/build.gradle b/prebuilts/gradle/WatchViewStub/Wearable/build.gradle
index d31eedd..fa8f537 100644
--- a/prebuilts/gradle/WatchViewStub/Wearable/build.gradle
+++ b/prebuilts/gradle/WatchViewStub/Wearable/build.gradle
@@ -5,7 +5,7 @@
     }
 
     dependencies {
-        classpath 'com.android.tools.build:gradle:1.2.3'
+        classpath 'com.android.tools.build:gradle:2.1.2'
     }
 }
 
@@ -18,7 +18,7 @@
 
 
     compile 'com.google.android.gms:play-services-wearable:8.4.0'
-    compile 'com.android.support:support-v13:23.3.0'
+    compile 'com.android.support:support-v13:24.0.0-beta1'
 
     compile 'com.google.android.support:wearable:1.4.0'
 
@@ -35,7 +35,7 @@
 android {
     compileSdkVersion 23
 
-    buildToolsVersion "23.0.2"
+    buildToolsVersion "23.0.3"
 
     defaultConfig {
         versionCode 1
diff --git a/prebuilts/gradle/WatchViewStub/gradle/wrapper/gradle-wrapper.properties b/prebuilts/gradle/WatchViewStub/gradle/wrapper/gradle-wrapper.properties
index 07fc193..d570517 100644
--- a/prebuilts/gradle/WatchViewStub/gradle/wrapper/gradle-wrapper.properties
+++ b/prebuilts/gradle/WatchViewStub/gradle/wrapper/gradle-wrapper.properties
@@ -3,4 +3,4 @@
 distributionPath=wrapper/dists
 zipStoreBase=GRADLE_USER_HOME
 zipStorePath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-2.8-all.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-2.10-all.zip
diff --git a/prebuilts/gradle/WearDrawers/.google/packaging.yaml b/prebuilts/gradle/WearDrawers/.google/packaging.yaml
new file mode 100644
index 0000000..297b4fe
--- /dev/null
+++ b/prebuilts/gradle/WearDrawers/.google/packaging.yaml
@@ -0,0 +1,20 @@
+
+# GOOGLE SAMPLE PACKAGING DATA
+#
+# This file is used by Google as part of our samples packaging process.
+# End users may safely ignore this file. It has no relevance to other systems.
+---
+status:       PUBLISHED
+technologies: [Android]
+categories:   [Wearable]
+languages:    [Java]
+solutions:    [Mobile]
+github:       android-WearDrawers
+level:        INTERMEDIATE
+icon:         screenshots/icon-web.png
+apiRefs:
+    - android:android.support.wearable.activity.WearableActivity
+    - android:android.support.wearable.view.drawer.WearableActionDrawer
+    - android:android.support.wearable.view.drawer.WearableDrawerLayout
+    - android:android.support.wearable.view.drawer.WearableNavigationDrawer
+license: apache2
diff --git a/prebuilts/gradle/WearDrawers/CONTRIBUTING.md b/prebuilts/gradle/WearDrawers/CONTRIBUTING.md
new file mode 100644
index 0000000..faa8b5c
--- /dev/null
+++ b/prebuilts/gradle/WearDrawers/CONTRIBUTING.md
@@ -0,0 +1,35 @@
+# How to become a contributor and submit your own code
+
+## Contributor License Agreements
+
+We'd love to accept your sample apps and patches! Before we can take them, we
+have to jump a couple of legal hurdles.
+
+Please fill out either the individual or corporate Contributor License Agreement (CLA).
+
+  * If you are an individual writing original source code and you're sure you
+    own the intellectual property, then you'll need to sign an [individual CLA]
+    (https://cla.developers.google.com).
+  * If you work for a company that wants to allow you to contribute your work,
+    then you'll need to sign a [corporate CLA]
+    (https://cla.developers.google.com).
+
+Follow either of the two links above to access the appropriate CLA and
+instructions for how to sign and return it. Once we receive it, we'll be able to
+accept your pull requests.
+
+## Contributing A Patch
+
+1. Submit an issue describing your proposed change to the repo in question.
+1. The repo owner will respond to your issue promptly.
+1. If your proposed change is accepted, and you haven't already done so, sign a
+   Contributor License Agreement (see details above).
+1. Fork the desired repo, develop and test your code changes.
+1. Ensure that your code adheres to the existing style in the sample to which
+   you are contributing. Refer to the
+   [Android Code Style Guide]
+   (https://source.android.com/source/code-style.html) for the
+   recommended coding standards for this organization.
+1. Ensure that your code has an appropriate set of unit tests which all pass.
+1. Submit a pull request.
+
diff --git a/prebuilts/gradle/WearDrawers/LICENSE b/prebuilts/gradle/WearDrawers/LICENSE
new file mode 100644
index 0000000..4f22946
--- /dev/null
+++ b/prebuilts/gradle/WearDrawers/LICENSE
@@ -0,0 +1,647 @@
+Apache License
+--------------
+
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "{}"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright {yyyy} {name of copyright owner}
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+All image and audio files (including *.png, *.jpg, *.svg, *.mp3, *.wav 
+and *.ogg) are licensed under the CC-BY-NC license. All other files are 
+licensed under the Apache 2 license.
+
+CC-BY-NC License
+----------------
+
+Attribution-NonCommercial-ShareAlike 4.0 International
+
+=======================================================================
+
+Creative Commons Corporation ("Creative Commons") is not a law firm and
+does not provide legal services or legal advice. Distribution of
+Creative Commons public licenses does not create a lawyer-client or
+other relationship. Creative Commons makes its licenses and related
+information available on an "as-is" basis. Creative Commons gives no
+warranties regarding its licenses, any material licensed under their
+terms and conditions, or any related information. Creative Commons
+disclaims all liability for damages resulting from their use to the
+fullest extent possible.
+
+Using Creative Commons Public Licenses
+
+Creative Commons public licenses provide a standard set of terms and
+conditions that creators and other rights holders may use to share
+original works of authorship and other material subject to copyright
+and certain other rights specified in the public license below. The
+following considerations are for informational purposes only, are not
+exhaustive, and do not form part of our licenses.
+
+     Considerations for licensors: Our public licenses are
+     intended for use by those authorized to give the public
+     permission to use material in ways otherwise restricted by
+     copyright and certain other rights. Our licenses are
+     irrevocable. Licensors should read and understand the terms
+     and conditions of the license they choose before applying it.
+     Licensors should also secure all rights necessary before
+     applying our licenses so that the public can reuse the
+     material as expected. Licensors should clearly mark any
+     material not subject to the license. This includes other CC-
+     licensed material, or material used under an exception or
+     limitation to copyright. More considerations for licensors:
+	wiki.creativecommons.org/Considerations_for_licensors
+
+     Considerations for the public: By using one of our public
+     licenses, a licensor grants the public permission to use the
+     licensed material under specified terms and conditions. If
+     the licensor's permission is not necessary for any reason--for
+     example, because of any applicable exception or limitation to
+     copyright--then that use is not regulated by the license. Our
+     licenses grant only permissions under copyright and certain
+     other rights that a licensor has authority to grant. Use of
+     the licensed material may still be restricted for other
+     reasons, including because others have copyright or other
+     rights in the material. A licensor may make special requests,
+     such as asking that all changes be marked or described.
+     Although not required by our licenses, you are encouraged to
+     respect those requests where reasonable. More_considerations
+     for the public: 
+	wiki.creativecommons.org/Considerations_for_licensees
+
+=======================================================================
+
+Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International
+Public License
+
+By exercising the Licensed Rights (defined below), You accept and agree
+to be bound by the terms and conditions of this Creative Commons
+Attribution-NonCommercial-ShareAlike 4.0 International Public License
+("Public License"). To the extent this Public License may be
+interpreted as a contract, You are granted the Licensed Rights in
+consideration of Your acceptance of these terms and conditions, and the
+Licensor grants You such rights in consideration of benefits the
+Licensor receives from making the Licensed Material available under
+these terms and conditions.
+
+
+Section 1 -- Definitions.
+
+  a. Adapted Material means material subject to Copyright and Similar
+     Rights that is derived from or based upon the Licensed Material
+     and in which the Licensed Material is translated, altered,
+     arranged, transformed, or otherwise modified in a manner requiring
+     permission under the Copyright and Similar Rights held by the
+     Licensor. For purposes of this Public License, where the Licensed
+     Material is a musical work, performance, or sound recording,
+     Adapted Material is always produced where the Licensed Material is
+     synched in timed relation with a moving image.
+
+  b. Adapter's License means the license You apply to Your Copyright
+     and Similar Rights in Your contributions to Adapted Material in
+     accordance with the terms and conditions of this Public License.
+
+  c. BY-NC-SA Compatible License means a license listed at
+     creativecommons.org/compatiblelicenses, approved by Creative
+     Commons as essentially the equivalent of this Public License.
+
+  d. Copyright and Similar Rights means copyright and/or similar rights
+     closely related to copyright including, without limitation,
+     performance, broadcast, sound recording, and Sui Generis Database
+     Rights, without regard to how the rights are labeled or
+     categorized. For purposes of this Public License, the rights
+     specified in Section 2(b)(1)-(2) are not Copyright and Similar
+     Rights.
+
+  e. Effective Technological Measures means those measures that, in the
+     absence of proper authority, may not be circumvented under laws
+     fulfilling obligations under Article 11 of the WIPO Copyright
+     Treaty adopted on December 20, 1996, and/or similar international
+     agreements.
+
+  f. Exceptions and Limitations means fair use, fair dealing, and/or
+     any other exception or limitation to Copyright and Similar Rights
+     that applies to Your use of the Licensed Material.
+
+  g. License Elements means the license attributes listed in the name
+     of a Creative Commons Public License. The License Elements of this
+     Public License are Attribution, NonCommercial, and ShareAlike.
+
+  h. Licensed Material means the artistic or literary work, database,
+     or other material to which the Licensor applied this Public
+     License.
+
+  i. Licensed Rights means the rights granted to You subject to the
+     terms and conditions of this Public License, which are limited to
+     all Copyright and Similar Rights that apply to Your use of the
+     Licensed Material and that the Licensor has authority to license.
+
+  j. Licensor means the individual(s) or entity(ies) granting rights
+     under this Public License.
+
+  k. NonCommercial means not primarily intended for or directed towards
+     commercial advantage or monetary compensation. For purposes of
+     this Public License, the exchange of the Licensed Material for
+     other material subject to Copyright and Similar Rights by digital
+     file-sharing or similar means is NonCommercial provided there is
+     no payment of monetary compensation in connection with the
+     exchange.
+
+  l. Share means to provide material to the public by any means or
+     process that requires permission under the Licensed Rights, such
+     as reproduction, public display, public performance, distribution,
+     dissemination, communication, or importation, and to make material
+     available to the public including in ways that members of the
+     public may access the material from a place and at a time
+     individually chosen by them.
+
+  m. Sui Generis Database Rights means rights other than copyright
+     resulting from Directive 96/9/EC of the European Parliament and of
+     the Council of 11 March 1996 on the legal protection of databases,
+     as amended and/or succeeded, as well as other essentially
+     equivalent rights anywhere in the world.
+
+  n. You means the individual or entity exercising the Licensed Rights
+     under this Public License. Your has a corresponding meaning.
+
+
+Section 2 -- Scope.
+
+  a. License grant.
+
+       1. Subject to the terms and conditions of this Public License,
+          the Licensor hereby grants You a worldwide, royalty-free,
+          non-sublicensable, non-exclusive, irrevocable license to
+          exercise the Licensed Rights in the Licensed Material to:
+
+            a. reproduce and Share the Licensed Material, in whole or
+               in part, for NonCommercial purposes only; and
+
+            b. produce, reproduce, and Share Adapted Material for
+               NonCommercial purposes only.
+
+       2. Exceptions and Limitations. For the avoidance of doubt, where
+          Exceptions and Limitations apply to Your use, this Public
+          License does not apply, and You do not need to comply with
+          its terms and conditions.
+
+       3. Term. The term of this Public License is specified in Section
+          6(a).
+
+       4. Media and formats; technical modifications allowed. The
+          Licensor authorizes You to exercise the Licensed Rights in
+          all media and formats whether now known or hereafter created,
+          and to make technical modifications necessary to do so. The
+          Licensor waives and/or agrees not to assert any right or
+          authority to forbid You from making technical modifications
+          necessary to exercise the Licensed Rights, including
+          technical modifications necessary to circumvent Effective
+          Technological Measures. For purposes of this Public License,
+          simply making modifications authorized by this Section 2(a)
+          (4) never produces Adapted Material.
+
+       5. Downstream recipients.
+
+            a. Offer from the Licensor -- Licensed Material. Every
+               recipient of the Licensed Material automatically
+               receives an offer from the Licensor to exercise the
+               Licensed Rights under the terms and conditions of this
+               Public License.
+
+            b. Additional offer from the Licensor -- Adapted Material.
+               Every recipient of Adapted Material from You
+               automatically receives an offer from the Licensor to
+               exercise the Licensed Rights in the Adapted Material
+               under the conditions of the Adapter's License You apply.
+
+            c. No downstream restrictions. You may not offer or impose
+               any additional or different terms or conditions on, or
+               apply any Effective Technological Measures to, the
+               Licensed Material if doing so restricts exercise of the
+               Licensed Rights by any recipient of the Licensed
+               Material.
+
+       6. No endorsement. Nothing in this Public License constitutes or
+          may be construed as permission to assert or imply that You
+          are, or that Your use of the Licensed Material is, connected
+          with, or sponsored, endorsed, or granted official status by,
+          the Licensor or others designated to receive attribution as
+          provided in Section 3(a)(1)(A)(i).
+
+  b. Other rights.
+
+       1. Moral rights, such as the right of integrity, are not
+          licensed under this Public License, nor are publicity,
+          privacy, and/or other similar personality rights; however, to
+          the extent possible, the Licensor waives and/or agrees not to
+          assert any such rights held by the Licensor to the limited
+          extent necessary to allow You to exercise the Licensed
+          Rights, but not otherwise.
+
+       2. Patent and trademark rights are not licensed under this
+          Public License.
+
+       3. To the extent possible, the Licensor waives any right to
+          collect royalties from You for the exercise of the Licensed
+          Rights, whether directly or through a collecting society
+          under any voluntary or waivable statutory or compulsory
+          licensing scheme. In all other cases the Licensor expressly
+          reserves any right to collect such royalties, including when
+          the Licensed Material is used other than for NonCommercial
+          purposes.
+
+
+Section 3 -- License Conditions.
+
+Your exercise of the Licensed Rights is expressly made subject to the
+following conditions.
+
+  a. Attribution.
+
+       1. If You Share the Licensed Material (including in modified
+          form), You must:
+
+            a. retain the following if it is supplied by the Licensor
+               with the Licensed Material:
+
+                 i. identification of the creator(s) of the Licensed
+                    Material and any others designated to receive
+                    attribution, in any reasonable manner requested by
+                    the Licensor (including by pseudonym if
+                    designated);
+
+                ii. a copyright notice;
+
+               iii. a notice that refers to this Public License;
+
+                iv. a notice that refers to the disclaimer of
+                    warranties;
+
+                 v. a URI or hyperlink to the Licensed Material to the
+                    extent reasonably practicable;
+
+            b. indicate if You modified the Licensed Material and
+               retain an indication of any previous modifications; and
+
+            c. indicate the Licensed Material is licensed under this
+               Public License, and include the text of, or the URI or
+               hyperlink to, this Public License.
+
+       2. You may satisfy the conditions in Section 3(a)(1) in any
+          reasonable manner based on the medium, means, and context in
+          which You Share the Licensed Material. For example, it may be
+          reasonable to satisfy the conditions by providing a URI or
+          hyperlink to a resource that includes the required
+          information.
+       3. If requested by the Licensor, You must remove any of the
+          information required by Section 3(a)(1)(A) to the extent
+          reasonably practicable.
+
+  b. ShareAlike.
+
+     In addition to the conditions in Section 3(a), if You Share
+     Adapted Material You produce, the following conditions also apply.
+
+       1. The Adapter's License You apply must be a Creative Commons
+          license with the same License Elements, this version or
+          later, or a BY-NC-SA Compatible License.
+
+       2. You must include the text of, or the URI or hyperlink to, the
+          Adapter's License You apply. You may satisfy this condition
+          in any reasonable manner based on the medium, means, and
+          context in which You Share Adapted Material.
+
+       3. You may not offer or impose any additional or different terms
+          or conditions on, or apply any Effective Technological
+          Measures to, Adapted Material that restrict exercise of the
+          rights granted under the Adapter's License You apply.
+
+
+Section 4 -- Sui Generis Database Rights.
+
+Where the Licensed Rights include Sui Generis Database Rights that
+apply to Your use of the Licensed Material:
+
+  a. for the avoidance of doubt, Section 2(a)(1) grants You the right
+     to extract, reuse, reproduce, and Share all or a substantial
+     portion of the contents of the database for NonCommercial purposes
+     only;
+
+  b. if You include all or a substantial portion of the database
+     contents in a database in which You have Sui Generis Database
+     Rights, then the database in which You have Sui Generis Database
+     Rights (but not its individual contents) is Adapted Material,
+     including for purposes of Section 3(b); and
+
+  c. You must comply with the conditions in Section 3(a) if You Share
+     all or a substantial portion of the contents of the database.
+
+For the avoidance of doubt, this Section 4 supplements and does not
+replace Your obligations under this Public License where the Licensed
+Rights include other Copyright and Similar Rights.
+
+
+Section 5 -- Disclaimer of Warranties and Limitation of Liability.
+
+  a. UNLESS OTHERWISE SEPARATELY UNDERTAKEN BY THE LICENSOR, TO THE
+     EXTENT POSSIBLE, THE LICENSOR OFFERS THE LICENSED MATERIAL AS-IS
+     AND AS-AVAILABLE, AND MAKES NO REPRESENTATIONS OR WARRANTIES OF
+     ANY KIND CONCERNING THE LICENSED MATERIAL, WHETHER EXPRESS,
+     IMPLIED, STATUTORY, OR OTHER. THIS INCLUDES, WITHOUT LIMITATION,
+     WARRANTIES OF TITLE, MERCHANTABILITY, FITNESS FOR A PARTICULAR
+     PURPOSE, NON-INFRINGEMENT, ABSENCE OF LATENT OR OTHER DEFECTS,
+     ACCURACY, OR THE PRESENCE OR ABSENCE OF ERRORS, WHETHER OR NOT
+     KNOWN OR DISCOVERABLE. WHERE DISCLAIMERS OF WARRANTIES ARE NOT
+     ALLOWED IN FULL OR IN PART, THIS DISCLAIMER MAY NOT APPLY TO YOU.
+
+  b. TO THE EXTENT POSSIBLE, IN NO EVENT WILL THE LICENSOR BE LIABLE
+     TO YOU ON ANY LEGAL THEORY (INCLUDING, WITHOUT LIMITATION,
+     NEGLIGENCE) OR OTHERWISE FOR ANY DIRECT, SPECIAL, INDIRECT,
+     INCIDENTAL, CONSEQUENTIAL, PUNITIVE, EXEMPLARY, OR OTHER LOSSES,
+     COSTS, EXPENSES, OR DAMAGES ARISING OUT OF THIS PUBLIC LICENSE OR
+     USE OF THE LICENSED MATERIAL, EVEN IF THE LICENSOR HAS BEEN
+     ADVISED OF THE POSSIBILITY OF SUCH LOSSES, COSTS, EXPENSES, OR
+     DAMAGES. WHERE A LIMITATION OF LIABILITY IS NOT ALLOWED IN FULL OR
+     IN PART, THIS LIMITATION MAY NOT APPLY TO YOU.
+
+  c. The disclaimer of warranties and limitation of liability provided
+     above shall be interpreted in a manner that, to the extent
+     possible, most closely approximates an absolute disclaimer and
+     waiver of all liability.
+
+
+Section 6 -- Term and Termination.
+
+  a. This Public License applies for the term of the Copyright and
+     Similar Rights licensed here. However, if You fail to comply with
+     this Public License, then Your rights under this Public License
+     terminate automatically.
+
+  b. Where Your right to use the Licensed Material has terminated under
+     Section 6(a), it reinstates:
+
+       1. automatically as of the date the violation is cured, provided
+          it is cured within 30 days of Your discovery of the
+          violation; or
+
+       2. upon express reinstatement by the Licensor.
+
+     For the avoidance of doubt, this Section 6(b) does not affect any
+     right the Licensor may have to seek remedies for Your violations
+     of this Public License.
+
+  c. For the avoidance of doubt, the Licensor may also offer the
+     Licensed Material under separate terms or conditions or stop
+     distributing the Licensed Material at any time; however, doing so
+     will not terminate this Public License.
+
+  d. Sections 1, 5, 6, 7, and 8 survive termination of this Public
+     License.
+
+
+Section 7 -- Other Terms and Conditions.
+
+  a. The Licensor shall not be bound by any additional or different
+     terms or conditions communicated by You unless expressly agreed.
+
+  b. Any arrangements, understandings, or agreements regarding the
+     Licensed Material not stated herein are separate from and
+     independent of the terms and conditions of this Public License.
+
+
+Section 8 -- Interpretation.
+
+  a. For the avoidance of doubt, this Public License does not, and
+     shall not be interpreted to, reduce, limit, restrict, or impose
+     conditions on any use of the Licensed Material that could lawfully
+     be made without permission under this Public License.
+
+  b. To the extent possible, if any provision of this Public License is
+     deemed unenforceable, it shall be automatically reformed to the
+     minimum extent necessary to make it enforceable. If the provision
+     cannot be reformed, it shall be severed from this Public License
+     without affecting the enforceability of the remaining terms and
+     conditions.
+
+  c. No term or condition of this Public License will be waived and no
+     failure to comply consented to unless expressly agreed to by the
+     Licensor.
+
+  d. Nothing in this Public License constitutes or may be interpreted
+     as a limitation upon, or waiver of, any privileges and immunities
+     that apply to the Licensor or You, including from the legal
+     processes of any jurisdiction or authority.
+
+=======================================================================
+
+Creative Commons is not a party to its public licenses.
+Notwithstanding, Creative Commons may elect to apply one of its public
+licenses to material it publishes and in those instances will be
+considered the "Licensor." Except for the limited purpose of indicating
+that material is shared under a Creative Commons public license or as
+otherwise permitted by the Creative Commons policies published at
+creativecommons.org/policies, Creative Commons does not authorize the
+use of the trademark "Creative Commons" or any other trademark or logo
+of Creative Commons without its prior written consent including,
+without limitation, in connection with any unauthorized modifications
+to any of its public licenses or any other arrangements,
+understandings, or agreements concerning use of licensed material. For
+the avoidance of doubt, this paragraph does not form part of the public
+licenses.
+
+Creative Commons may be contacted at creativecommons.org.
+
diff --git a/prebuilts/gradle/WearDrawers/NOTICE b/prebuilts/gradle/WearDrawers/NOTICE
new file mode 100644
index 0000000..29ea77b
--- /dev/null
+++ b/prebuilts/gradle/WearDrawers/NOTICE
@@ -0,0 +1,16 @@
+
+This sample uses the following software:
+
+Copyright 2016 The Android Open Source Project
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+   http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
diff --git a/prebuilts/gradle/WearDrawers/README.md b/prebuilts/gradle/WearDrawers/README.md
new file mode 100644
index 0000000..a7d8454
--- /dev/null
+++ b/prebuilts/gradle/WearDrawers/README.md
@@ -0,0 +1,76 @@
+
+Android WearDrawers Sample
+===================================
+
+A simple sample that demonstrates Navigation and Action Drawers, part of Material Design for Wear.
+
+Introduction
+------------
+
+Steps for trying out this sample:
+
+            * Compile and install the wearable app onto your Wear device or emulator.
+            (**Note:** You must install this app directly to your Wear device or emulator.
+            If installed on a phone, it will not be automatically pushed to a paired Wear
+            device, see [here][2] for more info).
+
+            This sample uses the planets in our solar system to demonstrate the two Android Wear
+            drawer components and concepts relating to [Android Wear][1] and [Material Design][3]:
+            * Customizes and enables screen/planet changes with the [Navigation Drawer][4]
+            * Adds customized actions to each screen using the [Action Drawer][5]
+
+            [1]: http://developer.android.com/wear/
+            [2]: https://developer.android.com/training/wearables/apps/creating.html#Install
+            [3]: http://www.google.com/design/wear
+            [4]: http://www.google.com/design/spec-wear/components/navigation-drawer.html
+            [5]: http://www.google.com/design/spec-wear/components/action-drawer.html
+
+Pre-requisites
+--------------
+
+- Android SDK 23
+- Android Build Tools v23.0.3
+- Android Support Repository
+
+Screenshots
+-------------
+
+<img src="screenshots/wear-round-1.png" height="400" alt="Screenshot"/> <img src="screenshots/wear-round-2.png" height="400" alt="Screenshot"/> <img src="screenshots/wear-round-3.png" height="400" alt="Screenshot"/> <img src="screenshots/wear-round-4.png" height="400" alt="Screenshot"/> 
+
+Getting Started
+---------------
+
+This sample uses the Gradle build system. To build this project, use the
+"gradlew build" command or use "Import Project" in Android Studio.
+
+Support
+-------
+
+- Google+ Community: https://plus.google.com/communities/105153134372062985968
+- Stack Overflow: http://stackoverflow.com/questions/tagged/android
+
+If you've found an error in this sample, please file an issue:
+https://github.com/googlesamples/android-WearDrawers
+
+Patches are encouraged, and may be submitted by forking this project and
+submitting a pull request through GitHub. Please see CONTRIBUTING.md for more details.
+
+License
+-------
+
+Copyright 2016 The Android Open Source Project, Inc.
+
+Licensed to the Apache Software Foundation (ASF) under one or more contributor
+license agreements.  See the NOTICE file distributed with this work for
+additional information regarding copyright ownership.  The ASF licenses this
+file to you under the Apache License, Version 2.0 (the "License"); you may not
+use this file except in compliance with the License.  You may obtain a copy of
+the License at
+
+http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  See the
+License for the specific language governing permissions and limitations under
+the License.
diff --git a/prebuilts/gradle/WearDrawers/Wearable/build.gradle b/prebuilts/gradle/WearDrawers/Wearable/build.gradle
new file mode 100644
index 0000000..6ef783a
--- /dev/null
+++ b/prebuilts/gradle/WearDrawers/Wearable/build.gradle
@@ -0,0 +1,66 @@
+
+buildscript {
+    repositories {
+        jcenter()
+    }
+
+    dependencies {
+        classpath 'com.android.tools.build:gradle:2.1.2'
+    }
+}
+
+apply plugin: 'com.android.application'
+
+
+
+dependencies {
+
+
+    provided "com.google.android.wearable:wearable:1.0.0"
+
+    compile 'com.google.android.gms:play-services-wearable:8.4.0'
+    compile 'com.android.support:support-v13:24.0.0-beta1'
+
+    compile 'com.google.android.support:wearable:2.0.0-alpha1'
+
+}
+
+// The sample build uses multiple directories to
+// keep boilerplate and common code separate from
+// the main sample code.
+List<String> dirs = [
+    'main',     // main sample code; look here for the interesting stuff.
+    'common',   // components that are reused by multiple samples
+    'template'] // boilerplate code that is generated by the sample template process
+
+android {
+    compileSdkVersion 23
+
+    buildToolsVersion "23.0.3"
+
+    defaultConfig {
+        versionCode 1
+        versionName "1.0"
+
+        minSdkVersion 23
+
+        targetSdkVersion 23
+    }
+
+    compileOptions {
+        sourceCompatibility JavaVersion.VERSION_1_7
+        targetCompatibility JavaVersion.VERSION_1_7
+    }
+
+    sourceSets {
+        main {
+            dirs.each { dir ->
+                java.srcDirs "src/${dir}/java"
+                res.srcDirs "src/${dir}/res"
+            }
+        }
+        androidTest.setRoot('tests')
+        androidTest.java.srcDirs = ['tests/src']
+
+    }
+}
diff --git a/prebuilts/gradle/WearDrawers/Wearable/src/main/AndroidManifest.xml b/prebuilts/gradle/WearDrawers/Wearable/src/main/AndroidManifest.xml
new file mode 100644
index 0000000..3044d19
--- /dev/null
+++ b/prebuilts/gradle/WearDrawers/Wearable/src/main/AndroidManifest.xml
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="utf-8"?>
+<manifest package="com.example.android.wearable.wear.weardrawers"
+          xmlns:android="http://schemas.android.com/apk/res/android">
+
+    <uses-feature android:name="android.hardware.type.watch"/>
+    <!-- Required for Always-on. -->
+    <uses-permission android:name="android.permission.WAKE_LOCK" />
+
+    <application
+        android:allowBackup="true"
+        android:icon="@mipmap/ic_launcher"
+        android:label="@string/app_name"
+        android:supportsRtl="true"
+        android:theme="@android:style/Theme.DeviceDefault">
+
+        <!--If you want your app to run on pre-22, then set required to false -->
+        <uses-library android:name="com.google.android.wearable" android:required="false" />
+
+        <activity
+            android:name=".MainActivity"
+            android:label="@string/app_name">
+            <intent-filter>
+                <action android:name="android.intent.action.MAIN"/>
+
+                <category android:name="android.intent.category.LAUNCHER"/>
+            </intent-filter>
+        </activity>
+    </application>
+</manifest>
diff --git a/prebuilts/gradle/WearDrawers/Wearable/src/main/java/com/example/android/wearable/wear/weardrawers/Planet.java b/prebuilts/gradle/WearDrawers/Wearable/src/main/java/com/example/android/wearable/wear/weardrawers/Planet.java
new file mode 100644
index 0000000..6796049
--- /dev/null
+++ b/prebuilts/gradle/WearDrawers/Wearable/src/main/java/com/example/android/wearable/wear/weardrawers/Planet.java
@@ -0,0 +1,69 @@
+/*
+Copyright 2016 The Android Open Source Project
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+ */
+package com.example.android.wearable.wear.weardrawers;
+
+/**
+ * Represents planet for app.
+ */
+public class Planet {
+
+    private String name;
+    private String navigationIcon;
+    private String image;
+    private String moons;
+    private String volume;
+    private String surfaceArea;
+
+    public Planet(
+            String name,
+            String navigationIcon,
+            String image,
+            String moons,
+            String volume,
+            String surfaceArea) {
+
+        this.name = name;
+        this.navigationIcon = navigationIcon;
+        this.image = image;
+        this.moons = moons;
+        this.volume = volume;
+        this.surfaceArea = surfaceArea;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public String getNavigationIcon() {
+        return navigationIcon;
+    }
+
+    public String getImage() {
+        return image;
+    }
+
+    public String getMoons() {
+        return moons;
+    }
+
+    public String getVolume() {
+        return volume;
+    }
+
+    public String getSurfaceArea() {
+        return surfaceArea;
+    }
+}
\ No newline at end of file
diff --git a/prebuilts/gradle/WearDrawers/Wearable/src/main/res/drawable-hdpi/earth.png b/prebuilts/gradle/WearDrawers/Wearable/src/main/res/drawable-hdpi/earth.png
new file mode 100644
index 0000000..13abd77
--- /dev/null
+++ b/prebuilts/gradle/WearDrawers/Wearable/src/main/res/drawable-hdpi/earth.png
Binary files differ
diff --git a/prebuilts/gradle/WearDrawers/Wearable/src/main/res/drawable-hdpi/ic_e_white_48dp.png b/prebuilts/gradle/WearDrawers/Wearable/src/main/res/drawable-hdpi/ic_e_white_48dp.png
new file mode 100644
index 0000000..3dc2098
--- /dev/null
+++ b/prebuilts/gradle/WearDrawers/Wearable/src/main/res/drawable-hdpi/ic_e_white_48dp.png
Binary files differ
diff --git a/prebuilts/gradle/WearDrawers/Wearable/src/main/res/drawable-hdpi/ic_info_outline_black_18dp.png b/prebuilts/gradle/WearDrawers/Wearable/src/main/res/drawable-hdpi/ic_info_outline_black_18dp.png
new file mode 100644
index 0000000..05803bd
--- /dev/null
+++ b/prebuilts/gradle/WearDrawers/Wearable/src/main/res/drawable-hdpi/ic_info_outline_black_18dp.png
Binary files differ
diff --git a/prebuilts/gradle/WearDrawers/Wearable/src/main/res/drawable-hdpi/ic_j_white_48dp.png b/prebuilts/gradle/WearDrawers/Wearable/src/main/res/drawable-hdpi/ic_j_white_48dp.png
new file mode 100644
index 0000000..0371589
--- /dev/null
+++ b/prebuilts/gradle/WearDrawers/Wearable/src/main/res/drawable-hdpi/ic_j_white_48dp.png
Binary files differ
diff --git a/prebuilts/gradle/WearDrawers/Wearable/src/main/res/drawable-hdpi/ic_m_white_48dp.png b/prebuilts/gradle/WearDrawers/Wearable/src/main/res/drawable-hdpi/ic_m_white_48dp.png
new file mode 100644
index 0000000..00b9858
--- /dev/null
+++ b/prebuilts/gradle/WearDrawers/Wearable/src/main/res/drawable-hdpi/ic_m_white_48dp.png
Binary files differ
diff --git a/prebuilts/gradle/WearDrawers/Wearable/src/main/res/drawable-hdpi/ic_n_white_48dp.png b/prebuilts/gradle/WearDrawers/Wearable/src/main/res/drawable-hdpi/ic_n_white_48dp.png
new file mode 100644
index 0000000..33eceae
--- /dev/null
+++ b/prebuilts/gradle/WearDrawers/Wearable/src/main/res/drawable-hdpi/ic_n_white_48dp.png
Binary files differ
diff --git a/prebuilts/gradle/WearDrawers/Wearable/src/main/res/drawable-hdpi/ic_s_white_48dp.png b/prebuilts/gradle/WearDrawers/Wearable/src/main/res/drawable-hdpi/ic_s_white_48dp.png
new file mode 100644
index 0000000..f767c8d
--- /dev/null
+++ b/prebuilts/gradle/WearDrawers/Wearable/src/main/res/drawable-hdpi/ic_s_white_48dp.png
Binary files differ
diff --git a/prebuilts/gradle/WearDrawers/Wearable/src/main/res/drawable-hdpi/ic_u_white_48dp.png b/prebuilts/gradle/WearDrawers/Wearable/src/main/res/drawable-hdpi/ic_u_white_48dp.png
new file mode 100644
index 0000000..a3ba71b
--- /dev/null
+++ b/prebuilts/gradle/WearDrawers/Wearable/src/main/res/drawable-hdpi/ic_u_white_48dp.png
Binary files differ
diff --git a/prebuilts/gradle/WearDrawers/Wearable/src/main/res/drawable-hdpi/ic_v_white_48dp.png b/prebuilts/gradle/WearDrawers/Wearable/src/main/res/drawable-hdpi/ic_v_white_48dp.png
new file mode 100644
index 0000000..ddfaffe
--- /dev/null
+++ b/prebuilts/gradle/WearDrawers/Wearable/src/main/res/drawable-hdpi/ic_v_white_48dp.png
Binary files differ
diff --git a/prebuilts/gradle/WearDrawers/Wearable/src/main/res/drawable-hdpi/jupiter.png b/prebuilts/gradle/WearDrawers/Wearable/src/main/res/drawable-hdpi/jupiter.png
new file mode 100644
index 0000000..8915025
--- /dev/null
+++ b/prebuilts/gradle/WearDrawers/Wearable/src/main/res/drawable-hdpi/jupiter.png
Binary files differ
diff --git a/prebuilts/gradle/WearDrawers/Wearable/src/main/res/drawable-hdpi/mars.png b/prebuilts/gradle/WearDrawers/Wearable/src/main/res/drawable-hdpi/mars.png
new file mode 100644
index 0000000..ac7e4f8
--- /dev/null
+++ b/prebuilts/gradle/WearDrawers/Wearable/src/main/res/drawable-hdpi/mars.png
Binary files differ
diff --git a/prebuilts/gradle/WearDrawers/Wearable/src/main/res/drawable-hdpi/mercury.png b/prebuilts/gradle/WearDrawers/Wearable/src/main/res/drawable-hdpi/mercury.png
new file mode 100644
index 0000000..06329ca
--- /dev/null
+++ b/prebuilts/gradle/WearDrawers/Wearable/src/main/res/drawable-hdpi/mercury.png
Binary files differ
diff --git a/prebuilts/gradle/WearDrawers/Wearable/src/main/res/drawable-hdpi/neptune.png b/prebuilts/gradle/WearDrawers/Wearable/src/main/res/drawable-hdpi/neptune.png
new file mode 100644
index 0000000..ce12b37
--- /dev/null
+++ b/prebuilts/gradle/WearDrawers/Wearable/src/main/res/drawable-hdpi/neptune.png
Binary files differ
diff --git a/prebuilts/gradle/WearDrawers/Wearable/src/main/res/drawable-hdpi/saturn.png b/prebuilts/gradle/WearDrawers/Wearable/src/main/res/drawable-hdpi/saturn.png
new file mode 100644
index 0000000..9f51ca4
--- /dev/null
+++ b/prebuilts/gradle/WearDrawers/Wearable/src/main/res/drawable-hdpi/saturn.png
Binary files differ
diff --git a/prebuilts/gradle/WearDrawers/Wearable/src/main/res/drawable-hdpi/uranus.png b/prebuilts/gradle/WearDrawers/Wearable/src/main/res/drawable-hdpi/uranus.png
new file mode 100644
index 0000000..0cdf788
--- /dev/null
+++ b/prebuilts/gradle/WearDrawers/Wearable/src/main/res/drawable-hdpi/uranus.png
Binary files differ
diff --git a/prebuilts/gradle/WearDrawers/Wearable/src/main/res/drawable-hdpi/venus.png b/prebuilts/gradle/WearDrawers/Wearable/src/main/res/drawable-hdpi/venus.png
new file mode 100644
index 0000000..68fee0e
--- /dev/null
+++ b/prebuilts/gradle/WearDrawers/Wearable/src/main/res/drawable-hdpi/venus.png
Binary files differ
diff --git a/prebuilts/gradle/WearDrawers/Wearable/src/main/res/drawable-mdpi/ic_info_outline_black_18dp.png b/prebuilts/gradle/WearDrawers/Wearable/src/main/res/drawable-mdpi/ic_info_outline_black_18dp.png
new file mode 100644
index 0000000..bb6095b
--- /dev/null
+++ b/prebuilts/gradle/WearDrawers/Wearable/src/main/res/drawable-mdpi/ic_info_outline_black_18dp.png
Binary files differ
diff --git a/prebuilts/gradle/WearDrawers/Wearable/src/main/res/drawable-xhdpi/ic_info_outline_black_18dp.png b/prebuilts/gradle/WearDrawers/Wearable/src/main/res/drawable-xhdpi/ic_info_outline_black_18dp.png
new file mode 100644
index 0000000..4b5ab06
--- /dev/null
+++ b/prebuilts/gradle/WearDrawers/Wearable/src/main/res/drawable-xhdpi/ic_info_outline_black_18dp.png
Binary files differ
diff --git a/prebuilts/gradle/WearDrawers/Wearable/src/main/res/drawable-xxhdpi/ic_info_outline_black_18dp.png b/prebuilts/gradle/WearDrawers/Wearable/src/main/res/drawable-xxhdpi/ic_info_outline_black_18dp.png
new file mode 100644
index 0000000..0b465fc
--- /dev/null
+++ b/prebuilts/gradle/WearDrawers/Wearable/src/main/res/drawable-xxhdpi/ic_info_outline_black_18dp.png
Binary files differ
diff --git a/prebuilts/gradle/WearDrawers/Wearable/src/main/res/drawable-xxxhdpi/ic_info_outline_black_18dp.png b/prebuilts/gradle/WearDrawers/Wearable/src/main/res/drawable-xxxhdpi/ic_info_outline_black_18dp.png
new file mode 100644
index 0000000..3847a9f
--- /dev/null
+++ b/prebuilts/gradle/WearDrawers/Wearable/src/main/res/drawable-xxxhdpi/ic_info_outline_black_18dp.png
Binary files differ
diff --git a/prebuilts/gradle/WearDrawers/Wearable/src/main/res/layout/fragment_planet.xml b/prebuilts/gradle/WearDrawers/Wearable/src/main/res/layout/fragment_planet.xml
new file mode 100644
index 0000000..6409eb0
--- /dev/null
+++ b/prebuilts/gradle/WearDrawers/Wearable/src/main/res/layout/fragment_planet.xml
@@ -0,0 +1,20 @@
+<!--
+  Copyright 2016 The Android Open Source Project
+
+  Licensed under the Apache License, Version 2.0 (the "License");
+  you may not use this file except in compliance with the License.
+  You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+-->
+<ImageView xmlns:android="http://schemas.android.com/apk/res/android"
+           android:id="@+id/image"
+           android:layout_width="match_parent"
+           android:layout_height="match_parent"
+           android:gravity="center"/>
\ No newline at end of file
diff --git a/prebuilts/gradle/WearDrawers/Wearable/src/main/res/menu/action_drawer_menu.xml b/prebuilts/gradle/WearDrawers/Wearable/src/main/res/menu/action_drawer_menu.xml
new file mode 100644
index 0000000..86060d2
--- /dev/null
+++ b/prebuilts/gradle/WearDrawers/Wearable/src/main/res/menu/action_drawer_menu.xml
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  Copyright 2016 The Android Open Source Project
+
+  Licensed under the Apache License, Version 2.0 (the "License");
+  you may not use this file except in compliance with the License.
+  You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+-->
+<menu xmlns:android="http://schemas.android.com/apk/res/android">
+    <item android:id="@+id/menu_planet_name"
+          android:icon="@drawable/ic_info_outline_black_18dp"
+          android:title="Planet Name"/>
+    <item android:id="@+id/menu_number_of_moons"
+          android:icon="@drawable/ic_info_outline_black_18dp"
+          android:title="Number of Moons" />
+    <item android:id="@+id/menu_volume"
+          android:icon="@drawable/ic_info_outline_black_18dp"
+          android:title="Volume" />
+    <item android:id="@+id/menu_surface_area"
+          android:icon="@drawable/ic_info_outline_black_18dp"
+          android:title="Surface Area" />
+</menu>
\ No newline at end of file
diff --git a/prebuilts/gradle/WearDrawers/Wearable/src/main/res/mipmap-hdpi/ic_launcher.png b/prebuilts/gradle/WearDrawers/Wearable/src/main/res/mipmap-hdpi/ic_launcher.png
new file mode 100644
index 0000000..cde69bc
--- /dev/null
+++ b/prebuilts/gradle/WearDrawers/Wearable/src/main/res/mipmap-hdpi/ic_launcher.png
Binary files differ
diff --git a/prebuilts/gradle/WearDrawers/Wearable/src/main/res/mipmap-mdpi/ic_launcher.png b/prebuilts/gradle/WearDrawers/Wearable/src/main/res/mipmap-mdpi/ic_launcher.png
new file mode 100644
index 0000000..c133a0c
--- /dev/null
+++ b/prebuilts/gradle/WearDrawers/Wearable/src/main/res/mipmap-mdpi/ic_launcher.png
Binary files differ
diff --git a/prebuilts/gradle/WearDrawers/Wearable/src/main/res/mipmap-xhdpi/ic_launcher.png b/prebuilts/gradle/WearDrawers/Wearable/src/main/res/mipmap-xhdpi/ic_launcher.png
new file mode 100644
index 0000000..bfa42f0
--- /dev/null
+++ b/prebuilts/gradle/WearDrawers/Wearable/src/main/res/mipmap-xhdpi/ic_launcher.png
Binary files differ
diff --git a/prebuilts/gradle/WearDrawers/Wearable/src/main/res/mipmap-xxhdpi/ic_launcher.png b/prebuilts/gradle/WearDrawers/Wearable/src/main/res/mipmap-xxhdpi/ic_launcher.png
new file mode 100644
index 0000000..324e72c
--- /dev/null
+++ b/prebuilts/gradle/WearDrawers/Wearable/src/main/res/mipmap-xxhdpi/ic_launcher.png
Binary files differ
diff --git a/prebuilts/gradle/WearDrawers/Wearable/src/main/res/values/strings.xml b/prebuilts/gradle/WearDrawers/Wearable/src/main/res/values/strings.xml
new file mode 100644
index 0000000..0a0cd87
--- /dev/null
+++ b/prebuilts/gradle/WearDrawers/Wearable/src/main/res/values/strings.xml
@@ -0,0 +1,114 @@
+<!--
+  Copyright 2016 The Android Open Source Project
+
+  Licensed under the Apache License, Version 2.0 (the "License");
+  you may not use this file except in compliance with the License.
+  You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+-->
+<resources>
+    <string name="app_name">Wearable Drawer Layout</string>
+
+    <!--
+    Reference name for each planet's information array.
+    -->
+    <string-array name="planets_array_names">
+        <item>mercury</item>
+        <item>venus</item>
+        <item>earth</item>
+        <item>mars</item>
+        <item>jupiter</item>
+        <item>saturn</item>
+        <item>uranus</item>
+        <item>neptune</item>
+    </string-array>
+
+    <!--
+    Keys for planet array information below:
+        "Planet Name",
+        "Navigation icon",
+        "Drawable for planet"
+        "Number of Moons",
+        "Volume"
+        "Surface Area"
+
+    -->
+    <string-array name="mercury">
+        <item>Mercury</item>
+        <item>ic_m_white_48dp</item>
+        <item>mercury</item>
+        <item>0 Moons</item>
+        <item>0.056 x Earth</item>
+        <item>0.147 x Earth</item>
+    </string-array>
+
+    <string-array name="venus">
+        <item>Venus</item>
+        <item>ic_v_white_48dp</item>
+        <item>venus</item>
+        <item>0 Moons</item>
+        <item>0.857 x Earth</item>
+        <item>0.902 x Earth</item>
+    </string-array>
+
+    <string-array name="earth">
+        <item>Earth</item>
+        <item>ic_e_white_48dp</item>
+        <item>earth</item>
+        <item>1 moon</item>
+        <item>1,083,206,916,846 km3</item>
+        <item>510,064,472 km2</item>
+    </string-array>
+
+    <string-array name="mars">
+        <item>Mars</item>
+        <item>ic_m_white_48dp</item>
+        <item>mars</item>
+        <item>2 Moons</item>
+        <item>0.151 x Earth</item>
+        <item>0.283 x Earth</item>
+    </string-array>
+
+    <string-array name="jupiter">
+        <item>Jupiter</item>
+        <item>ic_j_white_48dp</item>
+        <item>jupiter</item>
+        <item>67 Moons</item>
+        <item>1,321.337 x Earth</item>
+        <item>120.414 x Earth</item>
+    </string-array>
+
+    <string-array name="saturn">
+        <item>Saturn</item>
+        <item>ic_s_white_48dp</item>
+        <item>saturn</item>
+        <item>62 moons</item>
+        <item>763.594 x Earth</item>
+        <item>83.543 x Earth</item>
+    </string-array>
+
+    <string-array name="uranus">
+        <item>Uranus</item>
+        <item>ic_u_white_48dp</item>
+        <item>uranus</item>
+        <item>27 Moons</item>
+        <item>63.085 x Earth</item>
+        <item>15.847 x Earth</item>
+    </string-array>
+
+    <string-array name="neptune">
+        <item>Neptune</item>
+        <item>ic_n_white_48dp</item>
+        <item>neptune</item>
+        <item>14 Moons</item>
+        <item>57.723 x Earth</item>
+        <item>14.980 x Earth</item>
+    </string-array>
+</resources>
\ No newline at end of file
diff --git a/prebuilts/gradle/WearDrawers/build.gradle b/prebuilts/gradle/WearDrawers/build.gradle
new file mode 100644
index 0000000..1901ba9
--- /dev/null
+++ b/prebuilts/gradle/WearDrawers/build.gradle
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/prebuilts/gradle/WearDrawers/gradle/wrapper/gradle-wrapper.jar b/prebuilts/gradle/WearDrawers/gradle/wrapper/gradle-wrapper.jar
new file mode 100644
index 0000000..8c0fb64
--- /dev/null
+++ b/prebuilts/gradle/WearDrawers/gradle/wrapper/gradle-wrapper.jar
Binary files differ
diff --git a/prebuilts/gradle/FloatingActionButtonBasic/gradle/gradle/wrapper/gradle-wrapper.properties b/prebuilts/gradle/WearDrawers/gradle/wrapper/gradle-wrapper.properties
similarity index 80%
rename from prebuilts/gradle/FloatingActionButtonBasic/gradle/gradle/wrapper/gradle-wrapper.properties
rename to prebuilts/gradle/WearDrawers/gradle/wrapper/gradle-wrapper.properties
index 8e5694f..369e8ad 100644
--- a/prebuilts/gradle/FloatingActionButtonBasic/gradle/gradle/wrapper/gradle-wrapper.properties
+++ b/prebuilts/gradle/WearDrawers/gradle/wrapper/gradle-wrapper.properties
@@ -1,6 +1,6 @@
-#Wed Oct 15 14:12:11 BST 2014
+#Tue May 17 08:28:39 PDT 2016
 distributionBase=GRADLE_USER_HOME
 distributionPath=wrapper/dists
 zipStoreBase=GRADLE_USER_HOME
 zipStorePath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-2.5-all.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-2.10-all.zip
diff --git a/prebuilts/gradle/ElevationDrag/gradle/gradlew b/prebuilts/gradle/WearDrawers/gradlew
old mode 100644
new mode 100755
similarity index 100%
rename from prebuilts/gradle/ElevationDrag/gradle/gradlew
rename to prebuilts/gradle/WearDrawers/gradlew
diff --git a/prebuilts/gradle/ElevationDrag/gradle/gradlew.bat b/prebuilts/gradle/WearDrawers/gradlew.bat
similarity index 100%
rename from prebuilts/gradle/ElevationDrag/gradle/gradlew.bat
rename to prebuilts/gradle/WearDrawers/gradlew.bat
diff --git a/prebuilts/gradle/WearDrawers/screenshots/icon-web.png b/prebuilts/gradle/WearDrawers/screenshots/icon-web.png
new file mode 100644
index 0000000..324e72c
--- /dev/null
+++ b/prebuilts/gradle/WearDrawers/screenshots/icon-web.png
Binary files differ
diff --git a/prebuilts/gradle/WearDrawers/screenshots/wear-round-1.png b/prebuilts/gradle/WearDrawers/screenshots/wear-round-1.png
new file mode 100644
index 0000000..b644720
--- /dev/null
+++ b/prebuilts/gradle/WearDrawers/screenshots/wear-round-1.png
Binary files differ
diff --git a/prebuilts/gradle/WearDrawers/screenshots/wear-round-2.png b/prebuilts/gradle/WearDrawers/screenshots/wear-round-2.png
new file mode 100644
index 0000000..fe4c53f
--- /dev/null
+++ b/prebuilts/gradle/WearDrawers/screenshots/wear-round-2.png
Binary files differ
diff --git a/prebuilts/gradle/WearDrawers/screenshots/wear-round-3.png b/prebuilts/gradle/WearDrawers/screenshots/wear-round-3.png
new file mode 100644
index 0000000..f6e847c
--- /dev/null
+++ b/prebuilts/gradle/WearDrawers/screenshots/wear-round-3.png
Binary files differ
diff --git a/prebuilts/gradle/WearDrawers/screenshots/wear-round-4.png b/prebuilts/gradle/WearDrawers/screenshots/wear-round-4.png
new file mode 100644
index 0000000..0f36432
--- /dev/null
+++ b/prebuilts/gradle/WearDrawers/screenshots/wear-round-4.png
Binary files differ
diff --git a/prebuilts/gradle/WearDrawers/settings.gradle b/prebuilts/gradle/WearDrawers/settings.gradle
new file mode 100644
index 0000000..9c2651c
--- /dev/null
+++ b/prebuilts/gradle/WearDrawers/settings.gradle
@@ -0,0 +1,2 @@
+
+include ':Wearable'
diff --git a/prebuilts/gradle/WearSpeakerSample/README.md b/prebuilts/gradle/WearSpeakerSample/README.md
index ffb316b..e92949a 100644
--- a/prebuilts/gradle/WearSpeakerSample/README.md
+++ b/prebuilts/gradle/WearSpeakerSample/README.md
@@ -12,7 +12,7 @@
 --------------
 
 - Android SDK v23
-- Android Build Tools v23.0.2
+- Android Build Tools v23.0.3
 - Android Support Repository
 
 Getting Started
diff --git a/prebuilts/gradle/WearSpeakerSample/build.gradle b/prebuilts/gradle/WearSpeakerSample/build.gradle
index 88da8c5..3acefcb 100644
--- a/prebuilts/gradle/WearSpeakerSample/build.gradle
+++ b/prebuilts/gradle/WearSpeakerSample/build.gradle
@@ -21,7 +21,7 @@
         jcenter()
     }
     dependencies {
-        classpath 'com.android.tools.build:gradle:1.3.0'
+        classpath 'com.android.tools.build:gradle:2.1.2'
 
         // NOTE: Do not place your application dependencies here; they belong
         // in the individual module build.gradle files
diff --git a/prebuilts/gradle/WearSpeakerSample/gradle/wrapper/gradle-wrapper.properties b/prebuilts/gradle/WearSpeakerSample/gradle/wrapper/gradle-wrapper.properties
index 08a6fd5..43b9e1e 100644
--- a/prebuilts/gradle/WearSpeakerSample/gradle/wrapper/gradle-wrapper.properties
+++ b/prebuilts/gradle/WearSpeakerSample/gradle/wrapper/gradle-wrapper.properties
@@ -1,6 +1,6 @@
-#Sun Oct 04 13:39:51 PDT 2015
+#Tue May 20 13:33:02 BST 2014
 distributionBase=GRADLE_USER_HOME
 distributionPath=wrapper/dists
 zipStoreBase=GRADLE_USER_HOME
 zipStorePath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-2.8-all.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-2.10-all.zip
diff --git a/prebuilts/gradle/XYZTouristAttractions/Application/build.gradle b/prebuilts/gradle/XYZTouristAttractions/Application/build.gradle
index 1d9ed13..d1655d3 100644
--- a/prebuilts/gradle/XYZTouristAttractions/Application/build.gradle
+++ b/prebuilts/gradle/XYZTouristAttractions/Application/build.gradle
@@ -5,7 +5,7 @@
     }
 
     dependencies {
-        classpath 'com.android.tools.build:gradle:1.2.3'
+        classpath 'com.android.tools.build:gradle:2.1.2'
     }
 }
 
@@ -20,11 +20,11 @@
     compile 'com.google.android.gms:play-services-location:8.4.0'
     compile 'com.google.maps.android:android-maps-utils:0.3.4'
     compile 'com.github.bumptech.glide:glide:3.6.1'
-    compile 'com.android.support:appcompat-v7:23.0.0'
-    compile 'com.android.support:recyclerview-v7:23.0.0'
-    compile 'com.android.support:design:23.0.0'
+    compile 'com.android.support:appcompat-v7:24.0.0-beta1'
+    compile 'com.android.support:recyclerview-v7:24.0.0-beta1'
+    compile 'com.android.support:design:24.0.0-beta1'
     compile 'com.google.android.gms:play-services-wearable:8.4.0'
-    compile 'com.android.support:support-v13:23.1.1'
+    compile 'com.android.support:support-v13:24.0.0-beta1'
     compile project(':Shared')
     wearApp project(':Wearable')
 }
@@ -40,7 +40,7 @@
 android {
     compileSdkVersion 23
 
-    buildToolsVersion "23.0.2"
+    buildToolsVersion "23.0.3"
 
     defaultConfig {
         minSdkVersion 18
diff --git a/prebuilts/gradle/XYZTouristAttractions/Application/src/main/AndroidManifest.xml b/prebuilts/gradle/XYZTouristAttractions/Application/src/main/AndroidManifest.xml
index 9d88b39..762f9cd 100644
--- a/prebuilts/gradle/XYZTouristAttractions/Application/src/main/AndroidManifest.xml
+++ b/prebuilts/gradle/XYZTouristAttractions/Application/src/main/AndroidManifest.xml
@@ -55,7 +55,16 @@
 
         <service android:name=".service.ListenerService">
             <intent-filter>
-                <action android:name="com.google.android.gms.wearable.BIND_LISTENER" />
+                <!-- listeners receive events that match the action and data filters -->
+                <action android:name="com.google.android.gms.wearable.MESSAGE_RECEIVED" />
+
+                <!-- filters by Constants.CLEAR_NOTIFICATIONS_PATH -->
+                <data android:scheme="wear" android:host="*" android:pathPrefix="/clear"/>
+
+                <!-- filters by Constants.START_PATH, the prefix for
+                Constants.START_ATTRACTION_PATH ('/start/attraction') and
+                Constants.START_NAVIGATION_PATH ('/start/navigation') -->
+                <data android:scheme="wear" android:host="*" android:pathPrefix="/start"/>
             </intent-filter>
         </service>
 
diff --git a/prebuilts/gradle/XYZTouristAttractions/README.md b/prebuilts/gradle/XYZTouristAttractions/README.md
index 2a22174..d147e06 100644
--- a/prebuilts/gradle/XYZTouristAttractions/README.md
+++ b/prebuilts/gradle/XYZTouristAttractions/README.md
@@ -99,8 +99,8 @@
 Pre-requisites
 --------------
 
-- Android SDK v23
-- Android Build Tools v23.0.2
+- Android SDK 23
+- Android Build Tools v23.0.3
 - Android Support Repository
 
 Screenshots
@@ -129,7 +129,7 @@
 License
 -------
 
-Copyright 2014 The Android Open Source Project, Inc.
+Copyright 2016 The Android Open Source Project, Inc.
 
 Licensed to the Apache Software Foundation (ASF) under one or more contributor
 license agreements.  See the NOTICE file distributed with this work for
diff --git a/prebuilts/gradle/XYZTouristAttractions/Shared/build.gradle b/prebuilts/gradle/XYZTouristAttractions/Shared/build.gradle
index 2cb7201..0622df9 100644
--- a/prebuilts/gradle/XYZTouristAttractions/Shared/build.gradle
+++ b/prebuilts/gradle/XYZTouristAttractions/Shared/build.gradle
@@ -5,7 +5,7 @@
     }
 
     dependencies {
-        classpath 'com.android.tools.build:gradle:1.2.3'
+        classpath 'com.android.tools.build:gradle:2.1.2'
     }
 }
 
@@ -33,7 +33,7 @@
 android {
     compileSdkVersion 23
 
-    buildToolsVersion "23.0.2"
+    buildToolsVersion "23.0.3"
 
     defaultConfig {
         minSdkVersion 18
diff --git a/prebuilts/gradle/XYZTouristAttractions/Wearable/build.gradle b/prebuilts/gradle/XYZTouristAttractions/Wearable/build.gradle
index 585ab3b..012088f 100644
--- a/prebuilts/gradle/XYZTouristAttractions/Wearable/build.gradle
+++ b/prebuilts/gradle/XYZTouristAttractions/Wearable/build.gradle
@@ -5,7 +5,7 @@
     }
 
     dependencies {
-        classpath 'com.android.tools.build:gradle:1.2.3'
+        classpath 'com.android.tools.build:gradle:2.1.2'
     }
 }
 
@@ -20,7 +20,7 @@
 dependencies {
     compile 'com.google.android.gms:play-services-location:8.4.0'
     compile 'com.google.android.gms:play-services-wearable:8.4.0'
-    compile 'com.android.support:support-v13:23.3.0'
+    compile 'com.android.support:support-v13:24.0.0-beta1'
 
     compile 'com.google.android.support:wearable:1.4.0'
 
@@ -38,7 +38,7 @@
 android {
     compileSdkVersion 23
 
-    buildToolsVersion "23.0.2"
+    buildToolsVersion "23.0.3"
 
     defaultConfig {
         versionCode 1
diff --git a/prebuilts/gradle/XYZTouristAttractions/Wearable/src/main/AndroidManifest.xml b/prebuilts/gradle/XYZTouristAttractions/Wearable/src/main/AndroidManifest.xml
index d353b29..fc086da 100644
--- a/prebuilts/gradle/XYZTouristAttractions/Wearable/src/main/AndroidManifest.xml
+++ b/prebuilts/gradle/XYZTouristAttractions/Wearable/src/main/AndroidManifest.xml
@@ -44,7 +44,14 @@
 
         <service android:name=".service.ListenerService">
             <intent-filter>
-                <action android:name="com.google.android.gms.wearable.BIND_LISTENER" />
+                <!-- listeners receive events that match the action and data filters -->
+                <action android:name="com.google.android.gms.wearable.DATA_CHANGED" />
+                <!-- filters by Constants.EXTRA_ATTRACTIONS -->
+                <data android:scheme="wear" android:host="*" android:pathPrefix="/attraction"/>
+
+                <action android:name="com.google.android.gms.wearable.MESSAGE_RECEIVED" />
+                <!-- filters by Constants.CLEAR_NOTIFICATIONS_PATH -->
+                <data android:scheme="wear" android:host="*" android:pathPrefix="/clear"/>
             </intent-filter>
         </service>
 
diff --git a/prebuilts/gradle/XYZTouristAttractions/gradle/wrapper/gradle-wrapper.properties b/prebuilts/gradle/XYZTouristAttractions/gradle/wrapper/gradle-wrapper.properties
index 4364027..7eeed2d 100644
--- a/prebuilts/gradle/XYZTouristAttractions/gradle/wrapper/gradle-wrapper.properties
+++ b/prebuilts/gradle/XYZTouristAttractions/gradle/wrapper/gradle-wrapper.properties
@@ -1,6 +1,6 @@
-#Mon Dec 22 11:24:44 EST 2014
+#Fri Apr 15 16:13:31 PDT 2016
 distributionBase=GRADLE_USER_HOME
 distributionPath=wrapper/dists
 zipStoreBase=GRADLE_USER_HOME
 zipStorePath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-2.8-all.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-2.10-all.zip