Restore "Merge downstream branch 'developers-dev' into 'klp-dev'"

This reverts commit ec985147ec781dfff9a229c6b794ee4eac0ced91.
diff --git a/.gitignore b/.gitignore
index 2dd1573..627e46f 100644
--- a/.gitignore
+++ b/.gitignore
@@ -11,7 +11,9 @@
 # generated files
 bin/
 out/
-gen/
+src/common
+src/template
+_index.jd
 
 # Libraries used by the app
 # Can explicitly add if we want, but shouldn't do so blindly.  Licenses, bloat, etc.
@@ -19,10 +21,8 @@
 
 
 # Build stuff (auto-generated by android update project ...)
-build.xml
 ant.properties
 local.properties
-project.properties
 
 # Eclipse project files
 .classpath
@@ -35,5 +35,7 @@
 *.ipr
 *.iws
 
-#gitignore file
-.gitignore
+##Gradle-based build
+.gradle
+build/
+
diff --git a/security/keystore/BasicAndroidKeyStore/BasicAndroidKeyStore/src/main/AndroidManifest.xml b/background/alarms/repeatingAlarm/Scheduler/AndroidManifest.xml
old mode 100644
new mode 100755
similarity index 63%
rename from security/keystore/BasicAndroidKeyStore/BasicAndroidKeyStore/src/main/AndroidManifest.xml
rename to background/alarms/repeatingAlarm/Scheduler/AndroidManifest.xml
index 7693ed1..1e43d63
--- a/security/keystore/BasicAndroidKeyStore/BasicAndroidKeyStore/src/main/AndroidManifest.xml
+++ b/background/alarms/repeatingAlarm/Scheduler/AndroidManifest.xml
@@ -15,11 +15,14 @@
   -->
 
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
-    package="com.example.android.basicandroidkeystore"
+    package="com.example.android.scheduler"
     android:versionCode="1"
     android:versionName="1.0">
 
-    <uses-sdk android:minSdkVersion="8" android:targetSdkVersion="17" />
+    <uses-sdk android:minSdkVersion="11" android:targetSdkVersion="18" />
+    <uses-permission android:name="android.permission.WAKE_LOCK"></uses-permission>
+    <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"></uses-permission>
+    <uses-permission android:name="android.permission.INTERNET" />
 
     <application android:label="@string/app_name"
         android:icon="@drawable/ic_launcher"
@@ -35,6 +38,15 @@
             </intent-filter>
         </activity>
 
+        <receiver android:name=".SampleAlarmReceiver"></receiver>
+
+        <receiver android:name=".SampleBootReceiver"
+                android:enabled="false">
+            <intent-filter>
+            <action android:name="android.intent.action.BOOT_COMPLETED"></action>
+            </intent-filter>
+        </receiver>
+        <service android:name=".SampleSchedulingService" />
     </application>
 
 </manifest>
diff --git a/background/alarms/repeatingAlarm/Scheduler/res/drawable-hdpi/ic_launcher.png b/background/alarms/repeatingAlarm/Scheduler/res/drawable-hdpi/ic_launcher.png
new file mode 100644
index 0000000..015d248
--- /dev/null
+++ b/background/alarms/repeatingAlarm/Scheduler/res/drawable-hdpi/ic_launcher.png
Binary files differ
diff --git a/background/alarms/repeatingAlarm/Scheduler/res/drawable-mdpi/ic_launcher.png b/background/alarms/repeatingAlarm/Scheduler/res/drawable-mdpi/ic_launcher.png
new file mode 100644
index 0000000..605a256
--- /dev/null
+++ b/background/alarms/repeatingAlarm/Scheduler/res/drawable-mdpi/ic_launcher.png
Binary files differ
diff --git a/background/alarms/repeatingAlarm/Scheduler/res/drawable-xhdpi/ic_launcher.png b/background/alarms/repeatingAlarm/Scheduler/res/drawable-xhdpi/ic_launcher.png
new file mode 100644
index 0000000..c08bafa
--- /dev/null
+++ b/background/alarms/repeatingAlarm/Scheduler/res/drawable-xhdpi/ic_launcher.png
Binary files differ
diff --git a/background/alarms/repeatingAlarm/Scheduler/res/drawable-xxhdpi/ic_launcher.png b/background/alarms/repeatingAlarm/Scheduler/res/drawable-xxhdpi/ic_launcher.png
new file mode 100644
index 0000000..1224b39
--- /dev/null
+++ b/background/alarms/repeatingAlarm/Scheduler/res/drawable-xxhdpi/ic_launcher.png
Binary files differ
diff --git a/connectivity/network/BasicNetworkDemo/BasicNetworkDemo/src/main/res/layout/log_fragment.xml b/background/alarms/repeatingAlarm/Scheduler/res/layout/activity_main.xml
old mode 100644
new mode 100755
similarity index 72%
rename from connectivity/network/BasicNetworkDemo/BasicNetworkDemo/src/main/res/layout/log_fragment.xml
rename to background/alarms/repeatingAlarm/Scheduler/res/layout/activity_main.xml
index 6d79548..8ba99cd
--- a/connectivity/network/BasicNetworkDemo/BasicNetworkDemo/src/main/res/layout/log_fragment.xml
+++ b/background/alarms/repeatingAlarm/Scheduler/res/layout/activity_main.xml
@@ -1,5 +1,3 @@
-<?xml version="1.0" encoding="utf-8"?>
-
 <!--
   Copyright 2013 The Android Open Source Project
 
@@ -17,17 +15,13 @@
   -->
 
 <ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
-    android:id="@+id/log_scroll"
     android:layout_width="match_parent"
     android:layout_height="match_parent">
 
-    <com.example.android.common.logger.LogView
-        android:id="@+id/sample_output"
-        style="@style/Log"
+    <TextView android:id="@+id/sample_output"
+        style="@style/Widget.SampleOutput"
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
-        android:clickable="true"
-        android:focusable="true"
-        android:text=""
-        android:gravity="bottom" />
-</ScrollView>
\ No newline at end of file
+        android:text="@string/intro_message" />
+
+</ScrollView>
diff --git a/input/gestures/BasicGestureDetect/BasicGestureDetect/src/main/res/menu/main.xml b/background/alarms/repeatingAlarm/Scheduler/res/menu/main.xml
similarity index 76%
rename from input/gestures/BasicGestureDetect/BasicGestureDetect/src/main/res/menu/main.xml
rename to background/alarms/repeatingAlarm/Scheduler/res/menu/main.xml
index d0ffa14..f961a64 100644
--- a/input/gestures/BasicGestureDetect/BasicGestureDetect/src/main/res/menu/main.xml
+++ b/background/alarms/repeatingAlarm/Scheduler/res/menu/main.xml
@@ -15,7 +15,10 @@
   -->
 
 <menu xmlns:android="http://schemas.android.com/apk/res/android">
-    <item android:id="@+id/sample_action"
+    <item android:id="@+id/start_action"
         android:showAsAction="ifRoom|withText"
-        android:title="@string/clear_text" />
+        android:title="@string/start_text" />
+    <item android:id="@+id/cancel_action"
+        android:showAsAction="ifRoom|withText"
+        android:title="@string/cancel_text" />
 </menu>
diff --git a/connectivity/network/BasicNetworkDemo/BasicNetworkDemo/src/main/res/values-sw600dp/styles.xml b/background/alarms/repeatingAlarm/Scheduler/res/values-sw600dp/styles.xml
similarity index 100%
rename from connectivity/network/BasicNetworkDemo/BasicNetworkDemo/src/main/res/values-sw600dp/styles.xml
rename to background/alarms/repeatingAlarm/Scheduler/res/values-sw600dp/styles.xml
diff --git a/connectivity/network/BasicNetworkDemo/BasicNetworkDemo/src/main/res/values-v11/styles.xml b/background/alarms/repeatingAlarm/Scheduler/res/values-v11/styles.xml
similarity index 100%
rename from connectivity/network/BasicNetworkDemo/BasicNetworkDemo/src/main/res/values-v11/styles.xml
rename to background/alarms/repeatingAlarm/Scheduler/res/values-v11/styles.xml
diff --git a/security/keystore/BasicAndroidKeyStore/BasicAndroidKeyStore/src/main/res/values/dimens.xml b/background/alarms/repeatingAlarm/Scheduler/res/values/dimens.xml
similarity index 100%
rename from security/keystore/BasicAndroidKeyStore/BasicAndroidKeyStore/src/main/res/values/dimens.xml
rename to background/alarms/repeatingAlarm/Scheduler/res/values/dimens.xml
diff --git a/background/alarms/repeatingAlarm/Scheduler/res/values/strings.xml b/background/alarms/repeatingAlarm/Scheduler/res/values/strings.xml
new file mode 100755
index 0000000..9caa7a8
--- /dev/null
+++ b/background/alarms/repeatingAlarm/Scheduler/res/values/strings.xml
@@ -0,0 +1,33 @@
+<!--
+  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.
+  -->
+
+<resources>
+    <string name="app_name">Scheduler</string>
+    <string name="intro_message">Welcome to <b>Scheduler</b>!
+        This sample demonstrates how you can schedule an alarm that causes a service to
+        be started. This is useful when you want to schedule alarms that initiate
+        long-running operations. Click START ALARM to activate an alarm to check
+        the Google home page for a custom doodle once a day. If the app finds a doodle,
+        it posts a \"Doodle Alert\" as a notification. Click CANCEL ALARM to cancel the
+        alarm. Once the alarm is active, it automatically restarts when the device is
+        rebooted.</string>
+    <string name="start_text">Start Alarm</string>
+    <string name="cancel_text">Cancel Alarm</string>
+    <string name="doodle_alert">Doodle Alert</string>
+    <string name="doodle_found">There is a Google doodle today!!</string>
+    <string name="no_doodle">No Google doodle today.</string>
+    <string name="connection_error">Connection error.</string>
+</resources>
diff --git a/content/contacts/BasicContactables/BasicContactables/src/main/res/values/styles.xml b/background/alarms/repeatingAlarm/Scheduler/res/values/styles.xml
similarity index 96%
rename from content/contacts/BasicContactables/BasicContactables/src/main/res/values/styles.xml
rename to background/alarms/repeatingAlarm/Scheduler/res/values/styles.xml
index 1c0e5aa..b1461dd 100644
--- a/content/contacts/BasicContactables/BasicContactables/src/main/res/values/styles.xml
+++ b/background/alarms/repeatingAlarm/Scheduler/res/values/styles.xml
@@ -1,4 +1,3 @@
-<?xml version="1.0" encoding="utf-8"?>
 <!--
   Copyright 2013 The Android Open Source Project
 
diff --git a/background/alarms/repeatingAlarm/Scheduler/src/com/example/android/scheduler/MainActivity.java b/background/alarms/repeatingAlarm/Scheduler/src/com/example/android/scheduler/MainActivity.java
new file mode 100755
index 0000000..efb8e52
--- /dev/null
+++ b/background/alarms/repeatingAlarm/Scheduler/src/com/example/android/scheduler/MainActivity.java
@@ -0,0 +1,63 @@
+/*
+ * 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.scheduler;
+
+import android.app.Activity;
+import android.os.Bundle;
+import android.view.Menu;
+import android.view.MenuItem;
+
+
+/**
+ * This sample demonstrates how to schedule an alarm that causes a service to
+ * be started. This is useful when you want to schedule alarms that initiate
+ * long-running operations, such as retrieving a daily forecast.
+ * This particular sample retrieves content from the Google home page once a day and
+ * checks it for the search string "doodle". If it finds this string, that indicates
+ * that the page contains a custom doodle instead of the standard Google logo.
+ */
+public class MainActivity extends Activity {
+    SampleAlarmReceiver alarm = new SampleAlarmReceiver();
+
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        setContentView(R.layout.activity_main);
+    }
+
+    @Override
+    public boolean onCreateOptionsMenu(Menu menu) {
+        getMenuInflater().inflate(R.menu.main, menu);
+        return true;
+    }
+
+    // Menu options to set and cancel the alarm.
+    @Override
+    public boolean onOptionsItemSelected(MenuItem item) {
+        switch (item.getItemId()) {
+            // When the user clicks START ALARM, set the alarm.
+            case R.id.start_action:
+                alarm.setAlarm(this);
+                return true;
+            // When the user clicks CANCEL ALARM, cancel the alarm.
+            case R.id.cancel_action:
+                alarm.cancelAlarm(this);
+                return true;
+        }
+        return false;
+    }
+}
diff --git a/background/alarms/repeatingAlarm/Scheduler/src/com/example/android/scheduler/SampleAlarmReceiver.java b/background/alarms/repeatingAlarm/Scheduler/src/com/example/android/scheduler/SampleAlarmReceiver.java
new file mode 100644
index 0000000..3a8cce1
--- /dev/null
+++ b/background/alarms/repeatingAlarm/Scheduler/src/com/example/android/scheduler/SampleAlarmReceiver.java
@@ -0,0 +1,134 @@
+package com.example.android.scheduler;
+
+import android.app.AlarmManager;
+import android.app.PendingIntent;
+import android.content.ComponentName;
+import android.content.Context;
+import android.content.Intent;
+import android.content.pm.PackageManager;
+import android.support.v4.content.WakefulBroadcastReceiver;
+
+import java.util.Calendar;
+
+/**
+ * When the alarm fires, this WakefulBroadcastReceiver receives the broadcast Intent
+ * and then starts the IntentService {@code SampleSchedulingService} to do some work.
+ */
+public class SampleAlarmReceiver extends WakefulBroadcastReceiver {
+    // The app's AlarmManager, which provides access to the system alarm services.
+    private AlarmManager alarmMgr;
+
+    // The pending intent that is triggered when the alarm fires.
+    private PendingIntent alarmIntent;
+
+    @Override
+    public void onReceive(Context context, Intent intent) {
+        // BEGIN_INCLUDE(alarm_onreceive)
+        /*
+         * If your receiver intent includes extras that need to be passed along to the
+         * service, use setComponent() to indicate that the service should handle the
+         * receiver's intent. For example:
+         *
+         * ComponentName comp = new ComponentName(context.getPackageName(),
+         *      MyService.class.getName());
+         *
+         * // This intent passed in this call will include the wake lock extra as well as
+         * // the receiver intent contents.
+         * startWakefulService(context, (intent.setComponent(comp)));
+         *
+         * In this example, we simply create a new intent to deliver to the service.
+         * This intent holds an extra identifying the wake lock.
+         */
+        Intent service = new Intent(context, SampleSchedulingService.class);
+
+        // Start the service, keeping the device awake while it is launching.
+        startWakefulService(context, service);
+        // END_INCLUDE(alarm_onreceive)
+    }
+
+    // BEGIN_INCLUDE(set_alarm)
+    /**
+     * Sets a repeating alarm that runs once a day at approximately 8:30 a.m. When the
+     * alarm fires, the app broadcasts an Intent to this WakefulBroadcastReceiver.
+     * @param context
+     */
+    public void setAlarm(Context context) {
+        alarmMgr = (AlarmManager)context.getSystemService(Context.ALARM_SERVICE);
+        Intent intent = new Intent(context, SampleAlarmReceiver.class);
+        alarmIntent = PendingIntent.getBroadcast(context, 0, intent, 0);
+
+        Calendar calendar = Calendar.getInstance();
+        calendar.setTimeInMillis(System.currentTimeMillis());
+        // Set the alarm's trigger time to 8:30 a.m.
+        calendar.set(Calendar.HOUR_OF_DAY, 8);
+        calendar.set(Calendar.MINUTE, 30);
+
+        /*
+         * If you don't have precise time requirements, use an inexact repeating alarm
+         * to minimize the drain on the device battery.
+         *
+         * The call below specifies the alarm type, the trigger time, the interval at
+         * which the alarm is fired, and the alarm's associated PendingIntent.
+         * It uses the alarm type RTC_WAKEUP ("Real Time Clock" wake up), which wakes up
+         * the device and triggers the alarm according to the time of the device's clock.
+         *
+         * Alternatively, you can use the alarm type ELAPSED_REALTIME_WAKEUP to trigger
+         * an alarm based on how much time has elapsed since the device was booted. This
+         * is the preferred choice if your alarm is based on elapsed time--for example, if
+         * you simply want your alarm to fire every 60 minutes. You only need to use
+         * RTC_WAKEUP if you want your alarm to fire at a particular date/time. Remember
+         * that clock-based time may not translate well to other locales, and that your
+         * app's behavior could be affected by the user changing the device's time setting.
+         *
+         * Here are some examples of ELAPSED_REALTIME_WAKEUP:
+         *
+         * // Wake up the device to fire a one-time alarm in one minute.
+         * alarmMgr.set(AlarmManager.ELAPSED_REALTIME_WAKEUP,
+         *         SystemClock.elapsedRealtime() +
+         *         60*1000, alarmIntent);
+         *
+         * // Wake up the device to fire the alarm in 30 minutes, and every 30 minutes
+         * // after that.
+         * alarmMgr.setInexactRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP,
+         *         AlarmManager.INTERVAL_HALF_HOUR,
+         *         AlarmManager.INTERVAL_HALF_HOUR, alarmIntent);
+         */
+
+        // Set the alarm to fire at approximately 8:30 a.m., according to the device's
+        // clock, and to repeat once a day.
+        alarmMgr.setInexactRepeating(AlarmManager.RTC_WAKEUP,
+                calendar.getTimeInMillis(), AlarmManager.INTERVAL_DAY, alarmIntent);
+
+        // Enable {@code SampleBootReceiver} to automatically restart the alarm when the
+        // device is rebooted.
+        ComponentName receiver = new ComponentName(context, SampleBootReceiver.class);
+        PackageManager pm = context.getPackageManager();
+
+        pm.setComponentEnabledSetting(receiver,
+                PackageManager.COMPONENT_ENABLED_STATE_ENABLED,
+                PackageManager.DONT_KILL_APP);
+    }
+    // END_INCLUDE(set_alarm)
+
+    /**
+     * Cancels the alarm.
+     * @param context
+     */
+    // BEGIN_INCLUDE(cancel_alarm)
+    public void cancelAlarm(Context context) {
+        // If the alarm has been set, cancel it.
+        if (alarmMgr!= null) {
+            alarmMgr.cancel(alarmIntent);
+        }
+
+        // Disable {@code SampleBootReceiver} so that it doesn't automatically restart the
+        // alarm when the device is rebooted.
+        ComponentName receiver = new ComponentName(context, SampleBootReceiver.class);
+        PackageManager pm = context.getPackageManager();
+
+        pm.setComponentEnabledSetting(receiver,
+                PackageManager.COMPONENT_ENABLED_STATE_DISABLED,
+                PackageManager.DONT_KILL_APP);
+    }
+    // END_INCLUDE(cancel_alarm)
+}
diff --git a/background/alarms/repeatingAlarm/Scheduler/src/com/example/android/scheduler/SampleBootReceiver.java b/background/alarms/repeatingAlarm/Scheduler/src/com/example/android/scheduler/SampleBootReceiver.java
new file mode 100644
index 0000000..16464da
--- /dev/null
+++ b/background/alarms/repeatingAlarm/Scheduler/src/com/example/android/scheduler/SampleBootReceiver.java
@@ -0,0 +1,25 @@
+package com.example.android.scheduler;
+
+import android.content.BroadcastReceiver;
+import android.content.Context;
+import android.content.Intent;
+
+/**
+ * This BroadcastReceiver automatically (re)starts the alarm when the device is
+ * rebooted. This receiver is set to be disabled (android:enabled="false") in the
+ * application's manifest file. When the user sets the alarm, the receiver is enabled.
+ * When the user cancels the alarm, the receiver is disabled, so that rebooting the
+ * device will not trigger this receiver.
+ */
+// BEGIN_INCLUDE(autostart)
+public class SampleBootReceiver extends BroadcastReceiver {
+    SampleAlarmReceiver alarm = new SampleAlarmReceiver();
+    @Override
+    public void onReceive(Context context, Intent intent) {
+        if (intent.getAction().equals("android.intent.action.BOOT_COMPLETED"))
+        {
+            alarm.setAlarm(context);
+        }
+    }
+}
+//END_INCLUDE(autostart)
diff --git a/background/alarms/repeatingAlarm/Scheduler/src/com/example/android/scheduler/SampleSchedulingService.java b/background/alarms/repeatingAlarm/Scheduler/src/com/example/android/scheduler/SampleSchedulingService.java
new file mode 100644
index 0000000..d99fe0c
--- /dev/null
+++ b/background/alarms/repeatingAlarm/Scheduler/src/com/example/android/scheduler/SampleSchedulingService.java
@@ -0,0 +1,148 @@
+package com.example.android.scheduler;
+
+import android.app.IntentService;
+import android.app.NotificationManager;
+import android.app.PendingIntent;
+import android.content.Context;
+import android.content.Intent;
+import android.support.v4.app.NotificationCompat;
+import android.util.Log;
+
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.net.HttpURLConnection;
+import java.net.URL;
+
+/**
+ * This {@code IntentService} does the app's actual work.
+ * {@code SampleAlarmReceiver} (a {@code WakefulBroadcastReceiver}) holds a
+ * partial wake lock for this service while the service does its work. When the
+ * service is finished, it calls {@code completeWakefulIntent()} to release the
+ * wake lock.
+ */
+public class SampleSchedulingService extends IntentService {
+    public SampleSchedulingService() {
+        super("SchedulingService");
+    }
+
+    public static final String TAG = "Scheduling Demo";
+    // An ID used to post the notification.
+    public static final int NOTIFICATION_ID = 1;
+    // The string the app searches for in the Google home page content. If the app finds
+    // the string, it indicates the presence of a doodle.
+    public static final String SEARCH_STRING = "doodle";
+    // The Google home page URL from which the app fetches content.
+    // You can find a list of other Google domains with possible doodles here:
+    // http://en.wikipedia.org/wiki/List_of_Google_domains
+    public static final String URL = "http://www.google.com";
+    private NotificationManager mNotificationManager;
+    NotificationCompat.Builder builder;
+
+    @Override
+    protected void onHandleIntent(Intent intent) {
+        // BEGIN_INCLUDE(service_onhandle)
+        // The URL from which to fetch content.
+        String urlString = URL;
+
+        String result ="";
+
+        // Try to connect to the Google homepage and download content.
+        try {
+            result = loadFromNetwork(urlString);
+        } catch (IOException e) {
+            Log.i(TAG, getString(R.string.connection_error));
+        }
+
+        // If the app finds the string "doodle" in the Google home page content, it
+        // indicates the presence of a doodle. Post a "Doodle Alert" notification.
+        if (result.indexOf(SEARCH_STRING) != -1) {
+            sendNotification(getString(R.string.doodle_found));
+            Log.i(TAG, "Found doodle!!");
+        } else {
+            sendNotification(getString(R.string.no_doodle));
+            Log.i(TAG, "No doodle found. :-(");
+        }
+        // Release the wake lock provided by the BroadcastReceiver.
+        SampleAlarmReceiver.completeWakefulIntent(intent);
+        // END_INCLUDE(service_onhandle)
+    }
+
+    // Post a notification indicating whether a doodle was found.
+    private void sendNotification(String msg) {
+        mNotificationManager = (NotificationManager)
+               this.getSystemService(Context.NOTIFICATION_SERVICE);
+
+        PendingIntent contentIntent = PendingIntent.getActivity(this, 0,
+            new Intent(this, MainActivity.class), 0);
+
+        NotificationCompat.Builder mBuilder =
+                new NotificationCompat.Builder(this)
+        .setSmallIcon(R.drawable.ic_launcher)
+        .setContentTitle(getString(R.string.doodle_alert))
+        .setStyle(new NotificationCompat.BigTextStyle()
+        .bigText(msg))
+        .setContentText(msg);
+
+        mBuilder.setContentIntent(contentIntent);
+        mNotificationManager.notify(NOTIFICATION_ID, mBuilder.build());
+    }
+
+//
+// The methods below this line fetch content from the specified URL and return the
+// content as a string.
+//
+    /** Given a URL string, initiate a fetch operation. */
+    private String loadFromNetwork(String urlString) throws IOException {
+        InputStream stream = null;
+        String str ="";
+
+        try {
+            stream = downloadUrl(urlString);
+            str = readIt(stream);
+        } finally {
+            if (stream != null) {
+                stream.close();
+            }
+        }
+        return str;
+    }
+
+    /**
+     * Given a string representation of a URL, sets up a connection and gets
+     * an input stream.
+     * @param urlString A string representation of a URL.
+     * @return An InputStream retrieved from a successful HttpURLConnection.
+     * @throws IOException
+     */
+    private InputStream downloadUrl(String urlString) throws IOException {
+
+        URL url = new URL(urlString);
+        HttpURLConnection conn = (HttpURLConnection) url.openConnection();
+        conn.setReadTimeout(10000 /* milliseconds */);
+        conn.setConnectTimeout(15000 /* milliseconds */);
+        conn.setRequestMethod("GET");
+        conn.setDoInput(true);
+        // Start the query
+        conn.connect();
+        InputStream stream = conn.getInputStream();
+        return stream;
+    }
+
+    /**
+     * Reads an InputStream and converts it to a String.
+     * @param stream InputStream containing HTML from www.google.com.
+     * @return String version of InputStream.
+     * @throws IOException
+     */
+    private String readIt(InputStream stream) throws IOException {
+
+        StringBuilder builder = new StringBuilder();
+        BufferedReader reader = new BufferedReader(new InputStreamReader(stream));
+        for(String line = reader.readLine(); line != null; line = reader.readLine())
+            builder.append(line);
+        reader.close();
+        return builder.toString();
+    }
+}
diff --git a/background/alarms/repeatingAlarm/build.gradle b/background/alarms/repeatingAlarm/build.gradle
new file mode 100644
index 0000000..cca9ac3
--- /dev/null
+++ b/background/alarms/repeatingAlarm/build.gradle
@@ -0,0 +1,10 @@
+// BEGIN_EXCLUDE
+import com.example.android.samples.build.SampleGenPlugin
+apply plugin: SampleGenPlugin
+
+samplegen {
+  pathToBuild "../../../../../build"
+  pathToSamplesCommon "../../../common"
+}
+apply from: "../../../../../build/build.gradle"
+// END_EXCLUDE
diff --git a/background/alarms/repeatingAlarm/buildSrc/build.gradle b/background/alarms/repeatingAlarm/buildSrc/build.gradle
new file mode 100644
index 0000000..7cebf71
--- /dev/null
+++ b/background/alarms/repeatingAlarm/buildSrc/build.gradle
@@ -0,0 +1,15 @@
+repositories {
+    mavenCentral()
+}
+dependencies {
+    compile 'org.freemarker:freemarker:2.3.20'
+}
+
+sourceSets {
+    main {
+        groovy {
+            srcDir new File(rootDir, "../../../../../../build/buildSrc/src/main/groovy")
+        }
+    }
+}
+
diff --git a/connectivity/network/BasicNetworkDemo/gradle/wrapper/gradle-wrapper.jar b/background/alarms/repeatingAlarm/gradle/wrapper/gradle-wrapper.jar
similarity index 100%
copy from connectivity/network/BasicNetworkDemo/gradle/wrapper/gradle-wrapper.jar
copy to background/alarms/repeatingAlarm/gradle/wrapper/gradle-wrapper.jar
Binary files differ
diff --git a/connectivity/network/BasicNetworkDemo/gradle/wrapper/gradle-wrapper.properties b/background/alarms/repeatingAlarm/gradle/wrapper/gradle-wrapper.properties
similarity index 85%
rename from connectivity/network/BasicNetworkDemo/gradle/wrapper/gradle-wrapper.properties
rename to background/alarms/repeatingAlarm/gradle/wrapper/gradle-wrapper.properties
index 055ba6f..5c22dec 100644
--- a/connectivity/network/BasicNetworkDemo/gradle/wrapper/gradle-wrapper.properties
+++ b/background/alarms/repeatingAlarm/gradle/wrapper/gradle-wrapper.properties
@@ -1,5 +1,4 @@
-#
-#Mon Jul 22 11:40:20 PDT 2013
+#Wed Apr 10 15:27:10 PDT 2013
 distributionBase=GRADLE_USER_HOME
 distributionPath=wrapper/dists
 zipStoreBase=GRADLE_USER_HOME
diff --git a/connectivity/network/BasicNetworkDemo/gradlew b/background/alarms/repeatingAlarm/gradlew
similarity index 100%
copy from connectivity/network/BasicNetworkDemo/gradlew
copy to background/alarms/repeatingAlarm/gradlew
diff --git a/connectivity/network/BasicNetworkDemo/gradlew.bat b/background/alarms/repeatingAlarm/gradlew.bat
similarity index 100%
copy from connectivity/network/BasicNetworkDemo/gradlew.bat
copy to background/alarms/repeatingAlarm/gradlew.bat
diff --git a/background/alarms/repeatingAlarm/repeatingAlarmSample/.gitignore b/background/alarms/repeatingAlarm/repeatingAlarmSample/.gitignore
new file mode 100644
index 0000000..f1e8ad1
--- /dev/null
+++ b/background/alarms/repeatingAlarm/repeatingAlarmSample/.gitignore
@@ -0,0 +1,2 @@
+src/template/
+src/common/
\ No newline at end of file
diff --git a/background/alarms/repeatingAlarm/repeatingAlarmSample/build.gradle b/background/alarms/repeatingAlarm/repeatingAlarmSample/build.gradle
new file mode 100644
index 0000000..069b740
--- /dev/null
+++ b/background/alarms/repeatingAlarm/repeatingAlarmSample/build.gradle
@@ -0,0 +1,57 @@
+
+
+
+buildscript {
+    repositories {
+        mavenCentral()
+    }
+
+    dependencies {
+        classpath 'com.android.tools.build:gradle:0.6.+'
+    }
+}
+
+apply plugin: 'android'
+
+dependencies {
+    // Add the support lib that is appropriate for SDK 4
+    compile "com.android.support:support-v4:18.0.+"
+}
+
+// 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 18
+    buildToolsVersion "18.0.1"
+
+    sourceSets {
+        main {
+            dirs.each { dir ->
+                java.srcDirs "src/${dir}/java"
+                res.srcDirs "src/${dir}/res"
+            }
+        }
+        instrumentTest.setRoot('tests')
+        instrumentTest.java.srcDirs = ['tests/src']
+    }
+}
+
+task preflight (dependsOn: parent.preflight) {
+    project.afterEvaluate {
+        // Inject a preflight task into each variant so we have a place to hook tasks
+        // that need to run before any of the android build tasks.
+        //
+        android.applicationVariants.each { variant ->
+            tasks.getByPath("prepare${variant.name.capitalize()}Dependencies").dependsOn preflight
+        }
+    }
+}
+
+
+
diff --git a/ui/actionbarcompat/ListPopupMenu/ListPopupMenu/src/main/AndroidManifest.xml b/background/alarms/repeatingAlarm/repeatingAlarmSample/src/main/AndroidManifest.xml
similarity index 62%
copy from ui/actionbarcompat/ListPopupMenu/ListPopupMenu/src/main/AndroidManifest.xml
copy to background/alarms/repeatingAlarm/repeatingAlarmSample/src/main/AndroidManifest.xml
index 7e9a861..b7d02e5 100644
--- a/ui/actionbarcompat/ListPopupMenu/ListPopupMenu/src/main/AndroidManifest.xml
+++ b/background/alarms/repeatingAlarm/repeatingAlarmSample/src/main/AndroidManifest.xml
@@ -1,11 +1,12 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2013 The Android Open Source Project
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ 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
+     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,
@@ -14,23 +15,20 @@
  limitations under the License.
 -->
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
-    package="com.example.android.actionbarcompat.listpopupmenu"
+    package="com.example.android.repeatingalarm"
     android:versionCode="1"
     android:versionName="1.0">
 
-    <!-- ActionBarCompat provides an implementation of Popup Menu from API v7 onwards -->
-    <uses-sdk
-        android:minSdkVersion="7"
-        android:targetSdkVersion="17" />
+    <uses-sdk android:minSdkVersion="4" android:targetSdkVersion="17" />
 
-    <application
-        android:icon="@drawable/ic_launcher"
+    <application android:allowBackup="true"
         android:label="@string/app_name"
-        android:theme="@style/Theme.AppCompat"
-        android:allowBackup="true">
+        android:icon="@drawable/ic_launcher"
+        android:theme="@style/AppTheme">
 
-        <activity android:name=".MainActivity">
-            <!-- Launcher Intent filter -->
+        <activity android:name=".MainActivity"
+                  android:label="@string/app_name"
+                  android:uiOptions="splitActionBarWhenNarrow">
             <intent-filter>
                 <action android:name="android.intent.action.MAIN" />
                 <category android:name="android.intent.category.LAUNCHER" />
@@ -38,4 +36,5 @@
         </activity>
     </application>
 
-</manifest>
\ No newline at end of file
+
+</manifest>
diff --git a/background/alarms/repeatingAlarm/repeatingAlarmSample/src/main/java/com/example/android/repeatingalarm/RepeatingAlarmFragment.java b/background/alarms/repeatingAlarm/repeatingAlarmSample/src/main/java/com/example/android/repeatingalarm/RepeatingAlarmFragment.java
new file mode 100644
index 0000000..81b1e44
--- /dev/null
+++ b/background/alarms/repeatingAlarm/repeatingAlarmSample/src/main/java/com/example/android/repeatingalarm/RepeatingAlarmFragment.java
@@ -0,0 +1,96 @@
+/*
+* 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.repeatingalarm;
+
+import android.app.AlarmManager;
+import android.app.PendingIntent;
+import android.content.Intent;
+import android.os.Bundle;
+import android.os.SystemClock;
+import android.support.v4.app.Fragment;
+import android.view.MenuItem;
+import com.example.android.common.logger.*;
+
+
+public class RepeatingAlarmFragment extends Fragment {
+
+    // This value is defined and consumed by app code, so any value will work.
+    // There's no significance to this sample using 0.
+    public static final int REQUEST_CODE = 0;
+
+    @Override
+    public void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        setHasOptionsMenu(true);
+    }
+
+    @Override
+    public boolean onOptionsItemSelected(MenuItem item) {
+        if(item.getItemId() == R.id.sample_action) {
+
+            // BEGIN_INCLUDE (intent_fired_by_alarm)
+            // First create an intent for the alarm to activate.
+            // This code simply starts an Activity, or brings it to the front if it has already
+            // been created.
+            Intent intent = new Intent(getActivity(), MainActivity.class);
+            intent.setAction(Intent.ACTION_MAIN);
+            intent.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
+            // END_INCLUDE (intent_fired_by_alarm)
+
+            // BEGIN_INCLUDE (pending_intent_for_alarm)
+            // Because the intent must be fired by a system service from outside the application,
+            // it's necessary to wrap it in a PendingIntent.  Providing a different process with
+            // a PendingIntent gives that other process permission to fire the intent that this
+            // application has created.
+            // Also, this code creates a PendingIntent to start an Activity.  To create a
+            // BroadcastIntent instead, simply call getBroadcast instead of getIntent.
+            PendingIntent pendingIntent = PendingIntent.getActivity(getActivity(), REQUEST_CODE,
+                    intent, 0);
+
+            // END_INCLUDE (pending_intent_for_alarm)
+
+            // BEGIN_INCLUDE (configure_alarm_manager)
+            // There are two clock types for alarms, ELAPSED_REALTIME and RTC.
+            // ELAPSED_REALTIME uses time since system boot as a reference, and RTC uses UTC (wall
+            // clock) time.  This means ELAPSED_REALTIME is suited to setting an alarm according to
+            // passage of time (every 15 seconds, 15 minutes, etc), since it isn't affected by
+            // timezone/locale.  RTC is better suited for alarms that should be dependant on current
+            // locale.
+
+            // Both types have a WAKEUP version, which says to wake up the device if the screen is
+            // off.  This is useful for situations such as alarm clocks.  Abuse of this flag is an
+            // efficient way to skyrocket the uninstall rate of an application, so use with care.
+            // For most situations, ELAPSED_REALTIME will suffice.
+            int alarmType = AlarmManager.ELAPSED_REALTIME;
+            final int FIFTEEN_SEC_MILLIS = 15000;
+
+            // The AlarmManager, like most system services, isn't created by application code, but
+            // requested from the system.
+            AlarmManager alarmManager = (AlarmManager)
+                    getActivity().getSystemService(getActivity().ALARM_SERVICE);
+
+            // setRepeating takes a start delay and period between alarms as arguments.
+            // The below code fires after 15 seconds, and repeats every 15 seconds.  This is very
+            // useful for demonstration purposes, but horrendous for production.  Don't be that dev.
+            alarmManager.setRepeating(alarmType, SystemClock.elapsedRealtime() + FIFTEEN_SEC_MILLIS,
+                    FIFTEEN_SEC_MILLIS, pendingIntent);
+            // END_INCLUDE (configure_alarm_manager);
+            Log.i("RepeatingAlarmFragment", "Alarm set.");
+        }
+        return true;
+    }
+}
diff --git a/ui/actionbar/DoneBar/DoneBar/src/main/res/drawable-hdpi/ic_launcher.png b/background/alarms/repeatingAlarm/repeatingAlarmSample/src/main/res/drawable-hdpi/ic_launcher.png
similarity index 100%
copy from ui/actionbar/DoneBar/DoneBar/src/main/res/drawable-hdpi/ic_launcher.png
copy to background/alarms/repeatingAlarm/repeatingAlarmSample/src/main/res/drawable-hdpi/ic_launcher.png
Binary files differ
diff --git a/ui/actionbar/DoneBar/DoneBar/src/main/res/drawable-mdpi/ic_launcher.png b/background/alarms/repeatingAlarm/repeatingAlarmSample/src/main/res/drawable-mdpi/ic_launcher.png
similarity index 100%
copy from ui/actionbar/DoneBar/DoneBar/src/main/res/drawable-mdpi/ic_launcher.png
copy to background/alarms/repeatingAlarm/repeatingAlarmSample/src/main/res/drawable-mdpi/ic_launcher.png
Binary files differ
diff --git a/ui/actionbar/DoneBar/DoneBar/src/main/res/drawable-xhdpi/ic_launcher.png b/background/alarms/repeatingAlarm/repeatingAlarmSample/src/main/res/drawable-xhdpi/ic_launcher.png
similarity index 100%
copy from ui/actionbar/DoneBar/DoneBar/src/main/res/drawable-xhdpi/ic_launcher.png
copy to background/alarms/repeatingAlarm/repeatingAlarmSample/src/main/res/drawable-xhdpi/ic_launcher.png
Binary files differ
diff --git a/ui/actionbar/DoneBar/DoneBar/src/main/res/drawable-xxhdpi/ic_launcher.png b/background/alarms/repeatingAlarm/repeatingAlarmSample/src/main/res/drawable-xxhdpi/ic_launcher.png
similarity index 100%
copy from ui/actionbar/DoneBar/DoneBar/src/main/res/drawable-xxhdpi/ic_launcher.png
copy to background/alarms/repeatingAlarm/repeatingAlarmSample/src/main/res/drawable-xxhdpi/ic_launcher.png
Binary files differ
diff --git a/background/alarms/repeatingAlarm/settings.gradle b/background/alarms/repeatingAlarm/settings.gradle
new file mode 100644
index 0000000..73a49e8
--- /dev/null
+++ b/background/alarms/repeatingAlarm/settings.gradle
@@ -0,0 +1 @@
+include 'repeatingAlarmSample'
diff --git a/background/alarms/repeatingAlarm/template-params.xml b/background/alarms/repeatingAlarm/template-params.xml
new file mode 100644
index 0000000..b5a52bb
--- /dev/null
+++ b/background/alarms/repeatingAlarm/template-params.xml
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ 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.
+-->
+<sample>
+    <name>repeatingAlarm</name>
+    <group>Background</group>
+    <package>com.example.android.repeatingalarm</package>
+
+
+    <!--TODO: change minSdk if needed-->
+    <minSdk>4</minSdk>
+
+    <strings>
+        <intro>
+            <![CDATA[
+                Introductory text that explains what the sample is intended to demonstrate. Edit
+                in template-params.xml.
+            ]]>
+        </intro>
+
+        <sample_action>Set Alarm</sample_action>
+    </strings>
+
+
+    <meatFragment>AlarmFragment</meatFragment>
+    <template src="base"/>
+    <template src="SingleView"/>
+    <common src="logger"/>
+    <common src="activities"/>
+
+</sample>
diff --git a/build.gradle b/build.gradle
new file mode 100644
index 0000000..b895091
--- /dev/null
+++ b/build.gradle
@@ -0,0 +1,55 @@
+List<String> samples = [
+"security/keystore/BasicAndroidKeyStore",
+"connectivity/sync/BasicSyncAdapter",
+"connectivity/network/NetworkConnect",
+"connectivity/network/BasicNetworking",
+"connectivity/bluetooth/BluetoothLeGatt",
+"content/multiuser/AppRestrictions",
+"content/contacts/BasicContactables",
+"content/documentsUi/StorageClient",
+"views/TextLinkify",
+"input/gestures/BasicGestureDetect",
+"input/multitouch/BasicMultitouch",
+"testing/ActivityInstrumentation",
+"media/BasicMediaRouter",
+"media/BasicMediaDecoder",
+"ui/holo/BorderlessButtons",
+"ui/accessibility/BasicAccessibility",
+"ui/lists/CustomChoiceList",
+"ui/views/TextSwitcher",
+"ui/views/HorizontalPaging",
+"ui/actionbarcompat/Styled",
+"ui/actionbarcompat/ListPopupMenu",
+"ui/actionbarcompat/ShareActionProvider",
+"ui/actionbarcompat/Basic",
+"ui/notifications/BasicNotifications",
+"ui/notifications/CustomNotifications",
+"ui/actionbar/DoneBar",
+"ui/window/BasicImmersiveMode",
+"ui/window/AdvancedImmersiveMode",
+"ui/window/ImmersiveMode",
+"background/alarms/repeatingAlarm"
+]
+
+List<String> taskNames = [
+    "clean",
+    "refresh",
+    "build",
+    "emitAnt",
+    "emitGradle",
+    "emitBrowseable",
+]
+
+taskNames.each { taskName ->
+    def task = project.hasProperty(taskName) ? project.tasks[taskName] : project.task(taskName)
+    println task
+    samples.each { sample ->
+        File sampleDir = new File(sample)
+        task.dependsOn project.task([type: GradleBuild], "${sample}_${taskName}", {
+            buildFile = "${sample}/build.gradle"
+            dir = sample
+            tasks = [taskName]
+        })
+    }
+}
+
diff --git a/buildSrc/build.gradle b/buildSrc/build.gradle
new file mode 100644
index 0000000..b42a6ef
--- /dev/null
+++ b/buildSrc/build.gradle
@@ -0,0 +1,15 @@
+repositories {
+    mavenCentral()
+}
+dependencies {
+    compile 'org.freemarker:freemarker:2.3.20'
+}
+
+sourceSets {
+    main {
+        groovy {
+            srcDir new File(rootDir, "../../build/buildSrc/src/main/groovy")
+        }
+    }
+}
+
diff --git a/common/src/com/example/android/common/actionbarcompat/MultiSelectionUtil.java b/common/src/com/example/android/common/actionbarcompat/MultiSelectionUtil.java
new file mode 100644
index 0000000..482f6ed
--- /dev/null
+++ b/common/src/com/example/android/common/actionbarcompat/MultiSelectionUtil.java
@@ -0,0 +1,293 @@
+/*
+ * Copyright (C) 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.common.actionbarcompat;
+
+import android.os.Bundle;
+import android.support.v7.app.ActionBarActivity;
+import android.support.v7.view.ActionMode;
+import android.util.Pair;
+import android.util.SparseBooleanArray;
+import android.view.Menu;
+import android.view.MenuItem;
+import android.view.View;
+import android.widget.AbsListView;
+import android.widget.Adapter;
+import android.widget.AdapterView;
+import android.widget.ListView;
+
+import java.util.HashSet;
+
+/**
+ * Utilities for handling multiple selection in list views. Contains functionality similar to {@link
+ * AbsListView#CHOICE_MODE_MULTIPLE_MODAL} which works with {@link ActionBarActivity} and
+ * backward-compatible action bars.
+ */
+public class MultiSelectionUtil {
+
+    /**
+     * Attach a Controller to the given <code>listView</code>, <code>activity</code>
+     * and <code>listener</code>.
+     *
+     * @param listView ListView which displays {@link android.widget.Checkable} items.
+     * @param activity Activity which contains the ListView.
+     * @param listener Listener that will manage the selection mode.
+     * @return the attached Controller instance.
+     */
+    public static Controller attachMultiSelectionController(final ListView listView,
+            final ActionBarActivity activity, final MultiChoiceModeListener listener) {
+        return new Controller(listView, activity, listener);
+    }
+
+    /**
+     * Class which provides functionality similar to {@link AbsListView#CHOICE_MODE_MULTIPLE_MODAL}
+     * for the {@link ListView} provided to it. A
+     * {@link android.widget.AdapterView.OnItemLongClickListener} is set on the ListView so that
+     * when an item is long-clicked an ActionBarCompat Action Mode is started. Once started, a
+     * {@link android.widget.AdapterView.OnItemClickListener} is set so that an item click toggles
+     * that item's checked state.
+     */
+    public static class Controller {
+
+        private final ListView mListView;
+        private final ActionBarActivity mActivity;
+        private final MultiChoiceModeListener mListener;
+        private final Callbacks mCallbacks;
+
+        // Current Action Mode (if there is one)
+        private ActionMode mActionMode;
+
+        // Keeps record of any items that should be checked on the next action mode creation
+        private HashSet<Pair<Integer, Long>> mItemsToCheck;
+
+        // Reference to the replace OnItemClickListener (so it can be restored later)
+        private AdapterView.OnItemClickListener mOldItemClickListener;
+
+        private final Runnable mSetChoiceModeNoneRunnable = new Runnable() {
+            @Override
+            public void run() {
+                mListView.setChoiceMode(AbsListView.CHOICE_MODE_NONE);
+            }
+        };
+
+        private Controller(ListView listView, ActionBarActivity activity,
+                MultiChoiceModeListener listener) {
+            mListView = listView;
+            mActivity = activity;
+            mListener = listener;
+            mCallbacks = new Callbacks();
+
+            // We set ourselves as the OnItemLongClickListener so we know when to start
+            // an Action Mode
+            listView.setOnItemLongClickListener(mCallbacks);
+        }
+
+        /**
+         * Finish the current Action Mode (if there is one).
+         */
+        public void finish() {
+            if (mActionMode != null) {
+                mActionMode.finish();
+            }
+        }
+
+        /**
+         * This method should be called from your {@link ActionBarActivity} or
+         * {@link android.support.v4.app.Fragment Fragment} to allow the controller to restore any
+         * instance state.
+         *
+         * @param savedInstanceState - The state passed to your Activity or Fragment.
+         */
+        public void restoreInstanceState(Bundle savedInstanceState) {
+            if (savedInstanceState != null) {
+                long[] checkedIds = savedInstanceState.getLongArray(getStateKey());
+                if (checkedIds != null && checkedIds.length > 0) {
+                    HashSet<Long> idsToCheckOnRestore = new HashSet<Long>();
+                    for (long id : checkedIds) {
+                        idsToCheckOnRestore.add(id);
+                    }
+                    tryRestoreInstanceState(idsToCheckOnRestore);
+                }
+            }
+        }
+
+        /**
+         * This method should be called from
+         * {@link ActionBarActivity#onSaveInstanceState(android.os.Bundle)} or
+         * {@link android.support.v4.app.Fragment#onSaveInstanceState(android.os.Bundle)
+         * Fragment.onSaveInstanceState(Bundle)} to allow the controller to save its instance
+         * state.
+         *
+         * @param outState - The state passed to your Activity or Fragment.
+         */
+        public void saveInstanceState(Bundle outState) {
+            if (mActionMode != null && mListView.getAdapter().hasStableIds()) {
+                outState.putLongArray(getStateKey(), mListView.getCheckedItemIds());
+            }
+        }
+
+        // Internal utility methods
+
+        private String getStateKey() {
+            return MultiSelectionUtil.class.getSimpleName() + "_" + mListView.getId();
+        }
+
+        private void tryRestoreInstanceState(HashSet<Long> idsToCheckOnRestore) {
+            if (idsToCheckOnRestore == null || mListView.getAdapter() == null) {
+                return;
+            }
+
+            boolean idsFound = false;
+            Adapter adapter = mListView.getAdapter();
+            for (int pos = adapter.getCount() - 1; pos >= 0; pos--) {
+                if (idsToCheckOnRestore.contains(adapter.getItemId(pos))) {
+                    idsFound = true;
+                    if (mItemsToCheck == null) {
+                        mItemsToCheck = new HashSet<Pair<Integer, Long>>();
+                    }
+                    mItemsToCheck.add(new Pair<Integer, Long>(pos, adapter.getItemId(pos)));
+                }
+            }
+
+            if (idsFound) {
+                // We found some IDs that were checked. Let's now restore the multi-selection
+                // state.
+                mActionMode = mActivity.startSupportActionMode(mCallbacks);
+            }
+        }
+
+        /**
+         * This class encapsulates all of the callbacks necessary for the controller class.
+         */
+        final class Callbacks implements ActionMode.Callback, AdapterView.OnItemClickListener,
+                AdapterView.OnItemLongClickListener {
+
+            @Override
+            public final boolean onCreateActionMode(ActionMode actionMode, Menu menu) {
+                if (mListener.onCreateActionMode(actionMode, menu)) {
+                    mActionMode = actionMode;
+                    // Keep a reference to the existing OnItemClickListener so we can restore it
+                    mOldItemClickListener = mListView.getOnItemClickListener();
+
+                    // Set-up the ListView to emulate CHOICE_MODE_MULTIPLE_MODAL
+                    mListView.setOnItemClickListener(this);
+                    mListView.setChoiceMode(AbsListView.CHOICE_MODE_MULTIPLE);
+                    mListView.removeCallbacks(mSetChoiceModeNoneRunnable);
+
+                    // If there are some items to check, do it now
+                    if (mItemsToCheck != null) {
+                        for (Pair<Integer, Long> posAndId : mItemsToCheck) {
+                            mListView.setItemChecked(posAndId.first, true);
+                            // Notify the listener that the item has been checked
+                            mListener.onItemCheckedStateChanged(mActionMode, posAndId.first,
+                                    posAndId.second, true);
+                        }
+                    }
+                    return true;
+                }
+                return false;
+            }
+
+            @Override
+            public boolean onPrepareActionMode(ActionMode actionMode, Menu menu) {
+                // Proxy listener
+                return mListener.onPrepareActionMode(actionMode, menu);
+            }
+
+            @Override
+            public boolean onActionItemClicked(ActionMode actionMode, MenuItem menuItem) {
+                // Proxy listener
+                return mListener.onActionItemClicked(actionMode, menuItem);
+            }
+
+            @Override
+            public void onDestroyActionMode(ActionMode actionMode) {
+                mListener.onDestroyActionMode(actionMode);
+
+                // Clear all the checked items
+                SparseBooleanArray checkedPositions = mListView.getCheckedItemPositions();
+                if (checkedPositions != null) {
+                    for (int i = 0; i < checkedPositions.size(); i++) {
+                        mListView.setItemChecked(checkedPositions.keyAt(i), false);
+                    }
+                }
+
+                // Restore the original onItemClickListener
+                mListView.setOnItemClickListener(mOldItemClickListener);
+
+                // Clear the Action Mode
+                mActionMode = null;
+
+                // Reset the ListView's Choice Mode
+                mListView.post(mSetChoiceModeNoneRunnable);
+            }
+
+            @Override
+            public void onItemClick(AdapterView<?> adapterView, View view, int position, long id) {
+                // Check to see what the new checked state is, and then notify the listener
+                final boolean checked = mListView.isItemChecked(position);
+                mListener.onItemCheckedStateChanged(mActionMode, position, id, checked);
+
+                boolean hasCheckedItem = checked;
+
+                // Check to see if we have any checked items
+                if (!hasCheckedItem) {
+                    SparseBooleanArray checkedItemPositions = mListView.getCheckedItemPositions();
+                    if (checkedItemPositions != null) {
+                        // Iterate through the SparseBooleanArray to see if there is a checked item
+                        int i = 0;
+                        while (!hasCheckedItem && i < checkedItemPositions.size()) {
+                            hasCheckedItem = checkedItemPositions.valueAt(i++);
+                        }
+                    }
+                }
+
+                // If we don't have any checked items, finish the action mode
+                if (!hasCheckedItem) {
+                    mActionMode.finish();
+                }
+            }
+
+            @Override
+            public boolean onItemLongClick(AdapterView<?> adapterView, View view, int position,
+                    long id) {
+                // If we already have an action mode started return false
+                // (onItemClick will be called anyway)
+                if (mActionMode != null) {
+                    return false;
+                }
+
+                mItemsToCheck = new HashSet<Pair<Integer, Long>>();
+                mItemsToCheck.add(new Pair<Integer, Long>(position, id));
+                mActionMode = mActivity.startSupportActionMode(this);
+                return true;
+            }
+        }
+    }
+
+    /**
+     * @see android.widget.AbsListView.MultiChoiceModeListener
+     */
+    public static interface MultiChoiceModeListener extends ActionMode.Callback {
+
+        /**
+         * @see android.widget.AbsListView.MultiChoiceModeListener#onItemCheckedStateChanged(
+         *android.view.ActionMode, int, long, boolean)
+         */
+        public void onItemCheckedStateChanged(ActionMode mode, int position, long id,
+                boolean checked);
+    }
+}
diff --git a/common/src/com/example/android/common/dummydata/Cheeses.java b/common/src/com/example/android/common/dummydata/Cheeses.java
new file mode 100644
index 0000000..a386e68
--- /dev/null
+++ b/common/src/com/example/android/common/dummydata/Cheeses.java
@@ -0,0 +1,165 @@
+/*
+ * 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.common.dummydata;
+
+import java.util.ArrayList;
+
+/**
+ * Dummy data.
+ */
+public class Cheeses {
+    static final String[] CHEESES = {
+            "Abbaye de Belloc", "Abbaye du Mont des Cats", "Abertam", "Abondance", "Ackawi",
+            "Acorn", "Adelost", "Affidelice au Chablis", "Afuega'l Pitu", "Airag", "Airedale",
+            "Aisy Cendre", "Allgauer Emmentaler", "Alverca", "Ambert", "American Cheese",
+            "Ami du Chambertin", "Anejo Enchilado", "Anneau du Vic-Bilh", "Anthoriro", "Appenzell",
+            "Aragon", "Ardi Gasna", "Ardrahan", "Armenian String", "Aromes au Gene de Marc",
+            "Asadero", "Asiago", "Aubisque Pyrenees", "Autun", "Avaxtskyr", "Baby Swiss",
+            "Babybel", "Baguette Laonnaise", "Bakers", "Baladi", "Balaton", "Bandal", "Banon",
+            "Barry's Bay Cheddar", "Basing", "Basket Cheese", "Bath Cheese", "Bavarian Bergkase",
+            "Baylough", "Beaufort", "Beauvoorde", "Beenleigh Blue", "Beer Cheese", "Bel Paese",
+            "Bergader", "Bergere Bleue", "Berkswell", "Beyaz Peynir", "Bierkase", "Bishop Kennedy",
+            "Blarney", "Bleu d'Auvergne", "Bleu de Gex", "Bleu de Laqueuille",
+            "Bleu de Septmoncel", "Bleu Des Causses", "Blue", "Blue Castello", "Blue Rathgore",
+            "Blue Vein (Australian)", "Blue Vein Cheeses", "Bocconcini", "Bocconcini (Australian)",
+            "Boeren Leidenkaas", "Bonchester", "Bosworth", "Bougon", "Boule Du Roves",
+            "Boulette d'Avesnes", "Boursault", "Boursin", "Bouyssou", "Bra", "Braudostur",
+            "Breakfast Cheese", "Brebis du Lavort", "Brebis du Lochois", "Brebis du Puyfaucon",
+            "Bresse Bleu", "Brick", "Brie", "Brie de Meaux", "Brie de Melun", "Brillat-Savarin",
+            "Brin", "Brin d' Amour", "Brin d'Amour", "Brinza (Burduf Brinza)",
+            "Briquette de Brebis", "Briquette du Forez", "Broccio", "Broccio Demi-Affine",
+            "Brousse du Rove", "Bruder Basil", "Brusselae Kaas (Fromage de Bruxelles)", "Bryndza",
+            "Buchette d'Anjou", "Buffalo", "Burgos", "Butte", "Butterkase", "Button (Innes)",
+            "Buxton Blue", "Cabecou", "Caboc", "Cabrales", "Cachaille", "Caciocavallo", "Caciotta",
+            "Caerphilly", "Cairnsmore", "Calenzana", "Cambazola", "Camembert de Normandie",
+            "Canadian Cheddar", "Canestrato", "Cantal", "Caprice des Dieux", "Capricorn Goat",
+            "Capriole Banon", "Carre de l'Est", "Casciotta di Urbino", "Cashel Blue", "Castellano",
+            "Castelleno", "Castelmagno", "Castelo Branco", "Castigliano", "Cathelain",
+            "Celtic Promise", "Cendre d'Olivet", "Cerney", "Chabichou", "Chabichou du Poitou",
+            "Chabis de Gatine", "Chaource", "Charolais", "Chaumes", "Cheddar",
+            "Cheddar Clothbound", "Cheshire", "Chevres", "Chevrotin des Aravis", "Chontaleno",
+            "Civray", "Coeur de Camembert au Calvados", "Coeur de Chevre", "Colby", "Cold Pack",
+            "Comte", "Coolea", "Cooleney", "Coquetdale", "Corleggy", "Cornish Pepper",
+            "Cotherstone", "Cotija", "Cottage Cheese", "Cottage Cheese (Australian)",
+            "Cougar Gold", "Coulommiers", "Coverdale", "Crayeux de Roncq", "Cream Cheese",
+            "Cream Havarti", "Crema Agria", "Crema Mexicana", "Creme Fraiche", "Crescenza",
+            "Croghan", "Crottin de Chavignol", "Crottin du Chavignol", "Crowdie", "Crowley",
+            "Cuajada", "Curd", "Cure Nantais", "Curworthy", "Cwmtawe Pecorino",
+            "Cypress Grove Chevre", "Danablu (Danish Blue)", "Danbo", "Danish Fontina",
+            "Daralagjazsky", "Dauphin", "Delice des Fiouves", "Denhany Dorset Drum", "Derby",
+            "Dessertnyj Belyj", "Devon Blue", "Devon Garland", "Dolcelatte", "Doolin",
+            "Doppelrhamstufel", "Dorset Blue Vinney", "Double Gloucester", "Double Worcester",
+            "Dreux a la Feuille", "Dry Jack", "Duddleswell", "Dunbarra", "Dunlop", "Dunsyre Blue",
+            "Duroblando", "Durrus", "Dutch Mimolette (Commissiekaas)", "Edam", "Edelpilz",
+            "Emental Grand Cru", "Emlett", "Emmental", "Epoisses de Bourgogne", "Esbareich",
+            "Esrom", "Etorki", "Evansdale Farmhouse Brie", "Evora De L'Alentejo", "Exmoor Blue",
+            "Explorateur", "Feta", "Feta (Australian)", "Figue", "Filetta", "Fin-de-Siecle",
+            "Finlandia Swiss", "Finn", "Fiore Sardo", "Fleur du Maquis", "Flor de Guia",
+            "Flower Marie", "Folded", "Folded cheese with mint", "Fondant de Brebis",
+            "Fontainebleau", "Fontal", "Fontina Val d'Aosta", "Formaggio di capra", "Fougerus",
+            "Four Herb Gouda", "Fourme d' Ambert", "Fourme de Haute Loire", "Fourme de Montbrison",
+            "Fresh Jack", "Fresh Mozzarella", "Fresh Ricotta", "Fresh Truffles", "Fribourgeois",
+            "Friesekaas", "Friesian", "Friesla", "Frinault", "Fromage a Raclette", "Fromage Corse",
+            "Fromage de Montagne de Savoie", "Fromage Frais", "Fruit Cream Cheese",
+            "Frying Cheese", "Fynbo", "Gabriel", "Galette du Paludier", "Galette Lyonnaise",
+            "Galloway Goat's Milk Gems", "Gammelost", "Gaperon a l'Ail", "Garrotxa", "Gastanberra",
+            "Geitost", "Gippsland Blue", "Gjetost", "Gloucester", "Golden Cross", "Gorgonzola",
+            "Gornyaltajski", "Gospel Green", "Gouda", "Goutu", "Gowrie", "Grabetto", "Graddost",
+            "Grafton Village Cheddar", "Grana", "Grana Padano", "Grand Vatel",
+            "Grataron d' Areches", "Gratte-Paille", "Graviera", "Greuilh", "Greve",
+            "Gris de Lille", "Gruyere", "Gubbeen", "Guerbigny", "Halloumi",
+            "Halloumy (Australian)", "Haloumi-Style Cheese", "Harbourne Blue", "Havarti",
+            "Heidi Gruyere", "Hereford Hop", "Herrgardsost", "Herriot Farmhouse", "Herve",
+            "Hipi Iti", "Hubbardston Blue Cow", "Hushallsost", "Iberico", "Idaho Goatster",
+            "Idiazabal", "Il Boschetto al Tartufo", "Ile d'Yeu", "Isle of Mull", "Jarlsberg",
+            "Jermi Tortes", "Jibneh Arabieh", "Jindi Brie", "Jubilee Blue", "Juustoleipa",
+            "Kadchgall", "Kaseri", "Kashta", "Kefalotyri", "Kenafa", "Kernhem", "Kervella Affine",
+            "Kikorangi", "King Island Cape Wickham Brie", "King River Gold", "Klosterkaese",
+            "Knockalara", "Kugelkase", "L'Aveyronnais", "L'Ecir de l'Aubrac", "La Taupiniere",
+            "La Vache Qui Rit", "Laguiole", "Lairobell", "Lajta", "Lanark Blue", "Lancashire",
+            "Langres", "Lappi", "Laruns", "Lavistown", "Le Brin", "Le Fium Orbo", "Le Lacandou",
+            "Le Roule", "Leafield", "Lebbene", "Leerdammer", "Leicester", "Leyden", "Limburger",
+            "Lincolnshire Poacher", "Lingot Saint Bousquet d'Orb", "Liptauer", "Little Rydings",
+            "Livarot", "Llanboidy", "Llanglofan Farmhouse", "Loch Arthur Farmhouse",
+            "Loddiswell Avondale", "Longhorn", "Lou Palou", "Lou Pevre", "Lyonnais", "Maasdam",
+            "Macconais", "Mahoe Aged Gouda", "Mahon", "Malvern", "Mamirolle", "Manchego",
+            "Manouri", "Manur", "Marble Cheddar", "Marbled Cheeses", "Maredsous", "Margotin",
+            "Maribo", "Maroilles", "Mascares", "Mascarpone", "Mascarpone (Australian)",
+            "Mascarpone Torta", "Matocq", "Maytag Blue", "Meira", "Menallack Farmhouse",
+            "Menonita", "Meredith Blue", "Mesost", "Metton (Cancoillotte)", "Meyer Vintage Gouda",
+            "Mihalic Peynir", "Milleens", "Mimolette", "Mine-Gabhar", "Mini Baby Bells", "Mixte",
+            "Molbo", "Monastery Cheeses", "Mondseer", "Mont D'or Lyonnais", "Montasio",
+            "Monterey Jack", "Monterey Jack Dry", "Morbier", "Morbier Cru de Montagne",
+            "Mothais a la Feuille", "Mozzarella", "Mozzarella (Australian)",
+            "Mozzarella di Bufala", "Mozzarella Fresh, in water", "Mozzarella Rolls", "Munster",
+            "Murol", "Mycella", "Myzithra", "Naboulsi", "Nantais", "Neufchatel",
+            "Neufchatel (Australian)", "Niolo", "Nokkelost", "Northumberland", "Oaxaca",
+            "Olde York", "Olivet au Foin", "Olivet Bleu", "Olivet Cendre",
+            "Orkney Extra Mature Cheddar", "Orla", "Oschtjepka", "Ossau Fermier", "Ossau-Iraty",
+            "Oszczypek", "Oxford Blue", "P'tit Berrichon", "Palet de Babligny", "Paneer", "Panela",
+            "Pannerone", "Pant ys Gawn", "Parmesan (Parmigiano)", "Parmigiano Reggiano",
+            "Pas de l'Escalette", "Passendale", "Pasteurized Processed", "Pate de Fromage",
+            "Patefine Fort", "Pave d'Affinois", "Pave d'Auge", "Pave de Chirac", "Pave du Berry",
+            "Pecorino", "Pecorino in Walnut Leaves", "Pecorino Romano", "Peekskill Pyramid",
+            "Pelardon des Cevennes", "Pelardon des Corbieres", "Penamellera", "Penbryn",
+            "Pencarreg", "Perail de Brebis", "Petit Morin", "Petit Pardou", "Petit-Suisse",
+            "Picodon de Chevre", "Picos de Europa", "Piora", "Pithtviers au Foin",
+            "Plateau de Herve", "Plymouth Cheese", "Podhalanski", "Poivre d'Ane", "Polkolbin",
+            "Pont l'Eveque", "Port Nicholson", "Port-Salut", "Postel", "Pouligny-Saint-Pierre",
+            "Pourly", "Prastost", "Pressato", "Prince-Jean", "Processed Cheddar", "Provolone",
+            "Provolone (Australian)", "Pyengana Cheddar", "Pyramide", "Quark",
+            "Quark (Australian)", "Quartirolo Lombardo", "Quatre-Vents", "Quercy Petit",
+            "Queso Blanco", "Queso Blanco con Frutas --Pina y Mango", "Queso de Murcia",
+            "Queso del Montsec", "Queso del Tietar", "Queso Fresco", "Queso Fresco (Adobera)",
+            "Queso Iberico", "Queso Jalapeno", "Queso Majorero", "Queso Media Luna",
+            "Queso Para Frier", "Queso Quesadilla", "Rabacal", "Raclette", "Ragusano", "Raschera",
+            "Reblochon", "Red Leicester", "Regal de la Dombes", "Reggianito", "Remedou",
+            "Requeson", "Richelieu", "Ricotta", "Ricotta (Australian)", "Ricotta Salata", "Ridder",
+            "Rigotte", "Rocamadour", "Rollot", "Romano", "Romans Part Dieu", "Roncal", "Roquefort",
+            "Roule", "Rouleau De Beaulieu", "Royalp Tilsit", "Rubens", "Rustinu", "Saaland Pfarr",
+            "Saanenkaese", "Saga", "Sage Derby", "Sainte Maure", "Saint-Marcellin",
+            "Saint-Nectaire", "Saint-Paulin", "Salers", "Samso", "San Simon", "Sancerre",
+            "Sap Sago", "Sardo", "Sardo Egyptian", "Sbrinz", "Scamorza", "Schabzieger", "Schloss",
+            "Selles sur Cher", "Selva", "Serat", "Seriously Strong Cheddar", "Serra da Estrela",
+            "Sharpam", "Shelburne Cheddar", "Shropshire Blue", "Siraz", "Sirene", "Smoked Gouda",
+            "Somerset Brie", "Sonoma Jack", "Sottocenare al Tartufo", "Soumaintrain",
+            "Sourire Lozerien", "Spenwood", "Sraffordshire Organic", "St. Agur Blue Cheese",
+            "Stilton", "Stinking Bishop", "String", "Sussex Slipcote", "Sveciaost", "Swaledale",
+            "Sweet Style Swiss", "Swiss", "Syrian (Armenian String)", "Tala", "Taleggio", "Tamie",
+            "Tasmania Highland Chevre Log", "Taupiniere", "Teifi", "Telemea", "Testouri",
+            "Tete de Moine", "Tetilla", "Texas Goat Cheese", "Tibet", "Tillamook Cheddar",
+            "Tilsit", "Timboon Brie", "Toma", "Tomme Brulee", "Tomme d'Abondance",
+            "Tomme de Chevre", "Tomme de Romans", "Tomme de Savoie", "Tomme des Chouans", "Tommes",
+            "Torta del Casar", "Toscanello", "Touree de L'Aubier", "Tourmalet",
+            "Trappe (Veritable)", "Trois Cornes De Vendee", "Tronchon", "Trou du Cru", "Truffe",
+            "Tupi", "Turunmaa", "Tymsboro", "Tyn Grug", "Tyning", "Ubriaco", "Ulloa",
+            "Vacherin-Fribourgeois", "Valencay", "Vasterbottenost", "Venaco", "Vendomois",
+            "Vieux Corse", "Vignotte", "Vulscombe", "Waimata Farmhouse Blue",
+            "Washed Rind Cheese (Australian)", "Waterloo", "Weichkaese", "Wellington",
+            "Wensleydale", "White Stilton", "Whitestone Farmhouse", "Wigmore", "Woodside Cabecou",
+            "Xanadu", "Xynotyro", "Yarg Cornish", "Yarra Valley Pyramid", "Yorkshire Blue",
+            "Zamorano", "Zanetti Grana Padano", "Zanetti Parmigiano Reggiano"
+    };
+
+    public static ArrayList<String> asList() {
+        ArrayList<String> items = new ArrayList<String>();
+        for (int i = 0, z = CHEESES.length ; i < z ; i++) {
+            items.add(CHEESES[i]);
+        }
+        return items;
+    }
+}
\ No newline at end of file
diff --git a/common/src/com/example/android/common/accounts/GenericAccountService.java b/common/src/java/com/example/android/common/accounts/GenericAccountService.java
similarity index 85%
rename from common/src/com/example/android/common/accounts/GenericAccountService.java
rename to common/src/java/com/example/android/common/accounts/GenericAccountService.java
index 9480023..0cd499a 100644
--- a/common/src/com/example/android/common/accounts/GenericAccountService.java
+++ b/common/src/java/com/example/android/common/accounts/GenericAccountService.java
@@ -29,17 +29,23 @@
 
 public class GenericAccountService extends Service {
     private static final String TAG = "GenericAccountService";
-    private static final String ACCOUNT_TYPE = "com.example.android.network.sync.basicsyncadapter";
-    public static final String ACCOUNT_NAME = "sync";
+    public static final String ACCOUNT_NAME = "Account";
     private Authenticator mAuthenticator;
 
     /**
      * Obtain a handle to the {@link android.accounts.Account} used for sync in this application.
      *
+     * <p>It is important that the accountType specified here matches the value in your sync adapter
+     * configuration XML file for android.accounts.AccountAuthenticator (often saved in
+     * res/xml/syncadapter.xml). If this is not set correctly, you'll receive an error indicating
+     * that "caller uid XXXXX is different than the authenticator's uid".
+     *
+     * @param accountType AccountType defined in the configuration XML file for
+     *                    android.accounts.AccountAuthenticator (e.g. res/xml/syncadapter.xml).
      * @return Handle to application's account (not guaranteed to resolve unless CreateSyncAccount()
      *         has been called)
      */
-    public static Account GetAccount() {
+    public static Account GetAccount(String accountType) {
         // Note: Normally the account name is set to the user's identity (username or email
         // address). However, since we aren't actually using any user accounts, it makes more sense
         // to use a generic string in this case.
@@ -47,7 +53,7 @@
         // This string should *not* be localized. If the user switches locale, we would not be
         // able to locate the old account, and may erroneously register multiple accounts.
         final String accountName = ACCOUNT_NAME;
-        return new Account(accountName, ACCOUNT_TYPE);
+        return new Account(accountName, accountType);
     }
 
     @Override
diff --git a/common/src/java/com/example/android/common/activities/SampleActivityBase.java b/common/src/java/com/example/android/common/activities/SampleActivityBase.java
new file mode 100644
index 0000000..3228927
--- /dev/null
+++ b/common/src/java/com/example/android/common/activities/SampleActivityBase.java
@@ -0,0 +1,52 @@
+/*
+* 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.common.activities;
+
+import android.os.Bundle;
+import android.support.v4.app.FragmentActivity;
+
+import com.example.android.common.logger.Log;
+import com.example.android.common.logger.LogWrapper;
+
+/**
+ * Base launcher activity, to handle most of the common plumbing for samples.
+ */
+public class SampleActivityBase extends FragmentActivity {
+
+    public static final String TAG = "SampleActivityBase";
+
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+    }
+
+    @Override
+    protected  void onStart() {
+        super.onStart();
+        initializeLogging();
+    }
+
+    /** Set up targets to receive log data */
+    public void initializeLogging() {
+        // Using Log, front-end to the logging chain, emulates android.util.log method signatures.
+        // Wraps Android's native log framework
+        LogWrapper logWrapper = new LogWrapper();
+        Log.setLogNode(logWrapper);
+
+        Log.i(TAG, "Ready");
+    }
+}
diff --git a/common/src/com/example/android/common/db/SelectionBuilder.java b/common/src/java/com/example/android/common/db/SelectionBuilder.java
similarity index 98%
rename from common/src/com/example/android/common/db/SelectionBuilder.java
rename to common/src/java/com/example/android/common/db/SelectionBuilder.java
index 51d8cc3..a1964c5 100644
--- a/common/src/com/example/android/common/db/SelectionBuilder.java
+++ b/common/src/java/com/example/android/common/db/SelectionBuilder.java
@@ -28,12 +28,10 @@
 import android.text.TextUtils;
 import android.util.Log;
 
-import com.google.common.collect.Lists;
-import com.google.common.collect.Maps;
-
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collections;
+import java.util.HashMap;
 import java.util.Map;
 
 /**
@@ -96,9 +94,9 @@
     private static final String TAG = "basicsyncadapter";
 
     private String mTable = null;
-    private Map<String, String> mProjectionMap = Maps.newHashMap();
+    private Map<String, String> mProjectionMap = new HashMap<String, String>();
     private StringBuilder mSelection = new StringBuilder();
-    private ArrayList<String> mSelectionArgs = Lists.newArrayList();
+    private ArrayList<String> mSelectionArgs = new ArrayList<String>();
 
     /**
      * Reset any internal state, allowing this builder to be recycled.
diff --git a/security/keystore/BasicAndroidKeyStore/BasicAndroidKeyStore/src/main/java/com/example/android/common/logger/Log.java b/common/src/java/com/example/android/common/logger/Log.java
similarity index 100%
rename from security/keystore/BasicAndroidKeyStore/BasicAndroidKeyStore/src/main/java/com/example/android/common/logger/Log.java
rename to common/src/java/com/example/android/common/logger/Log.java
diff --git a/common/src/java/com/example/android/common/logger/LogFragment.java b/common/src/java/com/example/android/common/logger/LogFragment.java
new file mode 100644
index 0000000..b302acd
--- /dev/null
+++ b/common/src/java/com/example/android/common/logger/LogFragment.java
@@ -0,0 +1,109 @@
+/*
+* 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.
+*/
+/*
+ * 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.common.logger;
+
+import android.graphics.Typeface;
+import android.os.Bundle;
+import android.support.v4.app.Fragment;
+import android.text.Editable;
+import android.text.TextWatcher;
+import android.view.Gravity;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.ScrollView;
+
+/**
+ * Simple fraggment which contains a LogView and uses is to output log data it receives
+ * through the LogNode interface.
+ */
+public class LogFragment extends Fragment {
+
+    private LogView mLogView;
+    private ScrollView mScrollView;
+
+    public LogFragment() {}
+
+    public View inflateViews() {
+        mScrollView = new ScrollView(getActivity());
+        ViewGroup.LayoutParams scrollParams = new ViewGroup.LayoutParams(
+                ViewGroup.LayoutParams.MATCH_PARENT,
+                ViewGroup.LayoutParams.MATCH_PARENT);
+        mScrollView.setLayoutParams(scrollParams);
+
+        mLogView = new LogView(getActivity());
+        ViewGroup.LayoutParams logParams = new ViewGroup.LayoutParams(scrollParams);
+        logParams.height = ViewGroup.LayoutParams.WRAP_CONTENT;
+        mLogView.setLayoutParams(logParams);
+        mLogView.setClickable(true);
+        mLogView.setFocusable(true);
+        mLogView.setTypeface(Typeface.MONOSPACE);
+
+        // Want to set padding as 16 dips, setPadding takes pixels.  Hooray math!
+        int paddingDips = 16;
+        double scale = getResources().getDisplayMetrics().density;
+        int paddingPixels = (int) ((paddingDips * (scale)) + .5);
+        mLogView.setPadding(paddingPixels, paddingPixels, paddingPixels, paddingPixels);
+        mLogView.setCompoundDrawablePadding(paddingPixels);
+
+        mLogView.setGravity(Gravity.BOTTOM);
+        mLogView.setTextAppearance(getActivity(), android.R.style.TextAppearance_Holo_Medium);
+
+        mScrollView.addView(mLogView);
+        return mScrollView;
+    }
+
+    @Override
+    public View onCreateView(LayoutInflater inflater, ViewGroup container,
+                             Bundle savedInstanceState) {
+
+        View result = inflateViews();
+
+        mLogView.addTextChangedListener(new TextWatcher() {
+            @Override
+            public void beforeTextChanged(CharSequence s, int start, int count, int after) {}
+
+            @Override
+            public void onTextChanged(CharSequence s, int start, int before, int count) {}
+
+            @Override
+            public void afterTextChanged(Editable s) {
+                mScrollView.fullScroll(ScrollView.FOCUS_DOWN);
+            }
+        });
+        return result;
+    }
+
+    public LogView getLogView() {
+        return mLogView;
+    }
+}
\ No newline at end of file
diff --git a/connectivity/network/NetworkConnect/NetworkConnect/src/main/java/com/example/android/common/logger/LogNode.java b/common/src/java/com/example/android/common/logger/LogNode.java
similarity index 100%
rename from connectivity/network/NetworkConnect/NetworkConnect/src/main/java/com/example/android/common/logger/LogNode.java
rename to common/src/java/com/example/android/common/logger/LogNode.java
diff --git a/connectivity/network/BasicNetworkDemo/BasicNetworkDemo/src/main/java/com/example/android/common/logger/LogView.java b/common/src/java/com/example/android/common/logger/LogView.java
similarity index 88%
rename from connectivity/network/BasicNetworkDemo/BasicNetworkDemo/src/main/java/com/example/android/common/logger/LogView.java
rename to common/src/java/com/example/android/common/logger/LogView.java
index 953b8b1..c01542b 100644
--- a/connectivity/network/BasicNetworkDemo/BasicNetworkDemo/src/main/java/com/example/android/common/logger/LogView.java
+++ b/common/src/java/com/example/android/common/logger/LogView.java
@@ -15,6 +15,7 @@
  */
 package com.example.android.common.logger;
 
+import android.app.Activity;
 import android.content.Context;
 import android.util.*;
 import android.widget.TextView;
@@ -45,6 +46,8 @@
      */
     @Override
     public void println(int priority, String tag, String msg, Throwable tr) {
+
+        
         String priorityStr = null;
 
         // For the purposes of this View, we want to print the priority as readable text.
@@ -79,7 +82,7 @@
 
         // Take the priority, tag, message, and exception, and concatenate as necessary
         // into one usable line of text.
-        StringBuilder outputBuilder = new StringBuilder();
+        final StringBuilder outputBuilder = new StringBuilder();
 
         String delimiter = "\t";
         appendIfNotNull(outputBuilder, priorityStr, delimiter);
@@ -87,8 +90,15 @@
         appendIfNotNull(outputBuilder, msg, delimiter);
         appendIfNotNull(outputBuilder, exceptionStr, delimiter);
 
-        // Actually display the text we just generated within the LogView.
-        appendToLog(outputBuilder.toString());
+        // In case this was originally called from an AsyncTask or some other off-UI thread,
+        // make sure the update occurs within the UI thread.
+        ((Activity) getContext()).runOnUiThread( (new Thread(new Runnable() {
+            @Override
+            public void run() {
+                // Display the text we just generated within the LogView.
+                appendToLog(outputBuilder.toString());
+            }
+        })));
 
         if (mNext != null) {
             mNext.println(priority, tag, msg, tr);
@@ -130,4 +140,6 @@
     public void appendToLog(String s) {
         append("\n" + s);
     }
+
+
 }
diff --git a/input/gestures/BasicGestureDetect/BasicGestureDetect/src/main/java/com/example/android/common/logger/LogWrapper.java b/common/src/java/com/example/android/common/logger/LogWrapper.java
similarity index 100%
rename from input/gestures/BasicGestureDetect/BasicGestureDetect/src/main/java/com/example/android/common/logger/LogWrapper.java
rename to common/src/java/com/example/android/common/logger/LogWrapper.java
diff --git a/security/keystore/BasicAndroidKeyStore/BasicAndroidKeyStore/src/main/java/com/example/android/common/logger/MessageOnlyLogFilter.java b/common/src/java/com/example/android/common/logger/MessageOnlyLogFilter.java
similarity index 100%
rename from security/keystore/BasicAndroidKeyStore/BasicAndroidKeyStore/src/main/java/com/example/android/common/logger/MessageOnlyLogFilter.java
rename to common/src/java/com/example/android/common/logger/MessageOnlyLogFilter.java
diff --git a/common/src/com/example/android/common/media/CameraHelper.java b/common/src/java/com/example/android/common/media/CameraHelper.java
similarity index 100%
rename from common/src/com/example/android/common/media/CameraHelper.java
rename to common/src/java/com/example/android/common/media/CameraHelper.java
diff --git a/common/src/java/com/example/android/common/media/MediaCodecWrapper.java b/common/src/java/com/example/android/common/media/MediaCodecWrapper.java
new file mode 100644
index 0000000..a511221
--- /dev/null
+++ b/common/src/java/com/example/android/common/media/MediaCodecWrapper.java
@@ -0,0 +1,386 @@
+/*
+ * Copyright (C) 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.common.media;
+
+import android.media.*;
+import android.os.Handler;
+import android.os.Looper;
+import android.view.Surface;
+
+import java.nio.ByteBuffer;
+import java.util.ArrayDeque;
+import java.util.Queue;
+
+/**
+ * Simplifies the MediaCodec interface by wrapping around the buffer processing operations.
+ */
+public class MediaCodecWrapper {
+
+    // Handler to use for {@code OutputSampleListener} and {code OutputFormatChangedListener}
+    // callbacks
+    private Handler mHandler;
+
+
+    // Callback when media output format changes.
+    public interface OutputFormatChangedListener {
+        void outputFormatChanged(MediaCodecWrapper sender, MediaFormat newFormat);
+    }
+
+    private OutputFormatChangedListener mOutputFormatChangedListener = null;
+
+    /**
+     * Callback for decodes frames. Observers can register a listener for optional stream
+     * of decoded data
+     */
+    public interface OutputSampleListener {
+        void outputSample(MediaCodecWrapper sender, MediaCodec.BufferInfo info, ByteBuffer buffer);
+    }
+
+    /**
+     * The {@link MediaCodec} that is managed by this class.
+     */
+    private MediaCodec mDecoder;
+
+    // References to the internal buffers managed by the codec. The codec
+    // refers to these buffers by index, never by reference so it's up to us
+    // to keep track of which buffer is which.
+    private ByteBuffer[] mInputBuffers;
+    private ByteBuffer[] mOutputBuffers;
+
+    // Indices of the input buffers that are currently available for writing. We'll
+    // consume these in the order they were dequeued from the codec.
+    private Queue<Integer> mAvailableInputBuffers;
+
+    // Indices of the output buffers that currently hold valid data, in the order
+    // they were produced by the codec.
+    private Queue<Integer> mAvailableOutputBuffers;
+
+    // Information about each output buffer, by index. Each entry in this array
+    // is valid if and only if its index is currently contained in mAvailableOutputBuffers.
+    private MediaCodec.BufferInfo[] mOutputBufferInfo;
+
+    // An (optional) stream that will receive decoded data.
+    private OutputSampleListener mOutputSampleListener;
+
+    private MediaCodecWrapper(MediaCodec codec) {
+        mDecoder = codec;
+        codec.start();
+        mInputBuffers = codec.getInputBuffers();
+        mOutputBuffers = codec.getOutputBuffers();
+        mOutputBufferInfo = new MediaCodec.BufferInfo[mOutputBuffers.length];
+        mAvailableInputBuffers = new ArrayDeque<Integer>(mOutputBuffers.length);
+        mAvailableOutputBuffers = new ArrayDeque<Integer>(mInputBuffers.length);
+    }
+
+    /**
+     * Releases resources and ends the encoding/decoding session.
+     */
+    public void stopAndRelease() {
+        mDecoder.stop();
+        mDecoder.release();
+        mDecoder = null;
+        mHandler = null;
+    }
+
+    /**
+     * Getter for the registered {@link OutputFormatChangedListener}
+     */
+    public OutputFormatChangedListener getOutputFormatChangedListener() {
+        return mOutputFormatChangedListener;
+    }
+
+    /**
+     *
+     * @param outputFormatChangedListener the listener for callback.
+     * @param handler message handler for posting the callback.
+     */
+    public void setOutputFormatChangedListener(final OutputFormatChangedListener
+            outputFormatChangedListener, Handler handler) {
+        mOutputFormatChangedListener = outputFormatChangedListener;
+
+        // Making sure we don't block ourselves due to a bad implementation of the callback by
+        // using a handler provided by client.
+        Looper looper;
+        mHandler = handler;
+        if (outputFormatChangedListener != null && mHandler == null) {
+            if ((looper = Looper.myLooper()) != null) {
+                mHandler = new Handler();
+            } else {
+                throw new IllegalArgumentException(
+                        "Looper doesn't exist in the calling thread");
+            }
+        }
+    }
+
+    /**
+     * Constructs the {@link MediaCodecWrapper} wrapper object around the video codec.
+     * The codec is created using the encapsulated information in the
+     * {@link MediaFormat} object.
+     *
+     * @param trackFormat The format of the media object to be decoded.
+     * @param surface Surface to render the decoded frames.
+     * @return
+     */
+    public static MediaCodecWrapper fromVideoFormat(final MediaFormat trackFormat,
+            Surface surface) {
+        MediaCodecWrapper result = null;
+        MediaCodec videoCodec = null;
+
+        // BEGIN_INCLUDE(create_codec)
+        final String mimeType = trackFormat.getString(MediaFormat.KEY_MIME);
+
+        // Check to see if this is actually a video mime type. If it is, then create
+        // a codec that can decode this mime type.
+        if (mimeType.contains("video/")) {
+            videoCodec = MediaCodec.createDecoderByType(mimeType);
+            videoCodec.configure(trackFormat, surface, null,  0);
+
+        }
+
+        // If codec creation was successful, then create a wrapper object around the
+        // newly created codec.
+        if (videoCodec != null) {
+            result = new MediaCodecWrapper(videoCodec);
+        }
+        // END_INCLUDE(create_codec)
+
+        return result;
+    }
+
+
+    /**
+     * Write a media sample to the decoder.
+     *
+     * A "sample" here refers to a single atomic access unit in the media stream. The definition
+     * of "access unit" is dependent on the type of encoding used, but it typically refers to
+     * a single frame of video or a few seconds of audio. {@link android.media.MediaExtractor}
+     * extracts data from a stream one sample at a time.
+     *
+     * @param input A ByteBuffer containing the input data for one sample. The buffer must be set
+     * up for reading, with its position set to the beginning of the sample data and its limit
+     * set to the end of the sample data.
+     *
+     * @param presentationTimeUs  The time, relative to the beginning of the media stream,
+     * at which this buffer should be rendered.
+     *
+     * @param flags Flags to pass to the decoder. See {@link MediaCodec#queueInputBuffer(int,
+     * int, int, long, int)}
+     *
+     * @throws MediaCodec.CryptoException
+     */
+    public boolean writeSample(final ByteBuffer input,
+            final MediaCodec.CryptoInfo crypto,
+            final long presentationTimeUs,
+            final int flags) throws MediaCodec.CryptoException, WriteException {
+        boolean result = false;
+        int size = input.remaining();
+
+        // check if we have dequed input buffers available from the codec
+        if (size > 0 &&  !mAvailableInputBuffers.isEmpty()) {
+            int index = mAvailableInputBuffers.remove();
+            ByteBuffer buffer = mInputBuffers[index];
+
+            // we can't write our sample to a lesser capacity input buffer.
+            if (size > buffer.capacity()) {
+                throw new MediaCodecWrapper.WriteException(String.format(
+                        "Insufficient capacity in MediaCodec buffer: "
+                            + "tried to write %d, buffer capacity is %d.",
+                        input.remaining(),
+                        buffer.capacity()));
+            }
+
+            buffer.clear();
+            buffer.put(input);
+
+            // Submit the buffer to the codec for decoding. The presentationTimeUs
+            // indicates the position (play time) for the current sample.
+            if (crypto == null) {
+                mDecoder.queueInputBuffer(index, 0, size, presentationTimeUs, flags);
+            } else {
+                mDecoder.queueSecureInputBuffer(index, 0, crypto, presentationTimeUs, flags);
+            }
+            result = true;
+        }
+        return result;
+    }
+
+    static MediaCodec.CryptoInfo cryptoInfo= new MediaCodec.CryptoInfo();
+
+    /**
+     * Write a media sample to the decoder.
+     *
+     * A "sample" here refers to a single atomic access unit in the media stream. The definition
+     * of "access unit" is dependent on the type of encoding used, but it typically refers to
+     * a single frame of video or a few seconds of audio. {@link android.media.MediaExtractor}
+     * extracts data from a stream one sample at a time.
+     *
+     * @param extractor  Instance of {@link android.media.MediaExtractor} wrapping the media.
+     *
+     * @param presentationTimeUs The time, relative to the beginning of the media stream,
+     * at which this buffer should be rendered.
+     *
+     * @param flags  Flags to pass to the decoder. See {@link MediaCodec#queueInputBuffer(int,
+     * int, int, long, int)}
+     *
+     * @throws MediaCodec.CryptoException
+     */
+    public boolean writeSample(final MediaExtractor extractor,
+            final boolean isSecure,
+            final long presentationTimeUs,
+            int flags) {
+        boolean result = false;
+        boolean isEos = false;
+
+        if (!mAvailableInputBuffers.isEmpty()) {
+            int index = mAvailableInputBuffers.remove();
+            ByteBuffer buffer = mInputBuffers[index];
+
+            // reads the sample from the file using extractor into the buffer
+            int size = extractor.readSampleData(buffer, 0);
+            if (size <= 0) {
+                flags |= MediaCodec.BUFFER_FLAG_END_OF_STREAM;
+            }
+
+            // Submit the buffer to the codec for decoding. The presentationTimeUs
+            // indicates the position (play time) for the current sample.
+            if (!isSecure) {
+                mDecoder.queueInputBuffer(index, 0, size, presentationTimeUs, flags);
+            } else {
+                extractor.getSampleCryptoInfo(cryptoInfo);
+                mDecoder.queueSecureInputBuffer(index, 0, cryptoInfo, presentationTimeUs, flags);
+            }
+
+            result = true;
+        }
+        return result;
+    }
+
+    /**
+     * Performs a peek() operation in the queue to extract media info for the buffer ready to be
+     * released i.e. the head element of the queue.
+     *
+     * @param out_bufferInfo An output var to hold the buffer info.
+     *
+     * @return True, if the peek was successful.
+     */
+    public boolean peekSample(MediaCodec.BufferInfo out_bufferInfo) {
+        // dequeue available buffers and synchronize our data structures with the codec.
+        update();
+        boolean result = false;
+        if (!mAvailableOutputBuffers.isEmpty()) {
+            int index = mAvailableOutputBuffers.peek();
+            MediaCodec.BufferInfo info = mOutputBufferInfo[index];
+            // metadata of the sample
+            out_bufferInfo.set(
+                    info.offset,
+                    info.size,
+                    info.presentationTimeUs,
+                    info.flags);
+            result = true;
+        }
+        return result;
+    }
+
+    /**
+     * Processes, releases and optionally renders the output buffer available at the head of the
+     * queue. All observers are notified with a callback. See {@link
+     * OutputSampleListener#outputSample(MediaCodecWrapper, android.media.MediaCodec.BufferInfo,
+     * java.nio.ByteBuffer)}
+     *
+     * @param render True, if the buffer is to be rendered on the {@link Surface} configured
+     *
+     */
+    public void popSample(boolean render) {
+        // dequeue available buffers and synchronize our data structures with the codec.
+        update();
+        if (!mAvailableOutputBuffers.isEmpty()) {
+            int index = mAvailableOutputBuffers.remove();
+
+            if (render && mOutputSampleListener != null) {
+                ByteBuffer buffer = mOutputBuffers[index];
+                MediaCodec.BufferInfo info = mOutputBufferInfo[index];
+                mOutputSampleListener.outputSample(this, info, buffer);
+            }
+
+            // releases the buffer back to the codec
+            mDecoder.releaseOutputBuffer(index, render);
+        }
+    }
+
+    /**
+     * Synchronize this object's state with the internal state of the wrapped
+     * MediaCodec.
+     */
+    private void update() {
+        // BEGIN_INCLUDE(update_codec_state)
+        int index;
+
+        // Get valid input buffers from the codec to fill later in the same order they were
+        // made available by the codec.
+        while ((index = mDecoder.dequeueInputBuffer(0)) != MediaCodec.INFO_TRY_AGAIN_LATER) {
+            mAvailableInputBuffers.add(index);
+        }
+
+
+        // Likewise with output buffers. If the output buffers have changed, start using the
+        // new set of output buffers. If the output format has changed, notify listeners.
+        MediaCodec.BufferInfo info = new MediaCodec.BufferInfo();
+        while ((index = mDecoder.dequeueOutputBuffer(info, 0)) !=  MediaCodec.INFO_TRY_AGAIN_LATER) {
+            switch (index) {
+                case MediaCodec.INFO_OUTPUT_BUFFERS_CHANGED:
+                    mOutputBuffers = mDecoder.getOutputBuffers();
+                    mOutputBufferInfo = new MediaCodec.BufferInfo[mOutputBuffers.length];
+                    mAvailableOutputBuffers.clear();
+                    break;
+                case MediaCodec.INFO_OUTPUT_FORMAT_CHANGED:
+                    if (mOutputFormatChangedListener != null) {
+                        mHandler.post(new Runnable() {
+                            @Override
+                            public void run() {
+                                mOutputFormatChangedListener
+                                        .outputFormatChanged(MediaCodecWrapper.this,
+                                                mDecoder.getOutputFormat());
+
+                            }
+                        });
+                    }
+                    break;
+                default:
+                    // Making sure the index is valid before adding to output buffers. We've already
+                    // handled INFO_TRY_AGAIN_LATER, INFO_OUTPUT_FORMAT_CHANGED &
+                    // INFO_OUTPUT_BUFFERS_CHANGED i.e all the other possible return codes but
+                    // asserting index value anyways for future-proofing the code.
+                    if(index >= 0) {
+                        mOutputBufferInfo[index] = info;
+                        mAvailableOutputBuffers.add(index);
+                    } else {
+                        throw new IllegalStateException("Unknown status from dequeueOutputBuffer");
+                    }
+                    break;
+            }
+
+        }
+        // END_INCLUDE(update_codec_state)
+
+    }
+
+    private class WriteException extends Throwable {
+        private WriteException(final String detailMessage) {
+            super(detailMessage);
+        }
+    }
+}
diff --git a/common/src/java/com/example/android/common/play/GoogleServicesConnectionFailedHelper.java b/common/src/java/com/example/android/common/play/GoogleServicesConnectionFailedHelper.java
new file mode 100644
index 0000000..0a80d88
--- /dev/null
+++ b/common/src/java/com/example/android/common/play/GoogleServicesConnectionFailedHelper.java
@@ -0,0 +1,75 @@
+/**
+ * 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.common.play;
+
+import android.app.Dialog;
+import android.content.IntentSender;
+import android.support.v4.app.FragmentActivity;
+
+import com.google.android.gms.common.ConnectionResult;
+import com.google.android.gms.common.GooglePlayServicesClient;
+
+/**
+ * Helper to handle errors from Google Play Services connections.
+ *
+ */
+public class GoogleServicesConnectionFailedHelper implements
+        GooglePlayServicesClient.OnConnectionFailedListener {
+
+    FragmentActivity mActivity;
+    int mRequestCode = -1;
+
+    public GoogleServicesConnectionFailedHelper(FragmentActivity mActivity, int requestCode) {
+        this.mActivity = mActivity;
+        mRequestCode = requestCode;
+    }
+
+    @Override
+    public void onConnectionFailed(ConnectionResult connectionResult) {
+
+        /*
+         * Google Play services can resolve some errors it detects.
+         * If the error has a resolution, try sending an Intent to
+         * start a Google Play services activity that can resolve
+         * error.
+         */
+        if (connectionResult.hasResolution()) {
+            try {
+                // Start an Activity that tries to resolve the error
+                connectionResult.startResolutionForResult(mActivity, mRequestCode);
+                /*
+                 * Thrown if Google Play services canceled the original
+                 * PendingIntent
+                 */
+            } catch (IntentSender.SendIntentException e) {
+                // Log the error
+                e.printStackTrace();
+            }
+        } else {
+            /*
+             * If no resolution is available, display a dialog to the
+             * user with the error.
+             */
+            PlayHelper.ErrorDialogFragment fragment = new PlayHelper.ErrorDialogFragment();
+            fragment.setDialog(new Dialog(mActivity));
+            fragment.show(mActivity.getSupportFragmentManager(), null);
+
+        }
+    }
+}
+
diff --git a/common/src/com/example/android/common/play/PlayHelper.java b/common/src/java/com/example/android/common/play/PlayHelper.java
similarity index 86%
rename from common/src/com/example/android/common/play/PlayHelper.java
rename to common/src/java/com/example/android/common/play/PlayHelper.java
index c38c2bb..95b8554 100644
--- a/common/src/com/example/android/common/play/PlayHelper.java
+++ b/common/src/java/com/example/android/common/play/PlayHelper.java
@@ -1,3 +1,20 @@
+/*
+ * 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.common.play;
 
 import android.app.Activity;
@@ -99,4 +116,5 @@
             return mDialog;
         }
     }
+
 }
diff --git a/common/src/com/example/android/common/Pools.java b/common/src/java/com/example/android/common/util/Pools.java
similarity index 99%
rename from common/src/com/example/android/common/Pools.java
rename to common/src/java/com/example/android/common/util/Pools.java
index b31749a..1b7edb0 100644
--- a/common/src/com/example/android/common/Pools.java
+++ b/common/src/java/com/example/android/common/util/Pools.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package com.example.android.common;
+package com.example.android.common.util;
 
 /**
  * Helper class for creating pools of objects. Creating new objects is an
diff --git a/connectivity/bluetooth/BluetoothLeGatt/BluetoothLeGatt/build.gradle b/connectivity/bluetooth/BluetoothLeGatt/BluetoothLeGatt/build.gradle
deleted file mode 100644
index 945e1f5..0000000
--- a/connectivity/bluetooth/BluetoothLeGatt/BluetoothLeGatt/build.gradle
+++ /dev/null
@@ -1,6 +0,0 @@
-apply plugin: 'android'
-
-android {
-    compileSdkVersion 18
-    buildToolsVersion "18.0.0"
-}
diff --git a/connectivity/bluetooth/BluetoothLeGatt/BluetoothLeGatt/src/main/AndroidManifest.xml b/connectivity/bluetooth/BluetoothLeGatt/BluetoothLeGatt/src/main/AndroidManifest.xml
deleted file mode 100644
index 019d258..0000000
--- a/connectivity/bluetooth/BluetoothLeGatt/BluetoothLeGatt/src/main/AndroidManifest.xml
+++ /dev/null
@@ -1,45 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-Copyright (C) 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.
--->
-<manifest xmlns:android="http://schemas.android.com/apk/res/android"
-          package="com.example.bluetooth.le"
-          android:versionCode="1"
-          android:versionName="1.0">
-    <uses-sdk android:minSdkVersion="18"
-              android:targetSdkVersion="18"/>
-    <!-- Declare this required feature if you want to make the app available to BLE-capable
-    devices only.  If you want to make your app available to devices that don't support BLE,
-    you should omit this in the manifest.  Instead, determine BLE capability by using
-    PackageManager.hasSystemFeature(FEATURE_BLUETOOTH_LE) -->
-    <uses-feature android:name="android.hardware.bluetooth_le" android:required="true"/>
-
-    <uses-permission android:name="android.permission.BLUETOOTH"/>
-    <uses-permission android:name="android.permission.BLUETOOTH_ADMIN"/>
-
-    <application android:label="@string/app_name"
-                 android:icon="@drawable/ic_launcher"
-                 android:theme="@android:style/Theme.Holo.Light">
-        <activity android:name=".DeviceScanActivity"
-                  android:label="@string/app_name">
-            <intent-filter>
-                <action android:name="android.intent.action.MAIN"/>
-                <category android:name="android.intent.category.LAUNCHER"/>
-            </intent-filter>
-        </activity>
-        <activity android:name=".DeviceControlActivity"/>
-        <service android:name=".BluetoothLeService" android:enabled="true"/>
-    </application>
-</manifest>
diff --git a/connectivity/bluetooth/BluetoothLeGatt/BluetoothLeGattSample/.gitignore b/connectivity/bluetooth/BluetoothLeGatt/BluetoothLeGattSample/.gitignore
new file mode 100644
index 0000000..6eb878d
--- /dev/null
+++ b/connectivity/bluetooth/BluetoothLeGatt/BluetoothLeGattSample/.gitignore
@@ -0,0 +1,16 @@
+# 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.
+src/template/
+src/common/
+build.gradle
diff --git a/connectivity/sync/BasicSyncAdapter/BasicSyncAdapterTests/proguard-project.txt b/connectivity/bluetooth/BluetoothLeGatt/BluetoothLeGattSample/proguard-project.txt
similarity index 91%
rename from connectivity/sync/BasicSyncAdapter/BasicSyncAdapterTests/proguard-project.txt
rename to connectivity/bluetooth/BluetoothLeGatt/BluetoothLeGattSample/proguard-project.txt
index f2fe155..0d8f171 100644
--- a/connectivity/sync/BasicSyncAdapter/BasicSyncAdapterTests/proguard-project.txt
+++ b/connectivity/bluetooth/BluetoothLeGatt/BluetoothLeGattSample/proguard-project.txt
@@ -1,4 +1,4 @@
-# To enable ProGuard in your project, edit project.properties
+ To enable ProGuard in your project, edit project.properties
 # to define the proguard.config property as described in that file.
 #
 # Add project specific ProGuard rules here.
diff --git a/connectivity/bluetooth/BluetoothLeGatt/BluetoothLeGattSample/src/main/AndroidManifest.xml b/connectivity/bluetooth/BluetoothLeGatt/BluetoothLeGattSample/src/main/AndroidManifest.xml
new file mode 100644
index 0000000..babd6df
--- /dev/null
+++ b/connectivity/bluetooth/BluetoothLeGatt/BluetoothLeGattSample/src/main/AndroidManifest.xml
@@ -0,0 +1,50 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ 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.
+-->
+
+
+
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+    package="com.example.android.bluetoothlegatt"
+    android:versionCode="1"
+    android:versionName="1.0">
+
+    <uses-sdk android:minSdkVersion="18"
+        android:targetSdkVersion="18"/>
+    <!-- Declare this required feature if you want to make the app available to BLE-capable
+    devices only.  If you want to make your app available to devices that don't support BLE,
+    you should omit this in the manifest.  Instead, determine BLE capability by using
+    PackageManager.hasSystemFeature(FEATURE_BLUETOOTH_LE) -->
+    <uses-feature android:name="android.hardware.bluetooth_le" android:required="true"/>
+
+    <uses-permission android:name="android.permission.BLUETOOTH"/>
+    <uses-permission android:name="android.permission.BLUETOOTH_ADMIN"/>
+
+    <application android:label="@string/app_name"
+        android:icon="@drawable/ic_launcher"
+        android:theme="@android:style/Theme.Holo.Light">
+        <activity android:name=".DeviceScanActivity"
+            android:label="@string/app_name">
+            <intent-filter>
+                <action android:name="android.intent.action.MAIN"/>
+                <category android:name="android.intent.category.LAUNCHER"/>
+            </intent-filter>
+        </activity>
+        <activity android:name=".DeviceControlActivity"/>
+        <service android:name=".BluetoothLeService" android:enabled="true"/>
+    </application>
+
+</manifest>
diff --git a/connectivity/bluetooth/BluetoothLeGatt/BluetoothLeGatt/src/main/java/com/example/bluetooth/le/BluetoothLeService.java b/connectivity/bluetooth/BluetoothLeGatt/BluetoothLeGattSample/src/main/java/com/example/android/bluetoothlegatt/BluetoothLeService.java
similarity index 99%
rename from connectivity/bluetooth/BluetoothLeGatt/BluetoothLeGatt/src/main/java/com/example/bluetooth/le/BluetoothLeService.java
rename to connectivity/bluetooth/BluetoothLeGatt/BluetoothLeGattSample/src/main/java/com/example/android/bluetoothlegatt/BluetoothLeService.java
index 9e7aabd..694faaf 100644
--- a/connectivity/bluetooth/BluetoothLeGatt/BluetoothLeGatt/src/main/java/com/example/bluetooth/le/BluetoothLeService.java
+++ b/connectivity/bluetooth/BluetoothLeGatt/BluetoothLeGattSample/src/main/java/com/example/android/bluetoothlegatt/BluetoothLeService.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package com.example.bluetooth.le;
+package com.example.android.bluetoothlegatt;
 
 import android.app.Service;
 import android.bluetooth.BluetoothAdapter;
diff --git a/connectivity/bluetooth/BluetoothLeGatt/BluetoothLeGatt/src/main/java/com/example/bluetooth/le/DeviceControlActivity.java b/connectivity/bluetooth/BluetoothLeGatt/BluetoothLeGattSample/src/main/java/com/example/android/bluetoothlegatt/DeviceControlActivity.java
similarity index 99%
rename from connectivity/bluetooth/BluetoothLeGatt/BluetoothLeGatt/src/main/java/com/example/bluetooth/le/DeviceControlActivity.java
rename to connectivity/bluetooth/BluetoothLeGatt/BluetoothLeGattSample/src/main/java/com/example/android/bluetoothlegatt/DeviceControlActivity.java
index 06b3bb4..dc2f90b 100644
--- a/connectivity/bluetooth/BluetoothLeGatt/BluetoothLeGatt/src/main/java/com/example/bluetooth/le/DeviceControlActivity.java
+++ b/connectivity/bluetooth/BluetoothLeGatt/BluetoothLeGattSample/src/main/java/com/example/android/bluetoothlegatt/DeviceControlActivity.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package com.example.bluetooth.le;
+package com.example.android.bluetoothlegatt;
 
 import android.app.Activity;
 import android.bluetooth.BluetoothGattCharacteristic;
diff --git a/connectivity/bluetooth/BluetoothLeGatt/BluetoothLeGatt/src/main/java/com/example/bluetooth/le/DeviceScanActivity.java b/connectivity/bluetooth/BluetoothLeGatt/BluetoothLeGattSample/src/main/java/com/example/android/bluetoothlegatt/DeviceScanActivity.java
similarity index 99%
rename from connectivity/bluetooth/BluetoothLeGatt/BluetoothLeGatt/src/main/java/com/example/bluetooth/le/DeviceScanActivity.java
rename to connectivity/bluetooth/BluetoothLeGatt/BluetoothLeGattSample/src/main/java/com/example/android/bluetoothlegatt/DeviceScanActivity.java
index 1cc954d..9b86f7a 100644
--- a/connectivity/bluetooth/BluetoothLeGatt/BluetoothLeGatt/src/main/java/com/example/bluetooth/le/DeviceScanActivity.java
+++ b/connectivity/bluetooth/BluetoothLeGatt/BluetoothLeGattSample/src/main/java/com/example/android/bluetoothlegatt/DeviceScanActivity.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package com.example.bluetooth.le;
+package com.example.android.bluetoothlegatt;
 
 import android.app.Activity;
 import android.app.ListActivity;
@@ -37,7 +37,6 @@
 import android.widget.Toast;
 
 import java.util.ArrayList;
-import java.util.UUID;
 
 /**
  * Activity for scanning and displaying available Bluetooth LE devices.
diff --git a/connectivity/bluetooth/BluetoothLeGatt/BluetoothLeGatt/src/main/java/com/example/bluetooth/le/SampleGattAttributes.java b/connectivity/bluetooth/BluetoothLeGatt/BluetoothLeGattSample/src/main/java/com/example/android/bluetoothlegatt/SampleGattAttributes.java
similarity index 96%
rename from connectivity/bluetooth/BluetoothLeGatt/BluetoothLeGatt/src/main/java/com/example/bluetooth/le/SampleGattAttributes.java
rename to connectivity/bluetooth/BluetoothLeGatt/BluetoothLeGattSample/src/main/java/com/example/android/bluetoothlegatt/SampleGattAttributes.java
index 255653e..e8db74c 100644
--- a/connectivity/bluetooth/BluetoothLeGatt/BluetoothLeGatt/src/main/java/com/example/bluetooth/le/SampleGattAttributes.java
+++ b/connectivity/bluetooth/BluetoothLeGatt/BluetoothLeGattSample/src/main/java/com/example/android/bluetoothlegatt/SampleGattAttributes.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package com.example.bluetooth.le;
+package com.example.android.bluetoothlegatt;
 
 import java.util.HashMap;
 
diff --git a/connectivity/bluetooth/BluetoothLeGatt/BluetoothLeGatt/src/main/res/drawable-hdpi/ic_launcher.png b/connectivity/bluetooth/BluetoothLeGatt/BluetoothLeGattSample/src/main/res/drawable-hdpi/ic_launcher.png
similarity index 100%
rename from connectivity/bluetooth/BluetoothLeGatt/BluetoothLeGatt/src/main/res/drawable-hdpi/ic_launcher.png
rename to connectivity/bluetooth/BluetoothLeGatt/BluetoothLeGattSample/src/main/res/drawable-hdpi/ic_launcher.png
Binary files differ
diff --git a/connectivity/bluetooth/BluetoothLeGatt/BluetoothLeGatt/src/main/res/drawable-mdpi/ic_launcher.png b/connectivity/bluetooth/BluetoothLeGatt/BluetoothLeGattSample/src/main/res/drawable-mdpi/ic_launcher.png
similarity index 100%
rename from connectivity/bluetooth/BluetoothLeGatt/BluetoothLeGatt/src/main/res/drawable-mdpi/ic_launcher.png
rename to connectivity/bluetooth/BluetoothLeGatt/BluetoothLeGattSample/src/main/res/drawable-mdpi/ic_launcher.png
Binary files differ
diff --git a/connectivity/bluetooth/BluetoothLeGatt/BluetoothLeGatt/src/main/res/drawable-xhdpi/ic_launcher.png b/connectivity/bluetooth/BluetoothLeGatt/BluetoothLeGattSample/src/main/res/drawable-xhdpi/ic_launcher.png
similarity index 100%
rename from connectivity/bluetooth/BluetoothLeGatt/BluetoothLeGatt/src/main/res/drawable-xhdpi/ic_launcher.png
rename to connectivity/bluetooth/BluetoothLeGatt/BluetoothLeGattSample/src/main/res/drawable-xhdpi/ic_launcher.png
Binary files differ
diff --git a/connectivity/bluetooth/BluetoothLeGatt/BluetoothLeGatt/src/main/res/drawable-xxhdpi/ic_launcher.png b/connectivity/bluetooth/BluetoothLeGatt/BluetoothLeGattSample/src/main/res/drawable-xxhdpi/ic_launcher.png
similarity index 100%
rename from connectivity/bluetooth/BluetoothLeGatt/BluetoothLeGatt/src/main/res/drawable-xxhdpi/ic_launcher.png
rename to connectivity/bluetooth/BluetoothLeGatt/BluetoothLeGattSample/src/main/res/drawable-xxhdpi/ic_launcher.png
Binary files differ
diff --git a/connectivity/bluetooth/BluetoothLeGatt/BluetoothLeGatt/src/main/res/layout/actionbar_indeterminate_progress.xml b/connectivity/bluetooth/BluetoothLeGatt/BluetoothLeGattSample/src/main/res/layout/actionbar_indeterminate_progress.xml
similarity index 100%
rename from connectivity/bluetooth/BluetoothLeGatt/BluetoothLeGatt/src/main/res/layout/actionbar_indeterminate_progress.xml
rename to connectivity/bluetooth/BluetoothLeGatt/BluetoothLeGattSample/src/main/res/layout/actionbar_indeterminate_progress.xml
diff --git a/connectivity/bluetooth/BluetoothLeGatt/BluetoothLeGatt/src/main/res/layout/gatt_services_characteristics.xml b/connectivity/bluetooth/BluetoothLeGatt/BluetoothLeGattSample/src/main/res/layout/gatt_services_characteristics.xml
similarity index 100%
rename from connectivity/bluetooth/BluetoothLeGatt/BluetoothLeGatt/src/main/res/layout/gatt_services_characteristics.xml
rename to connectivity/bluetooth/BluetoothLeGatt/BluetoothLeGattSample/src/main/res/layout/gatt_services_characteristics.xml
diff --git a/connectivity/bluetooth/BluetoothLeGatt/BluetoothLeGatt/src/main/res/layout/listitem_device.xml b/connectivity/bluetooth/BluetoothLeGatt/BluetoothLeGattSample/src/main/res/layout/listitem_device.xml
similarity index 100%
rename from connectivity/bluetooth/BluetoothLeGatt/BluetoothLeGatt/src/main/res/layout/listitem_device.xml
rename to connectivity/bluetooth/BluetoothLeGatt/BluetoothLeGattSample/src/main/res/layout/listitem_device.xml
diff --git a/connectivity/bluetooth/BluetoothLeGatt/BluetoothLeGatt/src/main/res/menu/gatt_services.xml b/connectivity/bluetooth/BluetoothLeGatt/BluetoothLeGattSample/src/main/res/menu/gatt_services.xml
similarity index 100%
rename from connectivity/bluetooth/BluetoothLeGatt/BluetoothLeGatt/src/main/res/menu/gatt_services.xml
rename to connectivity/bluetooth/BluetoothLeGatt/BluetoothLeGattSample/src/main/res/menu/gatt_services.xml
diff --git a/connectivity/bluetooth/BluetoothLeGatt/BluetoothLeGatt/src/main/res/menu/main.xml b/connectivity/bluetooth/BluetoothLeGatt/BluetoothLeGattSample/src/main/res/menu/main.xml
similarity index 100%
rename from connectivity/bluetooth/BluetoothLeGatt/BluetoothLeGatt/src/main/res/menu/main.xml
rename to connectivity/bluetooth/BluetoothLeGatt/BluetoothLeGattSample/src/main/res/menu/main.xml
diff --git a/connectivity/bluetooth/BluetoothLeGatt/BluetoothLeGatt/src/main/res/values/strings.xml b/connectivity/bluetooth/BluetoothLeGatt/BluetoothLeGattSample/src/main/res/values/strings.xml
similarity index 96%
rename from connectivity/bluetooth/BluetoothLeGatt/BluetoothLeGatt/src/main/res/values/strings.xml
rename to connectivity/bluetooth/BluetoothLeGatt/BluetoothLeGattSample/src/main/res/values/strings.xml
index d828aa0..19f3dce 100644
--- a/connectivity/bluetooth/BluetoothLeGatt/BluetoothLeGatt/src/main/res/values/strings.xml
+++ b/connectivity/bluetooth/BluetoothLeGatt/BluetoothLeGattSample/src/main/res/values/strings.xml
@@ -14,7 +14,6 @@
      limitations under the License.
 -->
 <resources>
-    <string name="app_name">BLE Sample</string>
     <string name="ble_not_supported">BLE is not supported</string>
     <string name="label_data">Data:</string>
     <string name="label_device_address">Device address:</string>
diff --git a/connectivity/bluetooth/BluetoothLeGatt/build.gradle b/connectivity/bluetooth/BluetoothLeGatt/build.gradle
index 036abc8..cca9ac3 100644
--- a/connectivity/bluetooth/BluetoothLeGatt/build.gradle
+++ b/connectivity/bluetooth/BluetoothLeGatt/build.gradle
@@ -1,8 +1,10 @@
-buildscript {
-    repositories {
-        mavenCentral()
-    }
-    dependencies {
-        classpath 'com.android.tools.build:gradle:0.5.+'
-    }
+// BEGIN_EXCLUDE
+import com.example.android.samples.build.SampleGenPlugin
+apply plugin: SampleGenPlugin
+
+samplegen {
+  pathToBuild "../../../../../build"
+  pathToSamplesCommon "../../../common"
 }
+apply from: "../../../../../build/build.gradle"
+// END_EXCLUDE
diff --git a/connectivity/bluetooth/BluetoothLeGatt/buildSrc/build.gradle b/connectivity/bluetooth/BluetoothLeGatt/buildSrc/build.gradle
new file mode 100644
index 0000000..e344a8c
--- /dev/null
+++ b/connectivity/bluetooth/BluetoothLeGatt/buildSrc/build.gradle
@@ -0,0 +1,18 @@
+
+
+
+repositories {
+    mavenCentral()
+}
+dependencies {
+    compile 'org.freemarker:freemarker:2.3.20'
+}
+
+sourceSets {
+    main {
+        groovy {
+            srcDir new File(rootDir, "../../../../../../build/buildSrc/src/main/groovy")
+        }
+    }
+}
+
diff --git a/connectivity/bluetooth/BluetoothLeGatt/gradle/wrapper/gradle-wrapper.properties b/connectivity/bluetooth/BluetoothLeGatt/gradle/wrapper/gradle-wrapper.properties
index 5c22dec..861eddc 100644
--- a/connectivity/bluetooth/BluetoothLeGatt/gradle/wrapper/gradle-wrapper.properties
+++ b/connectivity/bluetooth/BluetoothLeGatt/gradle/wrapper/gradle-wrapper.properties
@@ -3,4 +3,4 @@
 distributionPath=wrapper/dists
 zipStoreBase=GRADLE_USER_HOME
 zipStorePath=wrapper/dists
-distributionUrl=http\://services.gradle.org/distributions/gradle-1.6-bin.zip
+distributionUrl=http\://services.gradle.org/distributions/gradle-1.8-bin.zip
diff --git a/connectivity/bluetooth/BluetoothLeGatt/settings.gradle b/connectivity/bluetooth/BluetoothLeGatt/settings.gradle
index 639c5c8..05cae43 100644
--- a/connectivity/bluetooth/BluetoothLeGatt/settings.gradle
+++ b/connectivity/bluetooth/BluetoothLeGatt/settings.gradle
@@ -1 +1,4 @@
-include ':BluetoothLeGatt'
+
+
+
+include 'BluetoothLeGattSample'
diff --git a/connectivity/bluetooth/BluetoothLeGatt/template-params.xml b/connectivity/bluetooth/BluetoothLeGatt/template-params.xml
new file mode 100644
index 0000000..323e1d7
--- /dev/null
+++ b/connectivity/bluetooth/BluetoothLeGatt/template-params.xml
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ 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.
+-->
+<sample>
+    <name>BluetoothLeGatt</name>
+    <group>Connectivity</group>
+    <package>com.example.android.bluetoothlegatt</package>
+
+    <!-- change minSdk if needed-->
+    <minSdk>18</minSdk>
+
+    <strings>
+        <intro>
+            <![CDATA[
+            This sample demonstrates how to use the Bluetooth LE Generic Attribute Profile (GATT)
+            to transmit arbitrary data between devices.
+            ]]>
+        </intro>
+    </strings>
+
+    <template src="base"/>
+
+</sample>
diff --git a/connectivity/network/BasicNetworkDemo/BasicNetworkDemo/build.gradle b/connectivity/network/BasicNetworkDemo/BasicNetworkDemo/build.gradle
deleted file mode 100644
index 0baece9..0000000
--- a/connectivity/network/BasicNetworkDemo/BasicNetworkDemo/build.gradle
+++ /dev/null
@@ -1,10 +0,0 @@
-apply plugin: 'android'
-
-dependencies {
-    compile "com.android.support:support-v4:18.0.+"
-}
-
-android {
-    compileSdkVersion 18
-    buildToolsVersion "18.0.0"
-}
diff --git a/connectivity/network/BasicNetworkDemo/BasicNetworkDemo/src/main/java/com/example/android/common/logger/Log.java b/connectivity/network/BasicNetworkDemo/BasicNetworkDemo/src/main/java/com/example/android/common/logger/Log.java
deleted file mode 100644
index cf4abb7..0000000
--- a/connectivity/network/BasicNetworkDemo/BasicNetworkDemo/src/main/java/com/example/android/common/logger/Log.java
+++ /dev/null
@@ -1,236 +0,0 @@
-/*
- * Copyright (C) 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.common.logger;
-
-/**
- * Helper class for a list (or tree) of LoggerNodes.
- *
- * <p>When this is set as the head of the list,
- * an instance of it can function as a drop-in replacement for {@link android.util.Log}.
- * Most of the methods in this class server only to map a method call in Log to its equivalent
- * in LogNode.</p>
- */
-public class Log {
-    // Grabbing the native values from Android's native logging facilities,
-    // to make for easy migration and interop.
-    public static final int NONE = -1;
-    public static final int VERBOSE = android.util.Log.VERBOSE;
-    public static final int DEBUG = android.util.Log.DEBUG;
-    public static final int INFO = android.util.Log.INFO;
-    public static final int WARN = android.util.Log.WARN;
-    public static final int ERROR = android.util.Log.ERROR;
-    public static final int ASSERT = android.util.Log.ASSERT;
-
-    // Stores the beginning of the LogNode topology.
-    private static LogNode mLogNode;
-
-    /**
-     * Returns the next LogNode in the linked list.
-     */
-    public static LogNode getLogNode() {
-        return mLogNode;
-    }
-
-    /**
-     * Sets the LogNode data will be sent to.
-     */
-    public static void setLogNode(LogNode node) {
-        mLogNode = node;
-    }
-
-    /**
-     * Instructs the LogNode to print the log data provided. Other LogNodes can
-     * be chained to the end of the LogNode as desired.
-     *
-     * @param priority Log level of the data being logged. Verbose, Error, etc.
-     * @param tag Tag for for the log data. Can be used to organize log statements.
-     * @param msg The actual message to be logged.
-     * @param tr If an exception was thrown, this can be sent along for the logging facilities
-     *           to extract and print useful information.
-     */
-    public static void println(int priority, String tag, String msg, Throwable tr) {
-        if (mLogNode != null) {
-            mLogNode.println(priority, tag, msg, tr);
-        }
-    }
-
-    /**
-     * Instructs the LogNode to print the log data provided. Other LogNodes can
-     * be chained to the end of the LogNode as desired.
-     *
-     * @param priority Log level of the data being logged. Verbose, Error, etc.
-     * @param tag Tag for for the log data. Can be used to organize log statements.
-     * @param msg The actual message to be logged. The actual message to be logged.
-     */
-    public static void println(int priority, String tag, String msg) {
-        println(priority, tag, msg, null);
-    }
-
-   /**
-     * Prints a message at VERBOSE priority.
-     *
-     * @param tag Tag for for the log data. Can be used to organize log statements.
-     * @param msg The actual message to be logged.
-     * @param tr If an exception was thrown, this can be sent along for the logging facilities
-     *           to extract and print useful information.
-     */
-    public static void v(String tag, String msg, Throwable tr) {
-        println(VERBOSE, tag, msg, tr);
-    }
-
-    /**
-     * Prints a message at VERBOSE priority.
-     *
-     * @param tag Tag for for the log data. Can be used to organize log statements.
-     * @param msg The actual message to be logged.
-     */
-    public static void v(String tag, String msg) {
-        v(tag, msg, null);
-    }
-
-
-    /**
-     * Prints a message at DEBUG priority.
-     *
-     * @param tag Tag for for the log data. Can be used to organize log statements.
-     * @param msg The actual message to be logged.
-     * @param tr If an exception was thrown, this can be sent along for the logging facilities
-     *           to extract and print useful information.
-     */
-    public static void d(String tag, String msg, Throwable tr) {
-        println(DEBUG, tag, msg, tr);
-    }
-
-    /**
-     * Prints a message at DEBUG priority.
-     *
-     * @param tag Tag for for the log data. Can be used to organize log statements.
-     * @param msg The actual message to be logged.
-     */
-    public static void d(String tag, String msg) {
-        d(tag, msg, null);
-    }
-
-    /**
-     * Prints a message at INFO priority.
-     *
-     * @param tag Tag for for the log data. Can be used to organize log statements.
-     * @param msg The actual message to be logged.
-     * @param tr If an exception was thrown, this can be sent along for the logging facilities
-     *           to extract and print useful information.
-     */
-    public static void i(String tag, String msg, Throwable tr) {
-        println(INFO, tag, msg, tr);
-    }
-
-    /**
-     * Prints a message at INFO priority.
-     *
-     * @param tag Tag for for the log data. Can be used to organize log statements.
-     * @param msg The actual message to be logged.
-     */
-    public static void i(String tag, String msg) {
-        i(tag, msg, null);
-    }
-
-    /**
-     * Prints a message at WARN priority.
-     *
-     * @param tag Tag for for the log data. Can be used to organize log statements.
-     * @param msg The actual message to be logged.
-     * @param tr If an exception was thrown, this can be sent along for the logging facilities
-     *           to extract and print useful information.
-     */
-    public static void w(String tag, String msg, Throwable tr) {
-        println(WARN, tag, msg, tr);
-    }
-
-    /**
-     * Prints a message at WARN priority.
-     *
-     * @param tag Tag for for the log data. Can be used to organize log statements.
-     * @param msg The actual message to be logged.
-     */
-    public static void w(String tag, String msg) {
-        w(tag, msg, null);
-    }
-
-    /**
-     * Prints a message at WARN priority.
-     *
-     * @param tag Tag for for the log data. Can be used to organize log statements.
-     * @param tr If an exception was thrown, this can be sent along for the logging facilities
-     *           to extract and print useful information.
-     */
-    public static void w(String tag, Throwable tr) {
-        w(tag, null, tr);
-    }
-
-    /**
-     * Prints a message at ERROR priority.
-     *
-     * @param tag Tag for for the log data. Can be used to organize log statements.
-     * @param msg The actual message to be logged.
-     * @param tr If an exception was thrown, this can be sent along for the logging facilities
-     *           to extract and print useful information.
-     */
-    public static void e(String tag, String msg, Throwable tr) {
-        println(ERROR, tag, msg, tr);
-    }
-
-    /**
-     * Prints a message at ERROR priority.
-     *
-     * @param tag Tag for for the log data. Can be used to organize log statements.
-     * @param msg The actual message to be logged.
-     */
-    public static void e(String tag, String msg) {
-        e(tag, msg, null);
-    }
-
-    /**
-     * Prints a message at ASSERT priority.
-     *
-     * @param tag Tag for for the log data. Can be used to organize log statements.
-     * @param msg The actual message to be logged.
-     * @param tr If an exception was thrown, this can be sent along for the logging facilities
-     *           to extract and print useful information.
-     */
-    public static void wtf(String tag, String msg, Throwable tr) {
-        println(ASSERT, tag, msg, tr);
-    }
-
-    /**
-     * Prints a message at ASSERT priority.
-     *
-     * @param tag Tag for for the log data. Can be used to organize log statements.
-     * @param msg The actual message to be logged.
-     */
-    public static void wtf(String tag, String msg) {
-        wtf(tag, msg, null);
-    }
-
-    /**
-     * Prints a message at ASSERT priority.
-     *
-     * @param tag Tag for for the log data. Can be used to organize log statements.
-     * @param tr If an exception was thrown, this can be sent along for the logging facilities
-     *           to extract and print useful information.
-     */
-    public static void wtf(String tag, Throwable tr) {
-        wtf(tag, null, tr);
-    }
-}
\ No newline at end of file
diff --git a/connectivity/network/BasicNetworkDemo/BasicNetworkDemo/src/main/java/com/example/android/common/logger/LogNode.java b/connectivity/network/BasicNetworkDemo/BasicNetworkDemo/src/main/java/com/example/android/common/logger/LogNode.java
deleted file mode 100644
index bc37cab..0000000
--- a/connectivity/network/BasicNetworkDemo/BasicNetworkDemo/src/main/java/com/example/android/common/logger/LogNode.java
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- * Copyright (C) 2012 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.common.logger;
-
-/**
- * Basic interface for a logging system that can output to one or more targets.
- * Note that in addition to classes that will output these logs in some format,
- * one can also implement this interface over a filter and insert that in the chain,
- * such that no targets further down see certain data, or see manipulated forms of the data.
- * You could, for instance, write a "ToHtmlLoggerNode" that just converted all the log data
- * it received to HTML and sent it along to the next node in the chain, without printing it
- * anywhere.
- */
-public interface LogNode {
-
-    /**
-     * Instructs first LogNode in the list to print the log data provided.
-     * @param priority Log level of the data being logged.  Verbose, Error, etc.
-     * @param tag Tag for for the log data.  Can be used to organize log statements.
-     * @param msg The actual message to be logged. The actual message to be logged.
-     * @param tr If an exception was thrown, this can be sent along for the logging facilities
-     *           to extract and print useful information.
-     */
-    public void println(int priority, String tag, String msg, Throwable tr);
-
-}
diff --git a/connectivity/network/BasicNetworkDemo/BasicNetworkDemo/src/main/java/com/example/android/common/logger/LogWrapper.java b/connectivity/network/BasicNetworkDemo/BasicNetworkDemo/src/main/java/com/example/android/common/logger/LogWrapper.java
deleted file mode 100644
index ea8e20e..0000000
--- a/connectivity/network/BasicNetworkDemo/BasicNetworkDemo/src/main/java/com/example/android/common/logger/LogWrapper.java
+++ /dev/null
@@ -1,75 +0,0 @@
-/*
- * Copyright (C) 2012 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.common.logger;
-
-import android.util.Log;
-
-/**
- * Helper class which wraps Android's native Log utility in the Logger interface.  This way
- * normal DDMS output can be one of the many targets receiving and outputting logs simultaneously.
- */
-public class LogWrapper implements LogNode {
-
-    // For piping:  The next node to receive Log data after this one has done its work.
-    private LogNode mNext;
-
-    /**
-     * Returns the next LogNode in the linked list.
-     */
-    public LogNode getNext() {
-        return mNext;
-    }
-
-    /**
-     * Sets the LogNode data will be sent to..
-     */
-    public void setNext(LogNode node) {
-        mNext = node;
-    }
-
-    /**
-     * Prints data out to the console using Android's native log mechanism.
-     * @param priority Log level of the data being logged.  Verbose, Error, etc.
-     * @param tag Tag for for the log data.  Can be used to organize log statements.
-     * @param msg The actual message to be logged. The actual message to be logged.
-     * @param tr If an exception was thrown, this can be sent along for the logging facilities
-     *           to extract and print useful information.
-     */
-    @Override
-    public void println(int priority, String tag, String msg, Throwable tr) {
-        // There actually are log methods that don't take a msg parameter.  For now,
-        // if that's the case, just convert null to the empty string and move on.
-        String useMsg = msg;
-        if (useMsg == null) {
-            useMsg = "";
-        }
-
-        // If an exeption was provided, convert that exception to a usable string and attach
-        // it to the end of the msg method.
-        if (tr != null) {
-            msg += "\n" + Log.getStackTraceString(tr);
-        }
-
-        // This is functionally identical to Log.x(tag, useMsg);
-        // For instance, if priority were Log.VERBOSE, this would be the same as Log.v(tag, useMsg)
-        Log.println(priority, tag, useMsg);
-
-        // If this isn't the last node in the chain, move things along.
-        if (mNext != null) {
-            mNext.println(priority, tag, msg, tr);
-        }
-    }
-}
\ No newline at end of file
diff --git a/connectivity/network/BasicNetworkDemo/BasicNetworkDemo/src/main/java/com/example/android/common/logger/MessageOnlyLogFilter.java b/connectivity/network/BasicNetworkDemo/BasicNetworkDemo/src/main/java/com/example/android/common/logger/MessageOnlyLogFilter.java
deleted file mode 100644
index c57a111..0000000
--- a/connectivity/network/BasicNetworkDemo/BasicNetworkDemo/src/main/java/com/example/android/common/logger/MessageOnlyLogFilter.java
+++ /dev/null
@@ -1,60 +0,0 @@
-/*
- * Copyright (C) 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.common.logger;
-
-/**
- * Simple {@link LogNode} filter, removes everything except the message.
- * Useful for situations like on-screen log output where you don't want a lot of metadata displayed,
- * just easy-to-read message updates as they're happening.
- */
-public class MessageOnlyLogFilter implements LogNode {
-
-    LogNode mNext;
-
-    /**
-     * Takes the "next" LogNode as a parameter, to simplify chaining.
-     *
-     * @param next The next LogNode in the pipeline.
-     */
-    public MessageOnlyLogFilter(LogNode next) {
-        mNext = next;
-    }
-
-    public MessageOnlyLogFilter() {
-    }
-
-    @Override
-    public void println(int priority, String tag, String msg, Throwable tr) {
-        if (mNext != null) {
-            getNext().println(Log.NONE, null, msg, null);
-        }
-    }
-
-    /**
-     * Returns the next LogNode in the linked list.
-     */
-    public LogNode getNext() {
-        return mNext;
-    }
-
-    /**
-     * Sets the LogNode data will be sent to..
-     */
-    public void setNext(LogNode node) {
-        mNext = node;
-    }
-
-}
\ No newline at end of file
diff --git a/connectivity/network/BasicNetworkDemo/BasicNetworkDemo/src/main/java/com/example/android/networkbasic/LogFragment.java b/connectivity/network/BasicNetworkDemo/BasicNetworkDemo/src/main/java/com/example/android/networkbasic/LogFragment.java
deleted file mode 100644
index ecbe2eb..0000000
--- a/connectivity/network/BasicNetworkDemo/BasicNetworkDemo/src/main/java/com/example/android/networkbasic/LogFragment.java
+++ /dev/null
@@ -1,60 +0,0 @@
-package com.example.android.networkbasic;
-
-import android.support.v4.app.Fragment;
-
-import com.example.android.networkbasic.R;
-import com.example.android.common.logger.LogView;
-
-import android.os.Bundle;
-
-import android.text.Editable;
-import android.text.TextWatcher;
-
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-import android.widget.ScrollView;
-
-/**
- * Simple fragment that contains a LogView and uses it to output log data it receives
- * through the LogNode interface.
- */
-public class LogFragment extends Fragment {
-
-  private LogView mLogView;
-
-  public LogFragment() {}
-
-  @Override
-  public View onCreateView(LayoutInflater inflater, ViewGroup container,
-          Bundle savedInstanceState) {
-
-      View result = inflater.inflate(R.layout.log_fragment, container, false);
-
-      mLogView = (LogView) result.findViewById(R.id.sample_output);
-
-      // Wire up so when the text changes, the view scrolls down.
-      final ScrollView scrollView =
-              ((ScrollView) result.findViewById(R.id.log_scroll));
-
-      mLogView.addTextChangedListener(new TextWatcher() {
-          @Override
-          public void beforeTextChanged(CharSequence s, int start, int count, int after) {}
-
-          @Override
-          public void onTextChanged(CharSequence s, int start, int before, int count) {}
-
-          @Override
-          public void afterTextChanged(Editable s) {
-              scrollView.fullScroll(ScrollView.FOCUS_DOWN);
-          }
-      });
-
-      return result;
-  }
-
-  public LogView getLogView() {
-      return mLogView;
-  }
-
-}
diff --git a/connectivity/network/BasicNetworkDemo/BasicNetworkDemo/src/main/res/layout/activity_main.xml b/connectivity/network/BasicNetworkDemo/BasicNetworkDemo/src/main/res/layout/activity_main.xml
deleted file mode 100755
index d9be686..0000000
--- a/connectivity/network/BasicNetworkDemo/BasicNetworkDemo/src/main/res/layout/activity_main.xml
+++ /dev/null
@@ -1,40 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-
-<!--
-  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.
-  -->
-
-<LinearLayout
-    xmlns:android="http://schemas.android.com/apk/res/android"
-    android:orientation="vertical"
-    android:layout_width="fill_parent"
-    android:layout_height="fill_parent">
-    <fragment
-        android:name="com.example.android.common.SimpleTextFragment"
-        android:id="@+id/intro_fragment"
-        android:layout_weight="1"
-        android:layout_width="match_parent"
-        android:layout_height="match_parent" />
-    <View
-        android:layout_width="fill_parent"
-        android:layout_height="1dp"
-        android:background="@android:color/darker_gray"/>
-    <fragment
-        android:name="com.example.android.networkbasic.LogFragment"
-        android:id="@+id/log_fragment"
-        android:layout_weight="1"
-        android:layout_width="match_parent"
-        android:layout_height="match_parent" />
-</LinearLayout>
diff --git a/connectivity/network/BasicNetworkDemo/BasicNetworkDemo/src/main/res/values/dimens.xml b/connectivity/network/BasicNetworkDemo/BasicNetworkDemo/src/main/res/values/dimens.xml
deleted file mode 100644
index 4f69897..0000000
--- a/connectivity/network/BasicNetworkDemo/BasicNetworkDemo/src/main/res/values/dimens.xml
+++ /dev/null
@@ -1,24 +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.
-  -->
-
-<resources>
-
-    <!-- Define standard dimensions to comply with Holo-style grids and rhythm. -->
-
-    <dimen name="margin_medium">16dp</dimen>
-    <dimen name="margin_huge">64dp</dimen>
-
-</resources>
diff --git a/connectivity/network/BasicNetworkDemo/README.txt b/connectivity/network/BasicNetworkDemo/README.txt
deleted file mode 100644
index 38608df..0000000
--- a/connectivity/network/BasicNetworkDemo/README.txt
+++ /dev/null
@@ -1,6 +0,0 @@
-Build Instructions
--------------------
-This sample uses the Gradle build system. To build this project, use the
-"gradlew build" command.
-
-To see a list of all available commands, run "gradlew tasks".
\ No newline at end of file
diff --git a/connectivity/network/BasicNetworkDemo/build.gradle b/connectivity/network/BasicNetworkDemo/build.gradle
deleted file mode 100644
index 036abc8..0000000
--- a/connectivity/network/BasicNetworkDemo/build.gradle
+++ /dev/null
@@ -1,8 +0,0 @@
-buildscript {
-    repositories {
-        mavenCentral()
-    }
-    dependencies {
-        classpath 'com.android.tools.build:gradle:0.5.+'
-    }
-}
diff --git a/connectivity/network/BasicNetworkDemo/settings.gradle b/connectivity/network/BasicNetworkDemo/settings.gradle
deleted file mode 100644
index 4981654..0000000
--- a/connectivity/network/BasicNetworkDemo/settings.gradle
+++ /dev/null
@@ -1 +0,0 @@
-include ':BasicNetworkDemo'
diff --git a/connectivity/network/BasicNetworking/BasicNetworkingSample/.gitignore b/connectivity/network/BasicNetworking/BasicNetworkingSample/.gitignore
new file mode 100644
index 0000000..6eb878d
--- /dev/null
+++ b/connectivity/network/BasicNetworking/BasicNetworkingSample/.gitignore
@@ -0,0 +1,16 @@
+# 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.
+src/template/
+src/common/
+build.gradle
diff --git a/connectivity/sync/BasicSyncAdapter/BasicSyncAdapterTests/proguard-project.txt b/connectivity/network/BasicNetworking/BasicNetworkingSample/proguard-project.txt
similarity index 91%
copy from connectivity/sync/BasicSyncAdapter/BasicSyncAdapterTests/proguard-project.txt
copy to connectivity/network/BasicNetworking/BasicNetworkingSample/proguard-project.txt
index f2fe155..0d8f171 100644
--- a/connectivity/sync/BasicSyncAdapter/BasicSyncAdapterTests/proguard-project.txt
+++ b/connectivity/network/BasicNetworking/BasicNetworkingSample/proguard-project.txt
@@ -1,4 +1,4 @@
-# To enable ProGuard in your project, edit project.properties
+ To enable ProGuard in your project, edit project.properties
 # to define the proguard.config property as described in that file.
 #
 # Add project specific ProGuard rules here.
diff --git a/connectivity/network/BasicNetworkDemo/BasicNetworkDemo/src/main/AndroidManifest.xml b/connectivity/network/BasicNetworking/BasicNetworkingSample/src/main/AndroidManifest.xml
old mode 100755
new mode 100644
similarity index 92%
rename from connectivity/network/BasicNetworkDemo/BasicNetworkDemo/src/main/AndroidManifest.xml
rename to connectivity/network/BasicNetworking/BasicNetworkingSample/src/main/AndroidManifest.xml
index c0d3e64..48bfeac
--- a/connectivity/network/BasicNetworkDemo/BasicNetworkDemo/src/main/AndroidManifest.xml
+++ b/connectivity/network/BasicNetworking/BasicNetworkingSample/src/main/AndroidManifest.xml
@@ -16,7 +16,7 @@
 
 <manifest
     xmlns:android="http://schemas.android.com/apk/res/android"
-    package="com.example.android.networkbasic"
+    package="com.example.android.basicnetworking"
     android:versionCode="1"
     android:versionName="1.0">
 
@@ -31,7 +31,7 @@
         android:allowBackup="true">
 
         <activity
-            android:name="com.example.android.networkbasic.MainActivity"
+            android:name="com.example.android.basicnetworking.MainActivity"
             android:label="@string/app_name"
             android:uiOptions="splitActionBarWhenNarrow">
 
diff --git a/connectivity/network/BasicNetworkDemo/BasicNetworkDemo/src/main/java/com/example/android/networkbasic/MainActivity.java b/connectivity/network/BasicNetworking/BasicNetworkingSample/src/main/java/com/example/android/basicnetworking/MainActivity.java
similarity index 96%
rename from connectivity/network/BasicNetworkDemo/BasicNetworkDemo/src/main/java/com/example/android/networkbasic/MainActivity.java
rename to connectivity/network/BasicNetworking/BasicNetworkingSample/src/main/java/com/example/android/basicnetworking/MainActivity.java
index c2a4305..39ed4b1 100755
--- a/connectivity/network/BasicNetworkDemo/BasicNetworkDemo/src/main/java/com/example/android/networkbasic/MainActivity.java
+++ b/connectivity/network/BasicNetworking/BasicNetworkingSample/src/main/java/com/example/android/basicnetworking/MainActivity.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package com.example.android.networkbasic;
+package com.example.android.basicnetworking;
 
 import android.content.Context;
 import android.net.ConnectivityManager;
@@ -25,8 +25,8 @@
 import android.view.Menu;
 import android.view.MenuItem;
 
-import com.example.android.common.SimpleTextFragment;
 import com.example.android.common.logger.Log;
+import com.example.android.common.logger.LogFragment;
 import com.example.android.common.logger.LogWrapper;
 import com.example.android.common.logger.MessageOnlyLogFilter;
 
@@ -53,7 +53,7 @@
     @Override
     protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
-        setContentView(R.layout.activity_main);
+        setContentView(R.layout.sample_main);
 
         // Initialize text fragment that displays intro text.
         SimpleTextFragment introFragment = (SimpleTextFragment)
diff --git a/connectivity/network/BasicNetworkDemo/BasicNetworkDemo/src/main/java/com/example/android/common/SimpleTextFragment.java b/connectivity/network/BasicNetworking/BasicNetworkingSample/src/main/java/com/example/android/basicnetworking/SimpleTextFragment.java
similarity index 98%
copy from connectivity/network/BasicNetworkDemo/BasicNetworkDemo/src/main/java/com/example/android/common/SimpleTextFragment.java
copy to connectivity/network/BasicNetworking/BasicNetworkingSample/src/main/java/com/example/android/basicnetworking/SimpleTextFragment.java
index a2be93f..c6d409c 100644
--- a/connectivity/network/BasicNetworkDemo/BasicNetworkDemo/src/main/java/com/example/android/common/SimpleTextFragment.java
+++ b/connectivity/network/BasicNetworking/BasicNetworkingSample/src/main/java/com/example/android/basicnetworking/SimpleTextFragment.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package com.example.android.common;
+package com.example.android.basicnetworking;
 
 import android.os.Bundle;
 
diff --git a/connectivity/network/BasicNetworkDemo/BasicNetworkDemo/src/main/res/drawable-hdpi/ic_launcher.png b/connectivity/network/BasicNetworking/BasicNetworkingSample/src/main/res/drawable-hdpi/ic_launcher.png
similarity index 100%
rename from connectivity/network/BasicNetworkDemo/BasicNetworkDemo/src/main/res/drawable-hdpi/ic_launcher.png
rename to connectivity/network/BasicNetworking/BasicNetworkingSample/src/main/res/drawable-hdpi/ic_launcher.png
Binary files differ
diff --git a/connectivity/network/BasicNetworkDemo/BasicNetworkDemo/src/main/res/drawable-mdpi/ic_launcher.png b/connectivity/network/BasicNetworking/BasicNetworkingSample/src/main/res/drawable-mdpi/ic_launcher.png
similarity index 100%
rename from connectivity/network/BasicNetworkDemo/BasicNetworkDemo/src/main/res/drawable-mdpi/ic_launcher.png
rename to connectivity/network/BasicNetworking/BasicNetworkingSample/src/main/res/drawable-mdpi/ic_launcher.png
Binary files differ
diff --git a/connectivity/network/BasicNetworkDemo/BasicNetworkDemo/src/main/res/drawable-xhdpi/ic_launcher.png b/connectivity/network/BasicNetworking/BasicNetworkingSample/src/main/res/drawable-xhdpi/ic_launcher.png
similarity index 100%
rename from connectivity/network/BasicNetworkDemo/BasicNetworkDemo/src/main/res/drawable-xhdpi/ic_launcher.png
rename to connectivity/network/BasicNetworking/BasicNetworkingSample/src/main/res/drawable-xhdpi/ic_launcher.png
Binary files differ
diff --git a/connectivity/network/BasicNetworkDemo/BasicNetworkDemo/src/main/res/drawable-xxhdpi/ic_launcher.png b/connectivity/network/BasicNetworking/BasicNetworkingSample/src/main/res/drawable-xxhdpi/ic_launcher.png
similarity index 100%
rename from connectivity/network/BasicNetworkDemo/BasicNetworkDemo/src/main/res/drawable-xxhdpi/ic_launcher.png
rename to connectivity/network/BasicNetworking/BasicNetworkingSample/src/main/res/drawable-xxhdpi/ic_launcher.png
Binary files differ
diff --git a/connectivity/network/NetworkConnect/NetworkConnect/src/main/res/layout/activity_main.xml b/connectivity/network/BasicNetworking/BasicNetworkingSample/src/main/res/layout/sample_main.xml
similarity index 90%
rename from connectivity/network/NetworkConnect/NetworkConnect/src/main/res/layout/activity_main.xml
rename to connectivity/network/BasicNetworking/BasicNetworkingSample/src/main/res/layout/sample_main.xml
index f21b1ac..ccbe6ae 100755
--- a/connectivity/network/NetworkConnect/NetworkConnect/src/main/res/layout/activity_main.xml
+++ b/connectivity/network/BasicNetworking/BasicNetworkingSample/src/main/res/layout/sample_main.xml
@@ -22,7 +22,7 @@
     android:layout_width="fill_parent"
     android:layout_height="fill_parent">
     <fragment
-        android:name="com.example.android.common.SimpleTextFragment"
+        android:name="com.example.android.basicnetworking.SimpleTextFragment"
         android:id="@+id/intro_fragment"
         android:layout_weight="1"
         android:layout_width="match_parent"
@@ -32,7 +32,7 @@
         android:layout_height="1dp"
         android:background="@android:color/darker_gray"/>
     <fragment
-        android:name="com.example.android.networkconnect.LogFragment"
+        android:name="com.example.android.common.logger.LogFragment"
         android:id="@+id/log_fragment"
         android:layout_weight="1"
         android:layout_width="match_parent"
diff --git a/connectivity/network/BasicNetworkDemo/BasicNetworkDemo/src/main/res/menu/main.xml b/connectivity/network/BasicNetworking/BasicNetworkingSample/src/main/res/menu/main.xml
similarity index 100%
rename from connectivity/network/BasicNetworkDemo/BasicNetworkDemo/src/main/res/menu/main.xml
rename to connectivity/network/BasicNetworking/BasicNetworkingSample/src/main/res/menu/main.xml
diff --git a/connectivity/network/BasicNetworkDemo/BasicNetworkDemo/src/main/res/values/strings.xml b/connectivity/network/BasicNetworking/BasicNetworkingSample/src/main/res/values/strings.xml
similarity index 79%
rename from connectivity/network/BasicNetworkDemo/BasicNetworkDemo/src/main/res/values/strings.xml
rename to connectivity/network/BasicNetworking/BasicNetworkingSample/src/main/res/values/strings.xml
index d8116aa..d39460a 100755
--- a/connectivity/network/BasicNetworkDemo/BasicNetworkDemo/src/main/res/values/strings.xml
+++ b/connectivity/network/BasicNetworking/BasicNetworkingSample/src/main/res/values/strings.xml
@@ -15,12 +15,6 @@
   -->
 
 <resources>
-    <string name="app_name">Basic Network Demo</string>
-
-    <string name="intro_message">Welcome to Basic Network Demo!
-        Click TEST to find out whether your device has a network connection, and if so, what type it is.
-    </string>
-
     <string name="test_text">Test</string>
     <string name="clear_text">Clear</string>
     <string name="wifi_connection">The active connection is wifi.</string>
diff --git a/connectivity/network/BasicNetworkDemo/BasicNetworkDemo/src/main/res/values/styles.xml b/connectivity/network/BasicNetworking/BasicNetworkingSample/src/main/res/values/styles.xml
similarity index 85%
rename from connectivity/network/BasicNetworkDemo/BasicNetworkDemo/src/main/res/values/styles.xml
rename to connectivity/network/BasicNetworking/BasicNetworkingSample/src/main/res/values/styles.xml
index 4d9bb98..3450a54 100644
--- a/connectivity/network/BasicNetworkDemo/BasicNetworkDemo/src/main/res/values/styles.xml
+++ b/connectivity/network/BasicNetworking/BasicNetworkingSample/src/main/res/values/styles.xml
@@ -16,16 +16,8 @@
 
 <resources>
 
-    <!-- Activity themes -->
-
-    <style name="Theme.Base" parent="android:Theme.Light" />
-
-    <style name="Theme.Sample" parent="Theme.Base" />
-
     <!-- Widget styling -->
 
-    <style name="Widget" />
-
     <style name="Widget.SampleOutput">
         <item name="android:padding">@dimen/margin_medium</item>
         <item name="android:textAppearance">?android:textAppearanceMedium</item>
diff --git a/connectivity/network/BasicNetworking/BasicNetworkingSample/tests/AndroidManifest.xml b/connectivity/network/BasicNetworking/BasicNetworkingSample/tests/AndroidManifest.xml
new file mode 100644
index 0000000..293c16b
--- /dev/null
+++ b/connectivity/network/BasicNetworking/BasicNetworkingSample/tests/AndroidManifest.xml
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  Copyright (C) 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 name must be unique so suffix with "tests" so package loader doesn't ignore us -->
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+          package="com.example.android.basicnetworking.tests"
+          android:versionCode="1"
+          android:versionName="1.0">
+
+    <uses-sdk
+            android:minSdkVersion="18"
+            android:targetSdkVersion="19" />
+
+    <!-- We add an application tag here just so that we can indicate that
+         this package needs to link against the android.test library,
+         which is needed when building test cases. -->
+    <application>
+        <uses-library android:name="android.test.runner" />
+    </application>
+
+    <!--
+    Specifies the instrumentation test runner used to run the tests.
+    -->
+    <instrumentation
+            android:name="android.test.InstrumentationTestRunner"
+            android:targetPackage="com.example.android.basicnetworking"
+            android:label="Tests for com.example.android.basicnetworking" />
+
+</manifest>
\ No newline at end of file
diff --git a/connectivity/network/BasicNetworking/BasicNetworkingSample/tests/src/com/example/android/basicnetworking/tests/SampleTests.java b/connectivity/network/BasicNetworking/BasicNetworkingSample/tests/src/com/example/android/basicnetworking/tests/SampleTests.java
new file mode 100644
index 0000000..0cf077e
--- /dev/null
+++ b/connectivity/network/BasicNetworking/BasicNetworkingSample/tests/src/com/example/android/basicnetworking/tests/SampleTests.java
@@ -0,0 +1,79 @@
+/*
+* 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.
+*/
+
+
+
+/*
+* Copyright (C) 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.basicnetworking.tests;
+
+import com.example.android.basicnetworking.*;
+
+import android.test.ActivityInstrumentationTestCase2;
+
+/**
+* Tests for BasicNetworking sample.
+*/
+public class SampleTests extends ActivityInstrumentationTestCase2<MainActivity> {
+
+    private MainActivity mTestActivity;
+    private BasicNetworkingFragment mTestFragment;
+
+    public SampleTests() {
+        super(MainActivity.class);
+    }
+
+    @Override
+    protected void setUp() throws Exception {
+        super.setUp();
+
+        // Starts the activity under test using the default Intent with:
+        // action = {@link Intent#ACTION_MAIN}
+        // flags = {@link Intent#FLAG_ACTIVITY_NEW_TASK}
+        // All other fields are null or empty.
+        mTestActivity = getActivity();
+        mTestFragment = (BasicNetworkingFragment)
+            mTestActivity.getSupportFragmentManager().getFragments().get(1);
+    }
+
+    /**
+    * Test if the test fixture has been set up correctly.
+    */
+    public void testPreconditions() {
+        //Try to add a message to add context to your assertions. These messages will be shown if
+        //a tests fails and make it easy to understand why a test failed
+        assertNotNull("mTestActivity is null", mTestActivity);
+        assertNotNull("mTestFragment is null", mTestFragment);
+    }
+
+    /**
+    * Add more tests below.
+    */
+
+}
\ No newline at end of file
diff --git a/connectivity/network/BasicNetworking/build.gradle b/connectivity/network/BasicNetworking/build.gradle
new file mode 100644
index 0000000..cca9ac3
--- /dev/null
+++ b/connectivity/network/BasicNetworking/build.gradle
@@ -0,0 +1,10 @@
+// BEGIN_EXCLUDE
+import com.example.android.samples.build.SampleGenPlugin
+apply plugin: SampleGenPlugin
+
+samplegen {
+  pathToBuild "../../../../../build"
+  pathToSamplesCommon "../../../common"
+}
+apply from: "../../../../../build/build.gradle"
+// END_EXCLUDE
diff --git a/connectivity/network/BasicNetworking/buildSrc/build.gradle b/connectivity/network/BasicNetworking/buildSrc/build.gradle
new file mode 100644
index 0000000..e344a8c
--- /dev/null
+++ b/connectivity/network/BasicNetworking/buildSrc/build.gradle
@@ -0,0 +1,18 @@
+
+
+
+repositories {
+    mavenCentral()
+}
+dependencies {
+    compile 'org.freemarker:freemarker:2.3.20'
+}
+
+sourceSets {
+    main {
+        groovy {
+            srcDir new File(rootDir, "../../../../../../build/buildSrc/src/main/groovy")
+        }
+    }
+}
+
diff --git a/connectivity/network/BasicNetworkDemo/gradle/wrapper/gradle-wrapper.jar b/connectivity/network/BasicNetworking/gradle/wrapper/gradle-wrapper.jar
similarity index 100%
rename from connectivity/network/BasicNetworkDemo/gradle/wrapper/gradle-wrapper.jar
rename to connectivity/network/BasicNetworking/gradle/wrapper/gradle-wrapper.jar
Binary files differ
diff --git a/connectivity/network/BasicNetworkDemo/gradle/wrapper/gradle-wrapper.properties b/connectivity/network/BasicNetworking/gradle/wrapper/gradle-wrapper.properties
similarity index 80%
copy from connectivity/network/BasicNetworkDemo/gradle/wrapper/gradle-wrapper.properties
copy to connectivity/network/BasicNetworking/gradle/wrapper/gradle-wrapper.properties
index 055ba6f..861eddc 100644
--- a/connectivity/network/BasicNetworkDemo/gradle/wrapper/gradle-wrapper.properties
+++ b/connectivity/network/BasicNetworking/gradle/wrapper/gradle-wrapper.properties
@@ -1,7 +1,6 @@
-#
-#Mon Jul 22 11:40:20 PDT 2013
+#Wed Apr 10 15:27:10 PDT 2013
 distributionBase=GRADLE_USER_HOME
 distributionPath=wrapper/dists
 zipStoreBase=GRADLE_USER_HOME
 zipStorePath=wrapper/dists
-distributionUrl=http\://services.gradle.org/distributions/gradle-1.6-bin.zip
+distributionUrl=http\://services.gradle.org/distributions/gradle-1.8-bin.zip
diff --git a/connectivity/network/BasicNetworkDemo/gradlew b/connectivity/network/BasicNetworking/gradlew
similarity index 100%
rename from connectivity/network/BasicNetworkDemo/gradlew
rename to connectivity/network/BasicNetworking/gradlew
diff --git a/connectivity/network/BasicNetworkDemo/gradlew.bat b/connectivity/network/BasicNetworking/gradlew.bat
similarity index 100%
rename from connectivity/network/BasicNetworkDemo/gradlew.bat
rename to connectivity/network/BasicNetworking/gradlew.bat
diff --git a/connectivity/network/BasicNetworking/settings.gradle b/connectivity/network/BasicNetworking/settings.gradle
new file mode 100644
index 0000000..453e7cd
--- /dev/null
+++ b/connectivity/network/BasicNetworking/settings.gradle
@@ -0,0 +1,4 @@
+
+
+
+include 'BasicNetworkingSample'
diff --git a/connectivity/network/BasicNetworking/template-params.xml b/connectivity/network/BasicNetworking/template-params.xml
new file mode 100644
index 0000000..3413740
--- /dev/null
+++ b/connectivity/network/BasicNetworking/template-params.xml
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ 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.
+-->
+<sample>
+    <name>BasicNetworking</name>
+    <group>Connectivity</group>
+    <package>com.example.android.basicnetworking</package>
+
+    <!-- change minSdk if needed-->
+    <minSdk>4</minSdk>
+
+    <strings>
+        <intro>
+            <![CDATA[
+                This sample demonstrates how to use the ConnectivityManager to determine if you have
+                a network connection, and if so, what type of connection it is.
+                \n\nA "NetworkInfo" object is retrieved from the ConnectivityManager, which contains information
+                on the active connection, and then the connection type is printed to an on-screen console.
+            ]]>
+        </intro>
+    </strings>
+
+    <template src="base"/>
+    <common src="logger"/>
+
+</sample>
diff --git a/connectivity/network/NetworkConnect/NetworkConnect/build.gradle b/connectivity/network/NetworkConnect/NetworkConnect/build.gradle
deleted file mode 100644
index 0baece9..0000000
--- a/connectivity/network/NetworkConnect/NetworkConnect/build.gradle
+++ /dev/null
@@ -1,10 +0,0 @@
-apply plugin: 'android'
-
-dependencies {
-    compile "com.android.support:support-v4:18.0.+"
-}
-
-android {
-    compileSdkVersion 18
-    buildToolsVersion "18.0.0"
-}
diff --git a/connectivity/network/NetworkConnect/NetworkConnect/src/main/java/com/example/android/common/SimpleTextFragment.java b/connectivity/network/NetworkConnect/NetworkConnect/src/main/java/com/example/android/common/SimpleTextFragment.java
deleted file mode 100644
index a2be93f..0000000
--- a/connectivity/network/NetworkConnect/NetworkConnect/src/main/java/com/example/android/common/SimpleTextFragment.java
+++ /dev/null
@@ -1,99 +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.common;
-
-import android.os.Bundle;
-
-import android.support.v4.app.Fragment;
-import android.util.Log;
-import android.view.Gravity;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-import android.widget.TextView;
-
-/**
- * Simple fragment containing only a TextView. Used by TextPagerAdapter to create
- * tutorial-style pages for apps.
- */
-public class SimpleTextFragment extends Fragment {
-
-    // Contains the text that will be displayed by this Fragment
-    String mText;
-
-    // Contains a resource ID for the text that will be displayed by this fragment.
-    int mTextId = -1;
-
-    // Keys which will be used to store/retrieve text passed in via setArguments.
-    public static final String TEXT_KEY = "text";
-    public static final String TEXT_ID_KEY = "text_id";
-
-    // For situations where the app wants to modify text at Runtime, exposing the TextView.
-    private TextView mTextView;
-
-    public SimpleTextFragment() {
-    }
-
-    @Override
-    public View onCreateView(LayoutInflater inflater, ViewGroup container,
-            Bundle savedInstanceState) {
-        // Before initializing the textView, check if any arguments were provided via setArguments.
-        processArguments();
-
-        // Create a new TextView and set its text to whatever was provided.
-        mTextView = new TextView(getActivity());
-        mTextView.setGravity(Gravity.CENTER);
-
-        if (mText != null) {
-            mTextView.setText(mText);
-            Log.i("SimpleTextFragment", mText);
-        }
-        return mTextView;
-    }
-
-    public TextView getTextView() {
-        return mTextView;
-    }
-
-    /**
-     * Changes the text for this TextView, according to the resource ID provided.
-     * @param stringId A resource ID representing the text content for this Fragment's TextView.
-     */
-    public void setText(int stringId) {
-        getTextView().setText(getActivity().getString(stringId));
-    }
-
-    /**
-     * Processes the arguments passed into this Fragment via setArguments method.
-     * Currently the method only looks for text or a textID, nothing else.
-     */
-    public void processArguments() {
-        // For most objects we'd handle the multiple possibilities for initialization variables
-        // as multiple constructors.  For Fragments, however, it's customary to use
-        // setArguments / getArguments.
-        if (getArguments() != null) {
-            Bundle args = getArguments();
-            if (args.containsKey(TEXT_KEY)) {
-                mText = args.getString(TEXT_KEY);
-                Log.d("Constructor", "Added Text.");
-            } else if (args.containsKey(TEXT_ID_KEY)) {
-                mTextId = args.getInt(TEXT_ID_KEY);
-                mText = getString(mTextId);
-            }
-        }
-    }
-}
\ No newline at end of file
diff --git a/connectivity/network/NetworkConnect/NetworkConnect/src/main/java/com/example/android/common/logger/Log.java b/connectivity/network/NetworkConnect/NetworkConnect/src/main/java/com/example/android/common/logger/Log.java
deleted file mode 100644
index cf4abb7..0000000
--- a/connectivity/network/NetworkConnect/NetworkConnect/src/main/java/com/example/android/common/logger/Log.java
+++ /dev/null
@@ -1,236 +0,0 @@
-/*
- * Copyright (C) 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.common.logger;
-
-/**
- * Helper class for a list (or tree) of LoggerNodes.
- *
- * <p>When this is set as the head of the list,
- * an instance of it can function as a drop-in replacement for {@link android.util.Log}.
- * Most of the methods in this class server only to map a method call in Log to its equivalent
- * in LogNode.</p>
- */
-public class Log {
-    // Grabbing the native values from Android's native logging facilities,
-    // to make for easy migration and interop.
-    public static final int NONE = -1;
-    public static final int VERBOSE = android.util.Log.VERBOSE;
-    public static final int DEBUG = android.util.Log.DEBUG;
-    public static final int INFO = android.util.Log.INFO;
-    public static final int WARN = android.util.Log.WARN;
-    public static final int ERROR = android.util.Log.ERROR;
-    public static final int ASSERT = android.util.Log.ASSERT;
-
-    // Stores the beginning of the LogNode topology.
-    private static LogNode mLogNode;
-
-    /**
-     * Returns the next LogNode in the linked list.
-     */
-    public static LogNode getLogNode() {
-        return mLogNode;
-    }
-
-    /**
-     * Sets the LogNode data will be sent to.
-     */
-    public static void setLogNode(LogNode node) {
-        mLogNode = node;
-    }
-
-    /**
-     * Instructs the LogNode to print the log data provided. Other LogNodes can
-     * be chained to the end of the LogNode as desired.
-     *
-     * @param priority Log level of the data being logged. Verbose, Error, etc.
-     * @param tag Tag for for the log data. Can be used to organize log statements.
-     * @param msg The actual message to be logged.
-     * @param tr If an exception was thrown, this can be sent along for the logging facilities
-     *           to extract and print useful information.
-     */
-    public static void println(int priority, String tag, String msg, Throwable tr) {
-        if (mLogNode != null) {
-            mLogNode.println(priority, tag, msg, tr);
-        }
-    }
-
-    /**
-     * Instructs the LogNode to print the log data provided. Other LogNodes can
-     * be chained to the end of the LogNode as desired.
-     *
-     * @param priority Log level of the data being logged. Verbose, Error, etc.
-     * @param tag Tag for for the log data. Can be used to organize log statements.
-     * @param msg The actual message to be logged. The actual message to be logged.
-     */
-    public static void println(int priority, String tag, String msg) {
-        println(priority, tag, msg, null);
-    }
-
-   /**
-     * Prints a message at VERBOSE priority.
-     *
-     * @param tag Tag for for the log data. Can be used to organize log statements.
-     * @param msg The actual message to be logged.
-     * @param tr If an exception was thrown, this can be sent along for the logging facilities
-     *           to extract and print useful information.
-     */
-    public static void v(String tag, String msg, Throwable tr) {
-        println(VERBOSE, tag, msg, tr);
-    }
-
-    /**
-     * Prints a message at VERBOSE priority.
-     *
-     * @param tag Tag for for the log data. Can be used to organize log statements.
-     * @param msg The actual message to be logged.
-     */
-    public static void v(String tag, String msg) {
-        v(tag, msg, null);
-    }
-
-
-    /**
-     * Prints a message at DEBUG priority.
-     *
-     * @param tag Tag for for the log data. Can be used to organize log statements.
-     * @param msg The actual message to be logged.
-     * @param tr If an exception was thrown, this can be sent along for the logging facilities
-     *           to extract and print useful information.
-     */
-    public static void d(String tag, String msg, Throwable tr) {
-        println(DEBUG, tag, msg, tr);
-    }
-
-    /**
-     * Prints a message at DEBUG priority.
-     *
-     * @param tag Tag for for the log data. Can be used to organize log statements.
-     * @param msg The actual message to be logged.
-     */
-    public static void d(String tag, String msg) {
-        d(tag, msg, null);
-    }
-
-    /**
-     * Prints a message at INFO priority.
-     *
-     * @param tag Tag for for the log data. Can be used to organize log statements.
-     * @param msg The actual message to be logged.
-     * @param tr If an exception was thrown, this can be sent along for the logging facilities
-     *           to extract and print useful information.
-     */
-    public static void i(String tag, String msg, Throwable tr) {
-        println(INFO, tag, msg, tr);
-    }
-
-    /**
-     * Prints a message at INFO priority.
-     *
-     * @param tag Tag for for the log data. Can be used to organize log statements.
-     * @param msg The actual message to be logged.
-     */
-    public static void i(String tag, String msg) {
-        i(tag, msg, null);
-    }
-
-    /**
-     * Prints a message at WARN priority.
-     *
-     * @param tag Tag for for the log data. Can be used to organize log statements.
-     * @param msg The actual message to be logged.
-     * @param tr If an exception was thrown, this can be sent along for the logging facilities
-     *           to extract and print useful information.
-     */
-    public static void w(String tag, String msg, Throwable tr) {
-        println(WARN, tag, msg, tr);
-    }
-
-    /**
-     * Prints a message at WARN priority.
-     *
-     * @param tag Tag for for the log data. Can be used to organize log statements.
-     * @param msg The actual message to be logged.
-     */
-    public static void w(String tag, String msg) {
-        w(tag, msg, null);
-    }
-
-    /**
-     * Prints a message at WARN priority.
-     *
-     * @param tag Tag for for the log data. Can be used to organize log statements.
-     * @param tr If an exception was thrown, this can be sent along for the logging facilities
-     *           to extract and print useful information.
-     */
-    public static void w(String tag, Throwable tr) {
-        w(tag, null, tr);
-    }
-
-    /**
-     * Prints a message at ERROR priority.
-     *
-     * @param tag Tag for for the log data. Can be used to organize log statements.
-     * @param msg The actual message to be logged.
-     * @param tr If an exception was thrown, this can be sent along for the logging facilities
-     *           to extract and print useful information.
-     */
-    public static void e(String tag, String msg, Throwable tr) {
-        println(ERROR, tag, msg, tr);
-    }
-
-    /**
-     * Prints a message at ERROR priority.
-     *
-     * @param tag Tag for for the log data. Can be used to organize log statements.
-     * @param msg The actual message to be logged.
-     */
-    public static void e(String tag, String msg) {
-        e(tag, msg, null);
-    }
-
-    /**
-     * Prints a message at ASSERT priority.
-     *
-     * @param tag Tag for for the log data. Can be used to organize log statements.
-     * @param msg The actual message to be logged.
-     * @param tr If an exception was thrown, this can be sent along for the logging facilities
-     *           to extract and print useful information.
-     */
-    public static void wtf(String tag, String msg, Throwable tr) {
-        println(ASSERT, tag, msg, tr);
-    }
-
-    /**
-     * Prints a message at ASSERT priority.
-     *
-     * @param tag Tag for for the log data. Can be used to organize log statements.
-     * @param msg The actual message to be logged.
-     */
-    public static void wtf(String tag, String msg) {
-        wtf(tag, msg, null);
-    }
-
-    /**
-     * Prints a message at ASSERT priority.
-     *
-     * @param tag Tag for for the log data. Can be used to organize log statements.
-     * @param tr If an exception was thrown, this can be sent along for the logging facilities
-     *           to extract and print useful information.
-     */
-    public static void wtf(String tag, Throwable tr) {
-        wtf(tag, null, tr);
-    }
-}
\ No newline at end of file
diff --git a/connectivity/network/NetworkConnect/NetworkConnect/src/main/java/com/example/android/common/logger/LogView.java b/connectivity/network/NetworkConnect/NetworkConnect/src/main/java/com/example/android/common/logger/LogView.java
deleted file mode 100644
index 953b8b1..0000000
--- a/connectivity/network/NetworkConnect/NetworkConnect/src/main/java/com/example/android/common/logger/LogView.java
+++ /dev/null
@@ -1,133 +0,0 @@
-/*
- * Copyright (C) 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.common.logger;
-
-import android.content.Context;
-import android.util.*;
-import android.widget.TextView;
-
-/** Simple TextView which is used to output log data received through the LogNode interface.
-*/
-public class LogView extends TextView implements LogNode {
-
-    public LogView(Context context) {
-        super(context);
-    }
-
-    public LogView(Context context, AttributeSet attrs) {
-        super(context, attrs);
-    }
-
-    public LogView(Context context, AttributeSet attrs, int defStyle) {
-        super(context, attrs, defStyle);
-    }
-
-    /**
-     * Formats the log data and prints it out to the LogView.
-     * @param priority Log level of the data being logged.  Verbose, Error, etc.
-     * @param tag Tag for for the log data.  Can be used to organize log statements.
-     * @param msg The actual message to be logged. The actual message to be logged.
-     * @param tr If an exception was thrown, this can be sent along for the logging facilities
-     *           to extract and print useful information.
-     */
-    @Override
-    public void println(int priority, String tag, String msg, Throwable tr) {
-        String priorityStr = null;
-
-        // For the purposes of this View, we want to print the priority as readable text.
-        switch(priority) {
-            case android.util.Log.VERBOSE:
-                priorityStr = "VERBOSE";
-                break;
-            case android.util.Log.DEBUG:
-                priorityStr = "DEBUG";
-                break;
-            case android.util.Log.INFO:
-                priorityStr = "INFO";
-                break;
-            case android.util.Log.WARN:
-                priorityStr = "WARN";
-                break;
-            case android.util.Log.ERROR:
-                priorityStr = "ERROR";
-                break;
-            case android.util.Log.ASSERT:
-                priorityStr = "ASSERT";
-                break;
-            default:
-                break;
-        }
-
-        // Handily, the Log class has a facility for converting a stack trace into a usable string.
-        String exceptionStr = null;
-        if (tr != null) {
-            exceptionStr = android.util.Log.getStackTraceString(tr);
-        }
-
-        // Take the priority, tag, message, and exception, and concatenate as necessary
-        // into one usable line of text.
-        StringBuilder outputBuilder = new StringBuilder();
-
-        String delimiter = "\t";
-        appendIfNotNull(outputBuilder, priorityStr, delimiter);
-        appendIfNotNull(outputBuilder, tag, delimiter);
-        appendIfNotNull(outputBuilder, msg, delimiter);
-        appendIfNotNull(outputBuilder, exceptionStr, delimiter);
-
-        // Actually display the text we just generated within the LogView.
-        appendToLog(outputBuilder.toString());
-
-        if (mNext != null) {
-            mNext.println(priority, tag, msg, tr);
-        }
-    }
-
-    public LogNode getNext() {
-        return mNext;
-    }
-
-    public void setNext(LogNode node) {
-        mNext = node;
-    }
-
-    /** Takes a string and adds to it, with a separator, if the bit to be added isn't null. Since
-     * the logger takes so many arguments that might be null, this method helps cut out some of the
-     * agonizing tedium of writing the same 3 lines over and over.
-     * @param source StringBuilder containing the text to append to.
-     * @param addStr The String to append
-     * @param delimiter The String to separate the source and appended strings. A tab or comma,
-     *                  for instance.
-     * @return The fully concatenated String as a StringBuilder
-     */
-    private StringBuilder appendIfNotNull(StringBuilder source, String addStr, String delimiter) {
-        if (addStr != null) {
-            if (addStr.length() == 0) {
-                delimiter = "";
-            }
-
-            return source.append(addStr).append(delimiter);
-        }
-        return source;
-    }
-
-    // The next LogNode in the chain.
-    LogNode mNext;
-
-    /** Outputs the string as a new line of log data in the LogView. */
-    public void appendToLog(String s) {
-        append("\n" + s);
-    }
-}
diff --git a/connectivity/network/NetworkConnect/NetworkConnect/src/main/java/com/example/android/common/logger/LogWrapper.java b/connectivity/network/NetworkConnect/NetworkConnect/src/main/java/com/example/android/common/logger/LogWrapper.java
deleted file mode 100644
index ea8e20e..0000000
--- a/connectivity/network/NetworkConnect/NetworkConnect/src/main/java/com/example/android/common/logger/LogWrapper.java
+++ /dev/null
@@ -1,75 +0,0 @@
-/*
- * Copyright (C) 2012 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.common.logger;
-
-import android.util.Log;
-
-/**
- * Helper class which wraps Android's native Log utility in the Logger interface.  This way
- * normal DDMS output can be one of the many targets receiving and outputting logs simultaneously.
- */
-public class LogWrapper implements LogNode {
-
-    // For piping:  The next node to receive Log data after this one has done its work.
-    private LogNode mNext;
-
-    /**
-     * Returns the next LogNode in the linked list.
-     */
-    public LogNode getNext() {
-        return mNext;
-    }
-
-    /**
-     * Sets the LogNode data will be sent to..
-     */
-    public void setNext(LogNode node) {
-        mNext = node;
-    }
-
-    /**
-     * Prints data out to the console using Android's native log mechanism.
-     * @param priority Log level of the data being logged.  Verbose, Error, etc.
-     * @param tag Tag for for the log data.  Can be used to organize log statements.
-     * @param msg The actual message to be logged. The actual message to be logged.
-     * @param tr If an exception was thrown, this can be sent along for the logging facilities
-     *           to extract and print useful information.
-     */
-    @Override
-    public void println(int priority, String tag, String msg, Throwable tr) {
-        // There actually are log methods that don't take a msg parameter.  For now,
-        // if that's the case, just convert null to the empty string and move on.
-        String useMsg = msg;
-        if (useMsg == null) {
-            useMsg = "";
-        }
-
-        // If an exeption was provided, convert that exception to a usable string and attach
-        // it to the end of the msg method.
-        if (tr != null) {
-            msg += "\n" + Log.getStackTraceString(tr);
-        }
-
-        // This is functionally identical to Log.x(tag, useMsg);
-        // For instance, if priority were Log.VERBOSE, this would be the same as Log.v(tag, useMsg)
-        Log.println(priority, tag, useMsg);
-
-        // If this isn't the last node in the chain, move things along.
-        if (mNext != null) {
-            mNext.println(priority, tag, msg, tr);
-        }
-    }
-}
\ No newline at end of file
diff --git a/connectivity/network/NetworkConnect/NetworkConnect/src/main/java/com/example/android/common/logger/MessageOnlyLogFilter.java b/connectivity/network/NetworkConnect/NetworkConnect/src/main/java/com/example/android/common/logger/MessageOnlyLogFilter.java
deleted file mode 100644
index c57a111..0000000
--- a/connectivity/network/NetworkConnect/NetworkConnect/src/main/java/com/example/android/common/logger/MessageOnlyLogFilter.java
+++ /dev/null
@@ -1,60 +0,0 @@
-/*
- * Copyright (C) 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.common.logger;
-
-/**
- * Simple {@link LogNode} filter, removes everything except the message.
- * Useful for situations like on-screen log output where you don't want a lot of metadata displayed,
- * just easy-to-read message updates as they're happening.
- */
-public class MessageOnlyLogFilter implements LogNode {
-
-    LogNode mNext;
-
-    /**
-     * Takes the "next" LogNode as a parameter, to simplify chaining.
-     *
-     * @param next The next LogNode in the pipeline.
-     */
-    public MessageOnlyLogFilter(LogNode next) {
-        mNext = next;
-    }
-
-    public MessageOnlyLogFilter() {
-    }
-
-    @Override
-    public void println(int priority, String tag, String msg, Throwable tr) {
-        if (mNext != null) {
-            getNext().println(Log.NONE, null, msg, null);
-        }
-    }
-
-    /**
-     * Returns the next LogNode in the linked list.
-     */
-    public LogNode getNext() {
-        return mNext;
-    }
-
-    /**
-     * Sets the LogNode data will be sent to..
-     */
-    public void setNext(LogNode node) {
-        mNext = node;
-    }
-
-}
\ No newline at end of file
diff --git a/connectivity/network/NetworkConnect/NetworkConnect/src/main/java/com/example/android/networkconnect/LogFragment.java b/connectivity/network/NetworkConnect/NetworkConnect/src/main/java/com/example/android/networkconnect/LogFragment.java
deleted file mode 100644
index 655d428..0000000
--- a/connectivity/network/NetworkConnect/NetworkConnect/src/main/java/com/example/android/networkconnect/LogFragment.java
+++ /dev/null
@@ -1,60 +0,0 @@
-package com.example.android.networkconnect;
-
-import android.support.v4.app.Fragment;
-
-import com.example.android.networkconnect.R;
-import com.example.android.common.logger.LogView;
-
-import android.os.Bundle;
-
-import android.text.Editable;
-import android.text.TextWatcher;
-
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-import android.widget.ScrollView;
-
-/**
- * Simple fragment that contains a LogView and uses it to output log data it receives
- * through the LogNode interface.
- */
-public class LogFragment extends Fragment {
-
-  private LogView mLogView;
-
-  public LogFragment() {}
-
-  @Override
-  public View onCreateView(LayoutInflater inflater, ViewGroup container,
-          Bundle savedInstanceState) {
-
-      View result = inflater.inflate(R.layout.log_fragment, container, false);
-
-      mLogView = (LogView) result.findViewById(R.id.sample_output);
-
-      // Wire up so when the text changes, the view scrolls down.
-      final ScrollView scrollView =
-              ((ScrollView) result.findViewById(R.id.log_scroll));
-
-      mLogView.addTextChangedListener(new TextWatcher() {
-          @Override
-          public void beforeTextChanged(CharSequence s, int start, int count, int after) {}
-
-          @Override
-          public void onTextChanged(CharSequence s, int start, int before, int count) {}
-
-          @Override
-          public void afterTextChanged(Editable s) {
-              scrollView.fullScroll(ScrollView.FOCUS_DOWN);
-          }
-      });
-
-      return result;
-  }
-
-  public LogView getLogView() {
-      return mLogView;
-  }
-
-}
diff --git a/connectivity/network/NetworkConnect/NetworkConnect/src/main/res/layout/log_fragment.xml b/connectivity/network/NetworkConnect/NetworkConnect/src/main/res/layout/log_fragment.xml
deleted file mode 100644
index 6d79548..0000000
--- a/connectivity/network/NetworkConnect/NetworkConnect/src/main/res/layout/log_fragment.xml
+++ /dev/null
@@ -1,33 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-
-<!--
-  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.
-  -->
-
-<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
-    android:id="@+id/log_scroll"
-    android:layout_width="match_parent"
-    android:layout_height="match_parent">
-
-    <com.example.android.common.logger.LogView
-        android:id="@+id/sample_output"
-        style="@style/Log"
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:clickable="true"
-        android:focusable="true"
-        android:text=""
-        android:gravity="bottom" />
-</ScrollView>
\ No newline at end of file
diff --git a/connectivity/network/NetworkConnect/NetworkConnect/src/main/res/values-sw600dp/styles.xml b/connectivity/network/NetworkConnect/NetworkConnect/src/main/res/values-sw600dp/styles.xml
deleted file mode 100644
index ffcbe8a..0000000
--- a/connectivity/network/NetworkConnect/NetworkConnect/src/main/res/values-sw600dp/styles.xml
+++ /dev/null
@@ -1,28 +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.
-  -->
-
-<resources>
-
-    <style name="Widget.SampleOutput">
-        <item name="android:paddingTop">@dimen/margin_medium</item>
-        <item name="android:paddingBottom">@dimen/margin_medium</item>
-        <item name="android:paddingLeft">@dimen/margin_huge</item>
-        <item name="android:paddingRight">@dimen/margin_huge</item>
-        <item name="android:textAppearance">?android:textAppearanceLarge</item>
-        <item name="android:lineSpacingMultiplier">1.2</item>
-    </style>
-
-</resources>
diff --git a/connectivity/network/NetworkConnect/NetworkConnect/src/main/res/values-v11/styles.xml b/connectivity/network/NetworkConnect/NetworkConnect/src/main/res/values-v11/styles.xml
deleted file mode 100644
index c6c648b..0000000
--- a/connectivity/network/NetworkConnect/NetworkConnect/src/main/res/values-v11/styles.xml
+++ /dev/null
@@ -1,19 +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.
-  -->
-
-<resources>
-    <style name="Theme.Base" parent="android:Theme.Holo.Light" />
-</resources>
diff --git a/connectivity/network/NetworkConnect/NetworkConnect/src/main/res/values/dimens.xml b/connectivity/network/NetworkConnect/NetworkConnect/src/main/res/values/dimens.xml
deleted file mode 100644
index 4f69897..0000000
--- a/connectivity/network/NetworkConnect/NetworkConnect/src/main/res/values/dimens.xml
+++ /dev/null
@@ -1,24 +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.
-  -->
-
-<resources>
-
-    <!-- Define standard dimensions to comply with Holo-style grids and rhythm. -->
-
-    <dimen name="margin_medium">16dp</dimen>
-    <dimen name="margin_huge">64dp</dimen>
-
-</resources>
diff --git a/connectivity/network/NetworkConnect/NetworkConnect/src/main/res/values/styles.xml b/connectivity/network/NetworkConnect/NetworkConnect/src/main/res/values/styles.xml
deleted file mode 100644
index 4d9bb98..0000000
--- a/connectivity/network/NetworkConnect/NetworkConnect/src/main/res/values/styles.xml
+++ /dev/null
@@ -1,40 +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 thegi 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>
-
-    <!-- Activity themes -->
-
-    <style name="Theme.Base" parent="android:Theme.Light" />
-
-    <style name="Theme.Sample" parent="Theme.Base" />
-
-    <!-- Widget styling -->
-
-    <style name="Widget" />
-
-    <style name="Widget.SampleOutput">
-        <item name="android:padding">@dimen/margin_medium</item>
-        <item name="android:textAppearance">?android:textAppearanceMedium</item>
-        <item name="android:lineSpacingMultiplier">1.1</item>
-    </style>
-
-    <style name="Log" parent="Widget.SampleOutput">
-        <item name="android:typeface">monospace</item>
-    </style>
-
-
-</resources>
diff --git a/connectivity/network/NetworkConnect/NetworkConnectSample/.gitignore b/connectivity/network/NetworkConnect/NetworkConnectSample/.gitignore
new file mode 100644
index 0000000..6eb878d
--- /dev/null
+++ b/connectivity/network/NetworkConnect/NetworkConnectSample/.gitignore
@@ -0,0 +1,16 @@
+# 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.
+src/template/
+src/common/
+build.gradle
diff --git a/connectivity/sync/BasicSyncAdapter/BasicSyncAdapterTests/proguard-project.txt b/connectivity/network/NetworkConnect/NetworkConnectSample/proguard-project.txt
similarity index 91%
copy from connectivity/sync/BasicSyncAdapter/BasicSyncAdapterTests/proguard-project.txt
copy to connectivity/network/NetworkConnect/NetworkConnectSample/proguard-project.txt
index f2fe155..0d8f171 100644
--- a/connectivity/sync/BasicSyncAdapter/BasicSyncAdapterTests/proguard-project.txt
+++ b/connectivity/network/NetworkConnect/NetworkConnectSample/proguard-project.txt
@@ -1,4 +1,4 @@
-# To enable ProGuard in your project, edit project.properties
+ To enable ProGuard in your project, edit project.properties
 # to define the proguard.config property as described in that file.
 #
 # Add project specific ProGuard rules here.
diff --git a/connectivity/network/NetworkConnect/NetworkConnect/src/main/AndroidManifest.xml b/connectivity/network/NetworkConnect/NetworkConnectSample/src/main/AndroidManifest.xml
old mode 100755
new mode 100644
similarity index 62%
rename from connectivity/network/NetworkConnect/NetworkConnect/src/main/AndroidManifest.xml
rename to connectivity/network/NetworkConnect/NetworkConnectSample/src/main/AndroidManifest.xml
index 09fd2ee..1ae29df
--- a/connectivity/network/NetworkConnect/NetworkConnect/src/main/AndroidManifest.xml
+++ b/connectivity/network/NetworkConnect/NetworkConnectSample/src/main/AndroidManifest.xml
@@ -1,18 +1,21 @@
+<?xml version="1.0" encoding="UTF-8"?>
 <!--
-  Copyright 2013 The Android Open Source Project
+ 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
+ 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
+     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.
-  -->
+ 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.
+-->
+
+
 
 <manifest
     xmlns:android="http://schemas.android.com/apk/res/android"
diff --git a/connectivity/network/NetworkConnect/NetworkConnect/src/main/java/com/example/android/networkconnect/MainActivity.java b/connectivity/network/NetworkConnect/NetworkConnectSample/src/main/java/com/example/android/networkconnect/MainActivity.java
similarity index 95%
rename from connectivity/network/NetworkConnect/NetworkConnect/src/main/java/com/example/android/networkconnect/MainActivity.java
rename to connectivity/network/NetworkConnect/NetworkConnectSample/src/main/java/com/example/android/networkconnect/MainActivity.java
index ae1591d..3ad4646 100755
--- a/connectivity/network/NetworkConnect/NetworkConnect/src/main/java/com/example/android/networkconnect/MainActivity.java
+++ b/connectivity/network/NetworkConnect/NetworkConnectSample/src/main/java/com/example/android/networkconnect/MainActivity.java
@@ -23,8 +23,8 @@
 import android.view.Menu;
 import android.view.MenuItem;
 
-import com.example.android.common.SimpleTextFragment;
 import com.example.android.common.logger.Log;
+import com.example.android.common.logger.LogFragment;
 import com.example.android.common.logger.LogWrapper;
 import com.example.android.common.logger.MessageOnlyLogFilter;
 
@@ -55,12 +55,12 @@
     @Override
     protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
-        setContentView(R.layout.activity_main);
+        setContentView(R.layout.sample_main);
 
         // Initialize text fragment that displays intro text.
         SimpleTextFragment introFragment = (SimpleTextFragment)
                     getSupportFragmentManager().findFragmentById(R.id.intro_fragment);
-        introFragment.setText(R.string.intro_message);
+        introFragment.setText(R.string.welcome_message);
         introFragment.getTextView().setTextSize(TypedValue.COMPLEX_UNIT_DIP, 16.0f);
 
         // Initialize the logging framework.
@@ -135,7 +135,7 @@
      * an input stream.
      * @param urlString A string representation of a URL.
      * @return An InputStream retrieved from a successful HttpURLConnection.
-     * @throws IOException
+     * @throws java.io.IOException
      */
     private InputStream downloadUrl(String urlString) throws IOException {
         // BEGIN_INCLUDE(get_inputstream)
@@ -156,8 +156,8 @@
      * @param stream InputStream containing HTML from targeted site.
      * @param len Length of string that this method returns.
      * @return String concatenated according to len parameter.
-     * @throws IOException
-     * @throws UnsupportedEncodingException
+     * @throws java.io.IOException
+     * @throws java.io.UnsupportedEncodingException
      */
     private String readIt(InputStream stream, int len) throws IOException, UnsupportedEncodingException {
         Reader reader = null;
diff --git a/connectivity/network/BasicNetworkDemo/BasicNetworkDemo/src/main/java/com/example/android/common/SimpleTextFragment.java b/connectivity/network/NetworkConnect/NetworkConnectSample/src/main/java/com/example/android/networkconnect/SimpleTextFragment.java
similarity index 98%
rename from connectivity/network/BasicNetworkDemo/BasicNetworkDemo/src/main/java/com/example/android/common/SimpleTextFragment.java
rename to connectivity/network/NetworkConnect/NetworkConnectSample/src/main/java/com/example/android/networkconnect/SimpleTextFragment.java
index a2be93f..3202937 100644
--- a/connectivity/network/BasicNetworkDemo/BasicNetworkDemo/src/main/java/com/example/android/common/SimpleTextFragment.java
+++ b/connectivity/network/NetworkConnect/NetworkConnectSample/src/main/java/com/example/android/networkconnect/SimpleTextFragment.java
@@ -14,10 +14,9 @@
  * limitations under the License.
  */
 
-package com.example.android.common;
+package com.example.android.networkconnect;
 
 import android.os.Bundle;
-
 import android.support.v4.app.Fragment;
 import android.util.Log;
 import android.view.Gravity;
diff --git a/connectivity/network/NetworkConnect/NetworkConnect/src/main/res/drawable-hdpi/ic_launcher.png b/connectivity/network/NetworkConnect/NetworkConnectSample/src/main/res/drawable-hdpi/ic_launcher.png
similarity index 100%
rename from connectivity/network/NetworkConnect/NetworkConnect/src/main/res/drawable-hdpi/ic_launcher.png
rename to connectivity/network/NetworkConnect/NetworkConnectSample/src/main/res/drawable-hdpi/ic_launcher.png
Binary files differ
diff --git a/connectivity/network/NetworkConnect/NetworkConnect/src/main/res/drawable-mdpi/ic_launcher.png b/connectivity/network/NetworkConnect/NetworkConnectSample/src/main/res/drawable-mdpi/ic_launcher.png
similarity index 100%
rename from connectivity/network/NetworkConnect/NetworkConnect/src/main/res/drawable-mdpi/ic_launcher.png
rename to connectivity/network/NetworkConnect/NetworkConnectSample/src/main/res/drawable-mdpi/ic_launcher.png
Binary files differ
diff --git a/connectivity/network/NetworkConnect/NetworkConnect/src/main/res/drawable-xhdpi/ic_launcher.png b/connectivity/network/NetworkConnect/NetworkConnectSample/src/main/res/drawable-xhdpi/ic_launcher.png
similarity index 100%
rename from connectivity/network/NetworkConnect/NetworkConnect/src/main/res/drawable-xhdpi/ic_launcher.png
rename to connectivity/network/NetworkConnect/NetworkConnectSample/src/main/res/drawable-xhdpi/ic_launcher.png
Binary files differ
diff --git a/connectivity/network/NetworkConnect/NetworkConnect/src/main/res/drawable-xxhdpi/ic_launcher.png b/connectivity/network/NetworkConnect/NetworkConnectSample/src/main/res/drawable-xxhdpi/ic_launcher.png
similarity index 100%
rename from connectivity/network/NetworkConnect/NetworkConnect/src/main/res/drawable-xxhdpi/ic_launcher.png
rename to connectivity/network/NetworkConnect/NetworkConnectSample/src/main/res/drawable-xxhdpi/ic_launcher.png
Binary files differ
diff --git a/connectivity/network/NetworkConnect/NetworkConnect/src/main/res/layout/activity_main.xml b/connectivity/network/NetworkConnect/NetworkConnectSample/src/main/res/layout/sample_main.xml
similarity index 90%
copy from connectivity/network/NetworkConnect/NetworkConnect/src/main/res/layout/activity_main.xml
copy to connectivity/network/NetworkConnect/NetworkConnectSample/src/main/res/layout/sample_main.xml
index f21b1ac..76fa7d7 100755
--- a/connectivity/network/NetworkConnect/NetworkConnect/src/main/res/layout/activity_main.xml
+++ b/connectivity/network/NetworkConnect/NetworkConnectSample/src/main/res/layout/sample_main.xml
@@ -22,7 +22,7 @@
     android:layout_width="fill_parent"
     android:layout_height="fill_parent">
     <fragment
-        android:name="com.example.android.common.SimpleTextFragment"
+        android:name="com.example.android.networkconnect.SimpleTextFragment"
         android:id="@+id/intro_fragment"
         android:layout_weight="1"
         android:layout_width="match_parent"
@@ -32,7 +32,7 @@
         android:layout_height="1dp"
         android:background="@android:color/darker_gray"/>
     <fragment
-        android:name="com.example.android.networkconnect.LogFragment"
+        android:name="com.example.android.common.logger.LogFragment"
         android:id="@+id/log_fragment"
         android:layout_weight="1"
         android:layout_width="match_parent"
diff --git a/connectivity/network/NetworkConnect/NetworkConnect/src/main/res/menu/main.xml b/connectivity/network/NetworkConnect/NetworkConnectSample/src/main/res/menu/main.xml
similarity index 100%
rename from connectivity/network/NetworkConnect/NetworkConnect/src/main/res/menu/main.xml
rename to connectivity/network/NetworkConnect/NetworkConnectSample/src/main/res/menu/main.xml
diff --git a/connectivity/network/NetworkConnect/NetworkConnect/src/main/res/values/strings.xml b/connectivity/network/NetworkConnect/NetworkConnectSample/src/main/res/values/strings.xml
similarity index 88%
rename from connectivity/network/NetworkConnect/NetworkConnect/src/main/res/values/strings.xml
rename to connectivity/network/NetworkConnect/NetworkConnectSample/src/main/res/values/strings.xml
index 756f4a7..1e7915a 100755
--- a/connectivity/network/NetworkConnect/NetworkConnect/src/main/res/values/strings.xml
+++ b/connectivity/network/NetworkConnect/NetworkConnectSample/src/main/res/values/strings.xml
@@ -15,9 +15,7 @@
   -->
 
 <resources>
-    <string name="app_name">Network Connect</string>
-
-    <string name="intro_message">Welcome to Network Connect!
+    <string name="welcome_message">Welcome to Network Connect!
         Click FETCH to fetch the first 500 characters of raw HTML from www.google.com.
     </string>
 
diff --git a/connectivity/network/NetworkConnect/NetworkConnectSample/tests/AndroidManifest.xml b/connectivity/network/NetworkConnect/NetworkConnectSample/tests/AndroidManifest.xml
new file mode 100644
index 0000000..80fec80
--- /dev/null
+++ b/connectivity/network/NetworkConnect/NetworkConnectSample/tests/AndroidManifest.xml
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  Copyright (C) 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 name must be unique so suffix with "tests" so package loader doesn't ignore us -->
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+          package="com.example.android.networkconnect.tests"
+          android:versionCode="1"
+          android:versionName="1.0">
+
+    <uses-sdk
+            android:minSdkVersion="18"
+            android:targetSdkVersion="19" />
+
+    <!-- We add an application tag here just so that we can indicate that
+         this package needs to link against the android.test library,
+         which is needed when building test cases. -->
+    <application>
+        <uses-library android:name="android.test.runner" />
+    </application>
+
+    <!--
+    Specifies the instrumentation test runner used to run the tests.
+    -->
+    <instrumentation
+            android:name="android.test.InstrumentationTestRunner"
+            android:targetPackage="com.example.android.networkconnect"
+            android:label="Tests for com.example.android.networkconnect" />
+
+</manifest>
\ No newline at end of file
diff --git a/connectivity/network/NetworkConnect/NetworkConnectSample/tests/src/com/example/android/networkconnect/tests/SampleTests.java b/connectivity/network/NetworkConnect/NetworkConnectSample/tests/src/com/example/android/networkconnect/tests/SampleTests.java
new file mode 100644
index 0000000..a554964
--- /dev/null
+++ b/connectivity/network/NetworkConnect/NetworkConnectSample/tests/src/com/example/android/networkconnect/tests/SampleTests.java
@@ -0,0 +1,79 @@
+/*
+* 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.
+*/
+
+
+
+/*
+* Copyright (C) 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.networkconnect.tests;
+
+import com.example.android.networkconnect.*;
+
+import android.test.ActivityInstrumentationTestCase2;
+
+/**
+* Tests for NetworkConnect sample.
+*/
+public class SampleTests extends ActivityInstrumentationTestCase2<MainActivity> {
+
+    private MainActivity mTestActivity;
+    private NetworkConnectFragment mTestFragment;
+
+    public SampleTests() {
+        super(MainActivity.class);
+    }
+
+    @Override
+    protected void setUp() throws Exception {
+        super.setUp();
+
+        // Starts the activity under test using the default Intent with:
+        // action = {@link Intent#ACTION_MAIN}
+        // flags = {@link Intent#FLAG_ACTIVITY_NEW_TASK}
+        // All other fields are null or empty.
+        mTestActivity = getActivity();
+        mTestFragment = (NetworkConnectFragment)
+            mTestActivity.getSupportFragmentManager().getFragments().get(1);
+    }
+
+    /**
+    * Test if the test fixture has been set up correctly.
+    */
+    public void testPreconditions() {
+        //Try to add a message to add context to your assertions. These messages will be shown if
+        //a tests fails and make it easy to understand why a test failed
+        assertNotNull("mTestActivity is null", mTestActivity);
+        assertNotNull("mTestFragment is null", mTestFragment);
+    }
+
+    /**
+    * Add more tests below.
+    */
+
+}
\ No newline at end of file
diff --git a/connectivity/network/NetworkConnect/README.txt b/connectivity/network/NetworkConnect/README.txt
deleted file mode 100644
index 38608df..0000000
--- a/connectivity/network/NetworkConnect/README.txt
+++ /dev/null
@@ -1,6 +0,0 @@
-Build Instructions
--------------------
-This sample uses the Gradle build system. To build this project, use the
-"gradlew build" command.
-
-To see a list of all available commands, run "gradlew tasks".
\ No newline at end of file
diff --git a/connectivity/network/NetworkConnect/build.gradle b/connectivity/network/NetworkConnect/build.gradle
index 036abc8..cca9ac3 100644
--- a/connectivity/network/NetworkConnect/build.gradle
+++ b/connectivity/network/NetworkConnect/build.gradle
@@ -1,8 +1,10 @@
-buildscript {
-    repositories {
-        mavenCentral()
-    }
-    dependencies {
-        classpath 'com.android.tools.build:gradle:0.5.+'
-    }
+// BEGIN_EXCLUDE
+import com.example.android.samples.build.SampleGenPlugin
+apply plugin: SampleGenPlugin
+
+samplegen {
+  pathToBuild "../../../../../build"
+  pathToSamplesCommon "../../../common"
 }
+apply from: "../../../../../build/build.gradle"
+// END_EXCLUDE
diff --git a/connectivity/network/NetworkConnect/buildSrc/build.gradle b/connectivity/network/NetworkConnect/buildSrc/build.gradle
new file mode 100644
index 0000000..e344a8c
--- /dev/null
+++ b/connectivity/network/NetworkConnect/buildSrc/build.gradle
@@ -0,0 +1,18 @@
+
+
+
+repositories {
+    mavenCentral()
+}
+dependencies {
+    compile 'org.freemarker:freemarker:2.3.20'
+}
+
+sourceSets {
+    main {
+        groovy {
+            srcDir new File(rootDir, "../../../../../../build/buildSrc/src/main/groovy")
+        }
+    }
+}
+
diff --git a/connectivity/network/NetworkConnect/gradle/wrapper/gradle-wrapper.properties b/connectivity/network/NetworkConnect/gradle/wrapper/gradle-wrapper.properties
index 055ba6f..861eddc 100644
--- a/connectivity/network/NetworkConnect/gradle/wrapper/gradle-wrapper.properties
+++ b/connectivity/network/NetworkConnect/gradle/wrapper/gradle-wrapper.properties
@@ -1,7 +1,6 @@
-#
-#Mon Jul 22 11:40:20 PDT 2013
+#Wed Apr 10 15:27:10 PDT 2013
 distributionBase=GRADLE_USER_HOME
 distributionPath=wrapper/dists
 zipStoreBase=GRADLE_USER_HOME
 zipStorePath=wrapper/dists
-distributionUrl=http\://services.gradle.org/distributions/gradle-1.6-bin.zip
+distributionUrl=http\://services.gradle.org/distributions/gradle-1.8-bin.zip
diff --git a/connectivity/network/NetworkConnect/settings.gradle b/connectivity/network/NetworkConnect/settings.gradle
index 771d665..ebae091 100644
--- a/connectivity/network/NetworkConnect/settings.gradle
+++ b/connectivity/network/NetworkConnect/settings.gradle
@@ -1 +1,4 @@
-include ':NetworkConnect'
+
+
+
+include 'NetworkConnectSample'
diff --git a/connectivity/network/NetworkConnect/template-params.xml b/connectivity/network/NetworkConnect/template-params.xml
new file mode 100644
index 0000000..a1d5991
--- /dev/null
+++ b/connectivity/network/NetworkConnect/template-params.xml
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ 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.
+-->
+<sample>
+    <name>NetworkConnect</name>
+    <group>Connectivity</group>
+    <package>com.example.android.networkconnect</package>
+
+
+
+    <!-- change minSdk if needed-->
+    <minSdk>8</minSdk>
+
+
+    <strings>
+        <intro>
+            <![CDATA[
+            This sample demonstrates how to connect to the network and fetch raw HTML using
+            HttpURLConnection. AsyncTask is used to perform the fetch on a background thread.
+            ]]>
+        </intro>
+    </strings>
+
+    <template src="base"/>
+    <common src="logger"/>
+
+</sample>
diff --git a/connectivity/sync/BasicSyncAdapter/BasicSyncAdapter/build.gradle b/connectivity/sync/BasicSyncAdapter/BasicSyncAdapter/build.gradle
deleted file mode 100644
index e802f1b..0000000
--- a/connectivity/sync/BasicSyncAdapter/BasicSyncAdapter/build.gradle
+++ /dev/null
@@ -1,15 +0,0 @@
-apply plugin: 'android'
-
-repositories {
-    mavenCentral()
-}
-
-dependencies {
-    compile 'com.google.guava:guava:14.0.+'
-    compile "com.android.support:support-v4:18.0.+"
-}
-
-android {
-    compileSdkVersion 18
-    buildToolsVersion "18.0.0"
-}
diff --git a/connectivity/sync/BasicSyncAdapter/BasicSyncAdapter/src/main/res/values-v11/styles.xml b/connectivity/sync/BasicSyncAdapter/BasicSyncAdapter/src/main/res/values-v11/styles.xml
deleted file mode 100644
index ff65301..0000000
--- a/connectivity/sync/BasicSyncAdapter/BasicSyncAdapter/src/main/res/values-v11/styles.xml
+++ /dev/null
@@ -1,28 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-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.
--->
-
-<resources>
-
-    <!--
-        Base application theme for API 11+. This theme completely replaces
-        AppBaseTheme from res/values/styles.xml on API 11+ devices.
-    -->
-    <style name="AppBaseTheme" parent="android:Theme.Holo.Light">
-        <!-- API 11 theme customizations can go here. -->
-    </style>
-
-</resources>
\ No newline at end of file
diff --git a/connectivity/sync/BasicSyncAdapter/BasicSyncAdapter/src/main/res/values-v14/styles.xml b/connectivity/sync/BasicSyncAdapter/BasicSyncAdapter/src/main/res/values-v14/styles.xml
deleted file mode 100644
index a4a443a..0000000
--- a/connectivity/sync/BasicSyncAdapter/BasicSyncAdapter/src/main/res/values-v14/styles.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-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.
--->
-
-<resources>
-
-    <!--
-        Base application theme for API 14+. This theme completely replaces
-        AppBaseTheme from BOTH res/values/styles.xml and
-        res/values-v11/styles.xml on API 14+ devices.
-    -->
-    <style name="AppBaseTheme" parent="android:Theme.Holo.Light.DarkActionBar">
-        <!-- API 14 theme customizations can go here. -->
-    </style>
-
-</resources>
\ No newline at end of file
diff --git a/connectivity/sync/BasicSyncAdapter/BasicSyncAdapter/src/main/res/values/styles.xml b/connectivity/sync/BasicSyncAdapter/BasicSyncAdapter/src/main/res/values/styles.xml
deleted file mode 100644
index 43a8f2b..0000000
--- a/connectivity/sync/BasicSyncAdapter/BasicSyncAdapter/src/main/res/values/styles.xml
+++ /dev/null
@@ -1,37 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-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.
--->
-
-<resources>
-
-    <!--
-        Base application theme, dependent on API level. This theme is replaced
-        by AppBaseTheme from res/values-vXX/styles.xml on newer devices.
-    -->
-    <style name="AppBaseTheme" parent="android:Theme.Light">
-        <!--
-            Theme customizations available in newer API levels can go in
-            res/values-vXX/styles.xml, while customizations related to
-            backward-compatibility can go here.
-        -->
-    </style>
-
-    <!-- Application theme. -->
-    <style name="AppTheme" parent="AppBaseTheme">
-        <!-- All customizations that are NOT specific to a particular API-level can go here. -->
-    </style>
-
-</resources>
\ No newline at end of file
diff --git a/connectivity/sync/BasicSyncAdapter/BasicSyncAdapterSample/.gitignore b/connectivity/sync/BasicSyncAdapter/BasicSyncAdapterSample/.gitignore
new file mode 100644
index 0000000..6eb878d
--- /dev/null
+++ b/connectivity/sync/BasicSyncAdapter/BasicSyncAdapterSample/.gitignore
@@ -0,0 +1,16 @@
+# 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.
+src/template/
+src/common/
+build.gradle
diff --git a/connectivity/sync/BasicSyncAdapter/BasicSyncAdapterTests/proguard-project.txt b/connectivity/sync/BasicSyncAdapter/BasicSyncAdapterSample/proguard-project.txt
similarity index 91%
copy from connectivity/sync/BasicSyncAdapter/BasicSyncAdapterTests/proguard-project.txt
copy to connectivity/sync/BasicSyncAdapter/BasicSyncAdapterSample/proguard-project.txt
index f2fe155..0d8f171 100644
--- a/connectivity/sync/BasicSyncAdapter/BasicSyncAdapterTests/proguard-project.txt
+++ b/connectivity/sync/BasicSyncAdapter/BasicSyncAdapterSample/proguard-project.txt
@@ -1,4 +1,4 @@
-# To enable ProGuard in your project, edit project.properties
+ To enable ProGuard in your project, edit project.properties
 # to define the proguard.config property as described in that file.
 #
 # Add project specific ProGuard rules here.
diff --git a/connectivity/sync/BasicSyncAdapter/BasicSyncAdapter/src/main/AndroidManifest.xml b/connectivity/sync/BasicSyncAdapter/BasicSyncAdapterSample/src/main/AndroidManifest.xml
similarity index 75%
rename from connectivity/sync/BasicSyncAdapter/BasicSyncAdapter/src/main/AndroidManifest.xml
rename to connectivity/sync/BasicSyncAdapter/BasicSyncAdapterSample/src/main/AndroidManifest.xml
index 385b293..dd59b06 100644
--- a/connectivity/sync/BasicSyncAdapter/BasicSyncAdapter/src/main/AndroidManifest.xml
+++ b/connectivity/sync/BasicSyncAdapter/BasicSyncAdapterSample/src/main/AndroidManifest.xml
@@ -1,8 +1,26 @@
-<?xml version="1.0" encoding="utf-8"?>
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ 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.
+-->
+
+
+
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
-    package="com.example.android.network.sync.basicsyncadapter"
+    package="com.example.android.basicsyncadapter"
     android:versionCode="1"
-    android:versionName="1.0" >
+    android:versionName="1.0">
 
     <!-- SyncAdapters are available in API 5 and above. We use API 7 as a baseline for samples. -->
     <uses-sdk
@@ -27,7 +45,7 @@
 
         <!-- Main activity, responsible for showing a list of feed entries. -->
         <activity
-            android:name="com.example.android.network.sync.basicsyncadapter.EntryListActivity"
+            android:name=".EntryListActivity"
             android:label="@string/app_name" >
             <!-- This intent filter places this activity in the system's app launcher. -->
             <intent-filter>
@@ -45,14 +63,14 @@
         Since this ContentProvider is not exported, it will not be accessible outside of this app's
         package. -->
         <provider
-                android:name=".provider.FeedProvider"
-                android:authorities="com.example.android.network.sync.basicsyncadapter"
-                android:exported="false" />
+            android:name=".provider.FeedProvider"
+            android:authorities="com.example.android.basicsyncadapter"
+            android:exported="false" />
 
         <!-- This service implements our SyncAdapter. It needs to be exported, so that the system
         sync framework can access it. -->
         <service android:name=".SyncService"
-                 android:exported="true">
+            android:exported="true">
             <!-- This intent filter is required. It allows the system to launch our sync service
             as needed. -->
             <intent-filter>
@@ -60,7 +78,7 @@
             </intent-filter>
             <!-- This points to a required XML file which describes our SyncAdapter. -->
             <meta-data android:name="android.content.SyncAdapter"
-                       android:resource="@xml/syncadapter" />
+                android:resource="@xml/syncadapter" />
         </service>
 
         <!-- This implements the account we'll use as an attachment point for our SyncAdapter. Since
@@ -76,9 +94,9 @@
             </intent-filter>
             <!-- This points to an XMLf ile which describes our account service. -->
             <meta-data android:name="android.accounts.AccountAuthenticator"
-                       android:resource="@xml/authenticator" />
+                android:resource="@xml/authenticator" />
         </service>
 
-</application>
+    </application>
 
-</manifest>
\ No newline at end of file
+</manifest>
diff --git a/connectivity/sync/BasicSyncAdapter/BasicSyncAdapter/src/main/java/com/example/android/network/sync/basicsyncadapter/EntryListActivity.java b/connectivity/sync/BasicSyncAdapter/BasicSyncAdapterSample/src/main/java/com/example/android/basicsyncadapter/EntryListActivity.java
similarity index 85%
rename from connectivity/sync/BasicSyncAdapter/BasicSyncAdapter/src/main/java/com/example/android/network/sync/basicsyncadapter/EntryListActivity.java
rename to connectivity/sync/BasicSyncAdapter/BasicSyncAdapterSample/src/main/java/com/example/android/basicsyncadapter/EntryListActivity.java
index cff0702..9d8cb77 100644
--- a/connectivity/sync/BasicSyncAdapter/BasicSyncAdapter/src/main/java/com/example/android/network/sync/basicsyncadapter/EntryListActivity.java
+++ b/connectivity/sync/BasicSyncAdapter/BasicSyncAdapterSample/src/main/java/com/example/android/basicsyncadapter/EntryListActivity.java
@@ -1,4 +1,4 @@
-package com.example.android.network.sync.basicsyncadapter;
+package com.example.android.basicsyncadapter;
 
 import android.os.Bundle;
 import android.support.v4.app.FragmentActivity;
diff --git a/connectivity/sync/BasicSyncAdapter/BasicSyncAdapter/src/main/java/com/example/android/network/sync/basicsyncadapter/EntryListFragment.java b/connectivity/sync/BasicSyncAdapter/BasicSyncAdapterSample/src/main/java/com/example/android/basicsyncadapter/EntryListFragment.java
similarity index 97%
rename from connectivity/sync/BasicSyncAdapter/BasicSyncAdapter/src/main/java/com/example/android/network/sync/basicsyncadapter/EntryListFragment.java
rename to connectivity/sync/BasicSyncAdapter/BasicSyncAdapterSample/src/main/java/com/example/android/basicsyncadapter/EntryListFragment.java
index 0efeb40..83e240a 100644
--- a/connectivity/sync/BasicSyncAdapter/BasicSyncAdapter/src/main/java/com/example/android/network/sync/basicsyncadapter/EntryListFragment.java
+++ b/connectivity/sync/BasicSyncAdapter/BasicSyncAdapterSample/src/main/java/com/example/android/basicsyncadapter/EntryListFragment.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package com.example.android.network.sync.basicsyncadapter;
+package com.example.android.basicsyncadapter;
 
 import android.accounts.Account;
 import android.annotation.TargetApi;
@@ -41,13 +41,13 @@
 import android.widget.TextView;
 
 import com.example.android.common.accounts.GenericAccountService;
-import com.example.android.network.sync.basicsyncadapter.provider.FeedContract;
+import com.example.android.basicsyncadapter.provider.FeedContract;
 
 /**
  * List fragment containing a list of Atom entry objects (articles) stored in the local database.
  *
  * <p>Database access is mediated by a content provider, specified in
- * {@link com.example.android.network.sync.basicsyncadapter.provider.FeedProvider}. This content
+ * {@link com.example.android.basicsyncadapter.provider.FeedProvider}. This content
  * provider is
  * automatically populated by  {@link SyncService}.
  *
@@ -333,7 +333,7 @@
                     // Create a handle to the account that was created by
                     // SyncService.CreateSyncAccount(). This will be used to query the system to
                     // see how the sync status has changed.
-                    Account account = GenericAccountService.GetAccount();
+                    Account account = GenericAccountService.GetAccount(SyncUtils.ACCOUNT_TYPE);
                     if (account == null) {
                         // GetAccount() returned an invalid value. This shouldn't happen, but
                         // we'll set the status to "not refreshing".
diff --git a/connectivity/sync/BasicSyncAdapter/BasicSyncAdapter/src/main/java/com/example/android/network/sync/basicsyncadapter/SyncAdapter.java b/connectivity/sync/BasicSyncAdapter/BasicSyncAdapterSample/src/main/java/com/example/android/basicsyncadapter/SyncAdapter.java
similarity index 96%
rename from connectivity/sync/BasicSyncAdapter/BasicSyncAdapter/src/main/java/com/example/android/network/sync/basicsyncadapter/SyncAdapter.java
rename to connectivity/sync/BasicSyncAdapter/BasicSyncAdapterSample/src/main/java/com/example/android/basicsyncadapter/SyncAdapter.java
index a759adb..da67107 100644
--- a/connectivity/sync/BasicSyncAdapter/BasicSyncAdapter/src/main/java/com/example/android/network/sync/basicsyncadapter/SyncAdapter.java
+++ b/connectivity/sync/BasicSyncAdapter/BasicSyncAdapterSample/src/main/java/com/example/android/basicsyncadapter/SyncAdapter.java
@@ -14,9 +14,10 @@
  * limitations under the License.
  */
 
-package com.example.android.network.sync.basicsyncadapter;
+package com.example.android.basicsyncadapter;
 
 import android.accounts.Account;
+import android.annotation.TargetApi;
 import android.content.AbstractThreadedSyncAdapter;
 import android.content.ContentProviderClient;
 import android.content.ContentProviderOperation;
@@ -26,12 +27,13 @@
 import android.content.SyncResult;
 import android.database.Cursor;
 import android.net.Uri;
+import android.os.Build;
 import android.os.Bundle;
 import android.os.RemoteException;
 import android.util.Log;
 
-import com.example.android.network.sync.basicsyncadapter.net.FeedParser;
-import com.example.android.network.sync.basicsyncadapter.provider.FeedContract;
+import com.example.android.basicsyncadapter.net.FeedParser;
+import com.example.android.basicsyncadapter.provider.FeedContract;
 
 import org.xmlpull.v1.XmlPullParserException;
 
@@ -108,6 +110,7 @@
     /**
      * Constructor. Obtains handle to content resolver for later use.
      */
+    @TargetApi(Build.VERSION_CODES.HONEYCOMB)
     public SyncAdapter(Context context, boolean autoInitialize, boolean allowParallelSyncs) {
         super(context, autoInitialize, allowParallelSyncs);
         mContentResolver = context.getContentResolver();
@@ -122,7 +125,7 @@
      .
      *
      * <p>This is where we actually perform any work required to perform a sync.
-     * {@link AbstractThreadedSyncAdapter} guarantees that this will be called on a non-UI thread,
+     * {@link android.content.AbstractThreadedSyncAdapter} guarantees that this will be called on a non-UI thread,
      * so it is safe to peform blocking I/O here.
      *
      * <p>The syncResult argument allows you to pass information back to the method that triggered
@@ -148,7 +151,7 @@
                 }
             }
         } catch (MalformedURLException e) {
-            Log.wtf(TAG, "Feed URL is malformed", e);
+            Log.e(TAG, "Feed URL is malformed", e);
             syncResult.stats.numParseExceptions++;
             return;
         } catch (IOException e) {
diff --git a/connectivity/sync/BasicSyncAdapter/BasicSyncAdapter/src/main/java/com/example/android/network/sync/basicsyncadapter/SyncService.java b/connectivity/sync/BasicSyncAdapter/BasicSyncAdapterSample/src/main/java/com/example/android/basicsyncadapter/SyncService.java
similarity index 97%
rename from connectivity/sync/BasicSyncAdapter/BasicSyncAdapter/src/main/java/com/example/android/network/sync/basicsyncadapter/SyncService.java
rename to connectivity/sync/BasicSyncAdapter/BasicSyncAdapterSample/src/main/java/com/example/android/basicsyncadapter/SyncService.java
index bd92f37..41e9c03 100644
--- a/connectivity/sync/BasicSyncAdapter/BasicSyncAdapter/src/main/java/com/example/android/network/sync/basicsyncadapter/SyncService.java
+++ b/connectivity/sync/BasicSyncAdapter/BasicSyncAdapterSample/src/main/java/com/example/android/basicsyncadapter/SyncService.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package com.example.android.network.sync.basicsyncadapter;
+package com.example.android.basicsyncadapter;
 
 import android.app.Service;
 import android.content.Intent;
diff --git a/connectivity/sync/BasicSyncAdapter/BasicSyncAdapter/src/main/java/com/example/android/network/sync/basicsyncadapter/SyncUtils.java b/connectivity/sync/BasicSyncAdapter/BasicSyncAdapterSample/src/main/java/com/example/android/basicsyncadapter/SyncUtils.java
similarity index 82%
rename from connectivity/sync/BasicSyncAdapter/BasicSyncAdapter/src/main/java/com/example/android/network/sync/basicsyncadapter/SyncUtils.java
rename to connectivity/sync/BasicSyncAdapter/BasicSyncAdapterSample/src/main/java/com/example/android/basicsyncadapter/SyncUtils.java
index c6552da..b327c72 100644
--- a/connectivity/sync/BasicSyncAdapter/BasicSyncAdapter/src/main/java/com/example/android/network/sync/basicsyncadapter/SyncUtils.java
+++ b/connectivity/sync/BasicSyncAdapter/BasicSyncAdapterSample/src/main/java/com/example/android/basicsyncadapter/SyncUtils.java
@@ -14,17 +14,19 @@
  * limitations under the License.
  */
 
-package com.example.android.network.sync.basicsyncadapter;
+package com.example.android.basicsyncadapter;
 
 import android.accounts.Account;
 import android.accounts.AccountManager;
+import android.annotation.TargetApi;
 import android.content.ContentResolver;
 import android.content.Context;
+import android.os.Build;
 import android.os.Bundle;
 import android.preference.PreferenceManager;
 
 import com.example.android.common.accounts.GenericAccountService;
-import com.example.android.network.sync.basicsyncadapter.provider.FeedContract;
+import com.example.android.basicsyncadapter.provider.FeedContract;
 
 /**
  * Static helper methods for working with the sync framework.
@@ -33,20 +35,24 @@
     private static final long SYNC_FREQUENCY = 60 * 60;  // 1 hour (in seconds)
     private static final String CONTENT_AUTHORITY = FeedContract.CONTENT_AUTHORITY;
     private static final String PREF_SETUP_COMPLETE = "setup_complete";
+    // Value below must match the account type specified in res/xml/syncadapter.xml
+    public static final String ACCOUNT_TYPE = "com.example.android.basicsyncadapter.account";
 
     /**
      * Create an entry for this application in the system account list, if it isn't already there.
      *
      * @param context Context
      */
+    @TargetApi(Build.VERSION_CODES.FROYO)
     public static void CreateSyncAccount(Context context) {
         boolean newAccount = false;
         boolean setupComplete = PreferenceManager
                 .getDefaultSharedPreferences(context).getBoolean(PREF_SETUP_COMPLETE, false);
 
         // Create account, if it's missing. (Either first run, or user has deleted account.)
-        Account account = GenericAccountService.GetAccount();
-        AccountManager accountManager = (AccountManager) context.getSystemService(Context.ACCOUNT_SERVICE);
+        Account account = GenericAccountService.GetAccount(ACCOUNT_TYPE);
+        AccountManager accountManager =
+                (AccountManager) context.getSystemService(Context.ACCOUNT_SERVICE);
         if (accountManager.addAccountExplicitly(account, null, null)) {
             // Inform the system that this account supports sync
             ContentResolver.setIsSyncable(account, CONTENT_AUTHORITY, 1);
@@ -86,8 +92,8 @@
         b.putBoolean(ContentResolver.SYNC_EXTRAS_MANUAL, true);
         b.putBoolean(ContentResolver.SYNC_EXTRAS_EXPEDITED, true);
         ContentResolver.requestSync(
-                GenericAccountService.GetAccount(),      // Sync account
-                FeedContract.CONTENT_AUTHORITY, // Content authority
-                b);                                      // Extras
+                GenericAccountService.GetAccount(ACCOUNT_TYPE), // Sync account
+                FeedContract.CONTENT_AUTHORITY,                 // Content authority
+                b);                                             // Extras
     }
 }
diff --git a/connectivity/sync/BasicSyncAdapter/BasicSyncAdapter/src/main/java/com/example/android/network/sync/basicsyncadapter/net/FeedParser.java b/connectivity/sync/BasicSyncAdapter/BasicSyncAdapterSample/src/main/java/com/example/android/basicsyncadapter/net/FeedParser.java
similarity index 94%
rename from connectivity/sync/BasicSyncAdapter/BasicSyncAdapter/src/main/java/com/example/android/network/sync/basicsyncadapter/net/FeedParser.java
rename to connectivity/sync/BasicSyncAdapter/BasicSyncAdapterSample/src/main/java/com/example/android/basicsyncadapter/net/FeedParser.java
index 2bcbc0f..a778390 100644
--- a/connectivity/sync/BasicSyncAdapter/BasicSyncAdapter/src/main/java/com/example/android/network/sync/basicsyncadapter/net/FeedParser.java
+++ b/connectivity/sync/BasicSyncAdapter/BasicSyncAdapterSample/src/main/java/com/example/android/basicsyncadapter/net/FeedParser.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package com.example.android.network.sync.basicsyncadapter.net;
+package com.example.android.basicsyncadapter.net;
 
 import android.text.format.Time;
 import android.util.Xml;
@@ -51,9 +51,9 @@
     /** Parse an Atom feed, returning a collection of Entry objects.
      *
      * @param in Atom feed, as a stream.
-     * @return List of {@link Entry} objects.
-     * @throws XmlPullParserException on error parsing feed.
-     * @throws IOException on I/O error.
+     * @return List of {@link com.example.android.basicsyncadapter.net.FeedParser.Entry} objects.
+     * @throws org.xmlpull.v1.XmlPullParserException on error parsing feed.
+     * @throws java.io.IOException on I/O error.
      */
     public List<Entry> parse(InputStream in)
             throws XmlPullParserException, IOException, ParseException {
@@ -72,9 +72,9 @@
      * Decode a feed attached to an XmlPullParser.
      *
      * @param parser Incoming XMl
-     * @return List of {@link Entry} objects.
-     * @throws XmlPullParserException on error parsing feed.
-     * @throws IOException on I/O error.
+     * @return List of {@link com.example.android.basicsyncadapter.net.FeedParser.Entry} objects.
+     * @throws org.xmlpull.v1.XmlPullParserException on error parsing feed.
+     * @throws java.io.IOException on I/O error.
      */
     private List<Entry> readFeed(XmlPullParser parser)
             throws XmlPullParserException, IOException, ParseException {
@@ -193,8 +193,8 @@
      * @param parser Current parser object
      * @param tag XML element tag name to parse
      * @return Body of the specified tag
-     * @throws IOException
-     * @throws XmlPullParserException
+     * @throws java.io.IOException
+     * @throws org.xmlpull.v1.XmlPullParserException
      */
     private String readBasicTag(XmlPullParser parser, String tag)
             throws IOException, XmlPullParserException {
diff --git a/connectivity/sync/BasicSyncAdapter/BasicSyncAdapter/src/main/java/com/example/android/network/sync/basicsyncadapter/provider/FeedContract.java b/connectivity/sync/BasicSyncAdapter/BasicSyncAdapterSample/src/main/java/com/example/android/basicsyncadapter/provider/FeedContract.java
similarity index 90%
rename from connectivity/sync/BasicSyncAdapter/BasicSyncAdapter/src/main/java/com/example/android/network/sync/basicsyncadapter/provider/FeedContract.java
rename to connectivity/sync/BasicSyncAdapter/BasicSyncAdapterSample/src/main/java/com/example/android/basicsyncadapter/provider/FeedContract.java
index 7bfcf7f..e29ec48 100644
--- a/connectivity/sync/BasicSyncAdapter/BasicSyncAdapter/src/main/java/com/example/android/network/sync/basicsyncadapter/provider/FeedContract.java
+++ b/connectivity/sync/BasicSyncAdapter/BasicSyncAdapterSample/src/main/java/com/example/android/basicsyncadapter/provider/FeedContract.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package com.example.android.network.sync.basicsyncadapter.provider;
+package com.example.android.basicsyncadapter.provider;
 
 import android.content.ContentResolver;
 import android.net.Uri;
@@ -22,7 +22,7 @@
 
 /**
  * Field and table name constants for
- * {@link com.example.android.network.sync.basicsyncadapter.provider.FeedProvider}.
+ * {@link com.example.android.basicsyncadapter.provider.FeedProvider}.
  */
 public class FeedContract {
     private FeedContract() {
@@ -31,10 +31,10 @@
     /**
      * Content provider authority.
      */
-    public static final String CONTENT_AUTHORITY = "com.example.android.network.sync.basicsyncadapter";
+    public static final String CONTENT_AUTHORITY = "com.example.android.basicsyncadapter";
 
     /**
-     * Base URI. (content://com.example.android.network.sync.basicsyncadapter)
+     * Base URI. (content://com.example.android.basicsyncadapter)
      */
     public static final Uri BASE_CONTENT_URI = Uri.parse("content://" + CONTENT_AUTHORITY);
 
diff --git a/connectivity/sync/BasicSyncAdapter/BasicSyncAdapter/src/main/java/com/example/android/network/sync/basicsyncadapter/provider/FeedProvider.java b/connectivity/sync/BasicSyncAdapter/BasicSyncAdapterSample/src/main/java/com/example/android/basicsyncadapter/provider/FeedProvider.java
similarity index 98%
rename from connectivity/sync/BasicSyncAdapter/BasicSyncAdapter/src/main/java/com/example/android/network/sync/basicsyncadapter/provider/FeedProvider.java
rename to connectivity/sync/BasicSyncAdapter/BasicSyncAdapterSample/src/main/java/com/example/android/basicsyncadapter/provider/FeedProvider.java
index 358e324..80bf1d3 100644
--- a/connectivity/sync/BasicSyncAdapter/BasicSyncAdapter/src/main/java/com/example/android/network/sync/basicsyncadapter/provider/FeedProvider.java
+++ b/connectivity/sync/BasicSyncAdapter/BasicSyncAdapterSample/src/main/java/com/example/android/basicsyncadapter/provider/FeedProvider.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package com.example.android.network.sync.basicsyncadapter.provider;
+package com.example.android.basicsyncadapter.provider;
 
 import android.content.ContentProvider;
 import android.content.ContentValues;
diff --git a/connectivity/sync/BasicSyncAdapter/BasicSyncAdapter/src/main/res/drawable-hdpi/ic_launcher.png b/connectivity/sync/BasicSyncAdapter/BasicSyncAdapterSample/src/main/res/drawable-hdpi/ic_launcher.png
similarity index 100%
rename from connectivity/sync/BasicSyncAdapter/BasicSyncAdapter/src/main/res/drawable-hdpi/ic_launcher.png
rename to connectivity/sync/BasicSyncAdapter/BasicSyncAdapterSample/src/main/res/drawable-hdpi/ic_launcher.png
Binary files differ
diff --git a/connectivity/sync/BasicSyncAdapter/BasicSyncAdapter/src/main/res/drawable-mdpi/ic_launcher.png b/connectivity/sync/BasicSyncAdapter/BasicSyncAdapterSample/src/main/res/drawable-mdpi/ic_launcher.png
similarity index 100%
rename from connectivity/sync/BasicSyncAdapter/BasicSyncAdapter/src/main/res/drawable-mdpi/ic_launcher.png
rename to connectivity/sync/BasicSyncAdapter/BasicSyncAdapterSample/src/main/res/drawable-mdpi/ic_launcher.png
Binary files differ
diff --git a/connectivity/sync/BasicSyncAdapter/BasicSyncAdapter/src/main/res/drawable-xhdpi/ic_action_refresh.png b/connectivity/sync/BasicSyncAdapter/BasicSyncAdapterSample/src/main/res/drawable-xhdpi/ic_action_refresh.png
similarity index 100%
rename from connectivity/sync/BasicSyncAdapter/BasicSyncAdapter/src/main/res/drawable-xhdpi/ic_action_refresh.png
rename to connectivity/sync/BasicSyncAdapter/BasicSyncAdapterSample/src/main/res/drawable-xhdpi/ic_action_refresh.png
Binary files differ
diff --git a/connectivity/sync/BasicSyncAdapter/BasicSyncAdapter/src/main/res/drawable-xhdpi/ic_launcher.png b/connectivity/sync/BasicSyncAdapter/BasicSyncAdapterSample/src/main/res/drawable-xhdpi/ic_launcher.png
similarity index 100%
rename from connectivity/sync/BasicSyncAdapter/BasicSyncAdapter/src/main/res/drawable-xhdpi/ic_launcher.png
rename to connectivity/sync/BasicSyncAdapter/BasicSyncAdapterSample/src/main/res/drawable-xhdpi/ic_launcher.png
Binary files differ
diff --git a/connectivity/sync/BasicSyncAdapter/BasicSyncAdapter/src/main/res/drawable-xxhdpi/ic_launcher.png b/connectivity/sync/BasicSyncAdapter/BasicSyncAdapterSample/src/main/res/drawable-xxhdpi/ic_launcher.png
similarity index 100%
rename from connectivity/sync/BasicSyncAdapter/BasicSyncAdapter/src/main/res/drawable-xxhdpi/ic_launcher.png
rename to connectivity/sync/BasicSyncAdapter/BasicSyncAdapterSample/src/main/res/drawable-xxhdpi/ic_launcher.png
Binary files differ
diff --git a/connectivity/sync/BasicSyncAdapter/BasicSyncAdapter/src/main/res/layout/actionbar_indeterminate_progress.xml b/connectivity/sync/BasicSyncAdapter/BasicSyncAdapterSample/src/main/res/layout/actionbar_indeterminate_progress.xml
similarity index 100%
rename from connectivity/sync/BasicSyncAdapter/BasicSyncAdapter/src/main/res/layout/actionbar_indeterminate_progress.xml
rename to connectivity/sync/BasicSyncAdapter/BasicSyncAdapterSample/src/main/res/layout/actionbar_indeterminate_progress.xml
diff --git a/connectivity/sync/BasicSyncAdapter/BasicSyncAdapter/src/main/res/layout/activity_entry_list.xml b/connectivity/sync/BasicSyncAdapter/BasicSyncAdapterSample/src/main/res/layout/activity_entry_list.xml
similarity index 83%
rename from connectivity/sync/BasicSyncAdapter/BasicSyncAdapter/src/main/res/layout/activity_entry_list.xml
rename to connectivity/sync/BasicSyncAdapter/BasicSyncAdapterSample/src/main/res/layout/activity_entry_list.xml
index 6e3e2fd..3c8c901 100644
--- a/connectivity/sync/BasicSyncAdapter/BasicSyncAdapter/src/main/res/layout/activity_entry_list.xml
+++ b/connectivity/sync/BasicSyncAdapter/BasicSyncAdapterSample/src/main/res/layout/activity_entry_list.xml
@@ -3,7 +3,7 @@
 <fragment xmlns:android="http://schemas.android.com/apk/res/android"
           xmlns:tools="http://schemas.android.com/tools"
           android:id="@+id/entry_list"
-          android:name="com.example.android.network.sync.basicsyncadapter.EntryListFragment"
+          android:name="com.example.android.basicsyncadapter.EntryListFragment"
           android:layout_width="match_parent"
           android:layout_height="match_parent"
           android:layout_marginLeft="16dp"
diff --git a/connectivity/sync/BasicSyncAdapter/BasicSyncAdapter/src/main/res/menu/main.xml b/connectivity/sync/BasicSyncAdapter/BasicSyncAdapterSample/src/main/res/menu/main.xml
similarity index 100%
rename from connectivity/sync/BasicSyncAdapter/BasicSyncAdapter/src/main/res/menu/main.xml
rename to connectivity/sync/BasicSyncAdapter/BasicSyncAdapterSample/src/main/res/menu/main.xml
diff --git a/connectivity/sync/BasicSyncAdapter/BasicSyncAdapter/src/main/res/values/attrs.xml b/connectivity/sync/BasicSyncAdapter/BasicSyncAdapterSample/src/main/res/values/attrs.xml
similarity index 100%
rename from connectivity/sync/BasicSyncAdapter/BasicSyncAdapter/src/main/res/values/attrs.xml
rename to connectivity/sync/BasicSyncAdapter/BasicSyncAdapterSample/src/main/res/values/attrs.xml
diff --git a/connectivity/sync/BasicSyncAdapter/BasicSyncAdapter/src/main/res/values/dimen.xml b/connectivity/sync/BasicSyncAdapter/BasicSyncAdapterSample/src/main/res/values/dimen.xml
similarity index 100%
rename from connectivity/sync/BasicSyncAdapter/BasicSyncAdapter/src/main/res/values/dimen.xml
rename to connectivity/sync/BasicSyncAdapter/BasicSyncAdapterSample/src/main/res/values/dimen.xml
diff --git a/connectivity/sync/BasicSyncAdapter/BasicSyncAdapter/src/main/res/values/strings.xml b/connectivity/sync/BasicSyncAdapter/BasicSyncAdapterSample/src/main/res/values/strings.xml
similarity index 94%
rename from connectivity/sync/BasicSyncAdapter/BasicSyncAdapter/src/main/res/values/strings.xml
rename to connectivity/sync/BasicSyncAdapter/BasicSyncAdapterSample/src/main/res/values/strings.xml
index 0271850..f4cade9 100644
--- a/connectivity/sync/BasicSyncAdapter/BasicSyncAdapter/src/main/res/values/strings.xml
+++ b/connectivity/sync/BasicSyncAdapter/BasicSyncAdapterSample/src/main/res/values/strings.xml
@@ -16,7 +16,6 @@
 -->
 
 <resources>
-    <string name="app_name">FeedSync Sample</string>
     <string name="account_name">FeedSync Service</string>
     <string name="title_entry_detail">Entry Detail</string>
     <string name="loading">Waiting for sync...</string>
diff --git a/connectivity/sync/BasicSyncAdapter/BasicSyncAdapter/src/main/res/xml/authenticator.xml b/connectivity/sync/BasicSyncAdapter/BasicSyncAdapterSample/src/main/res/xml/authenticator.xml
similarity index 96%
rename from connectivity/sync/BasicSyncAdapter/BasicSyncAdapter/src/main/res/xml/authenticator.xml
rename to connectivity/sync/BasicSyncAdapter/BasicSyncAdapterSample/src/main/res/xml/authenticator.xml
index cb69a66..8b96907 100644
--- a/connectivity/sync/BasicSyncAdapter/BasicSyncAdapter/src/main/res/xml/authenticator.xml
+++ b/connectivity/sync/BasicSyncAdapter/BasicSyncAdapterSample/src/main/res/xml/authenticator.xml
@@ -16,7 +16,7 @@
 -->
 
 <account-authenticator xmlns:android="http://schemas.android.com/apk/res/android"
-                       android:accountType="com.example.android.network.sync.basicsyncadapter"
+                       android:accountType="com.example.android.basicsyncadapter.account"
                        android:icon="@drawable/ic_launcher"
                        android:smallIcon="@drawable/ic_launcher"
                        android:label="@string/app_name"
diff --git a/connectivity/sync/BasicSyncAdapter/BasicSyncAdapter/src/main/res/xml/syncadapter.xml b/connectivity/sync/BasicSyncAdapter/BasicSyncAdapterSample/src/main/res/xml/syncadapter.xml
similarity index 83%
rename from connectivity/sync/BasicSyncAdapter/BasicSyncAdapter/src/main/res/xml/syncadapter.xml
rename to connectivity/sync/BasicSyncAdapter/BasicSyncAdapterSample/src/main/res/xml/syncadapter.xml
index 0fcd6e3..6e12882 100644
--- a/connectivity/sync/BasicSyncAdapter/BasicSyncAdapter/src/main/res/xml/syncadapter.xml
+++ b/connectivity/sync/BasicSyncAdapter/BasicSyncAdapterSample/src/main/res/xml/syncadapter.xml
@@ -16,8 +16,8 @@
 -->
 
 <sync-adapter xmlns:android="http://schemas.android.com/apk/res/android"
-              android:contentAuthority="com.example.android.network.sync.basicsyncadapter"
-              android:accountType="com.example.android.network.sync.basicsyncadapter"
+              android:contentAuthority="com.example.android.basicsyncadapter"
+              android:accountType="com.example.android.basicsyncadapter.account"
               android:userVisible="false"
               android:supportsUploading="false"
               android:allowParallelSyncs="false"
diff --git a/connectivity/sync/BasicSyncAdapter/BasicSyncAdapterSample/tests/AndroidManifest.xml b/connectivity/sync/BasicSyncAdapter/BasicSyncAdapterSample/tests/AndroidManifest.xml
new file mode 100644
index 0000000..44c910a
--- /dev/null
+++ b/connectivity/sync/BasicSyncAdapter/BasicSyncAdapterSample/tests/AndroidManifest.xml
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  Copyright (C) 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 name must be unique so suffix with "tests" so package loader doesn't ignore us -->
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+          package="com.example.android.basicsyncadapter.tests"
+          android:versionCode="1"
+          android:versionName="1.0">
+
+    <uses-sdk
+            android:minSdkVersion="18"
+            android:targetSdkVersion="19" />
+
+    <!-- We add an application tag here just so that we can indicate that
+         this package needs to link against the android.test library,
+         which is needed when building test cases. -->
+    <application>
+        <uses-library android:name="android.test.runner" />
+    </application>
+
+    <!--
+    Specifies the instrumentation test runner used to run the tests.
+    -->
+    <instrumentation
+            android:name="android.test.InstrumentationTestRunner"
+            android:targetPackage="com.example.android.basicsyncadapter"
+            android:label="Tests for com.example.android.basicsyncadapter" />
+
+</manifest>
\ No newline at end of file
diff --git a/connectivity/sync/BasicSyncAdapter/BasicSyncAdapterSample/tests/src/com/example/android/basicsyncadapter/tests/SampleTests.java b/connectivity/sync/BasicSyncAdapter/BasicSyncAdapterSample/tests/src/com/example/android/basicsyncadapter/tests/SampleTests.java
new file mode 100644
index 0000000..08798ba
--- /dev/null
+++ b/connectivity/sync/BasicSyncAdapter/BasicSyncAdapterSample/tests/src/com/example/android/basicsyncadapter/tests/SampleTests.java
@@ -0,0 +1,79 @@
+/*
+* 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.
+*/
+
+
+
+/*
+* Copyright (C) 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.basicsyncadapter.tests;
+
+import com.example.android.basicsyncadapter.*;
+
+import android.test.ActivityInstrumentationTestCase2;
+
+/**
+* Tests for BasicSyncAdapter sample.
+*/
+public class SampleTests extends ActivityInstrumentationTestCase2<MainActivity> {
+
+    private MainActivity mTestActivity;
+    private BasicSyncAdapterFragment mTestFragment;
+
+    public SampleTests() {
+        super(MainActivity.class);
+    }
+
+    @Override
+    protected void setUp() throws Exception {
+        super.setUp();
+
+        // Starts the activity under test using the default Intent with:
+        // action = {@link Intent#ACTION_MAIN}
+        // flags = {@link Intent#FLAG_ACTIVITY_NEW_TASK}
+        // All other fields are null or empty.
+        mTestActivity = getActivity();
+        mTestFragment = (BasicSyncAdapterFragment)
+            mTestActivity.getSupportFragmentManager().getFragments().get(1);
+    }
+
+    /**
+    * Test if the test fixture has been set up correctly.
+    */
+    public void testPreconditions() {
+        //Try to add a message to add context to your assertions. These messages will be shown if
+        //a tests fails and make it easy to understand why a test failed
+        assertNotNull("mTestActivity is null", mTestActivity);
+        assertNotNull("mTestFragment is null", mTestFragment);
+    }
+
+    /**
+    * Add more tests below.
+    */
+
+}
\ No newline at end of file
diff --git a/connectivity/sync/BasicSyncAdapter/BasicSyncAdapterTests/AndroidManifest.xml b/connectivity/sync/BasicSyncAdapter/BasicSyncAdapterTests/AndroidManifest.xml
deleted file mode 100644
index 91c9861..0000000
--- a/connectivity/sync/BasicSyncAdapter/BasicSyncAdapterTests/AndroidManifest.xml
+++ /dev/null
@@ -1,26 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- package name must be unique so suffix with "tests" so package loader doesn't ignore us -->
-<manifest xmlns:android="http://schemas.android.com/apk/res/android"
-          package="com.example.android.network.sync.basicsyncadapter.tests"
-          android:versionCode="1"
-          android:versionName="1.0">
-    <uses-sdk
-            android:minSdkVersion="11"
-            android:targetSdkVersion="17" />
-
-    <!-- We add an application tag here just so that we can indicate that
-         this package needs to link against the android.test library,
-         which is needed when building test cases. -->
-    <application>
-        <uses-library android:name="android.test.runner"/>
-    </application>
-    <!--
-    This declares that this application uses the instrumentation test runner targeting
-    the package of com.android.example.FeedSyncSampleTo run the tests use the command:
-    "adb shell am instrument -w com.android.example.FeedSyncSamplests/android.test.InstrumentationTestRunner"
-    -->
-    <instrumentation
-            android:name="android.test.InstrumentationTestRunner"
-            android:targetPackage="com.example.android.network.sync.basicsyncadapter"
-            android:label="Tests for com.example.android.network.sync.BasicSyncAdapter"/>
-</manifest>
diff --git a/connectivity/sync/BasicSyncAdapter/BasicSyncAdapterTests/src/com/example/android/network/sync/basicsyncadapter/SyncAdapterTest.java b/connectivity/sync/BasicSyncAdapter/BasicSyncAdapterTests/src/com/example/android/network/sync/basicsyncadapter/SyncAdapterTest.java
deleted file mode 100644
index 820882d..0000000
--- a/connectivity/sync/BasicSyncAdapter/BasicSyncAdapterTests/src/com/example/android/network/sync/basicsyncadapter/SyncAdapterTest.java
+++ /dev/null
@@ -1,73 +0,0 @@
-package com.example.android.network.sync.basicsyncadapter;
-
-import android.content.ContentResolver;
-import android.content.Context;
-import android.content.OperationApplicationException;
-import android.content.SyncResult;
-import android.database.Cursor;
-import android.os.RemoteException;
-import android.test.ServiceTestCase;
-
-import com.example.android.network.sync.basicsyncadapter.provider.FeedContract;
-
-import org.xmlpull.v1.XmlPullParserException;
-
-import java.io.ByteArrayInputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.text.ParseException;
-
-public class SyncAdapterTest extends ServiceTestCase<SyncService> {
-    public SyncAdapterTest() {
-        super(SyncService.class);
-    }
-
-    public void testIncomingFeedParsed()
-            throws IOException, XmlPullParserException, RemoteException,
-            OperationApplicationException, ParseException {
-        String sampleFeed = "<?xml version=\"1.0\"?>\n" +
-                "<feed xmlns=\"http://www.w3.org/2005/Atom\">\n" +
-                " \n" +
-                "  <title>Sample Blog</title>\n" +
-                "  <link href=\"http://example.com/\"/>\n" +
-                "  <link type=\"application/atom+xml\" rel=\"self\" href=\"http://example.xom/feed.xml\"/>\n" +
-                "  <updated>2013-05-16T16:53:23-07:00</updated>\n" +
-                "  <id>http://example.com/</id>\n" +
-                "  <author>\n" +
-                "    <name>Rick Deckard</name>\n" +
-                "    <email>deckard@example.com</email>\n" +
-                "  </author>\n" +
-                "\n" +
-                "  <entry>\n" +
-                "    <id>http://example.com/2012/10/20/test-post</id>\n" +
-                "    <link type=\"text/html\" rel=\"alternate\" href=\"http://example.com/2012/10/20/test-post.html\"/>\n" +
-                "    <title>Test Post #1</title>\n" +
-                "    <published>2012-10-20T00:00:00-07:00</published>\n" +
-                "    <updated>2012-10-20T00:00:00-07:00</updated>\n" +
-                "    <author>\n" +
-                "      <name>Rick Deckard</name>\n" +
-                "      <uri>http://example.com/</uri>\n" +
-                "    </author>\n" +
-                "    <summary>This is a sample summary.</summary>\n" +
-                "    <content type=\"html\">Here's some <em>sample</em> content.</content>\n" +
-                "  </entry>\n" +
-                "</feed>\n";
-        InputStream stream = new ByteArrayInputStream(sampleFeed.getBytes());
-        SyncAdapter adapter = new SyncAdapter(getContext(), false);
-        adapter.updateLocalFeedData(stream, new SyncResult());
-
-        Context ctx = getContext();
-        assert ctx != null;
-        ContentResolver cr = ctx.getContentResolver();
-        final String[] projection = {FeedContract.Entry.COLUMN_NAME_ENTRY_ID,
-                FeedContract.Entry.COLUMN_NAME_TITLE,
-                FeedContract.Entry.COLUMN_NAME_LINK};
-        Cursor c = cr.query(FeedContract.Entry.CONTENT_URI, projection, null, null, null);
-        assert c != null;
-        assertEquals(1, c.getCount());
-        c.moveToFirst();
-        assertEquals("http://example.com/2012/10/20/test-post", c.getString(0));
-        assertEquals("Test Post #1", c.getString(1));
-        assertEquals("http://example.com/2012/10/20/test-post.html", c.getString(2));
-    }
-}
diff --git a/connectivity/sync/BasicSyncAdapter/BasicSyncAdapterTests/src/com/example/android/network/sync/basicsyncadapter/net/FeedParserTest.java b/connectivity/sync/BasicSyncAdapter/BasicSyncAdapterTests/src/com/example/android/network/sync/basicsyncadapter/net/FeedParserTest.java
deleted file mode 100644
index 0c66871..0000000
--- a/connectivity/sync/BasicSyncAdapter/BasicSyncAdapterTests/src/com/example/android/network/sync/basicsyncadapter/net/FeedParserTest.java
+++ /dev/null
@@ -1,21 +0,0 @@
-package com.example.android.network.sync.basicsyncadapter.net;
-
-import junit.framework.TestCase;
-
-public class FeedParserTest extends TestCase {
-    public FeedParserTest() {
-        super();
-    }
-
-//    public void testEntriesEqualById() {
-//        FeedParser.Entry e1 = new FeedParser.Entry("alpha", "Aardvark", "Bear", "Cat");
-//        FeedParser.Entry e2 = new FeedParser.Entry("alpha", "Dog", "Elephant", "Faun");
-//        assertEquals(e1, e2);
-//    }
-//
-//    public void testEntriesHashById() {
-//        FeedParser.Entry e1 = new FeedParser.Entry("alpha", "Aardvark", "Bear", "Cat");
-//        FeedParser.Entry e2 = new FeedParser.Entry("alpha", "Dog", "Elephant", "Faun");
-//        assertEquals(e1.hashCode(), e2.hashCode());
-//    }
-}
\ No newline at end of file
diff --git a/connectivity/sync/BasicSyncAdapter/BasicSyncAdapterTests/src/com/example/android/network/sync/basicsyncadapter/provider/FeedProviderTest.java b/connectivity/sync/BasicSyncAdapter/BasicSyncAdapterTests/src/com/example/android/network/sync/basicsyncadapter/provider/FeedProviderTest.java
deleted file mode 100644
index a80b5ca..0000000
--- a/connectivity/sync/BasicSyncAdapter/BasicSyncAdapterTests/src/com/example/android/network/sync/basicsyncadapter/provider/FeedProviderTest.java
+++ /dev/null
@@ -1,119 +0,0 @@
-package com.example.android.network.sync.basicsyncadapter.provider;
-
-import android.content.ContentValues;
-import android.database.Cursor;
-import android.net.Uri;
-import android.test.ProviderTestCase2;
-
-public class FeedProviderTest extends ProviderTestCase2<FeedProvider>  {
-    public FeedProviderTest() {
-        super(FeedProvider.class, FeedContract.CONTENT_AUTHORITY);
-    }
-
-    public void testEntryContentUriIsSane() {
-        assertEquals(Uri.parse("content://com.example.android.network.sync.basicsyncadapter/entries"),
-                FeedContract.Entry.CONTENT_URI);
-    }
-
-    public void testCreateAndRetrieve() {
-        // Create
-        ContentValues newValues = new ContentValues();
-        newValues.put(FeedContract.Entry.COLUMN_NAME_TITLE, "MyTitle");
-        newValues.put(FeedContract.Entry.COLUMN_NAME_LINK, "http://example.com");
-        newValues.put(FeedContract.Entry.COLUMN_NAME_ENTRY_ID, "MyEntryID");
-        Uri newUri = getMockContentResolver().insert(
-                FeedContract.Entry.CONTENT_URI,
-                newValues);
-
-        // Retrieve
-        String[] projection = {
-                FeedContract.Entry.COLUMN_NAME_TITLE,      // 0
-                FeedContract.Entry.COLUMN_NAME_LINK,       // 1
-                FeedContract.Entry.COLUMN_NAME_ENTRY_ID};  // 2
-        Cursor c = getMockContentResolver().query(newUri, projection, null, null, null);
-        assertEquals(1, c.getCount());
-        c.moveToFirst();
-        assertEquals("MyTitle", c.getString(0));
-        assertEquals("http://example.com", c.getString(1));
-        assertEquals("MyEntryID", c.getString(2));
-    }
-
-    public void testCreateAndQuery() {
-        // Create
-        ContentValues newValues = new ContentValues();
-        newValues.put(FeedContract.Entry.COLUMN_NAME_TITLE, "Alpha-MyTitle");
-        newValues.put(FeedContract.Entry.COLUMN_NAME_LINK, "http://alpha.example.com");
-        newValues.put(FeedContract.Entry.COLUMN_NAME_ENTRY_ID, "Alpha-MyEntryID");
-        getMockContentResolver().insert(
-                FeedContract.Entry.CONTENT_URI,
-                newValues);
-
-        newValues = new ContentValues();
-        newValues.put(FeedContract.Entry.COLUMN_NAME_TITLE, "Beta-MyTitle");
-        newValues.put(FeedContract.Entry.COLUMN_NAME_LINK, "http://beta.example.com");
-        newValues.put(FeedContract.Entry.COLUMN_NAME_ENTRY_ID, "Beta-MyEntryID");
-        getMockContentResolver().insert(
-                FeedContract.Entry.CONTENT_URI,
-                newValues);
-
-        // Retrieve
-        String[] projection = {
-                FeedContract.Entry.COLUMN_NAME_TITLE,      // 0
-                FeedContract.Entry.COLUMN_NAME_LINK,       // 1
-                FeedContract.Entry.COLUMN_NAME_ENTRY_ID};  // 2
-        String where = FeedContract.Entry.COLUMN_NAME_TITLE + " LIKE ?";
-        Cursor c = getMockContentResolver().query(FeedContract.Entry.CONTENT_URI, projection,
-                where, new String[] {"Alpha%"}, null);
-        assertEquals(1, c.getCount());
-        c.moveToFirst();
-        assertEquals("Alpha-MyTitle", c.getString(0));
-        assertEquals("http://alpha.example.com", c.getString(1));
-        assertEquals("Alpha-MyEntryID", c.getString(2));
-    }
-
-    public void testUpdate() {
-        // Create
-        ContentValues newValues = new ContentValues();
-        newValues.put(FeedContract.Entry.COLUMN_NAME_TITLE, "Alpha-MyTitle");
-        newValues.put(FeedContract.Entry.COLUMN_NAME_LINK, "http://alpha.example.com");
-        newValues.put(FeedContract.Entry.COLUMN_NAME_ENTRY_ID, "Alpha-MyEntryID");
-        Uri alpha = getMockContentResolver().insert(
-                FeedContract.Entry.CONTENT_URI,
-                newValues);
-
-        newValues = new ContentValues();
-        newValues.put(FeedContract.Entry.COLUMN_NAME_TITLE, "Beta-MyTitle");
-        newValues.put(FeedContract.Entry.COLUMN_NAME_LINK, "http://beta.example.com");
-        newValues.put(FeedContract.Entry.COLUMN_NAME_ENTRY_ID, "Beta-MyEntryID");
-        Uri beta = getMockContentResolver().insert(
-                FeedContract.Entry.CONTENT_URI,
-                newValues);
-
-        // Update
-        newValues = new ContentValues();
-        newValues.put(FeedContract.Entry.COLUMN_NAME_LINK, "http://replaced.example.com");
-        getMockContentResolver().update(alpha, newValues, null, null);
-
-        // Retrieve
-        String[] projection = {
-                FeedContract.Entry.COLUMN_NAME_TITLE,      // 0
-                FeedContract.Entry.COLUMN_NAME_LINK,       // 1
-                FeedContract.Entry.COLUMN_NAME_ENTRY_ID};  // 2
-        // Check that alpha was updated
-        Cursor c = getMockContentResolver().query(alpha, projection, null, null, null);
-        assertEquals(1, c.getCount());
-        c.moveToFirst();
-        assertEquals("Alpha-MyTitle", c.getString(0));
-        assertEquals("http://replaced.example.com", c.getString(1));
-        assertEquals("Alpha-MyEntryID", c.getString(2));
-
-        // ...and that beta was not
-        c = getMockContentResolver().query(beta, projection, null, null, null);
-        assertEquals(1, c.getCount());
-        c.moveToFirst();
-        assertEquals("Beta-MyTitle", c.getString(0));
-        assertEquals("http://beta.example.com", c.getString(1));
-        assertEquals("Beta-MyEntryID", c.getString(2));
-    }
-
-}
diff --git a/connectivity/sync/BasicSyncAdapter/README.txt b/connectivity/sync/BasicSyncAdapter/README.txt
deleted file mode 100644
index 38608df..0000000
--- a/connectivity/sync/BasicSyncAdapter/README.txt
+++ /dev/null
@@ -1,6 +0,0 @@
-Build Instructions
--------------------
-This sample uses the Gradle build system. To build this project, use the
-"gradlew build" command.
-
-To see a list of all available commands, run "gradlew tasks".
\ No newline at end of file
diff --git a/connectivity/sync/BasicSyncAdapter/build.gradle b/connectivity/sync/BasicSyncAdapter/build.gradle
index 495c503..cca9ac3 100644
--- a/connectivity/sync/BasicSyncAdapter/build.gradle
+++ b/connectivity/sync/BasicSyncAdapter/build.gradle
@@ -1 +1,10 @@
-// Top-level build file where you can add configuration options common to all sub-projects/modules.
+// BEGIN_EXCLUDE
+import com.example.android.samples.build.SampleGenPlugin
+apply plugin: SampleGenPlugin
+
+samplegen {
+  pathToBuild "../../../../../build"
+  pathToSamplesCommon "../../../common"
+}
+apply from: "../../../../../build/build.gradle"
+// END_EXCLUDE
diff --git a/connectivity/sync/BasicSyncAdapter/buildSrc/build.gradle b/connectivity/sync/BasicSyncAdapter/buildSrc/build.gradle
new file mode 100644
index 0000000..e344a8c
--- /dev/null
+++ b/connectivity/sync/BasicSyncAdapter/buildSrc/build.gradle
@@ -0,0 +1,18 @@
+
+
+
+repositories {
+    mavenCentral()
+}
+dependencies {
+    compile 'org.freemarker:freemarker:2.3.20'
+}
+
+sourceSets {
+    main {
+        groovy {
+            srcDir new File(rootDir, "../../../../../../build/buildSrc/src/main/groovy")
+        }
+    }
+}
+
diff --git a/connectivity/sync/BasicSyncAdapter/gradle/wrapper/gradle-wrapper.properties b/connectivity/sync/BasicSyncAdapter/gradle/wrapper/gradle-wrapper.properties
index 055ba6f..5c22dec 100644
--- a/connectivity/sync/BasicSyncAdapter/gradle/wrapper/gradle-wrapper.properties
+++ b/connectivity/sync/BasicSyncAdapter/gradle/wrapper/gradle-wrapper.properties
@@ -1,5 +1,4 @@
-#
-#Mon Jul 22 11:40:20 PDT 2013
+#Wed Apr 10 15:27:10 PDT 2013
 distributionBase=GRADLE_USER_HOME
 distributionPath=wrapper/dists
 zipStoreBase=GRADLE_USER_HOME
diff --git a/connectivity/sync/BasicSyncAdapter/settings.gradle b/connectivity/sync/BasicSyncAdapter/settings.gradle
index 5f2be67..a691e9e 100644
--- a/connectivity/sync/BasicSyncAdapter/settings.gradle
+++ b/connectivity/sync/BasicSyncAdapter/settings.gradle
@@ -1 +1,4 @@
-include ':BasicSyncAdapter'
+
+
+
+include 'BasicSyncAdapterSample'
diff --git a/connectivity/sync/BasicSyncAdapter/template-params.xml b/connectivity/sync/BasicSyncAdapter/template-params.xml
new file mode 100644
index 0000000..7fba138
--- /dev/null
+++ b/connectivity/sync/BasicSyncAdapter/template-params.xml
@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ 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.
+-->
+<sample>
+    <name>BasicSyncAdapter</name>
+    <group>Connectivity</group>
+    <package>com.example.android.basicsyncadapter</package>
+
+
+    <!-- change minSdk if needed-->
+    <minSdk>7</minSdk>
+
+    <strings>
+        <intro>
+            <![CDATA[
+            This sample demonstrates using SyncAdapter to fetch background data for an app that
+            doesn\'t require a user-visible account type or 2-way synchronization.
+
+            \n\nThis sample periodically downloads the feed from the Android Developer Blog and
+            caches the data in a content provider. At runtime, the cached feed data is displayed
+            inside a ListView.
+            ]]>
+        </intro>
+    </strings>
+
+    <template src="base"/>
+    <common src="accounts"/>
+    <common src="db"/>
+    <common src="logger"/>
+</sample>
diff --git a/content/LoaderCursor/loadercursor.jd b/content/LoaderCursor/loadercursor.jd
deleted file mode 100644
index dba0a0f..0000000
--- a/content/LoaderCursor/loadercursor.jd
+++ /dev/null
@@ -1,14 +0,0 @@
-page.title=LoaderCursor Sample
-@jd:body
-
-<p>This sample demonstrates the use of the 
-<pre><a href="http://developer.android.com/reference/android/app/LoaderManager.html">LoaderManager
-</a></pre> to retrieve data from a 
-<pre><a href="http://developer.android.com/reference/android/database/Cursor.html">Cursor</a></pre>
-.</p>
-
-<p>Here, a list of contacts is displayed in a 
-<pre><a href="http://developer.android.com/reference/android/app/ListFragment.html">ListFragment
-</a></pre> and filtered using a 
-<pre><a href="http://developer.android.com/reference/android/widget/SearchView.html">SearchView
-</a></pre> ActionBar item.</p>
\ No newline at end of file
diff --git a/content/contacts/BasicContactables/BasicContactables/build.gradle b/content/contacts/BasicContactables/BasicContactables/build.gradle
deleted file mode 100644
index 0baece9..0000000
--- a/content/contacts/BasicContactables/BasicContactables/build.gradle
+++ /dev/null
@@ -1,10 +0,0 @@
-apply plugin: 'android'
-
-dependencies {
-    compile "com.android.support:support-v4:18.0.+"
-}
-
-android {
-    compileSdkVersion 18
-    buildToolsVersion "18.0.0"
-}
diff --git a/content/contacts/BasicContactables/BasicContactables/src/main/res/drawable-hdpi/ic_launcher.png b/content/contacts/BasicContactables/BasicContactables/src/main/res/drawable-hdpi/ic_launcher.png
deleted file mode 100755
index 22ce606..0000000
--- a/content/contacts/BasicContactables/BasicContactables/src/main/res/drawable-hdpi/ic_launcher.png
+++ /dev/null
Binary files differ
diff --git a/content/contacts/BasicContactables/BasicContactables/src/main/res/drawable-mdpi/ic_launcher.png b/content/contacts/BasicContactables/BasicContactables/src/main/res/drawable-mdpi/ic_launcher.png
deleted file mode 100755
index f21e17b..0000000
--- a/content/contacts/BasicContactables/BasicContactables/src/main/res/drawable-mdpi/ic_launcher.png
+++ /dev/null
Binary files differ
diff --git a/content/contacts/BasicContactables/BasicContactables/src/main/res/drawable-xhdpi/ic_launcher.png b/content/contacts/BasicContactables/BasicContactables/src/main/res/drawable-xhdpi/ic_launcher.png
deleted file mode 100755
index 64b8059..0000000
--- a/content/contacts/BasicContactables/BasicContactables/src/main/res/drawable-xhdpi/ic_launcher.png
+++ /dev/null
Binary files differ
diff --git a/content/contacts/BasicContactables/BasicContactables/src/main/res/drawable-xxhdpi/ic_launcher.png b/content/contacts/BasicContactables/BasicContactables/src/main/res/drawable-xxhdpi/ic_launcher.png
deleted file mode 100755
index 6b4434a..0000000
--- a/content/contacts/BasicContactables/BasicContactables/src/main/res/drawable-xxhdpi/ic_launcher.png
+++ /dev/null
Binary files differ
diff --git a/content/contacts/BasicContactables/BasicContactables/src/main/res/values-sw600dp/dimens.xml b/content/contacts/BasicContactables/BasicContactables/src/main/res/values-sw600dp/dimens.xml
deleted file mode 100644
index 886b05f..0000000
--- a/content/contacts/BasicContactables/BasicContactables/src/main/res/values-sw600dp/dimens.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<resources>
-    <!-- Customize dimensions originally defined in res/values/dimens.xml (such as
-         screen margins) for sw600dp devices (e.g. 7" tablets) here. -->
-</resources>
diff --git a/content/contacts/BasicContactables/BasicContactables/src/main/res/values-sw600dp/styles.xml b/content/contacts/BasicContactables/BasicContactables/src/main/res/values-sw600dp/styles.xml
deleted file mode 100644
index 2bbb45f..0000000
--- a/content/contacts/BasicContactables/BasicContactables/src/main/res/values-sw600dp/styles.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-  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.
-  -->
-
-<resources>
-
-    <style name="Widget.SampleOutput">
-        <item name="android:paddingTop">@dimen/margin_medium</item>
-        <item name="android:paddingBottom">@dimen/margin_medium</item>
-        <item name="android:paddingLeft">@dimen/margin_huge</item>
-        <item name="android:paddingRight">@dimen/margin_huge</item>
-        <item name="android:textAppearance">?android:textAppearanceLarge</item>
-        <item name="android:lineSpacingMultiplier">1.2</item>
-    </style>
-
-</resources>
diff --git a/content/contacts/BasicContactables/BasicContactables/src/main/res/values-sw720dp-land/dimens.xml b/content/contacts/BasicContactables/BasicContactables/src/main/res/values-sw720dp-land/dimens.xml
deleted file mode 100644
index 00059fc..0000000
--- a/content/contacts/BasicContactables/BasicContactables/src/main/res/values-sw720dp-land/dimens.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<resources>
-    <!-- Customize dimensions originally defined in res/values/dimens.xml (such as
-         screen margins) for sw720dp devices (e.g. 10" tablets) in landscape here. -->
-    <dimen name="activity_horizontal_margin">128dp</dimen>
-</resources>
diff --git a/content/contacts/BasicContactables/BasicContactables/src/main/res/values/dimens.xml b/content/contacts/BasicContactables/BasicContactables/src/main/res/values/dimens.xml
deleted file mode 100644
index a83b995..0000000
--- a/content/contacts/BasicContactables/BasicContactables/src/main/res/values/dimens.xml
+++ /dev/null
@@ -1,28 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-  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.
-  -->
-
-<resources>
-
-    <!-- Define standard dimensions to comply with Holo-style grids and rhythm. -->
-
-    <dimen name="margin_tiny">4dp</dimen>
-    <dimen name="margin_small">8dp</dimen>
-    <dimen name="margin_medium">16dp</dimen>
-    <dimen name="margin_large">32dp</dimen>
-    <dimen name="margin_huge">64dp</dimen>
-
-</resources>
diff --git a/content/contacts/BasicContactables/BasicContactables/src/main/res/values/strings.xml b/content/contacts/BasicContactables/BasicContactables/src/main/res/values/strings.xml
deleted file mode 100755
index 31ceceb..0000000
--- a/content/contacts/BasicContactables/BasicContactables/src/main/res/values/strings.xml
+++ /dev/null
@@ -1,26 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-  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.
-  -->
-
-<resources>
-    <string name="app_name">Basic Contactables Query</string>
-    <string name="intro_message">Welcome to <b>Basic Contactables Query</b>!\n\n
-        Use the search box to enter a term, and find matching contacts in
-        Android\'s contact database!
-    </string>
-    <string name="sample_action">Sample action</string>
-    <string name="search_title">Search Contacts</string>
-</resources>
diff --git a/content/contacts/BasicContactables/BasicContactablesSample/.gitignore b/content/contacts/BasicContactables/BasicContactablesSample/.gitignore
new file mode 100644
index 0000000..6eb878d
--- /dev/null
+++ b/content/contacts/BasicContactables/BasicContactablesSample/.gitignore
@@ -0,0 +1,16 @@
+# 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.
+src/template/
+src/common/
+build.gradle
diff --git a/connectivity/sync/BasicSyncAdapter/BasicSyncAdapterTests/proguard-project.txt b/content/contacts/BasicContactables/BasicContactablesSample/proguard-project.txt
similarity index 91%
copy from connectivity/sync/BasicSyncAdapter/BasicSyncAdapterTests/proguard-project.txt
copy to content/contacts/BasicContactables/BasicContactablesSample/proguard-project.txt
index f2fe155..0d8f171 100644
--- a/connectivity/sync/BasicSyncAdapter/BasicSyncAdapterTests/proguard-project.txt
+++ b/content/contacts/BasicContactables/BasicContactablesSample/proguard-project.txt
@@ -1,4 +1,4 @@
-# To enable ProGuard in your project, edit project.properties
+ To enable ProGuard in your project, edit project.properties
 # to define the proguard.config property as described in that file.
 #
 # Add project specific ProGuard rules here.
diff --git a/content/contacts/BasicContactables/BasicContactables/src/main/AndroidManifest.xml b/content/contacts/BasicContactables/BasicContactablesSample/src/main/AndroidManifest.xml
similarity index 67%
rename from content/contacts/BasicContactables/BasicContactables/src/main/AndroidManifest.xml
rename to content/contacts/BasicContactables/BasicContactablesSample/src/main/AndroidManifest.xml
index b008e84..62b9812 100644
--- a/content/contacts/BasicContactables/BasicContactables/src/main/AndroidManifest.xml
+++ b/content/contacts/BasicContactables/BasicContactablesSample/src/main/AndroidManifest.xml
@@ -1,9 +1,25 @@
-<?xml version="1.0" encoding="utf-8"?>
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ 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.
+-->
+
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
     package="com.example.android.basiccontactables"
     android:versionCode="1"
     android:versionName="1.0" >
-    
+
     <!-- BEGIN_INCLUDE(contacts_permission) -->
     <uses-permission android:name="android.permission.READ_CONTACTS"/>
     <!-- END_INCLUDE(contacts_permission) -->
@@ -21,7 +37,7 @@
             android:name="com.example.android.basiccontactables.MainActivity"
             android:label="@string/app_name"
             android:launchMode="singleTop">
-            <meta-data 
+            <meta-data
                 android:name="android.app.searchable"
                 android:resource="@xml/searchable" />
             <intent-filter>
diff --git a/content/contacts/BasicContactables/BasicContactables/src/main/java/com/example/android/basiccontactables/ContactablesLoaderCallbacks.java b/content/contacts/BasicContactables/BasicContactablesSample/src/main/java/com/example/android/basiccontactables/ContactablesLoaderCallbacks.java
similarity index 89%
rename from content/contacts/BasicContactables/BasicContactables/src/main/java/com/example/android/basiccontactables/ContactablesLoaderCallbacks.java
rename to content/contacts/BasicContactables/BasicContactablesSample/src/main/java/com/example/android/basiccontactables/ContactablesLoaderCallbacks.java
index c583dac..4fc4da7 100644
--- a/content/contacts/BasicContactables/BasicContactables/src/main/java/com/example/android/basiccontactables/ContactablesLoaderCallbacks.java
+++ b/content/contacts/BasicContactables/BasicContactablesSample/src/main/java/com/example/android/basiccontactables/ContactablesLoaderCallbacks.java
@@ -23,7 +23,6 @@
 import android.database.Cursor;
 import android.net.Uri;
 import android.os.Bundle;
-import android.provider.ContactsContract;
 import android.provider.ContactsContract.CommonDataKinds;
 import android.util.Log;
 import android.widget.TextView;
@@ -55,17 +54,17 @@
         // BEGIN_INCLUDE(uri_with_query)
         String query = args.getString(QUERY_KEY);
         Uri uri = Uri.withAppendedPath(
-                ContactsContract.CommonDataKinds.Contactables.CONTENT_FILTER_URI, query);
+                CommonDataKinds.Contactables.CONTENT_FILTER_URI, query);
         // END_INCLUDE(uri_with_query)
 
 
         // BEGIN_INCLUDE(cursor_loader)
         // Easy way to limit the query to contacts with phone numbers.
         String selection =
-                ContactsContract.CommonDataKinds.Contactables.HAS_PHONE_NUMBER + " = " + 1;
+                CommonDataKinds.Contactables.HAS_PHONE_NUMBER + " = " + 1;
 
         // Sort results such that rows for the same contact stay together.
-        String sortBy = ContactsContract.CommonDataKinds.Contactables.LOOKUP_KEY;
+        String sortBy = CommonDataKinds.Contactables.LOOKUP_KEY;
 
         return new CursorLoader(
                 mContext,  // Context
@@ -80,6 +79,13 @@
     @Override
     public void onLoadFinished(Loader<Cursor> arg0, Cursor cursor) {
         TextView tv  = (TextView) ((Activity)mContext).findViewById(R.id.sample_output);
+        if(tv == null) {
+            Log.e(TAG, "TextView is null?!");
+        } else if (mContext == null) {
+            Log.e(TAG, "Context is null?");
+        } else {
+            Log.e(TAG, "Nothing is null?!");
+        }
 
         // Reset text in case of a previous query
         tv.setText(mContext.getText(R.string.intro_message) + "\n\n");
@@ -115,9 +121,9 @@
             // BEGIN_INCLUDE(retrieve_data)
             // The data type can be determined using the mime type column.
             String mimeType = cursor.getString(typeColumnIndex);
-            if (mimeType.equals(ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_TYPE)) {
+            if (mimeType.equals(CommonDataKinds.Phone.CONTENT_ITEM_TYPE)) {
                 tv.append("\tPhone Number: " + cursor.getString(phoneColumnIndex) + "\n");
-            } else if (mimeType.equals(ContactsContract.CommonDataKinds.Email.CONTENT_ITEM_TYPE)) {
+            } else if (mimeType.equals(CommonDataKinds.Email.CONTENT_ITEM_TYPE)) {
                 tv.append("\tEmail Address: " + cursor.getString(emailColumnIndex) + "\n");
             }
             // END_INCLUDE(retrieve_data)
diff --git a/content/contacts/BasicContactables/BasicContactables/src/main/java/com/example/android/basiccontactables/MainActivity.java b/content/contacts/BasicContactables/BasicContactablesSample/src/main/java/com/example/android/basiccontactables/MainActivity.java
similarity index 98%
rename from content/contacts/BasicContactables/BasicContactables/src/main/java/com/example/android/basiccontactables/MainActivity.java
rename to content/contacts/BasicContactables/BasicContactablesSample/src/main/java/com/example/android/basiccontactables/MainActivity.java
index 9448ada..b8b074e 100644
--- a/content/contacts/BasicContactables/BasicContactables/src/main/java/com/example/android/basiccontactables/MainActivity.java
+++ b/content/contacts/BasicContactables/BasicContactablesSample/src/main/java/com/example/android/basiccontactables/MainActivity.java
@@ -37,7 +37,7 @@
     @Override
     protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
-        setContentView(R.layout.activity_main);
+        setContentView(R.layout.sample_main);
 
         if (getIntent() != null) {
             handleIntent(getIntent());
diff --git a/ui/actionbar/DoneBar/DoneBar/src/main/res/drawable-hdpi/ic_launcher.png b/content/contacts/BasicContactables/BasicContactablesSample/src/main/res/drawable-hdpi/ic_launcher.png
similarity index 100%
copy from ui/actionbar/DoneBar/DoneBar/src/main/res/drawable-hdpi/ic_launcher.png
copy to content/contacts/BasicContactables/BasicContactablesSample/src/main/res/drawable-hdpi/ic_launcher.png
Binary files differ
diff --git a/content/contacts/BasicContactables/BasicContactables/src/main/res/drawable-hdpi/ic_search_api_holo_light.png b/content/contacts/BasicContactables/BasicContactablesSample/src/main/res/drawable-hdpi/ic_search_api_holo_light.png
similarity index 100%
rename from content/contacts/BasicContactables/BasicContactables/src/main/res/drawable-hdpi/ic_search_api_holo_light.png
rename to content/contacts/BasicContactables/BasicContactablesSample/src/main/res/drawable-hdpi/ic_search_api_holo_light.png
Binary files differ
diff --git a/ui/actionbar/DoneBar/DoneBar/src/main/res/drawable-mdpi/ic_launcher.png b/content/contacts/BasicContactables/BasicContactablesSample/src/main/res/drawable-mdpi/ic_launcher.png
similarity index 100%
copy from ui/actionbar/DoneBar/DoneBar/src/main/res/drawable-mdpi/ic_launcher.png
copy to content/contacts/BasicContactables/BasicContactablesSample/src/main/res/drawable-mdpi/ic_launcher.png
Binary files differ
diff --git a/content/contacts/BasicContactables/BasicContactables/src/main/res/drawable-mdpi/ic_search_api_holo_light.png b/content/contacts/BasicContactables/BasicContactablesSample/src/main/res/drawable-mdpi/ic_search_api_holo_light.png
similarity index 100%
rename from content/contacts/BasicContactables/BasicContactables/src/main/res/drawable-mdpi/ic_search_api_holo_light.png
rename to content/contacts/BasicContactables/BasicContactablesSample/src/main/res/drawable-mdpi/ic_search_api_holo_light.png
Binary files differ
diff --git a/ui/actionbar/DoneBar/DoneBar/src/main/res/drawable-xhdpi/ic_launcher.png b/content/contacts/BasicContactables/BasicContactablesSample/src/main/res/drawable-xhdpi/ic_launcher.png
similarity index 100%
copy from ui/actionbar/DoneBar/DoneBar/src/main/res/drawable-xhdpi/ic_launcher.png
copy to content/contacts/BasicContactables/BasicContactablesSample/src/main/res/drawable-xhdpi/ic_launcher.png
Binary files differ
diff --git a/content/contacts/BasicContactables/BasicContactables/src/main/res/drawable-xhdpi/ic_search_api_holo_light.png b/content/contacts/BasicContactables/BasicContactablesSample/src/main/res/drawable-xhdpi/ic_search_api_holo_light.png
similarity index 100%
rename from content/contacts/BasicContactables/BasicContactables/src/main/res/drawable-xhdpi/ic_search_api_holo_light.png
rename to content/contacts/BasicContactables/BasicContactablesSample/src/main/res/drawable-xhdpi/ic_search_api_holo_light.png
Binary files differ
diff --git a/ui/actionbar/DoneBar/DoneBar/src/main/res/drawable-xxhdpi/ic_launcher.png b/content/contacts/BasicContactables/BasicContactablesSample/src/main/res/drawable-xxhdpi/ic_launcher.png
similarity index 100%
copy from ui/actionbar/DoneBar/DoneBar/src/main/res/drawable-xxhdpi/ic_launcher.png
copy to content/contacts/BasicContactables/BasicContactablesSample/src/main/res/drawable-xxhdpi/ic_launcher.png
Binary files differ
diff --git a/content/contacts/BasicContactables/BasicContactables/src/main/res/layout/activity_main.xml b/content/contacts/BasicContactables/BasicContactablesSample/src/main/res/layout/sample_main.xml
similarity index 100%
rename from content/contacts/BasicContactables/BasicContactables/src/main/res/layout/activity_main.xml
rename to content/contacts/BasicContactables/BasicContactablesSample/src/main/res/layout/sample_main.xml
diff --git a/content/contacts/BasicContactables/BasicContactables/src/main/res/menu/main.xml b/content/contacts/BasicContactables/BasicContactablesSample/src/main/res/menu/main.xml
similarity index 100%
rename from content/contacts/BasicContactables/BasicContactables/src/main/res/menu/main.xml
rename to content/contacts/BasicContactables/BasicContactablesSample/src/main/res/menu/main.xml
diff --git a/content/contacts/BasicContactables/BasicContactables/src/main/res/values-v11/styles.xml b/content/contacts/BasicContactables/BasicContactablesSample/src/main/res/values/strings.xml
old mode 100644
new mode 100755
similarity index 85%
copy from content/contacts/BasicContactables/BasicContactables/src/main/res/values-v11/styles.xml
copy to content/contacts/BasicContactables/BasicContactablesSample/src/main/res/values/strings.xml
index 2ba754c..a499fd2
--- a/content/contacts/BasicContactables/BasicContactables/src/main/res/values-v11/styles.xml
+++ b/content/contacts/BasicContactables/BasicContactablesSample/src/main/res/values/strings.xml
@@ -16,5 +16,6 @@
   -->
 
 <resources>
-    <style name="Theme.Base" parent="android:Theme.Holo.Light" />
+    <string name="sample_action">Sample action</string>
+    <string name="search_title">Search Contacts</string>
 </resources>
diff --git a/content/contacts/BasicContactables/BasicContactables/src/main/res/values/styles.xml b/content/contacts/BasicContactables/BasicContactablesSample/src/main/res/values/styles.xml
similarity index 84%
copy from content/contacts/BasicContactables/BasicContactables/src/main/res/values/styles.xml
copy to content/contacts/BasicContactables/BasicContactablesSample/src/main/res/values/styles.xml
index 1c0e5aa..c3a400d 100644
--- a/content/contacts/BasicContactables/BasicContactables/src/main/res/values/styles.xml
+++ b/content/contacts/BasicContactables/BasicContactablesSample/src/main/res/values/styles.xml
@@ -16,17 +16,8 @@
   -->
 
 <resources>
-
-    <!-- Activity themes -->
-
-    <style name="Theme.Base" parent="android:Theme.Light" />
-
-    <style name="Theme.Sample" parent="Theme.Base" />
-
     <!-- Widget styling -->
 
-    <style name="Widget" />
-
     <style name="Widget.SampleOutput">
         <item name="android:padding">@dimen/margin_medium</item>
         <item name="android:textAppearance">?android:textAppearanceMedium</item>
diff --git a/content/contacts/BasicContactables/BasicContactables/src/main/res/xml/searchable.xml b/content/contacts/BasicContactables/BasicContactablesSample/src/main/res/xml/searchable.xml
similarity index 100%
rename from content/contacts/BasicContactables/BasicContactables/src/main/res/xml/searchable.xml
rename to content/contacts/BasicContactables/BasicContactablesSample/src/main/res/xml/searchable.xml
diff --git a/content/contacts/BasicContactables/BasicContactablesSample/tests/AndroidManifest.xml b/content/contacts/BasicContactables/BasicContactablesSample/tests/AndroidManifest.xml
new file mode 100644
index 0000000..8c4af25
--- /dev/null
+++ b/content/contacts/BasicContactables/BasicContactablesSample/tests/AndroidManifest.xml
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  Copyright (C) 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 name must be unique so suffix with "tests" so package loader doesn't ignore us -->
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+          package="com.example.android.basiccontactables.tests"
+          android:versionCode="1"
+          android:versionName="1.0">
+
+    <uses-sdk
+            android:minSdkVersion="18"
+            android:targetSdkVersion="19" />
+
+    <!-- We add an application tag here just so that we can indicate that
+         this package needs to link against the android.test library,
+         which is needed when building test cases. -->
+    <application>
+        <uses-library android:name="android.test.runner" />
+    </application>
+
+    <!--
+    Specifies the instrumentation test runner used to run the tests.
+    -->
+    <instrumentation
+            android:name="android.test.InstrumentationTestRunner"
+            android:targetPackage="com.example.android.basiccontactables"
+            android:label="Tests for com.example.android.basiccontactables" />
+
+</manifest>
\ No newline at end of file
diff --git a/content/contacts/BasicContactables/BasicContactablesSample/tests/src/com/example/android/basiccontactables/tests/SampleTests.java b/content/contacts/BasicContactables/BasicContactablesSample/tests/src/com/example/android/basiccontactables/tests/SampleTests.java
new file mode 100644
index 0000000..dd48bf2
--- /dev/null
+++ b/content/contacts/BasicContactables/BasicContactablesSample/tests/src/com/example/android/basiccontactables/tests/SampleTests.java
@@ -0,0 +1,79 @@
+/*
+* 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.
+*/
+
+
+
+/*
+* Copyright (C) 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.basiccontactables.tests;
+
+import com.example.android.basiccontactables.*;
+
+import android.test.ActivityInstrumentationTestCase2;
+
+/**
+* Tests for BasicContactables sample.
+*/
+public class SampleTests extends ActivityInstrumentationTestCase2<MainActivity> {
+
+    private MainActivity mTestActivity;
+    private BasicContactablesFragment mTestFragment;
+
+    public SampleTests() {
+        super(MainActivity.class);
+    }
+
+    @Override
+    protected void setUp() throws Exception {
+        super.setUp();
+
+        // Starts the activity under test using the default Intent with:
+        // action = {@link Intent#ACTION_MAIN}
+        // flags = {@link Intent#FLAG_ACTIVITY_NEW_TASK}
+        // All other fields are null or empty.
+        mTestActivity = getActivity();
+        mTestFragment = (BasicContactablesFragment)
+            mTestActivity.getSupportFragmentManager().getFragments().get(1);
+    }
+
+    /**
+    * Test if the test fixture has been set up correctly.
+    */
+    public void testPreconditions() {
+        //Try to add a message to add context to your assertions. These messages will be shown if
+        //a tests fails and make it easy to understand why a test failed
+        assertNotNull("mTestActivity is null", mTestActivity);
+        assertNotNull("mTestFragment is null", mTestFragment);
+    }
+
+    /**
+    * Add more tests below.
+    */
+
+}
\ No newline at end of file
diff --git a/content/contacts/BasicContactables/README.txt b/content/contacts/BasicContactables/README.txt
deleted file mode 100644
index 38608df..0000000
--- a/content/contacts/BasicContactables/README.txt
+++ /dev/null
@@ -1,6 +0,0 @@
-Build Instructions
--------------------
-This sample uses the Gradle build system. To build this project, use the
-"gradlew build" command.
-
-To see a list of all available commands, run "gradlew tasks".
\ No newline at end of file
diff --git a/content/contacts/BasicContactables/build.gradle b/content/contacts/BasicContactables/build.gradle
index 036abc8..cca9ac3 100644
--- a/content/contacts/BasicContactables/build.gradle
+++ b/content/contacts/BasicContactables/build.gradle
@@ -1,8 +1,10 @@
-buildscript {
-    repositories {
-        mavenCentral()
-    }
-    dependencies {
-        classpath 'com.android.tools.build:gradle:0.5.+'
-    }
+// BEGIN_EXCLUDE
+import com.example.android.samples.build.SampleGenPlugin
+apply plugin: SampleGenPlugin
+
+samplegen {
+  pathToBuild "../../../../../build"
+  pathToSamplesCommon "../../../common"
 }
+apply from: "../../../../../build/build.gradle"
+// END_EXCLUDE
diff --git a/content/contacts/BasicContactables/buildSrc/build.gradle b/content/contacts/BasicContactables/buildSrc/build.gradle
new file mode 100644
index 0000000..e344a8c
--- /dev/null
+++ b/content/contacts/BasicContactables/buildSrc/build.gradle
@@ -0,0 +1,18 @@
+
+
+
+repositories {
+    mavenCentral()
+}
+dependencies {
+    compile 'org.freemarker:freemarker:2.3.20'
+}
+
+sourceSets {
+    main {
+        groovy {
+            srcDir new File(rootDir, "../../../../../../build/buildSrc/src/main/groovy")
+        }
+    }
+}
+
diff --git a/content/contacts/BasicContactables/gradle/wrapper/gradle-wrapper.properties b/content/contacts/BasicContactables/gradle/wrapper/gradle-wrapper.properties
index 055ba6f..861eddc 100644
--- a/content/contacts/BasicContactables/gradle/wrapper/gradle-wrapper.properties
+++ b/content/contacts/BasicContactables/gradle/wrapper/gradle-wrapper.properties
@@ -1,7 +1,6 @@
-#
-#Mon Jul 22 11:40:20 PDT 2013
+#Wed Apr 10 15:27:10 PDT 2013
 distributionBase=GRADLE_USER_HOME
 distributionPath=wrapper/dists
 zipStoreBase=GRADLE_USER_HOME
 zipStorePath=wrapper/dists
-distributionUrl=http\://services.gradle.org/distributions/gradle-1.6-bin.zip
+distributionUrl=http\://services.gradle.org/distributions/gradle-1.8-bin.zip
diff --git a/content/contacts/BasicContactables/settings.gradle b/content/contacts/BasicContactables/settings.gradle
index 111067c..5fec49c 100644
--- a/content/contacts/BasicContactables/settings.gradle
+++ b/content/contacts/BasicContactables/settings.gradle
@@ -1 +1,4 @@
-include ':BasicContactables'
+
+
+
+include 'BasicContactablesSample'
diff --git a/content/contacts/BasicContactables/template-params.xml b/content/contacts/BasicContactables/template-params.xml
new file mode 100644
index 0000000..ee2ba11
--- /dev/null
+++ b/content/contacts/BasicContactables/template-params.xml
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ 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.
+-->
+<sample>
+    <name>BasicContactables</name>
+    <group>Content</group>
+    <package>com.example.android.basiccontactables</package>
+
+
+
+    <!-- change minSdk if needed-->
+    <minSdk>18</minSdk>
+
+
+    <strings>
+        <intro>
+            <![CDATA[
+            This sample demonstrates how to use the Contactables table to search for contacts.
+            \n\nQuery strings sent to the Contactables table will match both contact names and phone numbers,
+            reducing the number of queries your application needs to use when searching the contacts database!
+            ]]>
+        </intro>
+    </strings>
+
+    <template src="base"/>
+    <common src="logger"/>
+
+</sample>
diff --git a/content/documentsUi/StorageClient/StorageClientSample/.gitignore b/content/documentsUi/StorageClient/StorageClientSample/.gitignore
new file mode 100644
index 0000000..6eb878d
--- /dev/null
+++ b/content/documentsUi/StorageClient/StorageClientSample/.gitignore
@@ -0,0 +1,16 @@
+# 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.
+src/template/
+src/common/
+build.gradle
diff --git a/content/documentsUi/StorageClient/StorageClientSample/README-singleview.txt b/content/documentsUi/StorageClient/StorageClientSample/README-singleview.txt
new file mode 100644
index 0000000..0cacd46
--- /dev/null
+++ b/content/documentsUi/StorageClient/StorageClientSample/README-singleview.txt
@@ -0,0 +1,47 @@
+<#--
+        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.
+-->
+
+Steps to implement SingleView template:
+-in template-params.xml.ftl:
+    -add the following line to common imports
+        <common src="activities"/>
+
+    -add a string for the action button's text using the element name "sample_action".
+    This element should be a child of <strings>:
+        <strings>
+        ...
+        <sample_action>ButtonText</sample_action>
+        ...
+        </strings>
+
+
+
+-Add a Fragment to handle behavior.  In your MainActivity.java class, it will reference a Fragment
+ called (yourProjectName)Fragment.java.  Create that file in your project, using the "main" source
+ folder instead of "common" or "templates".
+   For instance, if your package name is com.example.foo, create the file
+   src/main/java/com/example/foo/FooFragment.java
+
+
+-Within this fragment, make sure that the onCreate method has the line
+ "setHasOptionsMenu(true);", to enable the fragment to handle menu events.
+
+-In order to override menu events, override onOptionsItemSelected.
+
+-refer to sampleSamples/singleViewSample for a reference implementation of a
+project built on this template.
+
+
diff --git a/connectivity/sync/BasicSyncAdapter/BasicSyncAdapterTests/proguard-project.txt b/content/documentsUi/StorageClient/StorageClientSample/proguard-project.txt
similarity index 91%
copy from connectivity/sync/BasicSyncAdapter/BasicSyncAdapterTests/proguard-project.txt
copy to content/documentsUi/StorageClient/StorageClientSample/proguard-project.txt
index f2fe155..0d8f171 100644
--- a/connectivity/sync/BasicSyncAdapter/BasicSyncAdapterTests/proguard-project.txt
+++ b/content/documentsUi/StorageClient/StorageClientSample/proguard-project.txt
@@ -1,4 +1,4 @@
-# To enable ProGuard in your project, edit project.properties
+ To enable ProGuard in your project, edit project.properties
 # to define the proguard.config property as described in that file.
 #
 # Add project specific ProGuard rules here.
diff --git a/ui/actionbarcompat/ListPopupMenu/ListPopupMenu/src/main/AndroidManifest.xml b/content/documentsUi/StorageClient/StorageClientSample/src/main/AndroidManifest.xml
similarity index 62%
copy from ui/actionbarcompat/ListPopupMenu/ListPopupMenu/src/main/AndroidManifest.xml
copy to content/documentsUi/StorageClient/StorageClientSample/src/main/AndroidManifest.xml
index 7e9a861..d35a4ec 100644
--- a/ui/actionbarcompat/ListPopupMenu/ListPopupMenu/src/main/AndroidManifest.xml
+++ b/content/documentsUi/StorageClient/StorageClientSample/src/main/AndroidManifest.xml
@@ -1,11 +1,12 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2013 The Android Open Source Project
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ 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
+     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,
@@ -14,23 +15,20 @@
  limitations under the License.
 -->
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
-    package="com.example.android.actionbarcompat.listpopupmenu"
+    package="com.example.android.storageclient"
     android:versionCode="1"
     android:versionName="1.0">
 
-    <!-- ActionBarCompat provides an implementation of Popup Menu from API v7 onwards -->
-    <uses-sdk
-        android:minSdkVersion="7"
-        android:targetSdkVersion="17" />
+    <uses-sdk android:minSdkVersion="19" android:targetSdkVersion="19" />
 
-    <application
-        android:icon="@drawable/ic_launcher"
+    <application android:allowBackup="true"
         android:label="@string/app_name"
-        android:theme="@style/Theme.AppCompat"
-        android:allowBackup="true">
+        android:icon="@drawable/ic_launcher"
+        android:theme="@style/AppTheme">
 
-        <activity android:name=".MainActivity">
-            <!-- Launcher Intent filter -->
+        <activity android:name=".MainActivity"
+                  android:label="@string/app_name"
+                  android:uiOptions="splitActionBarWhenNarrow">
             <intent-filter>
                 <action android:name="android.intent.action.MAIN" />
                 <category android:name="android.intent.category.LAUNCHER" />
@@ -38,4 +36,5 @@
         </activity>
     </application>
 
-</manifest>
\ No newline at end of file
+
+</manifest>
diff --git a/content/documentsUi/StorageClient/StorageClientSample/src/main/java/com/example/android/storageclient/StorageClientFragment.java b/content/documentsUi/StorageClient/StorageClientSample/src/main/java/com/example/android/storageclient/StorageClientFragment.java
new file mode 100644
index 0000000..7f9f73e
--- /dev/null
+++ b/content/documentsUi/StorageClient/StorageClientSample/src/main/java/com/example/android/storageclient/StorageClientFragment.java
@@ -0,0 +1,255 @@
+/*
+* Copyright (C) 2012 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.storageclient;
+
+import android.app.Activity;
+import android.app.Dialog;
+import android.content.Intent;
+import android.database.Cursor;
+import android.graphics.Bitmap;
+import android.graphics.BitmapFactory;
+import android.net.Uri;
+import android.os.AsyncTask;
+import android.os.Bundle;
+import android.os.ParcelFileDescriptor;
+import android.provider.OpenableColumns;
+import android.support.v4.app.DialogFragment;
+import android.support.v4.app.Fragment;
+import android.support.v4.app.FragmentManager;
+import android.view.MenuItem;
+import android.view.Window;
+import android.widget.ImageView;
+
+import com.example.android.common.logger.Log;
+
+import java.io.FileDescriptor;
+import java.io.IOException;
+
+public class StorageClientFragment extends Fragment {
+
+    // A request code's purpose is to match the result of a "startActivityForResult" with
+    // the type of the original request.  Choose any value.
+    private static final int READ_REQUEST_CODE = 1337;
+
+    public static final String TAG = "StorageClientFragment";
+
+    @Override
+    public void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        setHasOptionsMenu(true);
+    }
+
+    @Override
+    public boolean onOptionsItemSelected(MenuItem item) {
+        if (item.getItemId() == R.id.sample_action) {
+            performFileSearch();
+        }
+        return true;
+    }
+
+    /**
+     * Fires an intent to spin up the "file chooser" UI and select an image.
+     */
+    public void performFileSearch() {
+
+        // BEGIN_INCLUDE (use_open_document_intent)
+        // ACTION_OPEN_DOCUMENT is the intent to choose a file via the system's file browser.
+        Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT);
+
+        // Filter to only show results that can be "opened", such as a file (as opposed to a list
+        // of contacts or timezones)
+        intent.addCategory(Intent.CATEGORY_OPENABLE);
+
+        // Filter to show only images, using the image MIME data type.
+        // If one wanted to search for ogg vorbis files, the type would be "audio/ogg".
+        // To search for all documents available via installed storage providers, it would be
+        // "*/*".
+        intent.setType("image/*");
+
+        startActivityForResult(intent, READ_REQUEST_CODE);
+        // END_INCLUDE (use_open_document_intent)
+    }
+
+    @Override
+    public void onActivityResult(int requestCode, int resultCode, Intent resultData) {
+        Log.i(TAG, "Received an \"Activity Result\"");
+        // BEGIN_INCLUDE (parse_open_document_response)
+        // The ACTION_OPEN_DOCUMENT intent was sent with the request code READ_REQUEST_CODE.
+        // If the request code seen here doesn't match, it's the response to some other intent,
+        // and the below code shouldn't run at all.
+
+        if (requestCode == READ_REQUEST_CODE && resultCode == Activity.RESULT_OK) {
+            // The document selected by the user won't be returned in the intent.
+            // Instead, a URI to that document will be contained in the return intent
+            // provided to this method as a parameter.  Pull that uri using "resultData.getData()"
+            Uri uri = null;
+            if (resultData != null) {
+                uri = resultData.getData();
+                Log.i(TAG, "Uri: " + uri.toString());
+                showImage(uri);
+            }
+            // END_INCLUDE (parse_open_document_response)
+        }
+    }
+
+    /**
+     * Given the URI of an image, shows it on the screen using a DialogFragment.
+     *
+     * @param uri the Uri of the image to display.
+     */
+    public void showImage(Uri uri) {
+        // BEGIN_INCLUDE (create_show_image_dialog)
+        if (uri != null) {
+            // Since the URI is to an image, create and show a DialogFragment to display the
+            // image to the user.
+            FragmentManager fm = getActivity().getSupportFragmentManager();
+            ImageDialogFragment imageDialog = new ImageDialogFragment(uri);
+            imageDialog.show(fm, "image_dialog");
+        }
+        // END_INCLUDE (create_show_image_dialog)
+    }
+
+    /**
+     * Grabs metadata for a document specified by URI, logs it to the screen.
+     *
+     * @param uri The uri for the document whose metadata should be printed.
+     */
+    public void dumpImageMetaData(Uri uri) {
+        // BEGIN_INCLUDE (dump_metadata)
+
+        // The query, since it only applies to a single document, will only return one row.
+        // no need to filter, sort, or select fields, since we want all fields for one
+        // document.
+        Cursor cursor = getActivity().getContentResolver()
+                .query(uri, null, null, null, null, null);
+
+        try {
+        // moveToFirst() returns false if the cursor has 0 rows.  Very handy for
+        // "if there's anything to look at, look at it" conditionals.
+            if (cursor != null && cursor.moveToFirst()) {
+
+                // Note it's called "Display Name".  This is provider-specific, and
+                // might not necessarily be the file name.
+                String displayName = cursor.getString(
+                        cursor.getColumnIndex(OpenableColumns.DISPLAY_NAME));
+                Log.i(TAG, "Display Name: " + displayName);
+
+                int sizeIndex = cursor.getColumnIndex(OpenableColumns.SIZE);
+                // If the size is unknown, the value stored is null.  But since an int can't be
+                // null in java, the behavior is implementation-specific, which is just a fancy
+                // term for "unpredictable".  So as a rule, check if it's null before assigning
+                // to an int.  This will happen often:  The storage API allows for remote
+                // files, whose size might not be locally known.
+                String size = null;
+                if (!cursor.isNull(sizeIndex)) {
+                    // Technically the column stores an int, but cursor.getString will do the
+                    // conversion automatically.
+                    size = cursor.getString(sizeIndex);
+                } else {
+                    size = "Unknown";
+                }
+                Log.i(TAG, "Size: " + size);
+            }
+        } finally {
+            cursor.close();
+        }
+        // END_INCLUDE (dump_metadata)
+    }
+
+    /**
+     * DialogFragment which displays an image, given a URI.
+     */
+    private class ImageDialogFragment extends DialogFragment {
+        private Dialog mDialog;
+        private Uri mUri;
+
+        public ImageDialogFragment(Uri uri) {
+            super();
+            mUri = uri;
+        }
+
+        /** Create a Bitmap from the URI for that image and return it.
+         *
+         * @param uri the Uri for the image to return.
+         */
+        private Bitmap getBitmapFromUri(Uri uri) {
+            ParcelFileDescriptor parcelFileDescriptor = null;
+            try {
+                parcelFileDescriptor =
+                        getActivity().getContentResolver().openFileDescriptor(uri, "r");
+                FileDescriptor fileDescriptor = parcelFileDescriptor.getFileDescriptor();
+                Bitmap image = BitmapFactory.decodeFileDescriptor(fileDescriptor);
+                parcelFileDescriptor.close();
+                return image;
+            } catch (Exception e) {
+                Log.e(TAG, "Failed to load image.", e);
+                return null;
+            } finally {
+                try {
+                    if (parcelFileDescriptor != null) {
+                        parcelFileDescriptor.close();
+                    }
+                } catch (IOException e) {
+                    e.printStackTrace();
+                    Log.e(TAG, "Error closing ParcelFile Descriptor");
+                }
+            }
+        }
+
+        @Override
+        public Dialog onCreateDialog(Bundle savedInstanceState) {
+            mDialog = super.onCreateDialog(savedInstanceState);
+            // To optimize for the "lightbox" style layout.  Since we're not actually displaying a
+            // title, remove the bar along the top of the fragment where a dialog title would
+            // normally go.
+            mDialog.getWindow().requestFeature(Window.FEATURE_NO_TITLE);
+            final ImageView imageView = new ImageView(getActivity());
+            mDialog.setContentView(imageView);
+
+            // BEGIN_INCLUDE (show_image)
+            // Loading the image is going to require some sort of I/O, which must occur off the UI
+            // thread.  Changing the ImageView to display the image must occur ON the UI thread.
+            // The easiest way to divide up this labor is with an AsyncTask.  The doInBackground
+            // method will run in a separate thread, but onPostExecute will run in the main
+            // UI thread.
+            AsyncTask<Uri, Void, Bitmap> imageLoadAsyncTask = new AsyncTask<Uri, Void, Bitmap>() {
+                @Override
+                protected Bitmap doInBackground(Uri... uris) {
+                    dumpImageMetaData(uris[0]);
+                    return getBitmapFromUri(uris[0]);
+                }
+
+                @Override
+                protected void onPostExecute(Bitmap bitmap) {
+                    imageView.setImageBitmap(bitmap);
+                }
+            };
+            imageLoadAsyncTask.execute(mUri);
+            // END_INCLUDE (show_image)
+
+            return mDialog;
+        }
+
+        @Override
+        public void onStop() {
+            super.onStop();
+            if (getDialog() != null) {
+                getDialog().dismiss();
+            }
+        }
+    }
+}
diff --git a/ui/actionbar/DoneBar/DoneBar/src/main/res/drawable-hdpi/ic_launcher.png b/content/documentsUi/StorageClient/StorageClientSample/src/main/res/drawable-hdpi/ic_launcher.png
similarity index 100%
copy from ui/actionbar/DoneBar/DoneBar/src/main/res/drawable-hdpi/ic_launcher.png
copy to content/documentsUi/StorageClient/StorageClientSample/src/main/res/drawable-hdpi/ic_launcher.png
Binary files differ
diff --git a/ui/actionbar/DoneBar/DoneBar/src/main/res/drawable-mdpi/ic_launcher.png b/content/documentsUi/StorageClient/StorageClientSample/src/main/res/drawable-mdpi/ic_launcher.png
similarity index 100%
copy from ui/actionbar/DoneBar/DoneBar/src/main/res/drawable-mdpi/ic_launcher.png
copy to content/documentsUi/StorageClient/StorageClientSample/src/main/res/drawable-mdpi/ic_launcher.png
Binary files differ
diff --git a/ui/actionbar/DoneBar/DoneBar/src/main/res/drawable-xhdpi/ic_launcher.png b/content/documentsUi/StorageClient/StorageClientSample/src/main/res/drawable-xhdpi/ic_launcher.png
similarity index 100%
copy from ui/actionbar/DoneBar/DoneBar/src/main/res/drawable-xhdpi/ic_launcher.png
copy to content/documentsUi/StorageClient/StorageClientSample/src/main/res/drawable-xhdpi/ic_launcher.png
Binary files differ
diff --git a/ui/actionbar/DoneBar/DoneBar/src/main/res/drawable-xxhdpi/ic_launcher.png b/content/documentsUi/StorageClient/StorageClientSample/src/main/res/drawable-xxhdpi/ic_launcher.png
similarity index 100%
copy from ui/actionbar/DoneBar/DoneBar/src/main/res/drawable-xxhdpi/ic_launcher.png
copy to content/documentsUi/StorageClient/StorageClientSample/src/main/res/drawable-xxhdpi/ic_launcher.png
Binary files differ
diff --git a/content/documentsUi/StorageClient/StorageClientSample/tests/AndroidManifest.xml b/content/documentsUi/StorageClient/StorageClientSample/tests/AndroidManifest.xml
new file mode 100644
index 0000000..3f0a38f
--- /dev/null
+++ b/content/documentsUi/StorageClient/StorageClientSample/tests/AndroidManifest.xml
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  Copyright (C) 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 name must be unique so suffix with "tests" so package loader doesn't ignore us -->
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+          package="com.example.android.storageclient.tests"
+          android:versionCode="1"
+          android:versionName="1.0">
+
+    <uses-sdk
+            android:minSdkVersion="19"
+            android:targetSdkVersion="19" />
+
+    <!-- We add an application tag here just so that we can indicate that
+         this package needs to link against the android.test library,
+         which is needed when building test cases. -->
+    <application>
+        <uses-library android:name="android.test.runner" />
+    </application>
+
+    <!--
+    Specifies the instrumentation test runner used to run the tests.
+    -->
+    <instrumentation
+            android:name="android.test.InstrumentationTestRunner"
+            android:targetPackage="com.example.android.storageclient"
+            android:label="Tests for com.example.android.storageclient" />
+
+</manifest>
\ No newline at end of file
diff --git a/content/documentsUi/StorageClient/StorageClientSample/tests/src/com/example/android/storageclient/tests/SampleTests.java b/content/documentsUi/StorageClient/StorageClientSample/tests/src/com/example/android/storageclient/tests/SampleTests.java
new file mode 100644
index 0000000..5ed779a
--- /dev/null
+++ b/content/documentsUi/StorageClient/StorageClientSample/tests/src/com/example/android/storageclient/tests/SampleTests.java
@@ -0,0 +1,81 @@
+/*
+* 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.
+*/
+/*
+* Copyright (C) 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.storageclient.tests;
+
+import com.example.android.storageclient.*;
+
+import android.net.Uri;
+import android.support.v4.app.FragmentManager;
+import android.test.ActivityInstrumentationTestCase2;
+
+/**
+* Tests for StorageClient sample.
+*/
+public class SampleTests extends ActivityInstrumentationTestCase2<MainActivity> {
+
+    private MainActivity mTestActivity;
+    private StorageClientFragment mTestFragment;
+
+    public SampleTests() {
+        super(MainActivity.class);
+    }
+
+    @Override
+    protected void setUp() throws Exception {
+        super.setUp();
+
+        // Starts the activity under test using the default Intent with:
+        // action = {@link Intent#ACTION_MAIN}
+        // flags = {@link Intent#FLAG_ACTIVITY_NEW_TASK}
+        // All other fields are null or empty.
+        mTestActivity = getActivity();
+        mTestFragment = (StorageClientFragment)
+            mTestActivity.getSupportFragmentManager().getFragments().get(1);
+    }
+
+    /**
+    * Test if the test fixture has been set up correctly.
+    */
+    public void testPreconditions() {
+        //Try to add a message to add context to your assertions. These messages will be shown if
+        //a tests fails and make it easy to understand why a test failed
+        assertNotNull("mTestActivity is null", mTestActivity);
+        assertNotNull("mTestFragment is null", mTestFragment);
+    }
+
+    /**
+     * Test if the metadata dump handles an invalid URI without blowing up.
+     */
+    public void testDumpMetadataInvalidUri() {
+        Uri uri = Uri.parse("content://HAHADOESNTEXIST");
+        mTestFragment.dumpImageMetaData(uri);
+    }
+}
\ No newline at end of file
diff --git a/content/documentsUi/StorageClient/build.gradle b/content/documentsUi/StorageClient/build.gradle
new file mode 100644
index 0000000..cca9ac3
--- /dev/null
+++ b/content/documentsUi/StorageClient/build.gradle
@@ -0,0 +1,10 @@
+// BEGIN_EXCLUDE
+import com.example.android.samples.build.SampleGenPlugin
+apply plugin: SampleGenPlugin
+
+samplegen {
+  pathToBuild "../../../../../build"
+  pathToSamplesCommon "../../../common"
+}
+apply from: "../../../../../build/build.gradle"
+// END_EXCLUDE
diff --git a/content/documentsUi/StorageClient/buildSrc/build.gradle b/content/documentsUi/StorageClient/buildSrc/build.gradle
new file mode 100644
index 0000000..7cebf71
--- /dev/null
+++ b/content/documentsUi/StorageClient/buildSrc/build.gradle
@@ -0,0 +1,15 @@
+repositories {
+    mavenCentral()
+}
+dependencies {
+    compile 'org.freemarker:freemarker:2.3.20'
+}
+
+sourceSets {
+    main {
+        groovy {
+            srcDir new File(rootDir, "../../../../../../build/buildSrc/src/main/groovy")
+        }
+    }
+}
+
diff --git a/connectivity/network/BasicNetworkDemo/gradle/wrapper/gradle-wrapper.jar b/content/documentsUi/StorageClient/gradle/wrapper/gradle-wrapper.jar
similarity index 100%
copy from connectivity/network/BasicNetworkDemo/gradle/wrapper/gradle-wrapper.jar
copy to content/documentsUi/StorageClient/gradle/wrapper/gradle-wrapper.jar
Binary files differ
diff --git a/connectivity/network/BasicNetworkDemo/gradle/wrapper/gradle-wrapper.properties b/content/documentsUi/StorageClient/gradle/wrapper/gradle-wrapper.properties
similarity index 80%
copy from connectivity/network/BasicNetworkDemo/gradle/wrapper/gradle-wrapper.properties
copy to content/documentsUi/StorageClient/gradle/wrapper/gradle-wrapper.properties
index 055ba6f..861eddc 100644
--- a/connectivity/network/BasicNetworkDemo/gradle/wrapper/gradle-wrapper.properties
+++ b/content/documentsUi/StorageClient/gradle/wrapper/gradle-wrapper.properties
@@ -1,7 +1,6 @@
-#
-#Mon Jul 22 11:40:20 PDT 2013
+#Wed Apr 10 15:27:10 PDT 2013
 distributionBase=GRADLE_USER_HOME
 distributionPath=wrapper/dists
 zipStoreBase=GRADLE_USER_HOME
 zipStorePath=wrapper/dists
-distributionUrl=http\://services.gradle.org/distributions/gradle-1.6-bin.zip
+distributionUrl=http\://services.gradle.org/distributions/gradle-1.8-bin.zip
diff --git a/connectivity/network/BasicNetworkDemo/gradlew b/content/documentsUi/StorageClient/gradlew
similarity index 100%
copy from connectivity/network/BasicNetworkDemo/gradlew
copy to content/documentsUi/StorageClient/gradlew
diff --git a/connectivity/network/BasicNetworkDemo/gradlew.bat b/content/documentsUi/StorageClient/gradlew.bat
similarity index 100%
copy from connectivity/network/BasicNetworkDemo/gradlew.bat
copy to content/documentsUi/StorageClient/gradlew.bat
diff --git a/content/documentsUi/StorageClient/settings.gradle b/content/documentsUi/StorageClient/settings.gradle
new file mode 100644
index 0000000..73cfad8
--- /dev/null
+++ b/content/documentsUi/StorageClient/settings.gradle
@@ -0,0 +1 @@
+include 'StorageClientSample'
diff --git a/content/documentsUi/StorageClient/template-params.xml b/content/documentsUi/StorageClient/template-params.xml
new file mode 100644
index 0000000..f6843e7
--- /dev/null
+++ b/content/documentsUi/StorageClient/template-params.xml
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ 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.
+-->
+<sample>
+    <name>StorageClient</name>
+    <group>Content</group>
+    <package>com.example.android.storageclient</package>
+    <!-- change minSdk if needed-->
+    <minSdk>4</minSdk>
+    <compileSdkVersion>19</compileSdkVersion>
+
+    <strings>
+        <intro>
+            <![CDATA[
+            Using the OPEN_DOCUMENT intent, a client app can access a list of Document Providers
+            on the device, and choose a file from any of them.
+            \n\nTo demonstrate this, click the button below to open up the Storage Access Framework
+            interface, and choose an image on your device.  It will be displayed in this app.
+            ]]>
+        </intro>
+        <sample_action>Show Me The Image</sample_action>
+    </strings>
+
+    <template src="base"/>
+    <template src="SingleView"/>
+    <common src="logger"/>
+    <common src="activities"/>
+
+</sample>
diff --git a/content/multiuser/AppRestrictions/AppRestrictions/build.gradle b/content/multiuser/AppRestrictions/AppRestrictions/build.gradle
deleted file mode 100644
index 945e1f5..0000000
--- a/content/multiuser/AppRestrictions/AppRestrictions/build.gradle
+++ /dev/null
@@ -1,6 +0,0 @@
-apply plugin: 'android'
-
-android {
-    compileSdkVersion 18
-    buildToolsVersion "18.0.0"
-}
diff --git a/content/multiuser/AppRestrictions/AppRestrictions/src/main/AndroidManifest.xml b/content/multiuser/AppRestrictions/AppRestrictions/src/main/AndroidManifest.xml
deleted file mode 100644
index dd9fc09..0000000
--- a/content/multiuser/AppRestrictions/AppRestrictions/src/main/AndroidManifest.xml
+++ /dev/null
@@ -1,44 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 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.
--->
-
-<manifest xmlns:android="http://schemas.android.com/apk/res/android"
-          android:versionCode="1"
-          android:versionName="1"
-          package="com.example.android.apprestrictions">
-
-    <uses-sdk android:minSdkVersion="18" />
-
-    <application android:label="@string/app_name"
-                 android:icon="@drawable/ic_launcher">
-
-        <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>
-
-        <activity android:name="CustomRestrictionsActivity"
-                  android:label="@string/restrictions_activity_label" />
-
-        <receiver android:name="GetRestrictionsReceiver">
-            <intent-filter>
-                <action android:name="android.intent.action.GET_RESTRICTION_ENTRIES" />
-            </intent-filter>
-        </receiver>
-    </application>
-</manifest>
diff --git a/content/multiuser/AppRestrictions/AppRestrictionsSample/.gitignore b/content/multiuser/AppRestrictions/AppRestrictionsSample/.gitignore
new file mode 100644
index 0000000..6eb878d
--- /dev/null
+++ b/content/multiuser/AppRestrictions/AppRestrictionsSample/.gitignore
@@ -0,0 +1,16 @@
+# 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.
+src/template/
+src/common/
+build.gradle
diff --git a/connectivity/sync/BasicSyncAdapter/BasicSyncAdapterTests/proguard-project.txt b/content/multiuser/AppRestrictions/AppRestrictionsSample/proguard-project.txt
similarity index 91%
copy from connectivity/sync/BasicSyncAdapter/BasicSyncAdapterTests/proguard-project.txt
copy to content/multiuser/AppRestrictions/AppRestrictionsSample/proguard-project.txt
index f2fe155..0d8f171 100644
--- a/connectivity/sync/BasicSyncAdapter/BasicSyncAdapterTests/proguard-project.txt
+++ b/content/multiuser/AppRestrictions/AppRestrictionsSample/proguard-project.txt
@@ -1,4 +1,4 @@
-# To enable ProGuard in your project, edit project.properties
+ To enable ProGuard in your project, edit project.properties
 # to define the proguard.config property as described in that file.
 #
 # Add project specific ProGuard rules here.
diff --git a/content/multiuser/AppRestrictions/AppRestrictionsSample/src/main/AndroidManifest.xml b/content/multiuser/AppRestrictions/AppRestrictionsSample/src/main/AndroidManifest.xml
new file mode 100644
index 0000000..b492bbf
--- /dev/null
+++ b/content/multiuser/AppRestrictions/AppRestrictionsSample/src/main/AndroidManifest.xml
@@ -0,0 +1,48 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ 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.
+-->
+
+
+
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+    package="com.example.android.apprestrictions"
+    android:versionCode="1"
+    android:versionName="1.0">
+
+    <uses-sdk android:minSdkVersion="18" />
+
+    <application android:label="@string/app_name"
+        android:icon="@drawable/ic_launcher">
+
+        <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>
+
+        <activity android:name="CustomRestrictionsActivity"
+            android:label="@string/restrictions_activity_label" />
+
+        <receiver android:name="GetRestrictionsReceiver">
+            <intent-filter>
+                <action android:name="android.intent.action.GET_RESTRICTION_ENTRIES" />
+            </intent-filter>
+        </receiver>
+    </application>
+
+</manifest>
diff --git a/content/multiuser/AppRestrictions/AppRestrictions/src/main/java/com/example/android/apprestrictions/CustomRestrictionsActivity.java b/content/multiuser/AppRestrictions/AppRestrictionsSample/src/main/java/com/example/android/apprestrictions/CustomRestrictionsActivity.java
similarity index 100%
rename from content/multiuser/AppRestrictions/AppRestrictions/src/main/java/com/example/android/apprestrictions/CustomRestrictionsActivity.java
rename to content/multiuser/AppRestrictions/AppRestrictionsSample/src/main/java/com/example/android/apprestrictions/CustomRestrictionsActivity.java
diff --git a/content/multiuser/AppRestrictions/AppRestrictions/src/main/java/com/example/android/apprestrictions/CustomRestrictionsFragment.java b/content/multiuser/AppRestrictions/AppRestrictionsSample/src/main/java/com/example/android/apprestrictions/CustomRestrictionsFragment.java
similarity index 100%
rename from content/multiuser/AppRestrictions/AppRestrictions/src/main/java/com/example/android/apprestrictions/CustomRestrictionsFragment.java
rename to content/multiuser/AppRestrictions/AppRestrictionsSample/src/main/java/com/example/android/apprestrictions/CustomRestrictionsFragment.java
diff --git a/content/multiuser/AppRestrictions/AppRestrictions/src/main/java/com/example/android/apprestrictions/GetRestrictionsReceiver.java b/content/multiuser/AppRestrictions/AppRestrictionsSample/src/main/java/com/example/android/apprestrictions/GetRestrictionsReceiver.java
similarity index 100%
rename from content/multiuser/AppRestrictions/AppRestrictions/src/main/java/com/example/android/apprestrictions/GetRestrictionsReceiver.java
rename to content/multiuser/AppRestrictions/AppRestrictionsSample/src/main/java/com/example/android/apprestrictions/GetRestrictionsReceiver.java
diff --git a/content/multiuser/AppRestrictions/AppRestrictions/src/main/java/com/example/android/apprestrictions/MainActivity.java b/content/multiuser/AppRestrictions/AppRestrictionsSample/src/main/java/com/example/android/apprestrictions/MainActivity.java
similarity index 100%
rename from content/multiuser/AppRestrictions/AppRestrictions/src/main/java/com/example/android/apprestrictions/MainActivity.java
rename to content/multiuser/AppRestrictions/AppRestrictionsSample/src/main/java/com/example/android/apprestrictions/MainActivity.java
diff --git a/content/multiuser/AppRestrictions/AppRestrictions/src/main/res/drawable-hdpi/ic_launcher.png b/content/multiuser/AppRestrictions/AppRestrictionsSample/src/main/res/drawable-hdpi/ic_launcher.png
similarity index 100%
rename from content/multiuser/AppRestrictions/AppRestrictions/src/main/res/drawable-hdpi/ic_launcher.png
rename to content/multiuser/AppRestrictions/AppRestrictionsSample/src/main/res/drawable-hdpi/ic_launcher.png
Binary files differ
diff --git a/content/multiuser/AppRestrictions/AppRestrictions/src/main/res/drawable-mdpi/ic_launcher.png b/content/multiuser/AppRestrictions/AppRestrictionsSample/src/main/res/drawable-mdpi/ic_launcher.png
similarity index 100%
rename from content/multiuser/AppRestrictions/AppRestrictions/src/main/res/drawable-mdpi/ic_launcher.png
rename to content/multiuser/AppRestrictions/AppRestrictionsSample/src/main/res/drawable-mdpi/ic_launcher.png
Binary files differ
diff --git a/content/multiuser/AppRestrictions/AppRestrictions/src/main/res/drawable-xhdpi/ic_launcher.png b/content/multiuser/AppRestrictions/AppRestrictionsSample/src/main/res/drawable-xhdpi/ic_launcher.png
similarity index 100%
rename from content/multiuser/AppRestrictions/AppRestrictions/src/main/res/drawable-xhdpi/ic_launcher.png
rename to content/multiuser/AppRestrictions/AppRestrictionsSample/src/main/res/drawable-xhdpi/ic_launcher.png
Binary files differ
diff --git a/content/multiuser/AppRestrictions/AppRestrictions/src/main/res/drawable-xxhdpi/ic_launcher.png b/content/multiuser/AppRestrictions/AppRestrictionsSample/src/main/res/drawable-xxhdpi/ic_launcher.png
similarity index 100%
rename from content/multiuser/AppRestrictions/AppRestrictions/src/main/res/drawable-xxhdpi/ic_launcher.png
rename to content/multiuser/AppRestrictions/AppRestrictionsSample/src/main/res/drawable-xxhdpi/ic_launcher.png
Binary files differ
diff --git a/content/multiuser/AppRestrictions/AppRestrictions/src/main/res/layout/main.xml b/content/multiuser/AppRestrictions/AppRestrictionsSample/src/main/res/layout/main.xml
similarity index 100%
rename from content/multiuser/AppRestrictions/AppRestrictions/src/main/res/layout/main.xml
rename to content/multiuser/AppRestrictions/AppRestrictionsSample/src/main/res/layout/main.xml
diff --git a/content/multiuser/AppRestrictions/AppRestrictions/src/main/res/values/strings.xml b/content/multiuser/AppRestrictions/AppRestrictionsSample/src/main/res/values/strings.xml
similarity index 97%
rename from content/multiuser/AppRestrictions/AppRestrictions/src/main/res/values/strings.xml
rename to content/multiuser/AppRestrictions/AppRestrictionsSample/src/main/res/values/strings.xml
index 2dac3b1..534edf0 100644
--- a/content/multiuser/AppRestrictions/AppRestrictions/src/main/res/values/strings.xml
+++ b/content/multiuser/AppRestrictions/AppRestrictionsSample/src/main/res/values/strings.xml
@@ -14,7 +14,6 @@
      limitations under the License.
 -->
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="app_name">App Restrictions Demo</string>
     <string name="restrictions_activity_label">Custom app restrictions</string>
     <string name="boolean_entry_title">Test boolean type</string>
     <string name="choice_entry_title">Test choice type</string>
diff --git a/content/multiuser/AppRestrictions/AppRestrictions/src/main/res/xml/custom_prefs.xml b/content/multiuser/AppRestrictions/AppRestrictionsSample/src/main/res/xml/custom_prefs.xml
similarity index 100%
rename from content/multiuser/AppRestrictions/AppRestrictions/src/main/res/xml/custom_prefs.xml
rename to content/multiuser/AppRestrictions/AppRestrictionsSample/src/main/res/xml/custom_prefs.xml
diff --git a/content/multiuser/AppRestrictions/build.gradle b/content/multiuser/AppRestrictions/build.gradle
index 036abc8..cca9ac3 100644
--- a/content/multiuser/AppRestrictions/build.gradle
+++ b/content/multiuser/AppRestrictions/build.gradle
@@ -1,8 +1,10 @@
-buildscript {
-    repositories {
-        mavenCentral()
-    }
-    dependencies {
-        classpath 'com.android.tools.build:gradle:0.5.+'
-    }
+// BEGIN_EXCLUDE
+import com.example.android.samples.build.SampleGenPlugin
+apply plugin: SampleGenPlugin
+
+samplegen {
+  pathToBuild "../../../../../build"
+  pathToSamplesCommon "../../../common"
 }
+apply from: "../../../../../build/build.gradle"
+// END_EXCLUDE
diff --git a/content/multiuser/AppRestrictions/buildSrc/build.gradle b/content/multiuser/AppRestrictions/buildSrc/build.gradle
new file mode 100644
index 0000000..e344a8c
--- /dev/null
+++ b/content/multiuser/AppRestrictions/buildSrc/build.gradle
@@ -0,0 +1,18 @@
+
+
+
+repositories {
+    mavenCentral()
+}
+dependencies {
+    compile 'org.freemarker:freemarker:2.3.20'
+}
+
+sourceSets {
+    main {
+        groovy {
+            srcDir new File(rootDir, "../../../../../../build/buildSrc/src/main/groovy")
+        }
+    }
+}
+
diff --git a/content/multiuser/AppRestrictions/gradle/wrapper/gradle-wrapper.properties b/content/multiuser/AppRestrictions/gradle/wrapper/gradle-wrapper.properties
index 5c22dec..861eddc 100644
--- a/content/multiuser/AppRestrictions/gradle/wrapper/gradle-wrapper.properties
+++ b/content/multiuser/AppRestrictions/gradle/wrapper/gradle-wrapper.properties
@@ -3,4 +3,4 @@
 distributionPath=wrapper/dists
 zipStoreBase=GRADLE_USER_HOME
 zipStorePath=wrapper/dists
-distributionUrl=http\://services.gradle.org/distributions/gradle-1.6-bin.zip
+distributionUrl=http\://services.gradle.org/distributions/gradle-1.8-bin.zip
diff --git a/content/multiuser/AppRestrictions/settings.gradle b/content/multiuser/AppRestrictions/settings.gradle
index 41f2d03..02aef49 100644
--- a/content/multiuser/AppRestrictions/settings.gradle
+++ b/content/multiuser/AppRestrictions/settings.gradle
@@ -1 +1,4 @@
-include ':AppRestrictions'
+
+
+
+include 'AppRestrictionsSample'
diff --git a/content/multiuser/AppRestrictions/template-params.xml b/content/multiuser/AppRestrictions/template-params.xml
new file mode 100644
index 0000000..fa676b2
--- /dev/null
+++ b/content/multiuser/AppRestrictions/template-params.xml
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ 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.
+-->
+<sample>
+    <name>AppRestrictions</name>
+    <group>Content</group>
+    <package>com.example.android.apprestrictions</package>
+
+    <!-- change minSdk if needed-->
+    <minSdk>18</minSdk>
+
+    <strings>
+        <intro>
+            <![CDATA[
+            This sample demonstrates the use of the App Restriction feature, which is available on
+            Android 4.3 and above tablet device with the multiuser feature.
+
+            When launched under the primary User account, you can toggle between standard app restriction
+            types and custom.  When launched under a restricted profile, this activity displays app
+            restriction settings, if available.
+            ]]>
+        </intro>
+    </strings>
+
+    <template src="base"/>
+
+</sample>
diff --git a/input/gestures/BasicGestureDetect/BasicGestureDetect/_index.jd b/input/gestures/BasicGestureDetect/BasicGestureDetect/_index.jd
deleted file mode 100644
index db0461b..0000000
--- a/input/gestures/BasicGestureDetect/BasicGestureDetect/_index.jd
+++ /dev/null
@@ -1,6 +0,0 @@
-page.tags="gestures", "motion event"
-sample.group=Input
-@jd:body
-
-<p>Example code that shows how to handle gestures in apps and games.</p>
-
diff --git a/input/gestures/BasicGestureDetect/BasicGestureDetect/build.gradle b/input/gestures/BasicGestureDetect/BasicGestureDetect/build.gradle
deleted file mode 100644
index 0baece9..0000000
--- a/input/gestures/BasicGestureDetect/BasicGestureDetect/build.gradle
+++ /dev/null
@@ -1,10 +0,0 @@
-apply plugin: 'android'
-
-dependencies {
-    compile "com.android.support:support-v4:18.0.+"
-}
-
-android {
-    compileSdkVersion 18
-    buildToolsVersion "18.0.0"
-}
diff --git a/input/gestures/BasicGestureDetect/BasicGestureDetect/libs/android-support-v4.jar b/input/gestures/BasicGestureDetect/BasicGestureDetect/libs/android-support-v4.jar
deleted file mode 100644
index 428bdbc..0000000
--- a/input/gestures/BasicGestureDetect/BasicGestureDetect/libs/android-support-v4.jar
+++ /dev/null
Binary files differ
diff --git a/input/gestures/BasicGestureDetect/BasicGestureDetect/src/main/AndroidManifest.xml b/input/gestures/BasicGestureDetect/BasicGestureDetect/src/main/AndroidManifest.xml
deleted file mode 100755
index 9c6ec99..0000000
--- a/input/gestures/BasicGestureDetect/BasicGestureDetect/src/main/AndroidManifest.xml
+++ /dev/null
@@ -1,42 +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.
-  -->
-
-<manifest
-    xmlns:android="http://schemas.android.com/apk/res/android"
-    package="com.example.android.basicgesturedetect"
-    android:versionCode="1"
-    android:versionName="1.0">
-
-    <uses-sdk android:minSdkVersion="8" android:targetSdkVersion="17" />
-
-    <application
-        android:label="@string/app_name"
-        android:icon="@drawable/ic_launcher"
-        android:theme="@style/Theme.Sample"
-        android:allowBackup="true">
-
-        <activity
-            android:name=".MainActivity"
-            android:label="@string/app_name"
-            android:uiOptions="splitActionBarWhenNarrow">
-
-            <intent-filter>
-                <action android:name="android.intent.action.MAIN" />
-                <category android:name="android.intent.category.LAUNCHER" />
-            </intent-filter>
-        </activity>
-    </application>
-</manifest>
diff --git a/input/gestures/BasicGestureDetect/BasicGestureDetect/src/main/java/com/example/android/basicgesturedetect/GestureListener.java b/input/gestures/BasicGestureDetect/BasicGestureDetect/src/main/java/com/example/android/basicgesturedetect/GestureListener.java
deleted file mode 100644
index 2e2921d..0000000
--- a/input/gestures/BasicGestureDetect/BasicGestureDetect/src/main/java/com/example/android/basicgesturedetect/GestureListener.java
+++ /dev/null
@@ -1,96 +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.basicgesturedetect;
-
-import android.view.GestureDetector;
-import android.view.MotionEvent;
-
-import com.example.android.common.logger.Log;
-
-public class GestureListener extends GestureDetector.SimpleOnGestureListener {
-
-    public static final String TAG = "GestureListener";
-
-    // BEGIN_INCLUDE(init_gestureListener)
-    @Override
-    public boolean onSingleTapUp(MotionEvent e) {
-        // Up motion completing a single tap occurred.
-        Log.i(TAG, "Single Tap Up");
-        return false;
-    }
-
-    @Override
-    public void onLongPress(MotionEvent e) {
-        // Touch has been long enough to indicate a long press.
-        // Does not indicate motion is complete yet (no up event necessarily)
-        Log.i(TAG, "Long Press");
-    }
-
-    @Override
-    public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX,
-    float distanceY) {
-        // User attempted to scroll
-        Log.i(TAG, "Scroll");
-        return false;
-    }
-
-    @Override
-    public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX,
-    float velocityY) {
-        // Fling event occurred.  Notification of this one happens after an "up" event.
-        Log.i(TAG, "Fling");
-        return false;
-    }
-
-    @Override
-    public void onShowPress(MotionEvent e) {
-        // User performed a down event, and hasn't moved yet.
-        Log.i(TAG, "Show Press");
-    }
-
-    @Override
-    public boolean onDown(MotionEvent e) {
-        // "Down" event - User touched the screen.
-        Log.i(TAG, "Down");
-        return false;
-    }
-
-    @Override
-    public boolean onDoubleTap(MotionEvent e) {
-        // User tapped the screen twice.
-        Log.i(TAG, "Double tap");
-        return false;
-    }
-
-    @Override
-    public boolean onDoubleTapEvent(MotionEvent e) {
-        // Since double-tap is actually several events which are considered one aggregate
-        // gesture, there's a separate callback for an individual event within the doubletap
-        // occurring.  This occurs for down, up, and move.
-        Log.i(TAG, "Event within double tap");
-        return false;
-    }
-
-    @Override
-    public boolean onSingleTapConfirmed(MotionEvent e) {
-        // A confirmed single-tap event has occurred.  Only called when the detector has
-        // determined that the first tap stands alone, and is not part of a double tap.
-        Log.i(TAG, "Single tap confirmed");
-        return false;
-    }
-    // END_INCLUDE(init_gestureListener)
-}
diff --git a/input/gestures/BasicGestureDetect/BasicGestureDetect/src/main/java/com/example/android/basicgesturedetect/LogFragment.java b/input/gestures/BasicGestureDetect/BasicGestureDetect/src/main/java/com/example/android/basicgesturedetect/LogFragment.java
deleted file mode 100644
index 849edac..0000000
--- a/input/gestures/BasicGestureDetect/BasicGestureDetect/src/main/java/com/example/android/basicgesturedetect/LogFragment.java
+++ /dev/null
@@ -1,58 +0,0 @@
-// Copyright 2013 Google Inc. All Rights Reserved.
-
-package com.example.android.basicgesturedetect;
-
-import com.example.android.common.logger.LogView;
-
-import android.os.Bundle;
-import android.support.v4.app.Fragment;
-import android.text.Editable;
-import android.text.TextWatcher;
-
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-import android.widget.ScrollView;
-
-/**
- * Simple fraggment which contains a LogView and uses is to output log data it receives
- * through the LogNode interface.
- */
-public class LogFragment extends Fragment {
-
-    private LogView mLogView;
-
-    public LogFragment() {}
-
-    @Override
-    public View onCreateView(LayoutInflater inflater, ViewGroup container,
-            Bundle savedInstanceState) {
-
-        View result = inflater.inflate(R.layout.log_fragment, container, false);
-
-        mLogView = (LogView) result.findViewById(R.id.sample_output);
-
-        // Wire up so when the text changes, the view scrolls down.
-        final ScrollView scrollView =
-                ((ScrollView) result.findViewById(R.id.log_scroll));
-
-        mLogView.addTextChangedListener(new TextWatcher() {
-            @Override
-            public void beforeTextChanged(CharSequence s, int start, int count, int after) {}
-
-            @Override
-            public void onTextChanged(CharSequence s, int start, int before, int count) {}
-
-            @Override
-            public void afterTextChanged(Editable s) {
-                scrollView.fullScroll(ScrollView.FOCUS_DOWN);
-            }
-        });
-
-        return result;
-    }
-
-    public LogView getLogView() {
-        return mLogView;
-    }
-}
\ No newline at end of file
diff --git a/input/gestures/BasicGestureDetect/BasicGestureDetect/src/main/java/com/example/android/basicgesturedetect/MainActivity.java b/input/gestures/BasicGestureDetect/BasicGestureDetect/src/main/java/com/example/android/basicgesturedetect/MainActivity.java
deleted file mode 100755
index 4654ac9..0000000
--- a/input/gestures/BasicGestureDetect/BasicGestureDetect/src/main/java/com/example/android/basicgesturedetect/MainActivity.java
+++ /dev/null
@@ -1,131 +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.basicgesturedetect;
-
-import android.os.Bundle;
-import android.support.v4.app.FragmentActivity;
-import android.util.TypedValue;
-import android.view.GestureDetector;
-import android.view.Menu;
-import android.view.MenuItem;
-import android.view.MotionEvent;
-import android.view.View;
-
-import com.example.android.common.logger.LogWrapper;
-import com.example.android.common.logger.Log;
-import com.example.android.common.widgets.SimpleTextFragment;
-import com.example.android.common.logger.MessageOnlyLogFilter;
-
-/**
- * Sample application demonstrating how to use GestureDetector go detect when a user performs
- * a gesture that's recognized by the framework.  This example uses SimpleGestureDetector.  If you
- * want to detect
- * as well as customize that shortcut with metadata to send along to the application it activates.
- * Code is also included for removing your shortcut from the homescreen, for situations where that
- * is necessary (for instance, removing a shortcut to some data when that data is deleted from your
- * app).
- */
-public class MainActivity extends FragmentActivity {
-
-    public static final String TAG = "Basic Gesture Detector";
-
-    // Reference to the fragment showing events, so we can clear it with a button as necessary.
-    private LogFragment mLogFragment;
-
-    @Override
-    protected void onCreate(Bundle savedInstanceState) {
-        super.onCreate(savedInstanceState);
-        setContentView(R.layout.activity_main);
-
-        SimpleTextFragment actionFragment = (SimpleTextFragment)
-                    getSupportFragmentManager().findFragmentById(R.id.intro_fragment);
-        actionFragment.setText(R.string.intro_message);
-        actionFragment.getView().setClickable(true);
-        actionFragment.getView().setFocusable(true);
-        actionFragment.getTextView().setTextSize(TypedValue.COMPLEX_UNIT_DIP, 16.0f);
-
-
-        // BEGIN_INCLUDE(init_detector)
-
-        // First create the GestureListener that will include all our callbacks.
-        // Then create the GestureDetector, which takes that listener as an argument.
-        GestureDetector.SimpleOnGestureListener gestureListener = getGestureListener();
-        final GestureDetector gd = new GestureDetector(this, gestureListener);
-
-        /* For the view where gestures will occur, create an onTouchListener that sends
-         * all motion events to the gesture detector.  When the gesture detector
-         * actually detects an event, it will use the callbacks you created in the
-         * SimpleOnGestureListener to alert your application.
-        */
-
-        actionFragment.getView().setOnTouchListener(new View.OnTouchListener() {
-            @Override
-            public boolean onTouch(View view, MotionEvent motionEvent) {
-                gd.onTouchEvent(motionEvent);
-                return false;
-            }
-        });
-        // END_INCLUDE(init_detector)
-
-        initializeLogging();
-    }
-
-    /** Create a gesture listener which will be attached to the GestureDetector.
-     *  This listener is where you can write all your callbacks for when certain events occur.
-     * @return The listener your GestureDetector will use to inform your application when
-     * the supported gestures occur.
-     */
-    public GestureDetector.SimpleOnGestureListener getGestureListener() {
-        return new GestureListener();
-    }
-
-    @Override
-    public boolean onCreateOptionsMenu(Menu menu) {
-        getMenuInflater().inflate(R.menu.main, menu);
-        return true;
-    }
-
-    @Override
-    public boolean onOptionsItemSelected(MenuItem item) {
-        switch (item.getItemId()) {
-            case R.id.sample_action:
-                // Clears the log fragment when clicked.
-                mLogFragment.getLogView().setText("");
-                return true;
-        }
-        return false;
-    }
-
-    /** Create a chain of targets that will receive log data */
-    public void initializeLogging() {
-        // Wraps Android's native log framework.
-        LogWrapper logWrapper = new LogWrapper();
-        // Using Log, front-end to the logging chain, emulates android.util.log method signatures.
-        Log.setLogNode(logWrapper);
-
-        // Filter strips out everything except the message text.
-        MessageOnlyLogFilter msgFilter = new MessageOnlyLogFilter();
-        logWrapper.setNext(msgFilter);
-
-        // On screen logging via a fragment with a TextView.
-        mLogFragment =
-                (LogFragment) getSupportFragmentManager().findFragmentById(R.id.log_fragment);
-        msgFilter.setNext(mLogFragment.getLogView());
-
-        Log.i(TAG, "Ready");
-    }
-}
\ No newline at end of file
diff --git a/input/gestures/BasicGestureDetect/BasicGestureDetect/src/main/java/com/example/android/common/logger/Log.java b/input/gestures/BasicGestureDetect/BasicGestureDetect/src/main/java/com/example/android/common/logger/Log.java
deleted file mode 100644
index a87f299..0000000
--- a/input/gestures/BasicGestureDetect/BasicGestureDetect/src/main/java/com/example/android/common/logger/Log.java
+++ /dev/null
@@ -1,236 +0,0 @@
-/*
- * Copyright (C) 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.common.logger;
-
-/**
- * Helper class for a list (or tree) of LoggerNodes.
- *
- * <p>When this is set as the head of the list,
- * an instance of it can function as a drop-in replacement for {@link android.util.Log}.
- * Most of the methods in this class server only to map a method call in Log to its equivalent
- * in LogNode.</p>
- */
-public class Log {
-    // Grab the native values from Android's native logging facilities,
-    // to make for easy migration and interop.
-    public static final int NONE = -1;
-    public static final int VERBOSE = android.util.Log.VERBOSE;
-    public static final int DEBUG = android.util.Log.DEBUG;
-    public static final int INFO = android.util.Log.INFO;
-    public static final int WARN = android.util.Log.WARN;
-    public static final int ERROR = android.util.Log.ERROR;
-    public static final int ASSERT = android.util.Log.ASSERT;
-
-    // Stores the beginning of the LogNode topology.
-    private static LogNode mLogNode;
-
-    /**
-     * Returns the next LogNode in the linked list.
-     */
-    public static LogNode getLogNode() {
-        return mLogNode;
-    }
-
-    /**
-     * Sets the LogNode data will be sent to.
-     */
-    public static void setLogNode(LogNode node) {
-        mLogNode = node;
-    }
-
-    /**
-     * Instructs the LogNode to print the log data provided. Other LogNodes can
-     * be chained to the end of the LogNode as desired.
-     *
-     * @param priority Log level of the data being logged. Verbose, Error, etc.
-     * @param tag Tag for for the log data. Can be used to organize log statements.
-     * @param msg The actual message to be logged.
-     * @param tr If an exception was thrown, this can be sent along for the logging facilities
-     *           to extract and print useful information.
-     */
-    public static void println(int priority, String tag, String msg, Throwable tr) {
-        if (mLogNode != null) {
-            mLogNode.println(priority, tag, msg, tr);
-        }
-    }
-
-    /**
-     * Instructs the LogNode to print the log data provided. Other LogNodes can
-     * be chained to the end of the LogNode as desired.
-     *
-     * @param priority Log level of the data being logged. Verbose, Error, etc.
-     * @param tag Tag for for the log data. Can be used to organize log statements.
-     * @param msg The actual message to be logged. The actual message to be logged.
-     */
-    public static void println(int priority, String tag, String msg) {
-        println(priority, tag, msg, null);
-    }
-
-   /**
-     * Prints a message at VERBOSE priority.
-     *
-     * @param tag Tag for for the log data. Can be used to organize log statements.
-     * @param msg The actual message to be logged.
-     * @param tr If an exception was thrown, this can be sent along for the logging facilities
-     *           to extract and print useful information.
-     */
-    public static void v(String tag, String msg, Throwable tr) {
-        println(VERBOSE, tag, msg, tr);
-    }
-
-    /**
-     * Prints a message at VERBOSE priority.
-     *
-     * @param tag Tag for for the log data. Can be used to organize log statements.
-     * @param msg The actual message to be logged.
-     */
-    public static void v(String tag, String msg) {
-        v(tag, msg, null);
-    }
-
-
-    /**
-     * Prints a message at DEBUG priority.
-     *
-     * @param tag Tag for for the log data. Can be used to organize log statements.
-     * @param msg The actual message to be logged.
-     * @param tr If an exception was thrown, this can be sent along for the logging facilities
-     *           to extract and print useful information.
-     */
-    public static void d(String tag, String msg, Throwable tr) {
-        println(DEBUG, tag, msg, tr);
-    }
-
-    /**
-     * Prints a message at DEBUG priority.
-     *
-     * @param tag Tag for for the log data. Can be used to organize log statements.
-     * @param msg The actual message to be logged.
-     */
-    public static void d(String tag, String msg) {
-        d(tag, msg, null);
-    }
-
-    /**
-     * Prints a message at INFO priority.
-     *
-     * @param tag Tag for for the log data. Can be used to organize log statements.
-     * @param msg The actual message to be logged.
-     * @param tr If an exception was thrown, this can be sent along for the logging facilities
-     *           to extract and print useful information.
-     */
-    public static void i(String tag, String msg, Throwable tr) {
-        println(INFO, tag, msg, tr);
-    }
-
-    /**
-     * Prints a message at INFO priority.
-     *
-     * @param tag Tag for for the log data. Can be used to organize log statements.
-     * @param msg The actual message to be logged.
-     */
-    public static void i(String tag, String msg) {
-        i(tag, msg, null);
-    }
-
-    /**
-     * Prints a message at WARN priority.
-     *
-     * @param tag Tag for for the log data. Can be used to organize log statements.
-     * @param msg The actual message to be logged.
-     * @param tr If an exception was thrown, this can be sent along for the logging facilities
-     *           to extract and print useful information.
-     */
-    public static void w(String tag, String msg, Throwable tr) {
-        println(WARN, tag, msg, tr);
-    }
-
-    /**
-     * Prints a message at WARN priority.
-     *
-     * @param tag Tag for for the log data. Can be used to organize log statements.
-     * @param msg The actual message to be logged.
-     */
-    public static void w(String tag, String msg) {
-        w(tag, msg, null);
-    }
-
-    /**
-     * Prints a message at WARN priority.
-     *
-     * @param tag Tag for for the log data. Can be used to organize log statements.
-     * @param tr If an exception was thrown, this can be sent along for the logging facilities
-     *           to extract and print useful information.
-     */
-    public static void w(String tag, Throwable tr) {
-        w(tag, null, tr);
-    }
-
-    /**
-     * Prints a message at ERROR priority.
-     *
-     * @param tag Tag for for the log data. Can be used to organize log statements.
-     * @param msg The actual message to be logged.
-     * @param tr If an exception was thrown, this can be sent along for the logging facilities
-     *           to extract and print useful information.
-     */
-    public static void e(String tag, String msg, Throwable tr) {
-        println(ERROR, tag, msg, tr);
-    }
-
-    /**
-     * Prints a message at ERROR priority.
-     *
-     * @param tag Tag for for the log data. Can be used to organize log statements.
-     * @param msg The actual message to be logged.
-     */
-    public static void e(String tag, String msg) {
-        e(tag, msg, null);
-    }
-
-    /**
-     * Prints a message at ASSERT priority.
-     *
-     * @param tag Tag for for the log data. Can be used to organize log statements.
-     * @param msg The actual message to be logged.
-     * @param tr If an exception was thrown, this can be sent along for the logging facilities
-     *           to extract and print useful information.
-     */
-    public static void wtf(String tag, String msg, Throwable tr) {
-        println(ASSERT, tag, msg, tr);
-    }
-
-    /**
-     * Prints a message at ASSERT priority.
-     *
-     * @param tag Tag for for the log data. Can be used to organize log statements.
-     * @param msg The actual message to be logged.
-     */
-    public static void wtf(String tag, String msg) {
-        wtf(tag, msg, null);
-    }
-
-    /**
-     * Prints a message at ASSERT priority.
-     *
-     * @param tag Tag for for the log data. Can be used to organize log statements.
-     * @param tr If an exception was thrown, this can be sent along for the logging facilities
-     *           to extract and print useful information.
-     */
-    public static void wtf(String tag, Throwable tr) {
-        wtf(tag, null, tr);
-    }
-}
diff --git a/input/gestures/BasicGestureDetect/BasicGestureDetect/src/main/java/com/example/android/common/logger/LogNode.java b/input/gestures/BasicGestureDetect/BasicGestureDetect/src/main/java/com/example/android/common/logger/LogNode.java
deleted file mode 100644
index bc37cab..0000000
--- a/input/gestures/BasicGestureDetect/BasicGestureDetect/src/main/java/com/example/android/common/logger/LogNode.java
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- * Copyright (C) 2012 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.common.logger;
-
-/**
- * Basic interface for a logging system that can output to one or more targets.
- * Note that in addition to classes that will output these logs in some format,
- * one can also implement this interface over a filter and insert that in the chain,
- * such that no targets further down see certain data, or see manipulated forms of the data.
- * You could, for instance, write a "ToHtmlLoggerNode" that just converted all the log data
- * it received to HTML and sent it along to the next node in the chain, without printing it
- * anywhere.
- */
-public interface LogNode {
-
-    /**
-     * Instructs first LogNode in the list to print the log data provided.
-     * @param priority Log level of the data being logged.  Verbose, Error, etc.
-     * @param tag Tag for for the log data.  Can be used to organize log statements.
-     * @param msg The actual message to be logged. The actual message to be logged.
-     * @param tr If an exception was thrown, this can be sent along for the logging facilities
-     *           to extract and print useful information.
-     */
-    public void println(int priority, String tag, String msg, Throwable tr);
-
-}
diff --git a/input/gestures/BasicGestureDetect/BasicGestureDetect/src/main/java/com/example/android/common/logger/LogView.java b/input/gestures/BasicGestureDetect/BasicGestureDetect/src/main/java/com/example/android/common/logger/LogView.java
deleted file mode 100644
index d86a88b..0000000
--- a/input/gestures/BasicGestureDetect/BasicGestureDetect/src/main/java/com/example/android/common/logger/LogView.java
+++ /dev/null
@@ -1,121 +0,0 @@
-package com.example.android.common.logger;
-
-import android.content.Context;
-import android.text.method.ScrollingMovementMethod;
-import android.util.*;
-import android.widget.TextView;
-
-/**
- * Created by alexlucas on 6/4/13.
- */
-
-
-public class LogView extends TextView implements LogNode {
-
-    public LogView(Context context) {
-        super(context);
-    }
-
-    public LogView(Context context, AttributeSet attrs) {
-        super(context, attrs);
-    }
-
-    public LogView(Context context, AttributeSet attrs, int defStyle) {
-        super(context, attrs, defStyle);
-    }
-
-    /**
-     * Formats the log data and prints it out to the LogView.
-     * @param priority Log level of the data being logged.  Verbose, Error, etc.
-     * @param tag Tag for for the log data.  Can be used to organize log statements.
-     * @param msg The actual message to be logged. The actual message to be logged.
-     * @param tr If an exception was thrown, this can be sent along for the logging facilities
-     *           to extract and print useful information.
-     */
-    @Override
-    public void println(int priority, String tag, String msg, Throwable tr) {
-        String priorityStr = null;
-
-        // For the purposes of this View, we want to print the priority as readable text.
-        switch(priority) {
-            case android.util.Log.VERBOSE:
-                priorityStr = "VERBOSE";
-                break;
-            case android.util.Log.DEBUG:
-                priorityStr = "DEBUG";
-                break;
-            case android.util.Log.INFO:
-                priorityStr = "INFO";
-                break;
-            case android.util.Log.WARN:
-                priorityStr = "WARN";
-                break;
-            case android.util.Log.ERROR:
-                priorityStr = "ERROR";
-                break;
-            case android.util.Log.ASSERT:
-                priorityStr = "ASSERT";
-                break;
-            default:
-                break;
-        }
-
-        // Handily, the Log class has a facility for converting a stack trace into a useable string.
-        String exceptionStr = null;
-        if (tr != null) {
-            exceptionStr = android.util.Log.getStackTraceString(tr);
-        }
-
-        // Take the priority, tag, message, and exception, and concatonate as necessary
-        // into one usable line of text.
-        String outputStr =  "";
-        outputStr = appendIfNotNull(outputStr, priorityStr, "\t");
-        outputStr = appendIfNotNull(outputStr, tag, "\t");
-        outputStr = appendIfNotNull(outputStr, msg, "\t");
-        outputStr = appendIfNotNull(outputStr, exceptionStr, "\t");
-
-        // Actually display the text we just generated within the LogView.
-        appendToLog(outputStr);
-
-        if (mNext != null) {
-            mNext.println(priority, tag, msg, tr);
-        }
-    }
-
-    public LogNode getNext() {
-        return mNext;
-    }
-
-    public void setNext(LogNode node) {
-        mNext = node;
-    }
-
-    /** Takes a string and adds to it, with a seperator, if the bit to be added isn't null. Since
-     * the logger takes so many arguments that might be null, this method helps cut out some of the
-     * agonizing tedium of writing the same 3 lines over and over.
-     * @param sourceStr The String to append to.
-     * @param appendStr The String to append
-     * @param delimiter The String to seperate the source and appendee strings. A tab or comma,
-     *                  for instance.
-     * @return The fully concatonated String
-     */
-    private String appendIfNotNull(String sourceStr, String appendStr, String delimiter) {
-        if (appendStr != null) {
-            if (appendStr.length() == 0) {
-                delimiter = "";
-            }
-            sourceStr += delimiter + appendStr;
-        }
-        return sourceStr;
-    }
-
-    // The next LogNode in the chain.
-    LogNode mNext;
-
-    /** Outputs the string as a new line of log data in the LogView. */
-    public void appendToLog(String s) {
-        append("\n" + s);
-    }
-
-
-}
diff --git a/input/gestures/BasicGestureDetect/BasicGestureDetect/src/main/java/com/example/android/common/logger/MessageOnlyLogFilter.java b/input/gestures/BasicGestureDetect/BasicGestureDetect/src/main/java/com/example/android/common/logger/MessageOnlyLogFilter.java
deleted file mode 100644
index 6b72771..0000000
--- a/input/gestures/BasicGestureDetect/BasicGestureDetect/src/main/java/com/example/android/common/logger/MessageOnlyLogFilter.java
+++ /dev/null
@@ -1,60 +0,0 @@
-/*
- * Copyright (C) 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.common.logger;
-
-/**
- * Simple {@link LogNode} filter, removes everything except the message.
- * Useful for situations like on-screen log output where you don't want a lot of metadata displayed,
- * just easy-to-read message updates as they're happening.
- */
-public class MessageOnlyLogFilter implements LogNode {
-
-    LogNode mNext;
-
-    /**
-     * Takes the "next" LogNode as a parameter, to simplify chaining.
-     *
-     * @param next The next LogNode in the pipeline.
-     */
-    public MessageOnlyLogFilter(LogNode next) {
-        mNext = next;
-    }
-
-    public MessageOnlyLogFilter() {
-    }
-
-    @Override
-    public void println(int priority, String tag, String msg, Throwable tr) {
-        if (mNext != null) {
-            getNext().println(Log.NONE, null, msg, null);
-        }
-    }
-
-    /**
-     * Returns the next LogNode in the linked list.
-     */
-    public LogNode getNext() {
-        return mNext;
-    }
-
-    /**
-     * Sets the LogNode data will be sent to..
-     */
-    public void setNext(LogNode node) {
-        mNext = node;
-    }
-
-}
diff --git a/input/gestures/BasicGestureDetect/BasicGestureDetect/src/main/java/com/example/android/common/widgets/SimpleTextFragment.java b/input/gestures/BasicGestureDetect/BasicGestureDetect/src/main/java/com/example/android/common/widgets/SimpleTextFragment.java
deleted file mode 100644
index bd51a1c..0000000
--- a/input/gestures/BasicGestureDetect/BasicGestureDetect/src/main/java/com/example/android/common/widgets/SimpleTextFragment.java
+++ /dev/null
@@ -1,98 +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.common.widgets;
-
-import android.os.Bundle;
-import android.support.v4.app.Fragment;
-import android.util.Log;
-import android.view.Gravity;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-import android.widget.TextView;
-
-/**
- * Simple fragment containing only a TextView.  Used by TextPagerAdapter to create
- * tutorial-style pages for apps.
- */
-public class SimpleTextFragment extends Fragment {
-
-    // Contains the text that will be displayed by this Fragment
-    String mText;
-
-    // Contains a resource ID for the text that will be displayed by this fragment.
-    int mTextId = -1;
-
-    // Keys which will be used to store/retrieve text passed in via setArguments.
-    public static final String TEXT_KEY = "text";
-    public static final String TEXT_ID_KEY = "text_id";
-
-    // For situations where the app wants to modify text at Runtime, exposing the TextView.
-    private TextView mTextView;
-
-    public SimpleTextFragment() {
-    }
-
-    @Override
-    public View onCreateView(LayoutInflater inflater, ViewGroup container,
-            Bundle savedInstanceState) {
-        // Before initializing the textView, check if any arguments were provided via setArguments.
-        processArguments();
-
-        // Create a new TextView and set its text to whatever was provided.
-        mTextView = new TextView(getActivity());
-        mTextView.setGravity(Gravity.CENTER);
-
-        if (mText != null) {
-            mTextView.setText(mText);
-            Log.i("SimpleTextFragment", mText);
-        }
-        return mTextView;
-    }
-
-    public TextView getTextView() {
-        return mTextView;
-    }
-
-    /**
-     * Changes the text for this TextView, according to the resource ID provided.
-     * @param stringId A resource ID representing the text content for this Fragment's TextView.
-     */
-    public void setText(int stringId) {
-        getTextView().setText(getActivity().getString(stringId));
-    }
-
-    /**
-     * Processes the arguments passed into this Fragment via setArguments method.
-     * Currently the method only looks for text or a textID, nothing else.
-     */
-    public void processArguments() {
-        // For most objects we'd handle the multiple possibilities for initialization variables
-        // as multiple constructors.  For Fragments, however, it's customary to use
-        // setArguments / getArguments.
-        if (getArguments() != null) {
-            Bundle args = getArguments();
-            if (args.containsKey(TEXT_KEY)) {
-                mText = args.getString(TEXT_KEY);
-                Log.d("Constructor", "Added Text.");
-            } else if (args.containsKey(TEXT_ID_KEY)) {
-                mTextId = args.getInt(TEXT_ID_KEY);
-                mText = getString(mTextId);
-            }
-        }
-    }
-}
\ No newline at end of file
diff --git a/input/gestures/BasicGestureDetect/BasicGestureDetect/src/main/res/drawable-hdpi/ic_launcher.png b/input/gestures/BasicGestureDetect/BasicGestureDetect/src/main/res/drawable-hdpi/ic_launcher.png
deleted file mode 100755
index 22ce606..0000000
--- a/input/gestures/BasicGestureDetect/BasicGestureDetect/src/main/res/drawable-hdpi/ic_launcher.png
+++ /dev/null
Binary files differ
diff --git a/input/gestures/BasicGestureDetect/BasicGestureDetect/src/main/res/drawable-mdpi/ic_launcher.png b/input/gestures/BasicGestureDetect/BasicGestureDetect/src/main/res/drawable-mdpi/ic_launcher.png
deleted file mode 100755
index f21e17b..0000000
--- a/input/gestures/BasicGestureDetect/BasicGestureDetect/src/main/res/drawable-mdpi/ic_launcher.png
+++ /dev/null
Binary files differ
diff --git a/input/gestures/BasicGestureDetect/BasicGestureDetect/src/main/res/drawable-xhdpi/ic_launcher.png b/input/gestures/BasicGestureDetect/BasicGestureDetect/src/main/res/drawable-xhdpi/ic_launcher.png
deleted file mode 100755
index 64b8059..0000000
--- a/input/gestures/BasicGestureDetect/BasicGestureDetect/src/main/res/drawable-xhdpi/ic_launcher.png
+++ /dev/null
Binary files differ
diff --git a/input/gestures/BasicGestureDetect/BasicGestureDetect/src/main/res/drawable-xxhdpi/ic_launcher.png b/input/gestures/BasicGestureDetect/BasicGestureDetect/src/main/res/drawable-xxhdpi/ic_launcher.png
deleted file mode 100755
index 6b4434a..0000000
--- a/input/gestures/BasicGestureDetect/BasicGestureDetect/src/main/res/drawable-xxhdpi/ic_launcher.png
+++ /dev/null
Binary files differ
diff --git a/input/gestures/BasicGestureDetect/BasicGestureDetect/src/main/res/layout/activity_main.xml b/input/gestures/BasicGestureDetect/BasicGestureDetect/src/main/res/layout/activity_main.xml
deleted file mode 100755
index 471748f..0000000
--- a/input/gestures/BasicGestureDetect/BasicGestureDetect/src/main/res/layout/activity_main.xml
+++ /dev/null
@@ -1,40 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-
-<!--
-  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.
-  -->
-
-<LinearLayout
-    xmlns:android="http://schemas.android.com/apk/res/android"
-    android:orientation="vertical"
-    android:layout_width="fill_parent"
-    android:layout_height="fill_parent">
-    <fragment
-        android:name="com.example.android.common.SimpleTextFragment"
-        android:id="@+id/intro_fragment"
-        android:layout_weight="1"
-        android:layout_width="match_parent"
-        android:layout_height="match_parent" />
-    <View
-        android:layout_width="fill_parent"
-        android:layout_height="1dp"
-        android:background="@android:color/darker_gray"/>
-    <fragment
-        android:name="com.example.android.basicgesturedetect.LogFragment"
-        android:id="@+id/log_fragment"
-        android:layout_weight="1"
-        android:layout_width="match_parent"
-        android:layout_height="match_parent" />
-</LinearLayout>
diff --git a/input/gestures/BasicGestureDetect/BasicGestureDetect/src/main/res/layout/log_fragment.xml b/input/gestures/BasicGestureDetect/BasicGestureDetect/src/main/res/layout/log_fragment.xml
deleted file mode 100644
index 6d79548..0000000
--- a/input/gestures/BasicGestureDetect/BasicGestureDetect/src/main/res/layout/log_fragment.xml
+++ /dev/null
@@ -1,33 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-
-<!--
-  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.
-  -->
-
-<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
-    android:id="@+id/log_scroll"
-    android:layout_width="match_parent"
-    android:layout_height="match_parent">
-
-    <com.example.android.common.logger.LogView
-        android:id="@+id/sample_output"
-        style="@style/Log"
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:clickable="true"
-        android:focusable="true"
-        android:text=""
-        android:gravity="bottom" />
-</ScrollView>
\ No newline at end of file
diff --git a/input/gestures/BasicGestureDetect/BasicGestureDetect/src/main/res/values-sw600dp/dimens.xml b/input/gestures/BasicGestureDetect/BasicGestureDetect/src/main/res/values-sw600dp/dimens.xml
deleted file mode 100644
index 886b05f..0000000
--- a/input/gestures/BasicGestureDetect/BasicGestureDetect/src/main/res/values-sw600dp/dimens.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<resources>
-    <!-- Customize dimensions originally defined in res/values/dimens.xml (such as
-         screen margins) for sw600dp devices (e.g. 7" tablets) here. -->
-</resources>
diff --git a/input/gestures/BasicGestureDetect/BasicGestureDetect/src/main/res/values-sw600dp/styles.xml b/input/gestures/BasicGestureDetect/BasicGestureDetect/src/main/res/values-sw600dp/styles.xml
deleted file mode 100644
index ffcbe8a..0000000
--- a/input/gestures/BasicGestureDetect/BasicGestureDetect/src/main/res/values-sw600dp/styles.xml
+++ /dev/null
@@ -1,28 +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.
-  -->
-
-<resources>
-
-    <style name="Widget.SampleOutput">
-        <item name="android:paddingTop">@dimen/margin_medium</item>
-        <item name="android:paddingBottom">@dimen/margin_medium</item>
-        <item name="android:paddingLeft">@dimen/margin_huge</item>
-        <item name="android:paddingRight">@dimen/margin_huge</item>
-        <item name="android:textAppearance">?android:textAppearanceLarge</item>
-        <item name="android:lineSpacingMultiplier">1.2</item>
-    </style>
-
-</resources>
diff --git a/input/gestures/BasicGestureDetect/BasicGestureDetect/src/main/res/values-sw720dp-land/dimens.xml b/input/gestures/BasicGestureDetect/BasicGestureDetect/src/main/res/values-sw720dp-land/dimens.xml
deleted file mode 100644
index 00059fc..0000000
--- a/input/gestures/BasicGestureDetect/BasicGestureDetect/src/main/res/values-sw720dp-land/dimens.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<resources>
-    <!-- Customize dimensions originally defined in res/values/dimens.xml (such as
-         screen margins) for sw720dp devices (e.g. 10" tablets) in landscape here. -->
-    <dimen name="activity_horizontal_margin">128dp</dimen>
-</resources>
diff --git a/input/gestures/BasicGestureDetect/BasicGestureDetect/src/main/res/values-v11/styles.xml b/input/gestures/BasicGestureDetect/BasicGestureDetect/src/main/res/values-v11/styles.xml
deleted file mode 100644
index c6c648b..0000000
--- a/input/gestures/BasicGestureDetect/BasicGestureDetect/src/main/res/values-v11/styles.xml
+++ /dev/null
@@ -1,19 +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.
-  -->
-
-<resources>
-    <style name="Theme.Base" parent="android:Theme.Holo.Light" />
-</resources>
diff --git a/input/gestures/BasicGestureDetect/BasicGestureDetect/src/main/res/values-v14/styles.xml b/input/gestures/BasicGestureDetect/BasicGestureDetect/src/main/res/values-v14/styles.xml
deleted file mode 100644
index a91fd03..0000000
--- a/input/gestures/BasicGestureDetect/BasicGestureDetect/src/main/res/values-v14/styles.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-<resources>
-
-    <!--
-        Base application theme for API 14+. This theme completely replaces
-        AppBaseTheme from BOTH res/values/styles.xml and
-        res/values-v11/styles.xml on API 14+ devices.
-    -->
-    <style name="AppBaseTheme" parent="android:Theme.Holo.Light.DarkActionBar">
-        <!-- API 14 theme customizations can go here. -->
-    </style>
-
-</resources>
diff --git a/input/gestures/BasicGestureDetect/BasicGestureDetect/src/main/res/values/dimens.xml b/input/gestures/BasicGestureDetect/BasicGestureDetect/src/main/res/values/dimens.xml
deleted file mode 100644
index 4f69897..0000000
--- a/input/gestures/BasicGestureDetect/BasicGestureDetect/src/main/res/values/dimens.xml
+++ /dev/null
@@ -1,24 +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.
-  -->
-
-<resources>
-
-    <!-- Define standard dimensions to comply with Holo-style grids and rhythm. -->
-
-    <dimen name="margin_medium">16dp</dimen>
-    <dimen name="margin_huge">64dp</dimen>
-
-</resources>
diff --git a/input/gestures/BasicGestureDetect/BasicGestureDetect/src/main/res/values/strings.xml b/input/gestures/BasicGestureDetect/BasicGestureDetect/src/main/res/values/strings.xml
deleted file mode 100755
index ce1ad02..0000000
--- a/input/gestures/BasicGestureDetect/BasicGestureDetect/src/main/res/values/strings.xml
+++ /dev/null
@@ -1,25 +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.
-  -->
-
-<resources>
-    <string name="app_name">Basic Gesture Detect</string>
-
-    <string name="intro_message">Welcome to Basic Gesture Detect!
-        In order to try this sample out, try dragging or tapping this text to see what happens!
-    </string>
-
-    <string name="clear_text">Clear Text</string>
-</resources>
diff --git a/input/gestures/BasicGestureDetect/BasicGestureDetect/src/main/res/values/styles.xml b/input/gestures/BasicGestureDetect/BasicGestureDetect/src/main/res/values/styles.xml
deleted file mode 100644
index 4d9bb98..0000000
--- a/input/gestures/BasicGestureDetect/BasicGestureDetect/src/main/res/values/styles.xml
+++ /dev/null
@@ -1,40 +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 thegi 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>
-
-    <!-- Activity themes -->
-
-    <style name="Theme.Base" parent="android:Theme.Light" />
-
-    <style name="Theme.Sample" parent="Theme.Base" />
-
-    <!-- Widget styling -->
-
-    <style name="Widget" />
-
-    <style name="Widget.SampleOutput">
-        <item name="android:padding">@dimen/margin_medium</item>
-        <item name="android:textAppearance">?android:textAppearanceMedium</item>
-        <item name="android:lineSpacingMultiplier">1.1</item>
-    </style>
-
-    <style name="Log" parent="Widget.SampleOutput">
-        <item name="android:typeface">monospace</item>
-    </style>
-
-
-</resources>
diff --git a/input/gestures/BasicGestureDetect/BasicGestureDetectSample/.gitignore b/input/gestures/BasicGestureDetect/BasicGestureDetectSample/.gitignore
new file mode 100644
index 0000000..6eb878d
--- /dev/null
+++ b/input/gestures/BasicGestureDetect/BasicGestureDetectSample/.gitignore
@@ -0,0 +1,16 @@
+# 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.
+src/template/
+src/common/
+build.gradle
diff --git a/input/gestures/BasicGestureDetect/BasicGestureDetectSample/README-singleview.txt b/input/gestures/BasicGestureDetect/BasicGestureDetectSample/README-singleview.txt
new file mode 100644
index 0000000..0cacd46
--- /dev/null
+++ b/input/gestures/BasicGestureDetect/BasicGestureDetectSample/README-singleview.txt
@@ -0,0 +1,47 @@
+<#--
+        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.
+-->
+
+Steps to implement SingleView template:
+-in template-params.xml.ftl:
+    -add the following line to common imports
+        <common src="activities"/>
+
+    -add a string for the action button's text using the element name "sample_action".
+    This element should be a child of <strings>:
+        <strings>
+        ...
+        <sample_action>ButtonText</sample_action>
+        ...
+        </strings>
+
+
+
+-Add a Fragment to handle behavior.  In your MainActivity.java class, it will reference a Fragment
+ called (yourProjectName)Fragment.java.  Create that file in your project, using the "main" source
+ folder instead of "common" or "templates".
+   For instance, if your package name is com.example.foo, create the file
+   src/main/java/com/example/foo/FooFragment.java
+
+
+-Within this fragment, make sure that the onCreate method has the line
+ "setHasOptionsMenu(true);", to enable the fragment to handle menu events.
+
+-In order to override menu events, override onOptionsItemSelected.
+
+-refer to sampleSamples/singleViewSample for a reference implementation of a
+project built on this template.
+
+
diff --git a/connectivity/sync/BasicSyncAdapter/BasicSyncAdapterTests/proguard-project.txt b/input/gestures/BasicGestureDetect/BasicGestureDetectSample/proguard-project.txt
similarity index 91%
copy from connectivity/sync/BasicSyncAdapter/BasicSyncAdapterTests/proguard-project.txt
copy to input/gestures/BasicGestureDetect/BasicGestureDetectSample/proguard-project.txt
index f2fe155..0d8f171 100644
--- a/connectivity/sync/BasicSyncAdapter/BasicSyncAdapterTests/proguard-project.txt
+++ b/input/gestures/BasicGestureDetect/BasicGestureDetectSample/proguard-project.txt
@@ -1,4 +1,4 @@
-# To enable ProGuard in your project, edit project.properties
+ To enable ProGuard in your project, edit project.properties
 # to define the proguard.config property as described in that file.
 #
 # Add project specific ProGuard rules here.
diff --git a/ui/actionbarcompat/ListPopupMenu/ListPopupMenu/src/main/AndroidManifest.xml b/input/gestures/BasicGestureDetect/BasicGestureDetectSample/src/main/AndroidManifest.xml
similarity index 62%
copy from ui/actionbarcompat/ListPopupMenu/ListPopupMenu/src/main/AndroidManifest.xml
copy to input/gestures/BasicGestureDetect/BasicGestureDetectSample/src/main/AndroidManifest.xml
index 7e9a861..1d7b3bd 100644
--- a/ui/actionbarcompat/ListPopupMenu/ListPopupMenu/src/main/AndroidManifest.xml
+++ b/input/gestures/BasicGestureDetect/BasicGestureDetectSample/src/main/AndroidManifest.xml
@@ -1,11 +1,12 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2013 The Android Open Source Project
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ 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
+     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,
@@ -13,24 +14,24 @@
  See the License for the specific language governing permissions and
  limitations under the License.
 -->
+
+
+
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
-    package="com.example.android.actionbarcompat.listpopupmenu"
+    package="com.example.android.basicgesturedetect"
     android:versionCode="1"
     android:versionName="1.0">
 
-    <!-- ActionBarCompat provides an implementation of Popup Menu from API v7 onwards -->
-    <uses-sdk
-        android:minSdkVersion="7"
-        android:targetSdkVersion="17" />
+    <uses-sdk android:minSdkVersion="4" android:targetSdkVersion="17" />
 
-    <application
-        android:icon="@drawable/ic_launcher"
+    <application android:allowBackup="true"
         android:label="@string/app_name"
-        android:theme="@style/Theme.AppCompat"
-        android:allowBackup="true">
+        android:icon="@drawable/ic_launcher"
+        android:theme="@style/AppTheme">
 
-        <activity android:name=".MainActivity">
-            <!-- Launcher Intent filter -->
+        <activity android:name=".MainActivity"
+                  android:label="@string/app_name"
+                  android:uiOptions="splitActionBarWhenNarrow">
             <intent-filter>
                 <action android:name="android.intent.action.MAIN" />
                 <category android:name="android.intent.category.LAUNCHER" />
@@ -38,4 +39,5 @@
         </activity>
     </application>
 
-</manifest>
\ No newline at end of file
+
+</manifest>
diff --git a/input/gestures/BasicGestureDetect/BasicGestureDetectSample/src/main/java/com/example/android/basicgesturedetect/BasicGestureDetectFragment.java b/input/gestures/BasicGestureDetect/BasicGestureDetectSample/src/main/java/com/example/android/basicgesturedetect/BasicGestureDetectFragment.java
new file mode 100644
index 0000000..820e972
--- /dev/null
+++ b/input/gestures/BasicGestureDetect/BasicGestureDetectSample/src/main/java/com/example/android/basicgesturedetect/BasicGestureDetectFragment.java
@@ -0,0 +1,81 @@
+/*
+* Copyright (C) 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.basicgesturedetect;
+
+import android.content.Intent;
+import android.os.Bundle;
+import android.support.v4.app.Fragment;
+import android.view.GestureDetector;
+import android.view.MenuItem;
+import android.view.MotionEvent;
+import android.view.View;
+
+import com.example.android.common.logger.Log;
+import com.example.android.common.logger.LogFragment;
+
+public class BasicGestureDetectFragment extends Fragment{
+    @Override
+    public void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        setHasOptionsMenu(true);
+    }
+
+    @Override
+    public void onActivityCreated(Bundle savedInstanceState) {
+        super.onActivityCreated(savedInstanceState);
+        View gestureView = getActivity().findViewById(R.id.sample_output);
+        gestureView.setClickable(true);
+        gestureView.setFocusable(true);
+
+        // BEGIN_INCLUDE(init_detector)
+
+        // First create the GestureListener that will include all our callbacks.
+        // Then create the GestureDetector, which takes that listener as an argument.
+        GestureDetector.SimpleOnGestureListener gestureListener = new GestureListener();
+        final GestureDetector gd = new GestureDetector(getActivity(), gestureListener);
+
+        /* For the view where gestures will occur, create an onTouchListener that sends
+         * all motion events to the gesture detector.  When the gesture detector
+         * actually detects an event, it will use the callbacks you created in the
+         * SimpleOnGestureListener to alert your application.
+        */
+
+        gestureView.setOnTouchListener(new View.OnTouchListener() {
+            @Override
+            public boolean onTouch(View view, MotionEvent motionEvent) {
+                gd.onTouchEvent(motionEvent);
+                return false;
+            }
+        });
+        // END_INCLUDE(init_detector)
+    }
+
+
+    @Override
+    public boolean onOptionsItemSelected(MenuItem item) {
+        if (item.getItemId() == R.id.sample_action) {
+            clearLog();
+        }
+        return true;
+    }
+
+    public void clearLog() {
+        LogFragment logFragment =  ((LogFragment) getActivity().getSupportFragmentManager()
+                .findFragmentById(R.id.log_fragment));
+        logFragment.getLogView().setText("");
+    }
+}
diff --git a/ui/actionbar/DoneBar/DoneBar/src/main/res/drawable-hdpi/ic_launcher.png b/input/gestures/BasicGestureDetect/BasicGestureDetectSample/src/main/res/drawable-hdpi/ic_launcher.png
similarity index 100%
copy from ui/actionbar/DoneBar/DoneBar/src/main/res/drawable-hdpi/ic_launcher.png
copy to input/gestures/BasicGestureDetect/BasicGestureDetectSample/src/main/res/drawable-hdpi/ic_launcher.png
Binary files differ
diff --git a/ui/actionbar/DoneBar/DoneBar/src/main/res/drawable-mdpi/ic_launcher.png b/input/gestures/BasicGestureDetect/BasicGestureDetectSample/src/main/res/drawable-mdpi/ic_launcher.png
similarity index 100%
copy from ui/actionbar/DoneBar/DoneBar/src/main/res/drawable-mdpi/ic_launcher.png
copy to input/gestures/BasicGestureDetect/BasicGestureDetectSample/src/main/res/drawable-mdpi/ic_launcher.png
Binary files differ
diff --git a/ui/actionbar/DoneBar/DoneBar/src/main/res/drawable-xhdpi/ic_launcher.png b/input/gestures/BasicGestureDetect/BasicGestureDetectSample/src/main/res/drawable-xhdpi/ic_launcher.png
similarity index 100%
copy from ui/actionbar/DoneBar/DoneBar/src/main/res/drawable-xhdpi/ic_launcher.png
copy to input/gestures/BasicGestureDetect/BasicGestureDetectSample/src/main/res/drawable-xhdpi/ic_launcher.png
Binary files differ
diff --git a/ui/actionbar/DoneBar/DoneBar/src/main/res/drawable-xxhdpi/ic_launcher.png b/input/gestures/BasicGestureDetect/BasicGestureDetectSample/src/main/res/drawable-xxhdpi/ic_launcher.png
similarity index 100%
copy from ui/actionbar/DoneBar/DoneBar/src/main/res/drawable-xxhdpi/ic_launcher.png
copy to input/gestures/BasicGestureDetect/BasicGestureDetectSample/src/main/res/drawable-xxhdpi/ic_launcher.png
Binary files differ
diff --git a/input/gestures/BasicGestureDetect/BasicGestureDetectSample/tests/AndroidManifest.xml b/input/gestures/BasicGestureDetect/BasicGestureDetectSample/tests/AndroidManifest.xml
new file mode 100644
index 0000000..3c5487c
--- /dev/null
+++ b/input/gestures/BasicGestureDetect/BasicGestureDetectSample/tests/AndroidManifest.xml
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  Copyright (C) 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 name must be unique so suffix with "tests" so package loader doesn't ignore us -->
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+          package="com.example.android.basicgesturedetect.tests"
+          android:versionCode="1"
+          android:versionName="1.0">
+
+    <uses-sdk
+            android:minSdkVersion="18"
+            android:targetSdkVersion="19" />
+
+    <!-- We add an application tag here just so that we can indicate that
+         this package needs to link against the android.test library,
+         which is needed when building test cases. -->
+    <application>
+        <uses-library android:name="android.test.runner" />
+    </application>
+
+    <!--
+    Specifies the instrumentation test runner used to run the tests.
+    -->
+    <instrumentation
+            android:name="android.test.InstrumentationTestRunner"
+            android:targetPackage="com.example.android.basicgesturedetect"
+            android:label="Tests for com.example.android.basicgesturedetect" />
+
+</manifest>
\ No newline at end of file
diff --git a/input/gestures/BasicGestureDetect/BasicGestureDetectSample/tests/src/com/example/android/basicgesturedetect/tests/SampleTests.java b/input/gestures/BasicGestureDetect/BasicGestureDetectSample/tests/src/com/example/android/basicgesturedetect/tests/SampleTests.java
new file mode 100644
index 0000000..e72c22e
--- /dev/null
+++ b/input/gestures/BasicGestureDetect/BasicGestureDetectSample/tests/src/com/example/android/basicgesturedetect/tests/SampleTests.java
@@ -0,0 +1,79 @@
+/*
+* 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.
+*/
+
+
+
+/*
+* Copyright (C) 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.basicgesturedetect.tests;
+
+import com.example.android.basicgesturedetect.*;
+
+import android.test.ActivityInstrumentationTestCase2;
+
+/**
+* Tests for BasicGestureDetect sample.
+*/
+public class SampleTests extends ActivityInstrumentationTestCase2<MainActivity> {
+
+    private MainActivity mTestActivity;
+    private BasicGestureDetectFragment mTestFragment;
+
+    public SampleTests() {
+        super(MainActivity.class);
+    }
+
+    @Override
+    protected void setUp() throws Exception {
+        super.setUp();
+
+        // Starts the activity under test using the default Intent with:
+        // action = {@link Intent#ACTION_MAIN}
+        // flags = {@link Intent#FLAG_ACTIVITY_NEW_TASK}
+        // All other fields are null or empty.
+        mTestActivity = getActivity();
+        mTestFragment = (BasicGestureDetectFragment)
+            mTestActivity.getSupportFragmentManager().getFragments().get(1);
+    }
+
+    /**
+    * Test if the test fixture has been set up correctly.
+    */
+    public void testPreconditions() {
+        //Try to add a message to add context to your assertions. These messages will be shown if
+        //a tests fails and make it easy to understand why a test failed
+        assertNotNull("mTestActivity is null", mTestActivity);
+        assertNotNull("mTestFragment is null", mTestFragment);
+    }
+
+    /**
+    * Add more tests below.
+    */
+
+}
\ No newline at end of file
diff --git a/input/gestures/BasicGestureDetect/README.txt b/input/gestures/BasicGestureDetect/README.txt
deleted file mode 100644
index 38608df..0000000
--- a/input/gestures/BasicGestureDetect/README.txt
+++ /dev/null
@@ -1,6 +0,0 @@
-Build Instructions
--------------------
-This sample uses the Gradle build system. To build this project, use the
-"gradlew build" command.
-
-To see a list of all available commands, run "gradlew tasks".
\ No newline at end of file
diff --git a/input/gestures/BasicGestureDetect/build.gradle b/input/gestures/BasicGestureDetect/build.gradle
index 036abc8..cca9ac3 100644
--- a/input/gestures/BasicGestureDetect/build.gradle
+++ b/input/gestures/BasicGestureDetect/build.gradle
@@ -1,8 +1,10 @@
-buildscript {
-    repositories {
-        mavenCentral()
-    }
-    dependencies {
-        classpath 'com.android.tools.build:gradle:0.5.+'
-    }
+// BEGIN_EXCLUDE
+import com.example.android.samples.build.SampleGenPlugin
+apply plugin: SampleGenPlugin
+
+samplegen {
+  pathToBuild "../../../../../build"
+  pathToSamplesCommon "../../../common"
 }
+apply from: "../../../../../build/build.gradle"
+// END_EXCLUDE
diff --git a/input/gestures/BasicGestureDetect/buildSrc/build.gradle b/input/gestures/BasicGestureDetect/buildSrc/build.gradle
new file mode 100644
index 0000000..e344a8c
--- /dev/null
+++ b/input/gestures/BasicGestureDetect/buildSrc/build.gradle
@@ -0,0 +1,18 @@
+
+
+
+repositories {
+    mavenCentral()
+}
+dependencies {
+    compile 'org.freemarker:freemarker:2.3.20'
+}
+
+sourceSets {
+    main {
+        groovy {
+            srcDir new File(rootDir, "../../../../../../build/buildSrc/src/main/groovy")
+        }
+    }
+}
+
diff --git a/input/gestures/BasicGestureDetect/gradle/wrapper/gradle-wrapper.properties b/input/gestures/BasicGestureDetect/gradle/wrapper/gradle-wrapper.properties
index 055ba6f..5c22dec 100644
--- a/input/gestures/BasicGestureDetect/gradle/wrapper/gradle-wrapper.properties
+++ b/input/gestures/BasicGestureDetect/gradle/wrapper/gradle-wrapper.properties
@@ -1,5 +1,4 @@
-#
-#Mon Jul 22 11:40:20 PDT 2013
+#Wed Apr 10 15:27:10 PDT 2013
 distributionBase=GRADLE_USER_HOME
 distributionPath=wrapper/dists
 zipStoreBase=GRADLE_USER_HOME
diff --git a/input/gestures/BasicGestureDetect/settings.gradle b/input/gestures/BasicGestureDetect/settings.gradle
index 2270ab7..ba7e8c0 100644
--- a/input/gestures/BasicGestureDetect/settings.gradle
+++ b/input/gestures/BasicGestureDetect/settings.gradle
@@ -1 +1,4 @@
-include ':BasicGestureDetect'
+
+
+
+include 'BasicGestureDetectSample'
diff --git a/input/gestures/BasicGestureDetect/template-params.xml b/input/gestures/BasicGestureDetect/template-params.xml
new file mode 100644
index 0000000..fc8b48d
--- /dev/null
+++ b/input/gestures/BasicGestureDetect/template-params.xml
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ 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.
+-->
+<sample>
+    <name>BasicGestureDetect</name>
+    <group>Input</group>
+    <package>com.example.android.basicgesturedetect</package>
+
+
+    <!-- change minSdk if needed-->
+    <minSdk>18</minSdk>
+
+
+    <strings>
+        <intro>
+            <![CDATA[
+            Welcome to Basic Gesture Detect!
+            In order to try this sample out, try dragging or tapping this text to see what happens!
+            ]]>
+        </intro>
+        <sample_action>Clear Text</sample_action>
+    </strings>
+
+    <template src="base"/>
+    <template src="SingleView"/>
+    <common src="logger"/>
+    <common src="activities"/>
+
+</sample>
diff --git a/input/multitouch/BasicMultitouch/BasicMultitouch/build.gradle b/input/multitouch/BasicMultitouch/BasicMultitouch/build.gradle
deleted file mode 100644
index 945e1f5..0000000
--- a/input/multitouch/BasicMultitouch/BasicMultitouch/build.gradle
+++ /dev/null
@@ -1,6 +0,0 @@
-apply plugin: 'android'
-
-android {
-    compileSdkVersion 18
-    buildToolsVersion "18.0.0"
-}
diff --git a/input/multitouch/BasicMultitouch/BasicMultitouch/src/main/images/MultitouchSample.png b/input/multitouch/BasicMultitouch/BasicMultitouch/src/main/images/MultitouchSample.png
deleted file mode 100644
index 17447e9..0000000
--- a/input/multitouch/BasicMultitouch/BasicMultitouch/src/main/images/MultitouchSample.png
+++ /dev/null
Binary files differ
diff --git a/input/multitouch/BasicMultitouch/BasicMultitouch/src/main/res/drawable-hdpi/ic_launcher.png b/input/multitouch/BasicMultitouch/BasicMultitouch/src/main/res/drawable-hdpi/ic_launcher.png
deleted file mode 100644
index c49a01f..0000000
--- a/input/multitouch/BasicMultitouch/BasicMultitouch/src/main/res/drawable-hdpi/ic_launcher.png
+++ /dev/null
Binary files differ
diff --git a/input/multitouch/BasicMultitouch/BasicMultitouch/src/main/res/drawable-mdpi/ic_launcher.png b/input/multitouch/BasicMultitouch/BasicMultitouch/src/main/res/drawable-mdpi/ic_launcher.png
deleted file mode 100644
index 34d8c42..0000000
--- a/input/multitouch/BasicMultitouch/BasicMultitouch/src/main/res/drawable-mdpi/ic_launcher.png
+++ /dev/null
Binary files differ
diff --git a/input/multitouch/BasicMultitouch/BasicMultitouch/src/main/res/drawable-xhdpi/ic_launcher.png b/input/multitouch/BasicMultitouch/BasicMultitouch/src/main/res/drawable-xhdpi/ic_launcher.png
deleted file mode 100644
index abb5f12..0000000
--- a/input/multitouch/BasicMultitouch/BasicMultitouch/src/main/res/drawable-xhdpi/ic_launcher.png
+++ /dev/null
Binary files differ
diff --git a/input/multitouch/BasicMultitouch/BasicMultitouch/src/main/res/drawable-xxhdpi/ic_launcher.png b/input/multitouch/BasicMultitouch/BasicMultitouch/src/main/res/drawable-xxhdpi/ic_launcher.png
deleted file mode 100644
index ef649c1..0000000
--- a/input/multitouch/BasicMultitouch/BasicMultitouch/src/main/res/drawable-xxhdpi/ic_launcher.png
+++ /dev/null
Binary files differ
diff --git a/input/multitouch/BasicMultitouch/BasicMultitouch/src/main/res/values/strings.xml b/input/multitouch/BasicMultitouch/BasicMultitouch/src/main/res/values/strings.xml
deleted file mode 100644
index 541639c..0000000
--- a/input/multitouch/BasicMultitouch/BasicMultitouch/src/main/res/values/strings.xml
+++ /dev/null
@@ -1,26 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-  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.
--->
-
-<resources>
-
-    <string name="app_name">BasicMultitouch</string>
-    <string name="explanation">This samples demonstrates the use of <b>MotionEvent</b> properties
- to keep track of individual touches across multiple touch events.\n\n
-Touch the screen with multiple fingers to show that the pointer id
-(also represented by a colour) does not change as new touch events are received.</string>
-
-</resources>
\ No newline at end of file
diff --git a/input/multitouch/BasicMultitouch/BasicMultitouchSample/.gitignore b/input/multitouch/BasicMultitouch/BasicMultitouchSample/.gitignore
new file mode 100644
index 0000000..6eb878d
--- /dev/null
+++ b/input/multitouch/BasicMultitouch/BasicMultitouchSample/.gitignore
@@ -0,0 +1,16 @@
+# 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.
+src/template/
+src/common/
+build.gradle
diff --git a/connectivity/sync/BasicSyncAdapter/BasicSyncAdapterTests/proguard-project.txt b/input/multitouch/BasicMultitouch/BasicMultitouchSample/proguard-project.txt
similarity index 91%
copy from connectivity/sync/BasicSyncAdapter/BasicSyncAdapterTests/proguard-project.txt
copy to input/multitouch/BasicMultitouch/BasicMultitouchSample/proguard-project.txt
index f2fe155..0d8f171 100644
--- a/connectivity/sync/BasicSyncAdapter/BasicSyncAdapterTests/proguard-project.txt
+++ b/input/multitouch/BasicMultitouch/BasicMultitouchSample/proguard-project.txt
@@ -1,4 +1,4 @@
-# To enable ProGuard in your project, edit project.properties
+ To enable ProGuard in your project, edit project.properties
 # to define the proguard.config property as described in that file.
 #
 # Add project specific ProGuard rules here.
diff --git a/input/multitouch/BasicMultitouch/BasicMultitouch/src/main/AndroidManifest.xml b/input/multitouch/BasicMultitouch/BasicMultitouchSample/src/main/AndroidManifest.xml
similarity index 89%
rename from input/multitouch/BasicMultitouch/BasicMultitouch/src/main/AndroidManifest.xml
rename to input/multitouch/BasicMultitouch/BasicMultitouchSample/src/main/AndroidManifest.xml
index d6709ef..043345c 100644
--- a/input/multitouch/BasicMultitouch/BasicMultitouch/src/main/AndroidManifest.xml
+++ b/input/multitouch/BasicMultitouch/BasicMultitouchSample/src/main/AndroidManifest.xml
@@ -16,7 +16,7 @@
 -->
 
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
-    package="com.android.example.input.multitouch.basicMultitouch"
+    package="com.example.android.basicmultitouch"
     android:versionCode="1"
     android:versionName="1.0" >
 
@@ -30,7 +30,7 @@
         android:label="@string/app_name"
         android:theme="@style/AppTheme" >
         <activity
-            android:name="com.example.android.input.multitouch.basicMultitouch.MainActivity"
+            android:name=".MainActivity"
             android:label="@string/app_name" >
             <intent-filter>
                 <action android:name="android.intent.action.MAIN" />
diff --git a/input/multitouch/BasicMultitouch/BasicMultitouch/src/main/java/com/example/android/input/multitouch/basicMultitouch/MainActivity.java b/input/multitouch/BasicMultitouch/BasicMultitouchSample/src/main/java/com/example/android/basicmultitouch/MainActivity.java
similarity index 86%
rename from input/multitouch/BasicMultitouch/BasicMultitouch/src/main/java/com/example/android/input/multitouch/basicMultitouch/MainActivity.java
rename to input/multitouch/BasicMultitouch/BasicMultitouchSample/src/main/java/com/example/android/basicmultitouch/MainActivity.java
index 627ada5..fc95a60 100644
--- a/input/multitouch/BasicMultitouch/BasicMultitouch/src/main/java/com/example/android/input/multitouch/basicMultitouch/MainActivity.java
+++ b/input/multitouch/BasicMultitouch/BasicMultitouchSample/src/main/java/com/example/android/basicmultitouch/MainActivity.java
@@ -14,24 +14,21 @@
  * limitations under the License.
  */
 
-package com.example.android.input.multitouch.basicMultitouch;
+package com.example.android.basicmultitouch;
 
 import android.app.Activity;
 import android.os.Bundle;
-import android.view.MotionEvent;
-
-import com.android.example.input.multitouch.basicMultitouch.R;
 
 /**
  * This is an example of keeping track of individual touches across multiple
- * {@link MotionEvent}s.
+ * {@link android.view.MotionEvent}s.
  * <p>
  * This is illustrated by a View ({@link TouchDisplayView}) that responds to
  * touch events and draws coloured circles for each pointer, stores the last
  * positions of this pointer and draws them. This example shows the relationship
  * between MotionEvent indices, pointer identifiers and actions.
  *
- * @see MotionEvent
+ * @see android.view.MotionEvent
  */
 public class MainActivity extends Activity {
     TouchDisplayView mView;
diff --git a/input/multitouch/BasicMultitouch/BasicMultitouch/src/main/java/com/example/android/common/Pools.java b/input/multitouch/BasicMultitouch/BasicMultitouchSample/src/main/java/com/example/android/basicmultitouch/Pools.java
similarity index 98%
rename from input/multitouch/BasicMultitouch/BasicMultitouch/src/main/java/com/example/android/common/Pools.java
rename to input/multitouch/BasicMultitouch/BasicMultitouchSample/src/main/java/com/example/android/basicmultitouch/Pools.java
index 67c937b..0eda0ee 100644
--- a/input/multitouch/BasicMultitouch/BasicMultitouch/src/main/java/com/example/android/common/Pools.java
+++ b/input/multitouch/BasicMultitouch/BasicMultitouchSample/src/main/java/com/example/android/basicmultitouch/Pools.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package com.example.android.common;
+package com.example.android.basicmultitouch;
 
 /**
  * Helper class for crating pools of objects. An example use looks like this:
diff --git a/input/multitouch/BasicMultitouch/BasicMultitouch/src/main/java/com/example/android/input/multitouch/basicMultitouch/TouchDisplayView.java b/input/multitouch/BasicMultitouch/BasicMultitouchSample/src/main/java/com/example/android/basicmultitouch/TouchDisplayView.java
similarity index 95%
rename from input/multitouch/BasicMultitouch/BasicMultitouch/src/main/java/com/example/android/input/multitouch/basicMultitouch/TouchDisplayView.java
rename to input/multitouch/BasicMultitouch/BasicMultitouchSample/src/main/java/com/example/android/basicmultitouch/TouchDisplayView.java
index 55bcf8f..78e6abe 100644
--- a/input/multitouch/BasicMultitouch/BasicMultitouch/src/main/java/com/example/android/input/multitouch/basicMultitouch/TouchDisplayView.java
+++ b/input/multitouch/BasicMultitouch/BasicMultitouchSample/src/main/java/com/example/android/basicmultitouch/TouchDisplayView.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package com.example.android.input.multitouch.basicMultitouch;
+package com.example.android.basicmultitouch;
 
 import android.content.Context;
 import android.graphics.Canvas;
@@ -26,11 +26,11 @@
 import android.view.MotionEvent;
 import android.view.View;
 
-import com.example.android.common.Pools.SimplePool;
+import com.example.android.basicmultitouch.Pools.SimplePool;
 
 /**
  * View that shows touch events and their history. This view demonstrates the
- * use of {@link #onTouchEvent(MotionEvent)} and {@link MotionEvent}s to keep
+ * use of {@link #onTouchEvent(android.view.MotionEvent)} and {@link android.view.MotionEvent}s to keep
  * track of touch pointers across events.
  */
 public class TouchDisplayView extends View {
@@ -123,7 +123,7 @@
         super(context, attrs);
 
         // SparseArray for touch events, indexed by touch id
-        mTouches = new SparseArray<TouchDisplayView.TouchHistory>(10);
+        mTouches = new SparseArray<TouchHistory>(10);
 
         initialisePaint();
     }
@@ -337,7 +337,7 @@
     };
 
     /**
-     * Sets up the required {@link Paint} objects for the screen density of this
+     * Sets up the required {@link android.graphics.Paint} objects for the screen density of this
      * device.
      */
     private void initialisePaint() {
@@ -360,9 +360,9 @@
     }
 
     /**
-     * Draws the data encapsulated by a {@link TouchHistory} object to a canvas.
+     * Draws the data encapsulated by a {@link TouchDisplayView.TouchHistory} object to a canvas.
      * A large circle indicates the current position held by the
-     * {@link TouchHistory} object, while a smaller circle is drawn for each
+     * {@link TouchDisplayView.TouchHistory} object, while a smaller circle is drawn for each
      * entry in its history. The size of the large circle is scaled depending on
      * its pressure, clamped to a maximum of <code>1.0</code>.
      *
@@ -370,7 +370,7 @@
      * @param id
      * @param data
      */
-    protected void drawCircle(Canvas canvas, int id, TouchDisplayView.TouchHistory data) {
+    protected void drawCircle(Canvas canvas, int id, TouchHistory data) {
         // select the color based on the id
         int color = COLORS[id % COLORS.length];
         mCirclePaint.setColor(color);
diff --git a/ui/actionbar/DoneBar/DoneBar/src/main/res/drawable-hdpi/ic_launcher.png b/input/multitouch/BasicMultitouch/BasicMultitouchSample/src/main/res/drawable-hdpi/ic_launcher.png
similarity index 100%
copy from ui/actionbar/DoneBar/DoneBar/src/main/res/drawable-hdpi/ic_launcher.png
copy to input/multitouch/BasicMultitouch/BasicMultitouchSample/src/main/res/drawable-hdpi/ic_launcher.png
Binary files differ
diff --git a/ui/actionbar/DoneBar/DoneBar/src/main/res/drawable-mdpi/ic_launcher.png b/input/multitouch/BasicMultitouch/BasicMultitouchSample/src/main/res/drawable-mdpi/ic_launcher.png
similarity index 100%
copy from ui/actionbar/DoneBar/DoneBar/src/main/res/drawable-mdpi/ic_launcher.png
copy to input/multitouch/BasicMultitouch/BasicMultitouchSample/src/main/res/drawable-mdpi/ic_launcher.png
Binary files differ
diff --git a/ui/actionbar/DoneBar/DoneBar/src/main/res/drawable-xhdpi/ic_launcher.png b/input/multitouch/BasicMultitouch/BasicMultitouchSample/src/main/res/drawable-xhdpi/ic_launcher.png
similarity index 100%
copy from ui/actionbar/DoneBar/DoneBar/src/main/res/drawable-xhdpi/ic_launcher.png
copy to input/multitouch/BasicMultitouch/BasicMultitouchSample/src/main/res/drawable-xhdpi/ic_launcher.png
Binary files differ
diff --git a/ui/actionbar/DoneBar/DoneBar/src/main/res/drawable-xxhdpi/ic_launcher.png b/input/multitouch/BasicMultitouch/BasicMultitouchSample/src/main/res/drawable-xxhdpi/ic_launcher.png
similarity index 100%
copy from ui/actionbar/DoneBar/DoneBar/src/main/res/drawable-xxhdpi/ic_launcher.png
copy to input/multitouch/BasicMultitouch/BasicMultitouchSample/src/main/res/drawable-xxhdpi/ic_launcher.png
Binary files differ
diff --git a/input/multitouch/BasicMultitouch/BasicMultitouch/src/main/res/layout/layout_mainactivity.xml b/input/multitouch/BasicMultitouch/BasicMultitouchSample/src/main/res/layout/layout_mainactivity.xml
similarity index 79%
rename from input/multitouch/BasicMultitouch/BasicMultitouch/src/main/res/layout/layout_mainactivity.xml
rename to input/multitouch/BasicMultitouch/BasicMultitouchSample/src/main/res/layout/layout_mainactivity.xml
index a53e5f1..539a43a 100644
--- a/input/multitouch/BasicMultitouch/BasicMultitouch/src/main/res/layout/layout_mainactivity.xml
+++ b/input/multitouch/BasicMultitouch/BasicMultitouchSample/src/main/res/layout/layout_mainactivity.xml
@@ -8,9 +8,9 @@
         android:layout_height="wrap_content"
         android:layout_gravity="center"
         android:padding="75dp"
-        android:text="@string/explanation" />
+        android:text="@string/intro_message" />
 
-    <com.example.android.input.multitouch.basicMultitouch.TouchDisplayView
+    <com.example.android.basicmultitouch.TouchDisplayView
         android:layout_width="wrap_content"
         android:layout_height="wrap_content" />
 
diff --git a/input/multitouch/BasicMultitouch/BasicMultitouch/src/main/res/values-v11/styles.xml b/input/multitouch/BasicMultitouch/BasicMultitouchSample/src/main/res/values-v11/styles.xml
similarity index 100%
rename from input/multitouch/BasicMultitouch/BasicMultitouch/src/main/res/values-v11/styles.xml
rename to input/multitouch/BasicMultitouch/BasicMultitouchSample/src/main/res/values-v11/styles.xml
diff --git a/input/multitouch/BasicMultitouch/BasicMultitouch/src/main/res/values-v14/styles.xml b/input/multitouch/BasicMultitouch/BasicMultitouchSample/src/main/res/values-v14/styles.xml
similarity index 100%
rename from input/multitouch/BasicMultitouch/BasicMultitouch/src/main/res/values-v14/styles.xml
rename to input/multitouch/BasicMultitouch/BasicMultitouchSample/src/main/res/values-v14/styles.xml
diff --git a/ui/holo/BorderlessButtons/BorderlessButtons/src/main/res/values-sw600dp/dimens.xml b/input/multitouch/BasicMultitouch/BasicMultitouchSample/src/main/res/values/strings.xml
similarity index 89%
rename from ui/holo/BorderlessButtons/BorderlessButtons/src/main/res/values-sw600dp/dimens.xml
rename to input/multitouch/BasicMultitouch/BasicMultitouchSample/src/main/res/values/strings.xml
index 0e00174..5765548 100644
--- a/ui/holo/BorderlessButtons/BorderlessButtons/src/main/res/values-sw600dp/dimens.xml
+++ b/input/multitouch/BasicMultitouch/BasicMultitouchSample/src/main/res/values/strings.xml
@@ -1,3 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
 <!--
   Copyright 2013 The Android Open Source Project
 
@@ -12,10 +13,8 @@
   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>
 
-    <dimen name="page_margin">@dimen/margin_huge</dimen>
-
-</resources>
+</resources>
\ No newline at end of file
diff --git a/input/multitouch/BasicMultitouch/BasicMultitouch/src/main/res/values/styles.xml b/input/multitouch/BasicMultitouch/BasicMultitouchSample/src/main/res/values/styles.xml
similarity index 84%
rename from input/multitouch/BasicMultitouch/BasicMultitouch/src/main/res/values/styles.xml
rename to input/multitouch/BasicMultitouch/BasicMultitouchSample/src/main/res/values/styles.xml
index dedc633..e56d4f8 100644
--- a/input/multitouch/BasicMultitouch/BasicMultitouch/src/main/res/values/styles.xml
+++ b/input/multitouch/BasicMultitouch/BasicMultitouchSample/src/main/res/values/styles.xml
@@ -27,9 +27,4 @@
         -->
     </style>
 
-    <!-- Application theme. -->
-    <style name="AppTheme" parent="AppBaseTheme">
-        <!-- All customizations that are NOT specific to a particular API-level can go here. -->
-    </style>
-
 </resources>
\ No newline at end of file
diff --git a/input/multitouch/BasicMultitouch/README.txt b/input/multitouch/BasicMultitouch/README.txt
deleted file mode 100644
index 38608df..0000000
--- a/input/multitouch/BasicMultitouch/README.txt
+++ /dev/null
@@ -1,6 +0,0 @@
-Build Instructions
--------------------
-This sample uses the Gradle build system. To build this project, use the
-"gradlew build" command.
-
-To see a list of all available commands, run "gradlew tasks".
\ No newline at end of file
diff --git a/input/multitouch/BasicMultitouch/build.gradle b/input/multitouch/BasicMultitouch/build.gradle
index 036abc8..cca9ac3 100644
--- a/input/multitouch/BasicMultitouch/build.gradle
+++ b/input/multitouch/BasicMultitouch/build.gradle
@@ -1,8 +1,10 @@
-buildscript {
-    repositories {
-        mavenCentral()
-    }
-    dependencies {
-        classpath 'com.android.tools.build:gradle:0.5.+'
-    }
+// BEGIN_EXCLUDE
+import com.example.android.samples.build.SampleGenPlugin
+apply plugin: SampleGenPlugin
+
+samplegen {
+  pathToBuild "../../../../../build"
+  pathToSamplesCommon "../../../common"
 }
+apply from: "../../../../../build/build.gradle"
+// END_EXCLUDE
diff --git a/input/multitouch/BasicMultitouch/buildSrc/build.gradle b/input/multitouch/BasicMultitouch/buildSrc/build.gradle
new file mode 100644
index 0000000..e344a8c
--- /dev/null
+++ b/input/multitouch/BasicMultitouch/buildSrc/build.gradle
@@ -0,0 +1,18 @@
+
+
+
+repositories {
+    mavenCentral()
+}
+dependencies {
+    compile 'org.freemarker:freemarker:2.3.20'
+}
+
+sourceSets {
+    main {
+        groovy {
+            srcDir new File(rootDir, "../../../../../../build/buildSrc/src/main/groovy")
+        }
+    }
+}
+
diff --git a/input/multitouch/BasicMultitouch/gradle/wrapper/gradle-wrapper.properties b/input/multitouch/BasicMultitouch/gradle/wrapper/gradle-wrapper.properties
index 055ba6f..861eddc 100644
--- a/input/multitouch/BasicMultitouch/gradle/wrapper/gradle-wrapper.properties
+++ b/input/multitouch/BasicMultitouch/gradle/wrapper/gradle-wrapper.properties
@@ -1,7 +1,6 @@
-#
-#Mon Jul 22 11:40:20 PDT 2013
+#Wed Apr 10 15:27:10 PDT 2013
 distributionBase=GRADLE_USER_HOME
 distributionPath=wrapper/dists
 zipStoreBase=GRADLE_USER_HOME
 zipStorePath=wrapper/dists
-distributionUrl=http\://services.gradle.org/distributions/gradle-1.6-bin.zip
+distributionUrl=http\://services.gradle.org/distributions/gradle-1.8-bin.zip
diff --git a/input/multitouch/BasicMultitouch/multitouch.jd b/input/multitouch/BasicMultitouch/multitouch.jd
deleted file mode 100644
index d9108bb..0000000
--- a/input/multitouch/BasicMultitouch/multitouch.jd
+++ /dev/null
@@ -1,24 +0,0 @@
-page.title=Multitouch Sample
-@jd:body
-
-<p>This samples demonstrates the use of <pre>MotionEvent</pre> properties to keep track of individual touches across multiple touch events.</p>
-
-<p>A <a href="http://developer.android.com/reference/android/view/MotionEvent.html">MotionEvent</a> describes a movement event.
-For touch events, they contain an action, X and Y coordinates and other relevant information. Multi-touch screens can report multiple movement traces at the same time, 
-reporting all active touches within a single <pre>MotionEvent</pre>.</p>
-
-<p>Each pointer has a unique id that is assigned when it first goes down
- (indicated by <pre><a href="/reference/android/view/MotionEvent.html#ACTION_DOWN">ACTION_DOWN</a></pre> or <pre><a href="/reference/android/view/MotionEvent.html#ACTION_POINTER_DOWN">ACTION_POINTER_DOWN</a></pre>).  A pointer id
- remains valid until the pointer eventually goes up (indicated by <pre><a href="/reference/android/view/MotionEvent.html#ACTION_UP">ACTION_UP</a></pre>
- or <pre><a href="/reference/android/view/MotionEvent.html#ACTION_POINTER_UP">ACTION_POINTER_UP</a></pre>) or when the gesture is canceled (indicated by
- <pre><a href="/reference/android/view/MotionEvent.html#ACTION_CANCEL">ACTION_CANCEL</a></pre>).
- </p>
- 
-<p>The sample shows how these pointer identifiers can be used over subsequent events to track individual fingers. 
-This is illustrated by a custom View that responds to touch events. Coloured circles are drawn for each finger, showing its current and past position on the screen.
-This example shows the relationship between <pre>MotionEvent</pre> indices, pointer identifiers and <pre>MotionEvent</pre> actions.</p>
-
-<p>For more information, see the relevant <a href="http://android-developers.blogspot.com.au/2010/06/making-sense-of-multitouch.html">blog post</a> and 
-<a href="http://developer.android.com/reference/android/view/MotionEvent.html"><pre>MotionEvent</pre></a> API documentation. </p> 
-
-<p><img src="images/MultitouchSample.png" /></p>
diff --git a/input/multitouch/BasicMultitouch/settings.gradle b/input/multitouch/BasicMultitouch/settings.gradle
index 5587917..6e6c5ba 100644
--- a/input/multitouch/BasicMultitouch/settings.gradle
+++ b/input/multitouch/BasicMultitouch/settings.gradle
@@ -1 +1,4 @@
-include ':BasicMultitouch'
+
+
+
+include 'BasicMultitouchSample'
diff --git a/input/multitouch/BasicMultitouch/template-params.xml b/input/multitouch/BasicMultitouch/template-params.xml
new file mode 100644
index 0000000..7677818
--- /dev/null
+++ b/input/multitouch/BasicMultitouch/template-params.xml
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ 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.
+-->
+<sample>
+    <name>BasicMultitouch</name>
+    <group>Input</group>
+    <package>com.example.android.basicmultitouch</package>
+
+
+
+    <!-- change minSdk if needed-->
+    <minSdk>8</minSdk>
+
+
+    <strings>
+        <intro>
+            <![CDATA[
+This samples demonstrates the use of MotionEvent properties to keep track of individual touches
+across multiple touch events.
+\n\nTouch the screen with multiple fingers to show that the pointer id
+(also represented by a colour) does not change as new touch events are received.</string>
+            ]]>
+        </intro>
+    </strings>
+
+    <template src="base"/>
+    <common src="logger"/>
+
+</sample>
diff --git a/media/BasicMediaDecoder/BasicMediaDecoderSample/.gitignore b/media/BasicMediaDecoder/BasicMediaDecoderSample/.gitignore
new file mode 100644
index 0000000..6eb878d
--- /dev/null
+++ b/media/BasicMediaDecoder/BasicMediaDecoderSample/.gitignore
@@ -0,0 +1,16 @@
+# 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.
+src/template/
+src/common/
+build.gradle
diff --git a/connectivity/sync/BasicSyncAdapter/BasicSyncAdapterTests/proguard-project.txt b/media/BasicMediaDecoder/BasicMediaDecoderSample/proguard-project.txt
similarity index 91%
copy from connectivity/sync/BasicSyncAdapter/BasicSyncAdapterTests/proguard-project.txt
copy to media/BasicMediaDecoder/BasicMediaDecoderSample/proguard-project.txt
index f2fe155..0d8f171 100644
--- a/connectivity/sync/BasicSyncAdapter/BasicSyncAdapterTests/proguard-project.txt
+++ b/media/BasicMediaDecoder/BasicMediaDecoderSample/proguard-project.txt
@@ -1,4 +1,4 @@
-# To enable ProGuard in your project, edit project.properties
+ To enable ProGuard in your project, edit project.properties
 # to define the proguard.config property as described in that file.
 #
 # Add project specific ProGuard rules here.
diff --git a/media/BasicMediaDecoder/BasicMediaDecoderSample/src/main/AndroidManifest.xml b/media/BasicMediaDecoder/BasicMediaDecoderSample/src/main/AndroidManifest.xml
new file mode 100644
index 0000000..d191491
--- /dev/null
+++ b/media/BasicMediaDecoder/BasicMediaDecoderSample/src/main/AndroidManifest.xml
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ 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.
+-->
+
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+    package="com.example.android.basicmediadecoder"
+    android:versionCode="1"
+    android:versionName="1.0">
+
+    <uses-sdk android:minSdkVersion="17"/>
+    <application
+        android:label="@string/app_name" android:icon="@drawable/ic_launcher">
+        <activity
+            android:name=".MainActivity"
+            android:screenOrientation="landscape"
+            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/media/BasicMediaDecoder/BasicMediaDecoderSample/src/main/java/com/example/android/basicmediadecoder/MainActivity.java b/media/BasicMediaDecoder/BasicMediaDecoderSample/src/main/java/com/example/android/basicmediadecoder/MainActivity.java
new file mode 100644
index 0000000..cac5bf2
--- /dev/null
+++ b/media/BasicMediaDecoder/BasicMediaDecoderSample/src/main/java/com/example/android/basicmediadecoder/MainActivity.java
@@ -0,0 +1,189 @@
+/*
+ * Copyright (C) 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.basicmediadecoder;
+
+
+import android.animation.TimeAnimator;
+import android.app.Activity;
+import android.media.MediaCodec;
+import android.media.MediaExtractor;
+import android.net.Uri;
+import android.os.Bundle;
+import android.view.Menu;
+import android.view.MenuInflater;
+import android.view.MenuItem;
+import android.view.Surface;
+import android.view.TextureView;
+import android.view.View;
+import android.widget.TextView;
+
+import com.example.android.common.media.MediaCodecWrapper;
+
+import java.io.IOException;
+
+/**
+ * This activity uses a {@link android.view.TextureView} to render the frames of a video decoded using
+ * {@link android.media.MediaCodec} API.
+ */
+public class MainActivity extends Activity {
+
+    private TextureView mPlaybackView;
+    private TimeAnimator mTimeAnimator = new TimeAnimator();
+
+    // A utility that wraps up the underlying input and output buffer processing operations
+    // into an east to use API.
+    private MediaCodecWrapper mCodecWrapper;
+    private MediaExtractor mExtractor = new MediaExtractor();
+    TextView mAttribView = null;
+
+
+    /**
+     * Called when the activity is first created.
+     */
+    @Override
+    public void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        setContentView(R.layout.sample_main);
+        mPlaybackView = (TextureView) findViewById(R.id.PlaybackView);
+        mAttribView =  (TextView)findViewById(R.id.AttribView);
+
+    }
+
+    @Override
+    public boolean onCreateOptionsMenu(Menu menu) {
+        MenuInflater inflater = getMenuInflater();
+        inflater.inflate(R.menu.action_menu, menu);
+        return true;
+    }
+
+    @Override
+    protected void onPause() {
+        super.onPause();
+        if(mTimeAnimator != null && mTimeAnimator.isRunning()) {
+            mTimeAnimator.end();
+        }
+
+        if (mCodecWrapper != null ) {
+            mCodecWrapper.stopAndRelease();
+            mExtractor.release();
+        }
+    }
+
+    @Override
+    public boolean onOptionsItemSelected(MenuItem item) {
+        if (item.getItemId() == R.id.menu_play) {
+            mAttribView.setVisibility(View.VISIBLE);
+            startPlayback();
+            item.setEnabled(false);
+        }
+        return true;
+    }
+
+
+    public void startPlayback() {
+
+        // Construct a URI that points to the video resource that we want to play
+        Uri videoUri = Uri.parse("android.resource://"
+                + getPackageName() + "/"
+                + R.raw.vid_bigbuckbunny);
+
+        try {
+
+            // BEGIN_INCLUDE(initialize_extractor)
+            mExtractor.setDataSource(this, videoUri, null);
+            int nTracks = mExtractor.getTrackCount();
+
+            // Begin by unselecting all of the tracks in the extractor, so we won't see
+            // any tracks that we haven't explicitly selected.
+            for (int i = 0; i < nTracks; ++i) {
+                mExtractor.unselectTrack(i);
+            }
+
+
+            // Find the first video track in the stream. In a real-world application
+            // it's possible that the stream would contain multiple tracks, but this
+            // sample assumes that we just want to play the first one.
+            for (int i = 0; i < nTracks; ++i) {
+                // Try to create a video codec for this track. This call will return null if the
+                // track is not a video track, or not a recognized video format. Once it returns
+                // a valid MediaCodecWrapper, we can break out of the loop.
+                mCodecWrapper = MediaCodecWrapper.fromVideoFormat(mExtractor.getTrackFormat(i),
+                        new Surface(mPlaybackView.getSurfaceTexture()));
+                if (mCodecWrapper != null) {
+                    mExtractor.selectTrack(i);
+                    break;
+                }
+            }
+            // END_INCLUDE(initialize_extractor)
+
+
+
+
+            // By using a {@link TimeAnimator}, we can sync our media rendering commands with
+            // the system display frame rendering. The animator ticks as the {@link Choreographer}
+            // recieves VSYNC events.
+            mTimeAnimator.setTimeListener(new TimeAnimator.TimeListener() {
+                @Override
+                public void onTimeUpdate(final TimeAnimator animation,
+                                         final long totalTime,
+                                         final long deltaTime) {
+
+                    boolean isEos = ((mExtractor.getSampleFlags() & MediaCodec
+                            .BUFFER_FLAG_END_OF_STREAM) == MediaCodec.BUFFER_FLAG_END_OF_STREAM);
+
+                    // BEGIN_INCLUDE(write_sample)
+                    if (!isEos) {
+                        // Try to submit the sample to the codec and if successful advance the
+                        // extractor to the next available sample to read.
+                        boolean result = mCodecWrapper.writeSample(mExtractor, false,
+                                mExtractor.getSampleTime(), mExtractor.getSampleFlags());
+
+                        if (result) {
+                            // Advancing the extractor is a blocking operation and it MUST be
+                            // executed outside the main thread in real applications.
+                            mExtractor.advance();
+                        }
+                    }
+                    // END_INCLUDE(write_sample)
+
+                    // Examine the sample at the head of the queue to see if its ready to be
+                    // rendered and is not zero sized End-of-Stream record.
+                    MediaCodec.BufferInfo out_bufferInfo = new MediaCodec.BufferInfo();
+                    mCodecWrapper.peekSample(out_bufferInfo);
+
+                    // BEGIN_INCLUDE(render_sample)
+                    if (out_bufferInfo.size <= 0 && isEos) {
+                        mTimeAnimator.end();
+                        mCodecWrapper.stopAndRelease();
+                        mExtractor.release();
+                    } else if (out_bufferInfo.presentationTimeUs / 1000 < totalTime) {
+                        // Pop the sample off the queue and send it to {@link Surface}
+                        mCodecWrapper.popSample(true);
+                    }
+                    // END_INCLUDE(render_sample)
+
+                }
+            });
+
+            // We're all set. Kick off the animator to process buffers and render video frames as
+            // they become available
+            mTimeAnimator.start();
+        } catch (IOException e) {
+            e.printStackTrace();
+        }
+    }
+}
diff --git a/media/BasicMediaDecoder/BasicMediaDecoderSample/src/main/res/drawable-hdpi/ic_action_play.png b/media/BasicMediaDecoder/BasicMediaDecoderSample/src/main/res/drawable-hdpi/ic_action_play.png
new file mode 100755
index 0000000..dbfd337
--- /dev/null
+++ b/media/BasicMediaDecoder/BasicMediaDecoderSample/src/main/res/drawable-hdpi/ic_action_play.png
Binary files differ
diff --git a/media/BasicMediaDecoder/BasicMediaDecoderSample/src/main/res/drawable-hdpi/ic_action_play_disabled.png b/media/BasicMediaDecoder/BasicMediaDecoderSample/src/main/res/drawable-hdpi/ic_action_play_disabled.png
new file mode 100755
index 0000000..e4310ef
--- /dev/null
+++ b/media/BasicMediaDecoder/BasicMediaDecoderSample/src/main/res/drawable-hdpi/ic_action_play_disabled.png
Binary files differ
diff --git a/media/BasicMediaDecoder/BasicMediaDecoderSample/src/main/res/drawable-hdpi/ic_launcher.png b/media/BasicMediaDecoder/BasicMediaDecoderSample/src/main/res/drawable-hdpi/ic_launcher.png
new file mode 100644
index 0000000..9bc536b
--- /dev/null
+++ b/media/BasicMediaDecoder/BasicMediaDecoderSample/src/main/res/drawable-hdpi/ic_launcher.png
Binary files differ
diff --git a/media/BasicMediaDecoder/BasicMediaDecoderSample/src/main/res/drawable-mdpi/ic_action_play.png b/media/BasicMediaDecoder/BasicMediaDecoderSample/src/main/res/drawable-mdpi/ic_action_play.png
new file mode 100755
index 0000000..a2f198a
--- /dev/null
+++ b/media/BasicMediaDecoder/BasicMediaDecoderSample/src/main/res/drawable-mdpi/ic_action_play.png
Binary files differ
diff --git a/media/BasicMediaDecoder/BasicMediaDecoderSample/src/main/res/drawable-mdpi/ic_action_play_disabled.png b/media/BasicMediaDecoder/BasicMediaDecoderSample/src/main/res/drawable-mdpi/ic_action_play_disabled.png
new file mode 100755
index 0000000..d69107b
--- /dev/null
+++ b/media/BasicMediaDecoder/BasicMediaDecoderSample/src/main/res/drawable-mdpi/ic_action_play_disabled.png
Binary files differ
diff --git a/media/BasicMediaDecoder/BasicMediaDecoderSample/src/main/res/drawable-mdpi/ic_launcher.png b/media/BasicMediaDecoder/BasicMediaDecoderSample/src/main/res/drawable-mdpi/ic_launcher.png
new file mode 100644
index 0000000..d656b21
--- /dev/null
+++ b/media/BasicMediaDecoder/BasicMediaDecoderSample/src/main/res/drawable-mdpi/ic_launcher.png
Binary files differ
diff --git a/media/BasicMediaDecoder/BasicMediaDecoderSample/src/main/res/drawable-xhdpi/ic_action_play.png b/media/BasicMediaDecoder/BasicMediaDecoderSample/src/main/res/drawable-xhdpi/ic_action_play.png
new file mode 100755
index 0000000..9e63c90
--- /dev/null
+++ b/media/BasicMediaDecoder/BasicMediaDecoderSample/src/main/res/drawable-xhdpi/ic_action_play.png
Binary files differ
diff --git a/media/BasicMediaDecoder/BasicMediaDecoderSample/src/main/res/drawable-xhdpi/ic_action_play_disabled.png b/media/BasicMediaDecoder/BasicMediaDecoderSample/src/main/res/drawable-xhdpi/ic_action_play_disabled.png
new file mode 100755
index 0000000..2ff8c39
--- /dev/null
+++ b/media/BasicMediaDecoder/BasicMediaDecoderSample/src/main/res/drawable-xhdpi/ic_action_play_disabled.png
Binary files differ
diff --git a/media/BasicMediaDecoder/BasicMediaDecoderSample/src/main/res/drawable-xhdpi/ic_launcher.png b/media/BasicMediaDecoder/BasicMediaDecoderSample/src/main/res/drawable-xhdpi/ic_launcher.png
new file mode 100644
index 0000000..bbb9b16
--- /dev/null
+++ b/media/BasicMediaDecoder/BasicMediaDecoderSample/src/main/res/drawable-xhdpi/ic_launcher.png
Binary files differ
diff --git a/media/BasicMediaDecoder/BasicMediaDecoderSample/src/main/res/drawable-xxhdpi/ic_launcher.png b/media/BasicMediaDecoder/BasicMediaDecoderSample/src/main/res/drawable-xxhdpi/ic_launcher.png
new file mode 100644
index 0000000..4a5c33f
--- /dev/null
+++ b/media/BasicMediaDecoder/BasicMediaDecoderSample/src/main/res/drawable-xxhdpi/ic_launcher.png
Binary files differ
diff --git a/media/BasicMediaDecoder/BasicMediaDecoderSample/src/main/res/drawable/selector_play.xml b/media/BasicMediaDecoder/BasicMediaDecoderSample/src/main/res/drawable/selector_play.xml
new file mode 100644
index 0000000..2307135
--- /dev/null
+++ b/media/BasicMediaDecoder/BasicMediaDecoderSample/src/main/res/drawable/selector_play.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="utf-8"?>
+
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+    <item android:state_enabled="true"
+          android:drawable="@drawable/ic_action_play"/>
+
+    <item android:state_enabled="false"
+          android:drawable="@drawable/ic_action_play_disabled"/>
+</selector>
\ No newline at end of file
diff --git a/media/BasicMediaDecoder/BasicMediaDecoderSample/src/main/res/layout/sample_main.xml b/media/BasicMediaDecoder/BasicMediaDecoderSample/src/main/res/layout/sample_main.xml
new file mode 100644
index 0000000..7543120
--- /dev/null
+++ b/media/BasicMediaDecoder/BasicMediaDecoderSample/src/main/res/layout/sample_main.xml
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (C) 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.
+-->
+<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
+              android:orientation="vertical"
+              android:layout_width="fill_parent"
+              android:layout_height="fill_parent"
+    >
+    <TextureView
+        android:id="@+id/PlaybackView"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"/>
+    <TextView
+            android:id="@+id/AttribView"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_gravity="right|bottom"
+            android:visibility="gone"
+            android:textColor="@android:color/holo_blue_bright"
+            android:text="@string/app_video_attrib"/>
+</FrameLayout>
+
diff --git a/media/BasicMediaDecoder/BasicMediaDecoderSample/src/main/res/menu/action_menu.xml b/media/BasicMediaDecoder/BasicMediaDecoderSample/src/main/res/menu/action_menu.xml
new file mode 100644
index 0000000..2b31a86
--- /dev/null
+++ b/media/BasicMediaDecoder/BasicMediaDecoderSample/src/main/res/menu/action_menu.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (C) 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.
+-->
+<menu xmlns:android="http://schemas.android.com/apk/res/android">
+    <item android:id="@+id/menu_play"
+          android:icon="@drawable/selector_play"
+          android:title="Play"
+          android:showAsAction="ifRoom|withText" />
+</menu>
\ No newline at end of file
diff --git a/media/BasicMediaDecoder/BasicMediaDecoderSample/src/main/res/raw/vid_bigbuckbunny.mp4 b/media/BasicMediaDecoder/BasicMediaDecoderSample/src/main/res/raw/vid_bigbuckbunny.mp4
new file mode 100644
index 0000000..81d11df
--- /dev/null
+++ b/media/BasicMediaDecoder/BasicMediaDecoderSample/src/main/res/raw/vid_bigbuckbunny.mp4
Binary files differ
diff --git a/media/BasicMediaDecoder/BasicMediaDecoderSample/src/main/res/values/strings.xml b/media/BasicMediaDecoder/BasicMediaDecoderSample/src/main/res/values/strings.xml
new file mode 100644
index 0000000..2cf79ab
--- /dev/null
+++ b/media/BasicMediaDecoder/BasicMediaDecoderSample/src/main/res/values/strings.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (C) 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.
+-->
+<resources>
+    <string name="app_video_attrib">(c) copyright 2008, Blender Foundation / www.bigbuckbunny.org
+    </string>
+</resources>
diff --git a/media/BasicMediaDecoder/build.gradle b/media/BasicMediaDecoder/build.gradle
new file mode 100644
index 0000000..c7a137e
--- /dev/null
+++ b/media/BasicMediaDecoder/build.gradle
@@ -0,0 +1,10 @@
+// BEGIN_EXCLUDE
+import com.example.android.samples.build.SampleGenPlugin
+apply plugin: SampleGenPlugin
+
+samplegen {
+  pathToBuild "../../../../build"
+  pathToSamplesCommon "../../common"
+}
+apply from: "../../../../build/build.gradle"
+// END_EXCLUDE
diff --git a/media/BasicMediaDecoder/buildSrc/build.gradle b/media/BasicMediaDecoder/buildSrc/build.gradle
new file mode 100644
index 0000000..29282af
--- /dev/null
+++ b/media/BasicMediaDecoder/buildSrc/build.gradle
@@ -0,0 +1,18 @@
+
+
+
+repositories {
+    mavenCentral()
+}
+dependencies {
+    compile 'org.freemarker:freemarker:2.3.20'
+}
+
+sourceSets {
+    main {
+        groovy {
+            srcDir new File(rootDir, "../../../../../build/buildSrc/src/main/groovy")
+        }
+    }
+}
+
diff --git a/connectivity/network/BasicNetworkDemo/gradle/wrapper/gradle-wrapper.jar b/media/BasicMediaDecoder/gradle/wrapper/gradle-wrapper.jar
similarity index 100%
copy from connectivity/network/BasicNetworkDemo/gradle/wrapper/gradle-wrapper.jar
copy to media/BasicMediaDecoder/gradle/wrapper/gradle-wrapper.jar
Binary files differ
diff --git a/connectivity/network/BasicNetworkDemo/gradle/wrapper/gradle-wrapper.properties b/media/BasicMediaDecoder/gradle/wrapper/gradle-wrapper.properties
similarity index 80%
copy from connectivity/network/BasicNetworkDemo/gradle/wrapper/gradle-wrapper.properties
copy to media/BasicMediaDecoder/gradle/wrapper/gradle-wrapper.properties
index 055ba6f..861eddc 100644
--- a/connectivity/network/BasicNetworkDemo/gradle/wrapper/gradle-wrapper.properties
+++ b/media/BasicMediaDecoder/gradle/wrapper/gradle-wrapper.properties
@@ -1,7 +1,6 @@
-#
-#Mon Jul 22 11:40:20 PDT 2013
+#Wed Apr 10 15:27:10 PDT 2013
 distributionBase=GRADLE_USER_HOME
 distributionPath=wrapper/dists
 zipStoreBase=GRADLE_USER_HOME
 zipStorePath=wrapper/dists
-distributionUrl=http\://services.gradle.org/distributions/gradle-1.6-bin.zip
+distributionUrl=http\://services.gradle.org/distributions/gradle-1.8-bin.zip
diff --git a/connectivity/network/BasicNetworkDemo/gradlew b/media/BasicMediaDecoder/gradlew
similarity index 100%
copy from connectivity/network/BasicNetworkDemo/gradlew
copy to media/BasicMediaDecoder/gradlew
diff --git a/connectivity/network/BasicNetworkDemo/gradlew.bat b/media/BasicMediaDecoder/gradlew.bat
similarity index 100%
copy from connectivity/network/BasicNetworkDemo/gradlew.bat
copy to media/BasicMediaDecoder/gradlew.bat
diff --git a/media/BasicMediaDecoder/settings.gradle b/media/BasicMediaDecoder/settings.gradle
new file mode 100644
index 0000000..1e76e09
--- /dev/null
+++ b/media/BasicMediaDecoder/settings.gradle
@@ -0,0 +1,4 @@
+
+
+
+include 'BasicMediaDecoderSample'
diff --git a/media/BasicMediaDecoder/template-params.xml b/media/BasicMediaDecoder/template-params.xml
new file mode 100644
index 0000000..bcb01af
--- /dev/null
+++ b/media/BasicMediaDecoder/template-params.xml
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ 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.
+-->
+<sample>
+    <name>BasicMediaDecoder</name>
+    <group>Media</group>
+    <package>com.example.android.basicmediadecoder</package>
+
+    <!-- change minSdk if needed-->
+    <minSdk>17</minSdk>
+
+    <strings>
+        <intro>
+            <![CDATA[
+             This activity uses a TextureView to render the frames of a video decoded using the
+             MediaCodec API.
+            ]]>
+        </intro>
+    </strings>
+
+    <template src="base"/>
+    <common src="media"/>
+</sample>
diff --git a/media/BasicMediaRouter/BasicMediaRouter/build.gradle b/media/BasicMediaRouter/BasicMediaRouter/build.gradle
deleted file mode 100644
index 945e1f5..0000000
--- a/media/BasicMediaRouter/BasicMediaRouter/build.gradle
+++ /dev/null
@@ -1,6 +0,0 @@
-apply plugin: 'android'
-
-android {
-    compileSdkVersion 18
-    buildToolsVersion "18.0.0"
-}
diff --git a/media/BasicMediaRouter/BasicMediaRouter/src/main/AndroidManifest.xml b/media/BasicMediaRouter/BasicMediaRouter/src/main/AndroidManifest.xml
deleted file mode 100644
index f909d5e..0000000
--- a/media/BasicMediaRouter/BasicMediaRouter/src/main/AndroidManifest.xml
+++ /dev/null
@@ -1,27 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<manifest xmlns:android="http://schemas.android.com/apk/res/android"
-    package="com.example.android.output.mediaroutersample"
-    android:versionCode="1"
-    android:versionName="1.0" >
-
-    <uses-sdk
-        android:minSdkVersion="17"
-        android:targetSdkVersion="17" />
-
-    <application
-        android:allowBackup="true"
-        android:icon="@drawable/ic_launcher"
-        android:label="@string/app_name"
-        android:theme="@style/AppTheme" >
-        <activity
-            android:name="com.example.android.media.basicmediarouter.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>
\ No newline at end of file
diff --git a/media/BasicMediaRouter/BasicMediaRouter/src/main/res/drawable-hdpi/ic_launcher.png b/media/BasicMediaRouter/BasicMediaRouter/src/main/res/drawable-hdpi/ic_launcher.png
deleted file mode 100644
index 2fd4ce4..0000000
--- a/media/BasicMediaRouter/BasicMediaRouter/src/main/res/drawable-hdpi/ic_launcher.png
+++ /dev/null
Binary files differ
diff --git a/media/BasicMediaRouter/BasicMediaRouter/src/main/res/drawable-mdpi/ic_launcher.png b/media/BasicMediaRouter/BasicMediaRouter/src/main/res/drawable-mdpi/ic_launcher.png
deleted file mode 100644
index 56b78c5..0000000
--- a/media/BasicMediaRouter/BasicMediaRouter/src/main/res/drawable-mdpi/ic_launcher.png
+++ /dev/null
Binary files differ
diff --git a/media/BasicMediaRouter/BasicMediaRouter/src/main/res/drawable-xhdpi/ic_launcher.png b/media/BasicMediaRouter/BasicMediaRouter/src/main/res/drawable-xhdpi/ic_launcher.png
deleted file mode 100644
index da3db3b..0000000
--- a/media/BasicMediaRouter/BasicMediaRouter/src/main/res/drawable-xhdpi/ic_launcher.png
+++ /dev/null
Binary files differ
diff --git a/media/BasicMediaRouter/BasicMediaRouter/src/main/res/drawable-xxhdpi/ic_launcher.png b/media/BasicMediaRouter/BasicMediaRouter/src/main/res/drawable-xxhdpi/ic_launcher.png
deleted file mode 100644
index 4aa8bdd..0000000
--- a/media/BasicMediaRouter/BasicMediaRouter/src/main/res/drawable-xxhdpi/ic_launcher.png
+++ /dev/null
Binary files differ
diff --git a/media/BasicMediaRouter/BasicMediaRouter/src/main/res/values-v11/styles.xml b/media/BasicMediaRouter/BasicMediaRouter/src/main/res/values-v11/styles.xml
deleted file mode 100644
index 541752f..0000000
--- a/media/BasicMediaRouter/BasicMediaRouter/src/main/res/values-v11/styles.xml
+++ /dev/null
@@ -1,11 +0,0 @@
-<resources>
-
-    <!--
-        Base application theme for API 11+. This theme completely replaces
-        AppBaseTheme from res/values/styles.xml on API 11+ devices.
-    -->
-    <style name="AppBaseTheme" parent="android:Theme.Holo.Light">
-        <!-- API 11 theme customizations can go here. -->
-    </style>
-
-</resources>
\ No newline at end of file
diff --git a/media/BasicMediaRouter/BasicMediaRouter/src/main/res/values-v14/styles.xml b/media/BasicMediaRouter/BasicMediaRouter/src/main/res/values-v14/styles.xml
deleted file mode 100644
index f20e015..0000000
--- a/media/BasicMediaRouter/BasicMediaRouter/src/main/res/values-v14/styles.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-<resources>
-
-    <!--
-        Base application theme for API 14+. This theme completely replaces
-        AppBaseTheme from BOTH res/values/styles.xml and
-        res/values-v11/styles.xml on API 14+ devices.
-    -->
-    <style name="AppBaseTheme" parent="android:Theme.Holo.Light.DarkActionBar">
-        <!-- API 14 theme customizations can go here. -->
-    </style>
-
-</resources>
\ No newline at end of file
diff --git a/media/BasicMediaRouter/BasicMediaRouter/src/main/res/values/strings.xml b/media/BasicMediaRouter/BasicMediaRouter/src/main/res/values/strings.xml
deleted file mode 100644
index ca9e53f..0000000
--- a/media/BasicMediaRouter/BasicMediaRouter/src/main/res/values/strings.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<resources>
-
-    <string name="menu_present_to">Present to</string>
-    <string name="app_name">BasicMediaRouter Sample</string>
-    <string name="title_activity_main">MainActivity</string>
-    <string name="intro">This sample demonstrates the use of the MediaRouter API to display
- content on a secondary display.\n\nUse the <b>Media Route Action Item</b> in the ActionBar
- to select an output device. If your device supports Miracast wireless displays,
- you may need to enable <b>Wireless Display</b> functionality in the system settings.
- Secondary screen simulation can also be enabled from the <b>Developer Options</b>.\n\n
-Once connected, use the <b>Change Color</b> button to change the background color of the secondary screen.
-</string>
-    <string name="secondary_connected">Connected to:\n%s</string>
-    <string name="secondary_notconnected">No secondary display connected.</string>
-    <string name="change_color">Change Color</string>
-    <string name="display_name">This display is: %s</string>
-    <string name="display_color">Background color: #%X</string>
-
-</resources>
\ No newline at end of file
diff --git a/media/BasicMediaRouter/BasicMediaRouterSample/.gitignore b/media/BasicMediaRouter/BasicMediaRouterSample/.gitignore
new file mode 100644
index 0000000..6eb878d
--- /dev/null
+++ b/media/BasicMediaRouter/BasicMediaRouterSample/.gitignore
@@ -0,0 +1,16 @@
+# 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.
+src/template/
+src/common/
+build.gradle
diff --git a/connectivity/sync/BasicSyncAdapter/BasicSyncAdapterTests/proguard-project.txt b/media/BasicMediaRouter/BasicMediaRouterSample/proguard-project.txt
similarity index 91%
copy from connectivity/sync/BasicSyncAdapter/BasicSyncAdapterTests/proguard-project.txt
copy to media/BasicMediaRouter/BasicMediaRouterSample/proguard-project.txt
index f2fe155..0d8f171 100644
--- a/connectivity/sync/BasicSyncAdapter/BasicSyncAdapterTests/proguard-project.txt
+++ b/media/BasicMediaRouter/BasicMediaRouterSample/proguard-project.txt
@@ -1,4 +1,4 @@
-# To enable ProGuard in your project, edit project.properties
+ To enable ProGuard in your project, edit project.properties
 # to define the proguard.config property as described in that file.
 #
 # Add project specific ProGuard rules here.
diff --git a/ui/accessibility/BasicAccessibility/BasicAccessibility/src/main/AndroidManifest.xml b/media/BasicMediaRouter/BasicMediaRouterSample/src/main/AndroidManifest.xml
similarity index 74%
copy from ui/accessibility/BasicAccessibility/BasicAccessibility/src/main/AndroidManifest.xml
copy to media/BasicMediaRouter/BasicMediaRouterSample/src/main/AndroidManifest.xml
index 3c0e66a..33c20d5 100644
--- a/ui/accessibility/BasicAccessibility/BasicAccessibility/src/main/AndroidManifest.xml
+++ b/media/BasicMediaRouter/BasicMediaRouterSample/src/main/AndroidManifest.xml
@@ -1,12 +1,12 @@
-<?xml version="1.0" encoding="utf-8"?>
+<?xml version="1.0" encoding="UTF-8"?>
 <!--
- Copyright (C) 2013 The Android Open Source Project
+ 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
+     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,
@@ -16,13 +16,13 @@
 -->
 
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
-    package="com.example.android.ui.accessibility.BasicAccessibility"
+    package="com.example.android.basicmediarouter"
     android:versionCode="1"
     android:versionName="1.0" >
 
     <uses-sdk
-        android:minSdkVersion="11"
-        android:targetSdkVersion="16" />
+        android:minSdkVersion="17"
+        android:targetSdkVersion="17" />
 
     <application
         android:allowBackup="true"
@@ -30,7 +30,7 @@
         android:label="@string/app_name"
         android:theme="@style/AppTheme" >
         <activity
-            android:name="com.example.android.ui.accessibility.BasicAccessibility.MainActivity"
+            android:name=".MainActivity"
             android:label="@string/app_name" >
             <intent-filter>
                 <action android:name="android.intent.action.MAIN" />
@@ -38,5 +38,4 @@
             </intent-filter>
         </activity>
     </application>
-
 </manifest>
diff --git a/media/BasicMediaRouter/BasicMediaRouter/src/main/java/com/example/android/media/basicmediarouter/MainActivity.java b/media/BasicMediaRouter/BasicMediaRouterSample/src/main/java/com/example/android/basicmediarouter/MainActivity.java
similarity index 83%
rename from media/BasicMediaRouter/BasicMediaRouter/src/main/java/com/example/android/media/basicmediarouter/MainActivity.java
rename to media/BasicMediaRouter/BasicMediaRouterSample/src/main/java/com/example/android/basicmediarouter/MainActivity.java
index ccf6ad0..23b2709 100644
--- a/media/BasicMediaRouter/BasicMediaRouter/src/main/java/com/example/android/media/basicmediarouter/MainActivity.java
+++ b/media/BasicMediaRouter/BasicMediaRouterSample/src/main/java/com/example/android/basicmediarouter/MainActivity.java
@@ -14,11 +14,10 @@
  * limitations under the License.
  */
 
-package com.example.android.media.basicmediarouter;
+package com.example.android.basicmediarouter;
 
 import android.app.Activity;
 import android.app.MediaRouteActionProvider;
-import android.app.Presentation;
 import android.content.Context;
 import android.content.DialogInterface;
 import android.media.MediaRouter;
@@ -32,18 +31,16 @@
 import android.widget.Button;
 import android.widget.TextView;
 
-import com.example.android.output.mediaroutersample.R;
-
 /**
  * <p>
  * This sample demonstrates the use of the MediaRouter API to show content on a
- * secondary display using a {@link Presentation}.
+ * secondary display using a {@link android.app.Presentation}.
  * </p>
  * <p>
- * The activity uses the {@link MediaRouter} API to automatically detect when a
+ * The activity uses the {@link android.media.MediaRouter} API to automatically detect when a
  * presentation display is available and to allow the user to control the media
- * routes using a menu item provided by the {@link MediaRouteActionProvider}.
- * When a presentation display is available a {@link Presentation} (implemented
+ * routes using a menu item provided by the {@link android.app.MediaRouteActionProvider}.
+ * When a presentation display is available a {@link android.app.Presentation} (implemented
  * as a {@link SamplePresentation}) is shown on the preferred display. A button
  * toggles the background color of the secondary screen to show the interaction
  * between the primary and secondary screens.
@@ -54,8 +51,8 @@
  * to simulate secondary displays.
  * </p>
  *
- * @see Presentation
- * @see MediaRouter
+ * @see android.app.Presentation
+ * @see android.media.MediaRouter
  */
 public class MainActivity extends Activity {
 
@@ -68,7 +65,7 @@
     protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
 
-        setContentView(R.layout.activity_main);
+        setContentView(R.layout.sample_main);
         mTextStatus = (TextView) findViewById(R.id.textStatus);
 
         // get the list of background colors
@@ -91,19 +88,19 @@
     }
 
     /**
-     * Implementing a {@link MediaRouter.Callback} to update the displayed
-     * {@link Presentation} when a route is selected, unselected or the
+     * Implementing a {@link android.media.MediaRouter.Callback} to update the displayed
+     * {@link android.app.Presentation} when a route is selected, unselected or the
      * presentation display has changed. The provided stub implementation
-     * {@link MediaRouter.SimpleCallback} is extended and only
-     * {@link MediaRouter.SimpleCallback#onRouteSelected(MediaRouter, int, RouteInfo)}
+     * {@link android.media.MediaRouter.SimpleCallback} is extended and only
+     * {@link android.media.MediaRouter.SimpleCallback#onRouteSelected(android.media.MediaRouter, int, android.media.MediaRouter.RouteInfo)}
      * ,
-     * {@link MediaRouter.SimpleCallback#onRouteUnselected(MediaRouter, int, RouteInfo)}
+     * {@link android.media.MediaRouter.SimpleCallback#onRouteUnselected(android.media.MediaRouter, int, android.media.MediaRouter.RouteInfo)}
      * and
-     * {@link MediaRouter.SimpleCallback#onRoutePresentationDisplayChanged(MediaRouter, RouteInfo)}
-     * are overridden to update the displayed {@link Presentation} in
+     * {@link android.media.MediaRouter.SimpleCallback#onRoutePresentationDisplayChanged(android.media.MediaRouter, android.media.MediaRouter.RouteInfo)}
+     * are overridden to update the displayed {@link android.app.Presentation} in
      * {@link #updatePresentation()}. These callbacks enable or disable the
      * second screen presentation based on the routing provided by the
-     * {@link MediaRouter} for {@link MediaRouter#ROUTE_TYPE_LIVE_VIDEO}
+     * {@link android.media.MediaRouter} for {@link android.media.MediaRouter#ROUTE_TYPE_LIVE_VIDEO}
      * streams. @
      */
     private final MediaRouter.SimpleCallback mMediaRouterCallback =
@@ -142,9 +139,9 @@
 
     /**
      * Updates the displayed presentation to enable a secondary screen if it has
-     * been selected in the {@link MediaRouter} for the
-     * {@link MediaRouter#ROUTE_TYPE_LIVE_VIDEO} type. If no screen has been
-     * selected by the {@link MediaRouter}, the current screen is disabled.
+     * been selected in the {@link android.media.MediaRouter} for the
+     * {@link android.media.MediaRouter#ROUTE_TYPE_LIVE_VIDEO} type. If no screen has been
+     * selected by the {@link android.media.MediaRouter}, the current screen is disabled.
      * Otherwise a new {@link SamplePresentation} is initialized and shown on
      * the secondary screen.
      */
@@ -152,7 +149,7 @@
 
         // BEGIN_INCLUDE(updatePresentationInit)
         // Get the selected route for live video
-        MediaRouter.RouteInfo selectedRoute = mMediaRouter.getSelectedRoute(
+        RouteInfo selectedRoute = mMediaRouter.getSelectedRoute(
                 MediaRouter.ROUTE_TYPE_LIVE_VIDEO);
 
         // Get its Display if a valid route has been selected
@@ -245,8 +242,8 @@
 
     /**
      * Inflates the ActionBar or options menu. The menu file defines an item for
-     * the {@link MediaRouteActionProvider}, which is registered here for all
-     * live video devices using {@link MediaRouter#ROUTE_TYPE_LIVE_VIDEO}.
+     * the {@link android.app.MediaRouteActionProvider}, which is registered here for all
+     * live video devices using {@link android.media.MediaRouter#ROUTE_TYPE_LIVE_VIDEO}.
      */
     @Override
     public boolean onCreateOptionsMenu(Menu menu) {
diff --git a/media/BasicMediaRouter/BasicMediaRouter/src/main/java/com/example/android/media/basicmediarouter/SamplePresentation.java b/media/BasicMediaRouter/BasicMediaRouterSample/src/main/java/com/example/android/basicmediarouter/SamplePresentation.java
similarity index 89%
rename from media/BasicMediaRouter/BasicMediaRouter/src/main/java/com/example/android/media/basicmediarouter/SamplePresentation.java
rename to media/BasicMediaRouter/BasicMediaRouterSample/src/main/java/com/example/android/basicmediarouter/SamplePresentation.java
index 0938635..ac1f40f 100644
--- a/media/BasicMediaRouter/BasicMediaRouter/src/main/java/com/example/android/media/basicmediarouter/SamplePresentation.java
+++ b/media/BasicMediaRouter/BasicMediaRouterSample/src/main/java/com/example/android/basicmediarouter/SamplePresentation.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package com.example.android.media.basicmediarouter;
+package com.example.android.basicmediarouter;
 
 import android.app.Presentation;
 import android.content.Context;
@@ -23,16 +23,14 @@
 import android.widget.LinearLayout;
 import android.widget.TextView;
 
-import com.example.android.output.mediaroutersample.R;
-
 /**
  * <p>
- * A {@link Presentation} used to demonstrate interaction between primary and
+ * A {@link android.app.Presentation} used to demonstrate interaction between primary and
  * secondary screens.
  * </p>
  * <p>
  * It displays the name of the display in which it has been embedded (see
- * {@link Presentation#getDisplay()}) and exposes a facility to change its
+ * {@link android.app.Presentation#getDisplay()}) and exposes a facility to change its
  * background color and display its text.
  * </p>
  */
diff --git a/ui/actionbar/DoneBar/DoneBar/src/main/res/drawable-hdpi/ic_launcher.png b/media/BasicMediaRouter/BasicMediaRouterSample/src/main/res/drawable-hdpi/ic_launcher.png
similarity index 100%
copy from ui/actionbar/DoneBar/DoneBar/src/main/res/drawable-hdpi/ic_launcher.png
copy to media/BasicMediaRouter/BasicMediaRouterSample/src/main/res/drawable-hdpi/ic_launcher.png
Binary files differ
diff --git a/ui/actionbar/DoneBar/DoneBar/src/main/res/drawable-mdpi/ic_launcher.png b/media/BasicMediaRouter/BasicMediaRouterSample/src/main/res/drawable-mdpi/ic_launcher.png
similarity index 100%
copy from ui/actionbar/DoneBar/DoneBar/src/main/res/drawable-mdpi/ic_launcher.png
copy to media/BasicMediaRouter/BasicMediaRouterSample/src/main/res/drawable-mdpi/ic_launcher.png
Binary files differ
diff --git a/ui/actionbar/DoneBar/DoneBar/src/main/res/drawable-xhdpi/ic_launcher.png b/media/BasicMediaRouter/BasicMediaRouterSample/src/main/res/drawable-xhdpi/ic_launcher.png
similarity index 100%
copy from ui/actionbar/DoneBar/DoneBar/src/main/res/drawable-xhdpi/ic_launcher.png
copy to media/BasicMediaRouter/BasicMediaRouterSample/src/main/res/drawable-xhdpi/ic_launcher.png
Binary files differ
diff --git a/ui/actionbar/DoneBar/DoneBar/src/main/res/drawable-xxhdpi/ic_launcher.png b/media/BasicMediaRouter/BasicMediaRouterSample/src/main/res/drawable-xxhdpi/ic_launcher.png
similarity index 100%
copy from ui/actionbar/DoneBar/DoneBar/src/main/res/drawable-xxhdpi/ic_launcher.png
copy to media/BasicMediaRouter/BasicMediaRouterSample/src/main/res/drawable-xxhdpi/ic_launcher.png
Binary files differ
diff --git a/media/BasicMediaRouter/BasicMediaRouter/src/main/res/layout/display.xml b/media/BasicMediaRouter/BasicMediaRouterSample/src/main/res/layout/display.xml
similarity index 100%
rename from media/BasicMediaRouter/BasicMediaRouter/src/main/res/layout/display.xml
rename to media/BasicMediaRouter/BasicMediaRouterSample/src/main/res/layout/display.xml
diff --git a/media/BasicMediaRouter/BasicMediaRouter/src/main/res/layout/activity_main.xml b/media/BasicMediaRouter/BasicMediaRouterSample/src/main/res/layout/sample_main.xml
similarity index 95%
rename from media/BasicMediaRouter/BasicMediaRouter/src/main/res/layout/activity_main.xml
rename to media/BasicMediaRouter/BasicMediaRouterSample/src/main/res/layout/sample_main.xml
index 18565c4..2768514 100644
--- a/media/BasicMediaRouter/BasicMediaRouter/src/main/res/layout/activity_main.xml
+++ b/media/BasicMediaRouter/BasicMediaRouterSample/src/main/res/layout/sample_main.xml
@@ -11,7 +11,7 @@
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         android:padding="5dp"
-        android:text="@string/intro" />
+        android:text="@string/intro_message" />
 
     <TextView
         android:id="@+id/textStatus"
diff --git a/media/BasicMediaRouter/BasicMediaRouter/src/main/res/menu/main.xml b/media/BasicMediaRouter/BasicMediaRouterSample/src/main/res/menu/main.xml
similarity index 100%
rename from media/BasicMediaRouter/BasicMediaRouter/src/main/res/menu/main.xml
rename to media/BasicMediaRouter/BasicMediaRouterSample/src/main/res/menu/main.xml
diff --git a/media/BasicMediaRouter/BasicMediaRouter/src/main/res/values/colors.xml b/media/BasicMediaRouter/BasicMediaRouterSample/src/main/res/values/colors.xml
similarity index 100%
rename from media/BasicMediaRouter/BasicMediaRouter/src/main/res/values/colors.xml
rename to media/BasicMediaRouter/BasicMediaRouterSample/src/main/res/values/colors.xml
diff --git a/media/BasicMediaRouter/BasicMediaRouterSample/src/main/res/values/strings.xml b/media/BasicMediaRouter/BasicMediaRouterSample/src/main/res/values/strings.xml
new file mode 100644
index 0000000..40c023a
--- /dev/null
+++ b/media/BasicMediaRouter/BasicMediaRouterSample/src/main/res/values/strings.xml
@@ -0,0 +1,9 @@
+<resources>
+    <string name="menu_present_to">Present to</string>
+    <string name="title_activity_main">MainActivity</string>
+    <string name="secondary_connected">Connected to:\n%s</string>
+    <string name="secondary_notconnected">No secondary display connected.</string>
+    <string name="change_color">Change Color</string>
+    <string name="display_name">This display is: %s</string>
+    <string name="display_color">Background color: #%X</string>
+</resources>
\ No newline at end of file
diff --git a/media/BasicMediaRouter/BasicMediaRouter/src/main/res/values/styles.xml b/media/BasicMediaRouter/BasicMediaRouterSample/src/main/res/values/styles.xml
similarity index 79%
rename from media/BasicMediaRouter/BasicMediaRouter/src/main/res/values/styles.xml
rename to media/BasicMediaRouter/BasicMediaRouterSample/src/main/res/values/styles.xml
index 05c67f3..4f64054 100644
--- a/media/BasicMediaRouter/BasicMediaRouter/src/main/res/values/styles.xml
+++ b/media/BasicMediaRouter/BasicMediaRouterSample/src/main/res/values/styles.xml
@@ -12,10 +12,6 @@
         -->
     </style>
 
-    <!-- Application theme. -->
-    <style name="AppTheme" parent="AppBaseTheme">
-        <!-- All customizations that are NOT specific to a particular API-level can go here. -->
-    </style>
 
     <style name="DisplayLargeText">
         <item name="android:textSize">30sp</item>
diff --git a/media/BasicMediaRouter/BasicMediaRouterSample/tests/AndroidManifest.xml b/media/BasicMediaRouter/BasicMediaRouterSample/tests/AndroidManifest.xml
new file mode 100644
index 0000000..8800232
--- /dev/null
+++ b/media/BasicMediaRouter/BasicMediaRouterSample/tests/AndroidManifest.xml
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  Copyright (C) 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 name must be unique so suffix with "tests" so package loader doesn't ignore us -->
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+          package="com.example.android.basicmediarouter.tests"
+          android:versionCode="1"
+          android:versionName="1.0">
+
+    <uses-sdk
+            android:minSdkVersion="18"
+            android:targetSdkVersion="19" />
+
+    <!-- We add an application tag here just so that we can indicate that
+         this package needs to link against the android.test library,
+         which is needed when building test cases. -->
+    <application>
+        <uses-library android:name="android.test.runner" />
+    </application>
+
+    <!--
+    Specifies the instrumentation test runner used to run the tests.
+    -->
+    <instrumentation
+            android:name="android.test.InstrumentationTestRunner"
+            android:targetPackage="com.example.android.basicmediarouter"
+            android:label="Tests for com.example.android.basicmediarouter" />
+
+</manifest>
\ No newline at end of file
diff --git a/media/BasicMediaRouter/BasicMediaRouterSample/tests/src/com/example/android/basicmediarouter/tests/SampleTests.java b/media/BasicMediaRouter/BasicMediaRouterSample/tests/src/com/example/android/basicmediarouter/tests/SampleTests.java
new file mode 100644
index 0000000..5c475a3
--- /dev/null
+++ b/media/BasicMediaRouter/BasicMediaRouterSample/tests/src/com/example/android/basicmediarouter/tests/SampleTests.java
@@ -0,0 +1,79 @@
+/*
+* 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.
+*/
+
+
+
+/*
+* Copyright (C) 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.basicmediarouter.tests;
+
+import com.example.android.basicmediarouter.*;
+
+import android.test.ActivityInstrumentationTestCase2;
+
+/**
+* Tests for BasicMediaRouter sample.
+*/
+public class SampleTests extends ActivityInstrumentationTestCase2<MainActivity> {
+
+    private MainActivity mTestActivity;
+    private BasicMediaRouterFragment mTestFragment;
+
+    public SampleTests() {
+        super(MainActivity.class);
+    }
+
+    @Override
+    protected void setUp() throws Exception {
+        super.setUp();
+
+        // Starts the activity under test using the default Intent with:
+        // action = {@link Intent#ACTION_MAIN}
+        // flags = {@link Intent#FLAG_ACTIVITY_NEW_TASK}
+        // All other fields are null or empty.
+        mTestActivity = getActivity();
+        mTestFragment = (BasicMediaRouterFragment)
+            mTestActivity.getSupportFragmentManager().getFragments().get(1);
+    }
+
+    /**
+    * Test if the test fixture has been set up correctly.
+    */
+    public void testPreconditions() {
+        //Try to add a message to add context to your assertions. These messages will be shown if
+        //a tests fails and make it easy to understand why a test failed
+        assertNotNull("mTestActivity is null", mTestActivity);
+        assertNotNull("mTestFragment is null", mTestFragment);
+    }
+
+    /**
+    * Add more tests below.
+    */
+
+}
\ No newline at end of file
diff --git a/media/BasicMediaRouter/README.txt b/media/BasicMediaRouter/README.txt
deleted file mode 100644
index 38608df..0000000
--- a/media/BasicMediaRouter/README.txt
+++ /dev/null
@@ -1,6 +0,0 @@
-Build Instructions
--------------------
-This sample uses the Gradle build system. To build this project, use the
-"gradlew build" command.
-
-To see a list of all available commands, run "gradlew tasks".
\ No newline at end of file
diff --git a/media/BasicMediaRouter/build.gradle b/media/BasicMediaRouter/build.gradle
index 036abc8..c7a137e 100644
--- a/media/BasicMediaRouter/build.gradle
+++ b/media/BasicMediaRouter/build.gradle
@@ -1,8 +1,10 @@
-buildscript {
-    repositories {
-        mavenCentral()
-    }
-    dependencies {
-        classpath 'com.android.tools.build:gradle:0.5.+'
-    }
+// BEGIN_EXCLUDE
+import com.example.android.samples.build.SampleGenPlugin
+apply plugin: SampleGenPlugin
+
+samplegen {
+  pathToBuild "../../../../build"
+  pathToSamplesCommon "../../common"
 }
+apply from: "../../../../build/build.gradle"
+// END_EXCLUDE
diff --git a/media/BasicMediaRouter/buildSrc/build.gradle b/media/BasicMediaRouter/buildSrc/build.gradle
new file mode 100644
index 0000000..29282af
--- /dev/null
+++ b/media/BasicMediaRouter/buildSrc/build.gradle
@@ -0,0 +1,18 @@
+
+
+
+repositories {
+    mavenCentral()
+}
+dependencies {
+    compile 'org.freemarker:freemarker:2.3.20'
+}
+
+sourceSets {
+    main {
+        groovy {
+            srcDir new File(rootDir, "../../../../../build/buildSrc/src/main/groovy")
+        }
+    }
+}
+
diff --git a/media/BasicMediaRouter/gradle/wrapper/gradle-wrapper.properties b/media/BasicMediaRouter/gradle/wrapper/gradle-wrapper.properties
index 055ba6f..861eddc 100644
--- a/media/BasicMediaRouter/gradle/wrapper/gradle-wrapper.properties
+++ b/media/BasicMediaRouter/gradle/wrapper/gradle-wrapper.properties
@@ -1,7 +1,6 @@
-#
-#Mon Jul 22 11:40:20 PDT 2013
+#Wed Apr 10 15:27:10 PDT 2013
 distributionBase=GRADLE_USER_HOME
 distributionPath=wrapper/dists
 zipStoreBase=GRADLE_USER_HOME
 zipStorePath=wrapper/dists
-distributionUrl=http\://services.gradle.org/distributions/gradle-1.6-bin.zip
+distributionUrl=http\://services.gradle.org/distributions/gradle-1.8-bin.zip
diff --git a/media/BasicMediaRouter/mediarouter.jd b/media/BasicMediaRouter/mediarouter.jd
deleted file mode 100644
index fcf6ec9..0000000
--- a/media/BasicMediaRouter/mediarouter.jd
+++ /dev/null
@@ -1,26 +0,0 @@
-page.title=MediaRouter Sample
-@jd:body
-<p>
-This sample demonstrates the use of the MediaRouter API to show content on a
-secondary display using a {@link Presentation}.
-</p>
-<p>
-The activity uses the 
-<a href="http://developer.android.com/reference/android/media/MediaRouter.html">MediaRouter</a> API
- to automatically detect when a
- presentation display is available and to allow the user to control the media routes using a menu
- item provided by the 
- <a href="http://developer.android.com/reference/android/app/MediaRouteActionProvider.html">
- MediaRouteActionProvider</a>.
-When a presentation display is available a
- <a href="http://developer.android.com/reference/android/app/Presentation.html">Presentation</a>
- is shown on the preferred display. A button toggles the background color of the secondary screen
- to show the interaction between the primary and secondary screens.
-</p>
-<p>
-This sample requires an HDMI or Wifi display. Alternatively, the
- "Simulate secondary displays" feature in Development Settings can be enabled
- to simulate secondary displays.
-</p>
-
-
diff --git a/media/BasicMediaRouter/settings.gradle b/media/BasicMediaRouter/settings.gradle
index 327efd6..9d5cbc2 100644
--- a/media/BasicMediaRouter/settings.gradle
+++ b/media/BasicMediaRouter/settings.gradle
@@ -1 +1,4 @@
-include ':BasicMediaRouter'
\ No newline at end of file
+
+
+
+include 'BasicMediaRouterSample'
diff --git a/media/BasicMediaRouter/template-params.xml b/media/BasicMediaRouter/template-params.xml
new file mode 100644
index 0000000..e7cbab5
--- /dev/null
+++ b/media/BasicMediaRouter/template-params.xml
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ 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.
+-->
+<sample>
+    <name>BasicMediaRouter</name>
+    <group>Media</group>
+    <package>com.example.android.basicmediarouter</package>
+
+
+
+    <!-- change minSdk if needed-->
+    <minSdk>17</minSdk>
+
+
+    <strings>
+        <intro>
+            <![CDATA[
+            This sample demonstrates the use of the MediaRouter API to display
+ content on a secondary display.\n\nUse the "Media Route Action Item" in the ActionBar
+ to select an output device. If your device supports Miracast wireless displays,
+ you may need to enable "Wireless Display" functionality in the system settings.
+ Secondary screen simulation can also be enabled from the "Developer Options".\n\n
+Once connected, use the "Change Color" button to change the background color of the secondary screen.
+            ]]>
+        </intro>
+    </strings>
+
+    <template src="base"/>
+    <common src="logger"/>
+
+</sample>
diff --git a/media/MediaRecorder/MediaRecorder/build.gradle b/media/MediaRecorder/MediaRecorder/build.gradle
deleted file mode 100644
index 10fb811..0000000
--- a/media/MediaRecorder/MediaRecorder/build.gradle
+++ /dev/null
@@ -1,10 +0,0 @@
-apply plugin: 'android'
-
-dependencies {
-    compile "com.android.support:support-v4:18.0.+"
-}
-
-android {
-    compileSdkVersion 18
-    buildToolsVersion "18.0.1"
-}
diff --git a/media/MediaRecorder/MediaRecorder/src/main/res/menu/main.xml b/media/MediaRecorder/MediaRecorder/src/main/res/menu/main.xml
deleted file mode 100644
index f3b10b6..0000000
--- a/media/MediaRecorder/MediaRecorder/src/main/res/menu/main.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<menu xmlns:android="http://schemas.android.com/apk/res/android">
-    <item android:id="@+id/action_settings"
-        android:title="@string/action_settings"
-        android:orderInCategory="100"
-        android:showAsAction="never" />
-</menu>
diff --git a/media/MediaRecorder/MediaRecorder/src/main/res/values-sw600dp/dimens.xml b/media/MediaRecorder/MediaRecorder/src/main/res/values-sw600dp/dimens.xml
deleted file mode 100644
index 886b05f..0000000
--- a/media/MediaRecorder/MediaRecorder/src/main/res/values-sw600dp/dimens.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<resources>
-    <!-- Customize dimensions originally defined in res/values/dimens.xml (such as
-         screen margins) for sw600dp devices (e.g. 7" tablets) here. -->
-</resources>
diff --git a/media/MediaRecorder/MediaRecorder/src/main/res/values-sw720dp-land/dimens.xml b/media/MediaRecorder/MediaRecorder/src/main/res/values-sw720dp-land/dimens.xml
deleted file mode 100644
index 00059fc..0000000
--- a/media/MediaRecorder/MediaRecorder/src/main/res/values-sw720dp-land/dimens.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<resources>
-    <!-- Customize dimensions originally defined in res/values/dimens.xml (such as
-         screen margins) for sw720dp devices (e.g. 10" tablets) in landscape here. -->
-    <dimen name="activity_horizontal_margin">128dp</dimen>
-</resources>
diff --git a/media/MediaRecorder/MediaRecorder/src/main/res/values-v11/styles.xml b/media/MediaRecorder/MediaRecorder/src/main/res/values-v11/styles.xml
deleted file mode 100644
index 3c02242..0000000
--- a/media/MediaRecorder/MediaRecorder/src/main/res/values-v11/styles.xml
+++ /dev/null
@@ -1,11 +0,0 @@
-<resources>
-
-    <!--
-        Base application theme for API 11+. This theme completely replaces
-        AppBaseTheme from res/values/styles.xml on API 11+ devices.
-    -->
-    <style name="AppBaseTheme" parent="android:Theme.Holo.Light">
-        <!-- API 11 theme customizations can go here. -->
-    </style>
-
-</resources>
diff --git a/media/MediaRecorder/MediaRecorder/src/main/res/values-v14/styles.xml b/media/MediaRecorder/MediaRecorder/src/main/res/values-v14/styles.xml
deleted file mode 100644
index a91fd03..0000000
--- a/media/MediaRecorder/MediaRecorder/src/main/res/values-v14/styles.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-<resources>
-
-    <!--
-        Base application theme for API 14+. This theme completely replaces
-        AppBaseTheme from BOTH res/values/styles.xml and
-        res/values-v11/styles.xml on API 14+ devices.
-    -->
-    <style name="AppBaseTheme" parent="android:Theme.Holo.Light.DarkActionBar">
-        <!-- API 14 theme customizations can go here. -->
-    </style>
-
-</resources>
diff --git a/media/MediaRecorder/MediaRecorder/src/main/res/values/dimens.xml b/media/MediaRecorder/MediaRecorder/src/main/res/values/dimens.xml
deleted file mode 100644
index 47c8224..0000000
--- a/media/MediaRecorder/MediaRecorder/src/main/res/values/dimens.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<resources>
-    <!-- Default screen margins, per the Android Design guidelines. -->
-    <dimen name="activity_horizontal_margin">16dp</dimen>
-    <dimen name="activity_vertical_margin">16dp</dimen>
-</resources>
diff --git a/media/MediaRecorder/MediaRecorder/src/main/res/values/strings.xml b/media/MediaRecorder/MediaRecorder/src/main/res/values/strings.xml
deleted file mode 100644
index 91ab13a..0000000
--- a/media/MediaRecorder/MediaRecorder/src/main/res/values/strings.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-
-    <string name="app_name">MediaRecorder</string>
-    <string name="action_settings">Settings</string>
-    <string name="hello_world">Hello world!</string>
-    <string name="btnCapture">capture</string>
-
-</resources>
diff --git a/media/MediaRecorder/MediaRecorder/src/main/res/values/styles.xml b/media/MediaRecorder/MediaRecorder/src/main/res/values/styles.xml
deleted file mode 100644
index 6ce89c7..0000000
--- a/media/MediaRecorder/MediaRecorder/src/main/res/values/styles.xml
+++ /dev/null
@@ -1,20 +0,0 @@
-<resources>
-
-    <!--
-        Base application theme, dependent on API level. This theme is replaced
-        by AppBaseTheme from res/values-vXX/styles.xml on newer devices.
-    -->
-    <style name="AppBaseTheme" parent="android:Theme.Light">
-        <!--
-            Theme customizations available in newer API levels can go in
-            res/values-vXX/styles.xml, while customizations related to
-            backward-compatibility can go here.
-        -->
-    </style>
-
-    <!-- Application theme. -->
-    <style name="AppTheme" parent="AppBaseTheme">
-        <!-- All customizations that are NOT specific to a particular API-level can go here. -->
-    </style>
-
-</resources>
diff --git a/media/MediaRecorder/MediaRecorderSample/.gitignore b/media/MediaRecorder/MediaRecorderSample/.gitignore
new file mode 100644
index 0000000..6eb878d
--- /dev/null
+++ b/media/MediaRecorder/MediaRecorderSample/.gitignore
@@ -0,0 +1,16 @@
+# 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.
+src/template/
+src/common/
+build.gradle
diff --git a/connectivity/sync/BasicSyncAdapter/BasicSyncAdapterTests/proguard-project.txt b/media/MediaRecorder/MediaRecorderSample/proguard-project.txt
similarity index 91%
copy from connectivity/sync/BasicSyncAdapter/BasicSyncAdapterTests/proguard-project.txt
copy to media/MediaRecorder/MediaRecorderSample/proguard-project.txt
index f2fe155..0d8f171 100644
--- a/connectivity/sync/BasicSyncAdapter/BasicSyncAdapterTests/proguard-project.txt
+++ b/media/MediaRecorder/MediaRecorderSample/proguard-project.txt
@@ -1,4 +1,4 @@
-# To enable ProGuard in your project, edit project.properties
+ To enable ProGuard in your project, edit project.properties
 # to define the proguard.config property as described in that file.
 #
 # Add project specific ProGuard rules here.
diff --git a/media/MediaRecorder/MediaRecorder/src/main/AndroidManifest.xml b/media/MediaRecorder/MediaRecorderSample/src/main/AndroidManifest.xml
similarity index 67%
rename from media/MediaRecorder/MediaRecorder/src/main/AndroidManifest.xml
rename to media/MediaRecorder/MediaRecorderSample/src/main/AndroidManifest.xml
index 038b1fd..32f88f6 100644
--- a/media/MediaRecorder/MediaRecorder/src/main/AndroidManifest.xml
+++ b/media/MediaRecorder/MediaRecorderSample/src/main/AndroidManifest.xml
@@ -1,21 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
 <!--
-    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
+ Copyright 2013 The Android Open Source Project
 
-      http://www.apache.org/licenses/LICENSE-2.0
+ 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
 
-    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.
+     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.
 -->
+
+
+
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
-    package="com.example.android.media.recorder"
+    package="com.example.android.mediarecorder"
     android:versionCode="1"
-    android:versionName="1.0" >
+    android:versionName="1.0">
 
     <uses-sdk
         android:minSdkVersion="14"
diff --git a/media/MediaRecorder/MediaRecorder/src/main/java/com/example/android/media/recorder/MainActivity.java b/media/MediaRecorder/MediaRecorderSample/src/main/java/com/example/android/mediarecorder/MainActivity.java
similarity index 91%
rename from media/MediaRecorder/MediaRecorder/src/main/java/com/example/android/media/recorder/MainActivity.java
rename to media/MediaRecorder/MediaRecorderSample/src/main/java/com/example/android/mediarecorder/MainActivity.java
index d50b53e..8587636 100644
--- a/media/MediaRecorder/MediaRecorder/src/main/java/com/example/android/media/recorder/MainActivity.java
+++ b/media/MediaRecorder/MediaRecorderSample/src/main/java/com/example/android/mediarecorder/MainActivity.java
@@ -14,16 +14,16 @@
  * limitations under the License.
  */
 
-package com.example.android.media.recorder;
+package com.example.android.mediarecorder;
 
 import android.annotation.TargetApi;
+import android.app.Activity;
 import android.hardware.Camera;
 import android.media.CamcorderProfile;
 import android.media.MediaRecorder;
 import android.os.AsyncTask;
 import android.os.Build;
 import android.os.Bundle;
-import android.app.Activity;
 import android.util.Log;
 import android.view.Menu;
 import android.view.TextureView;
@@ -36,8 +36,8 @@
 import java.util.List;
 
 /**
- *  This activity uses the camera/camcorder as the A/V source for the {@link MediaRecorder} API.
- *  A {@link TextureView} is used as the camera preview which limits the code to API 14+. This
+ *  This activity uses the camera/camcorder as the A/V source for the {@link android.media.MediaRecorder} API.
+ *  A {@link android.view.TextureView} is used as the camera preview which limits the code to API 14+. This
  *  can be easily replaced with a {@link android.view.SurfaceView} to run on older devices.
  */
 public class MainActivity extends Activity {
@@ -53,7 +53,7 @@
     @Override
     protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
-        setContentView(R.layout.activity_main);
+        setContentView(R.layout.sample_main);
 
         mPreview = (TextureView) findViewById(R.id.surface_view);
         captureButton = (Button) findViewById(R.id.button_capture);
@@ -61,8 +61,8 @@
 
     /**
      * The capture button controls all user interaction. When recording, the button click
-     * stops recording, releases {@link MediaRecorder} and {@link Camera}. When not recording,
-     * it prepares the {@link MediaRecorder} and starts recording.
+     * stops recording, releases {@link android.media.MediaRecorder} and {@link android.hardware.Camera}. When not recording,
+     * it prepares the {@link android.media.MediaRecorder} and starts recording.
      *
      * @param view the view generating the event.
      */
@@ -97,13 +97,6 @@
     }
 
     @Override
-    public boolean onCreateOptionsMenu(Menu menu) {
-        // Inflate the menu; this adds items to the action bar if it is present.
-        getMenuInflater().inflate(R.menu.main, menu);
-        return true;
-    }
-
-    @Override
     protected void onPause() {
         super.onPause();
         // if we are using MediaRecorder, release it first
@@ -201,7 +194,7 @@
     }
 
     /**
-     * Asynchronous task for preparing the {@link MediaRecorder} since it's a long blocking
+     * Asynchronous task for preparing the {@link android.media.MediaRecorder} since it's a long blocking
      * operation.
      */
     class MediaPrepareTask extends AsyncTask<Void, Void, Boolean> {
diff --git a/media/MediaRecorder/MediaRecorder/src/main/res/drawable-hdpi/ic_launcher.png b/media/MediaRecorder/MediaRecorderSample/src/main/res/drawable-hdpi/ic_launcher.png
similarity index 100%
rename from media/MediaRecorder/MediaRecorder/src/main/res/drawable-hdpi/ic_launcher.png
rename to media/MediaRecorder/MediaRecorderSample/src/main/res/drawable-hdpi/ic_launcher.png
Binary files differ
diff --git a/media/MediaRecorder/MediaRecorder/src/main/res/drawable-mdpi/ic_launcher.png b/media/MediaRecorder/MediaRecorderSample/src/main/res/drawable-mdpi/ic_launcher.png
similarity index 100%
rename from media/MediaRecorder/MediaRecorder/src/main/res/drawable-mdpi/ic_launcher.png
rename to media/MediaRecorder/MediaRecorderSample/src/main/res/drawable-mdpi/ic_launcher.png
Binary files differ
diff --git a/media/MediaRecorder/MediaRecorder/src/main/res/drawable-xhdpi/ic_launcher.png b/media/MediaRecorder/MediaRecorderSample/src/main/res/drawable-xhdpi/ic_launcher.png
similarity index 100%
rename from media/MediaRecorder/MediaRecorder/src/main/res/drawable-xhdpi/ic_launcher.png
rename to media/MediaRecorder/MediaRecorderSample/src/main/res/drawable-xhdpi/ic_launcher.png
Binary files differ
diff --git a/media/MediaRecorder/MediaRecorder/src/main/res/drawable-xxhdpi/ic_launcher.png b/media/MediaRecorder/MediaRecorderSample/src/main/res/drawable-xxhdpi/ic_launcher.png
similarity index 100%
rename from media/MediaRecorder/MediaRecorder/src/main/res/drawable-xxhdpi/ic_launcher.png
rename to media/MediaRecorder/MediaRecorderSample/src/main/res/drawable-xxhdpi/ic_launcher.png
Binary files differ
diff --git a/media/MediaRecorder/MediaRecorder/src/main/res/layout/activity_main.xml b/media/MediaRecorder/MediaRecorderSample/src/main/res/layout/sample_main.xml
similarity index 100%
rename from media/MediaRecorder/MediaRecorder/src/main/res/layout/activity_main.xml
rename to media/MediaRecorder/MediaRecorderSample/src/main/res/layout/sample_main.xml
diff --git a/views/TextLinkify/TextLinkify/src/main/res/values-sw600dp/dimens.xml b/media/MediaRecorder/MediaRecorderSample/src/main/res/values-sw720dp-land/dimens.xml
similarity index 63%
copy from views/TextLinkify/TextLinkify/src/main/res/values-sw600dp/dimens.xml
copy to media/MediaRecorder/MediaRecorderSample/src/main/res/values-sw720dp-land/dimens.xml
index 686fe89..c4aad9b 100644
--- a/views/TextLinkify/TextLinkify/src/main/res/values-sw600dp/dimens.xml
+++ b/media/MediaRecorder/MediaRecorderSample/src/main/res/values-sw720dp-land/dimens.xml
@@ -1,11 +1,11 @@
 <!--
-  Copyright 2013 The Android Open Source Project
+  Copyright (C) 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
+       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,
@@ -15,10 +15,7 @@
 -->
 
 <resources>
-
-    <!--
-         Customize dimensions originally defined in res/values/dimens.xml (such as
-         screen margins) for sw600dp devices (e.g. 7" tablets) here.
-    -->
-
+    <!-- Customize dimensions originally defined in res/values/dimens.xml (such as
+         screen margins) for sw720dp devices (e.g. 10" tablets) in landscape here. -->
+    <dimen name="activity_horizontal_margin">128dp</dimen>
 </resources>
diff --git a/ui/actionbar/DoneBar/DoneBar/src/main/res/values-sw600dp/dimens.xml b/media/MediaRecorder/MediaRecorderSample/src/main/res/values/dimens.xml
similarity index 64%
copy from ui/actionbar/DoneBar/DoneBar/src/main/res/values-sw600dp/dimens.xml
copy to media/MediaRecorder/MediaRecorderSample/src/main/res/values/dimens.xml
index 22074a2..0353ed6 100644
--- a/ui/actionbar/DoneBar/DoneBar/src/main/res/values-sw600dp/dimens.xml
+++ b/media/MediaRecorder/MediaRecorderSample/src/main/res/values/dimens.xml
@@ -1,24 +1,21 @@
 <!--
-  Copyright 2013 The Android Open Source Project
+  Copyright (C) 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
+       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>
-
-    <!-- Semantic definitions -->
-
-    <dimen name="horizontal_page_margin">@dimen/margin_huge</dimen>
-    <dimen name="vertical_page_margin">@dimen/margin_medium</dimen>
-
+    <!-- Default screen margins, per the Android Design guidelines. -->
+    <dimen name="activity_horizontal_margin">16dp</dimen>
+    <dimen name="activity_vertical_margin">16dp</dimen>
 </resources>
diff --git a/ui/actionbarcompat/ListPopupMenu/ListPopupMenu/src/main/res/values/strings.xml b/media/MediaRecorder/MediaRecorderSample/src/main/res/values/strings.xml
similarity index 68%
copy from ui/actionbarcompat/ListPopupMenu/ListPopupMenu/src/main/res/values/strings.xml
copy to media/MediaRecorder/MediaRecorderSample/src/main/res/values/strings.xml
index 36233c9..b6a2cd2 100644
--- a/ui/actionbarcompat/ListPopupMenu/ListPopupMenu/src/main/res/values/strings.xml
+++ b/media/MediaRecorder/MediaRecorderSample/src/main/res/values/strings.xml
@@ -1,12 +1,12 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!--
-  Copyright 2013 The Android Open Source Project
+  Copyright (C) 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
+       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,
@@ -14,10 +14,11 @@
   See the License for the specific language governing permissions and
   limitations under the License.
 -->
+
 <resources>
 
-    <string name="app_name">ABC List Popup Menu</string>
-    <string name="menu_remove">Remove</string>
-    <string name="content_open_popup">Open Popup Menu</string>
+    <string name="action_settings">Settings</string>
+    <string name="hello_world">Hello world!</string>
+    <string name="btnCapture">capture</string>
 
-</resources>
\ No newline at end of file
+</resources>
diff --git a/media/MediaRecorder/build.gradle b/media/MediaRecorder/build.gradle
index bd6967f..c886d80 100644
--- a/media/MediaRecorder/build.gradle
+++ b/media/MediaRecorder/build.gradle
@@ -1,9 +1,11 @@
-// Top-level build file where you can add configuration options common to all sub-projects/modules.
-buildscript {
-    repositories {
-        mavenCentral()
-    }
-    dependencies {
-        classpath 'com.android.tools.build:gradle:0.5.+'
-    }
-}
\ No newline at end of file
+
+
+
+
+// BEGIN_EXCLUDE
+apply from: "../../../../build/build.gradle"
+samplegen {
+  pathToBuild "../../../../build"
+  pathToSamplesCommon "../../common"
+}
+// END_EXCLUDE
diff --git a/media/MediaRecorder/buildSrc/build.gradle b/media/MediaRecorder/buildSrc/build.gradle
new file mode 100644
index 0000000..29282af
--- /dev/null
+++ b/media/MediaRecorder/buildSrc/build.gradle
@@ -0,0 +1,18 @@
+
+
+
+repositories {
+    mavenCentral()
+}
+dependencies {
+    compile 'org.freemarker:freemarker:2.3.20'
+}
+
+sourceSets {
+    main {
+        groovy {
+            srcDir new File(rootDir, "../../../../../build/buildSrc/src/main/groovy")
+        }
+    }
+}
+
diff --git a/media/MediaRecorder/gradle/wrapper/gradle-wrapper.properties b/media/MediaRecorder/gradle/wrapper/gradle-wrapper.properties
index 5c22dec..861eddc 100644
--- a/media/MediaRecorder/gradle/wrapper/gradle-wrapper.properties
+++ b/media/MediaRecorder/gradle/wrapper/gradle-wrapper.properties
@@ -3,4 +3,4 @@
 distributionPath=wrapper/dists
 zipStoreBase=GRADLE_USER_HOME
 zipStorePath=wrapper/dists
-distributionUrl=http\://services.gradle.org/distributions/gradle-1.6-bin.zip
+distributionUrl=http\://services.gradle.org/distributions/gradle-1.8-bin.zip
diff --git a/media/MediaRecorder/settings.gradle b/media/MediaRecorder/settings.gradle
index 3fbbc54..61e4032 100644
--- a/media/MediaRecorder/settings.gradle
+++ b/media/MediaRecorder/settings.gradle
@@ -1 +1,4 @@
-include ':MediaRecorder'
+
+
+
+include 'MediaRecorderSample'
diff --git a/media/MediaRecorder/template-params.xml b/media/MediaRecorder/template-params.xml
new file mode 100644
index 0000000..6b6ddc5
--- /dev/null
+++ b/media/MediaRecorder/template-params.xml
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ 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.
+-->
+
+
+
+<sample>
+    <name>MediaRecorder</name>
+    <group>Media</group>
+    <package>com.example.android.mediarecorder</package>
+
+    <!-- change minSdk if needed-->
+    <minSdk>14</minSdk>
+
+    <strings>
+        <intro>
+            <![CDATA[
+            This sample uses the camera/camcorder as the A/V source for the MediaRecorder API.
+            A TextureView is used as the camera preview which limits the code to API 14+. This
+            can be easily replaced with a SurfaceView to run on older devices.
+            ]]>
+        </intro>
+    </strings>
+
+    <template src="base"/>
+    <common src="media"/>
+</sample>
diff --git a/security/keystore/BasicAndroidKeyStore/BasicAndroidKeyStore/build.gradle b/security/keystore/BasicAndroidKeyStore/BasicAndroidKeyStore/build.gradle
deleted file mode 100644
index 0baece9..0000000
--- a/security/keystore/BasicAndroidKeyStore/BasicAndroidKeyStore/build.gradle
+++ /dev/null
@@ -1,10 +0,0 @@
-apply plugin: 'android'
-
-dependencies {
-    compile "com.android.support:support-v4:18.0.+"
-}
-
-android {
-    compileSdkVersion 18
-    buildToolsVersion "18.0.0"
-}
diff --git a/security/keystore/BasicAndroidKeyStore/BasicAndroidKeyStore/src/main/java/com/example/android/basicandroidkeystore/LogFragment.java b/security/keystore/BasicAndroidKeyStore/BasicAndroidKeyStore/src/main/java/com/example/android/basicandroidkeystore/LogFragment.java
deleted file mode 100644
index 23d4da7..0000000
--- a/security/keystore/BasicAndroidKeyStore/BasicAndroidKeyStore/src/main/java/com/example/android/basicandroidkeystore/LogFragment.java
+++ /dev/null
@@ -1,73 +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.basicandroidkeystore;
-
-import com.example.android.common.logger.LogView;
-
-import android.os.Bundle;
-import android.support.v4.app.Fragment;
-import android.text.Editable;
-import android.text.TextWatcher;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-import android.widget.ScrollView;
-
-/**
- * Simple fraggment which contains a LogView and uses is to output log data it receives
- * through the LogNode interface.
- */
-public class LogFragment extends Fragment {
-
-    private LogView mLogView;
-
-    public LogFragment() {}
-
-    @Override
-    public View onCreateView(LayoutInflater inflater, ViewGroup container,
-            Bundle savedInstanceState) {
-
-        View result = inflater.inflate(R.layout.log_fragment, container, false);
-
-        mLogView = (LogView) result.findViewById(R.id.sample_output);
-
-        // Wire up so when the text changes, the view scrolls down.
-        final ScrollView scrollView =
-                ((ScrollView) result.findViewById(R.id.log_scroll));
-
-        mLogView.addTextChangedListener(new TextWatcher() {
-            @Override
-            public void beforeTextChanged(CharSequence s, int start, int count, int after) {}
-
-            @Override
-            public void onTextChanged(CharSequence s, int start, int before, int count) {
-                scrollView.fullScroll(ScrollView.FOCUS_DOWN);
-            }
-
-            @Override
-            public void afterTextChanged(Editable s) {
-                scrollView.fullScroll(ScrollView.FOCUS_DOWN);
-            }
-        });
-
-        return result;
-    }
-
-    public LogView getLogView() {
-        return mLogView;
-    }
-}
\ No newline at end of file
diff --git a/security/keystore/BasicAndroidKeyStore/BasicAndroidKeyStore/src/main/java/com/example/android/basicandroidkeystore/MainActivity.java b/security/keystore/BasicAndroidKeyStore/BasicAndroidKeyStore/src/main/java/com/example/android/basicandroidkeystore/MainActivity.java
deleted file mode 100644
index 33af4e5..0000000
--- a/security/keystore/BasicAndroidKeyStore/BasicAndroidKeyStore/src/main/java/com/example/android/basicandroidkeystore/MainActivity.java
+++ /dev/null
@@ -1,164 +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.basicandroidkeystore;
-
-import android.os.Bundle;
-import android.support.v4.app.FragmentActivity;
-import android.view.Menu;
-import android.view.MenuItem;
-
-import com.example.android.common.SimpleTextFragment;
-import com.example.android.common.logger.LogWrapper;
-import com.example.android.common.logger.MessageOnlyLogFilter;
-import com.example.android.common.logger.Log;
-
-import java.io.IOException;
-import java.security.InvalidAlgorithmParameterException;
-import java.security.InvalidKeyException;
-import java.security.KeyStoreException;
-import java.security.NoSuchAlgorithmException;
-import java.security.NoSuchProviderException;
-import java.security.SignatureException;
-import java.security.UnrecoverableEntryException;
-import java.security.cert.CertificateException;
-
-public class MainActivity extends FragmentActivity {
-
-    public final static String TAG = "MainActivity";
-    public LogFragment mLogFragment;
-
-    public KeyStoreHelper mKeyStoreHelper;
-
-
-    // BEGIN_INCLUDE(values)
-    // You can store multiple key pairs in the Key Store.  The string used to refer to the Key you
-    // want to store, or later pull, is referred to as an "alias" in this case, because calling it
-    // a key, when you use it to retrieve a key, would just be irritating.
-    public static final String ALIAS = "myKey";
-
-    // Some sample data to sign, and later verify using the generated signature.
-    public static final String SAMPLE_INPUT="Hello, Android!";
-
-    // Just a handy place to store the signature in between signing and verifying.
-    public String mSignatureStr = null;
-    // END_INCLUDE(values)
-
-    protected void onCreate(Bundle savedInstanceState) {
-        super.onCreate(savedInstanceState);
-        setContentView(R.layout.activity_main);
-
-        SimpleTextFragment actionFragment =
-                (SimpleTextFragment) getSupportFragmentManager()
-                        .findFragmentById(R.id.intro_fragment);
-        actionFragment.setText(R.string.intro_message);
-
-        mKeyStoreHelper = new KeyStoreHelper();
-        mKeyStoreHelper.setAlias(ALIAS);
-        initializeLogging();
-    }
-
-    @Override
-    public boolean onCreateOptionsMenu(Menu menu) {
-        getMenuInflater().inflate(R.menu.main, menu);
-        return true;
-    }
-
-    @Override
-    public boolean onOptionsItemSelected(MenuItem item) {
-        switch (item.getItemId()) {
-            case R.id.btn_create_keys:
-                try {
-                    mKeyStoreHelper.createKeys(this);
-                    Log.d(TAG, "Keys created");
-                    return true;
-                } catch (NoSuchAlgorithmException e) {
-                    Log.w(TAG, "RSA not supported", e);
-                } catch (InvalidAlgorithmParameterException e) {
-                    Log.w(TAG, "No such provider: AndroidKeyStore");
-                } catch (NoSuchProviderException e) {
-                    Log.w(TAG, "Invalid Algorithm Parameter Exception", e);
-                }
-                return true;
-            case R.id.btn_sign_data:
-                try {
-                    mSignatureStr = mKeyStoreHelper.signData(SAMPLE_INPUT);
-                } catch (KeyStoreException e) {
-                    Log.w(TAG, "KeyStore not Initialized", e);
-                } catch (UnrecoverableEntryException e) {
-                    Log.w(TAG, "KeyPair not recovered", e);
-                } catch (NoSuchAlgorithmException e) {
-                    Log.w(TAG, "RSA not supported", e);
-                } catch (InvalidKeyException e) {
-                    Log.w(TAG, "Invalid Key", e);
-                } catch (SignatureException e) {
-                    Log.w(TAG, "Invalid Signature", e);
-                } catch (IOException e) {
-                    Log.w(TAG, "IO Exception", e);
-                } catch (CertificateException e) {
-                    Log.w(TAG, "Error occurred while loading certificates", e);
-                }
-                Log.d(TAG, "Signature: " + mSignatureStr);
-                return true;
-
-            case R.id.btn_verify_data:
-                boolean verified = false;
-                try {
-                    if (mSignatureStr != null) {
-                        verified = mKeyStoreHelper.verifyData(SAMPLE_INPUT, mSignatureStr);
-                    }
-                } catch (KeyStoreException e) {
-                    Log.w(TAG, "KeyStore not Initialized", e);
-                } catch (CertificateException e) {
-                    Log.w(TAG, "Error occurred while loading certificates", e);
-                } catch (NoSuchAlgorithmException e) {
-                    Log.w(TAG, "RSA not supported", e);
-                } catch (IOException e) {
-                    Log.w(TAG, "IO Exception", e);
-                } catch (UnrecoverableEntryException e) {
-                    Log.w(TAG, "KeyPair not recovered", e);
-                } catch (InvalidKeyException e) {
-                    Log.w(TAG, "Invalid Key", e);
-                } catch (SignatureException e) {
-                    Log.w(TAG, "Invalid Signature", e);
-                }
-                if (verified) {
-                    Log.d(TAG, "Data Signature Verified");
-                } else {
-                    Log.d(TAG, "Data not verified.");
-                }
-                return true;
-        }
-        return false;
-    }
-
-    /** Create a chain of targets that will receive log data */
-    public void initializeLogging() {
-        // Using Log, front-end to the logging chain, emulates android.util.log method signatures.
-        // Wraps Android's native log framework
-        LogWrapper logWrapper = new LogWrapper();
-        Log.setLogNode(logWrapper);
-
-        // A filter that strips out everything except the message text
-        MessageOnlyLogFilter msgFilter = new MessageOnlyLogFilter();
-        logWrapper.setNext(msgFilter);
-
-        // On screen logging via a fragment with a TextView
-        mLogFragment = (LogFragment) getSupportFragmentManager().findFragmentById(R.id.log_fragment);
-        msgFilter.setNext(mLogFragment.getLogView());
-        Log.i(TAG, "Ready");
-    }
-}
diff --git a/security/keystore/BasicAndroidKeyStore/BasicAndroidKeyStore/src/main/java/com/example/android/common/SimpleTextFragment.java b/security/keystore/BasicAndroidKeyStore/BasicAndroidKeyStore/src/main/java/com/example/android/common/SimpleTextFragment.java
deleted file mode 100644
index 2895ea0..0000000
--- a/security/keystore/BasicAndroidKeyStore/BasicAndroidKeyStore/src/main/java/com/example/android/common/SimpleTextFragment.java
+++ /dev/null
@@ -1,98 +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.common;
-
-import android.os.Bundle;
-import android.support.v4.app.Fragment;
-import android.util.Log;
-import android.view.Gravity;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-import android.widget.TextView;
-
-/**
- * Simple fragment containing only a TextView.  Used by TextPagerAdapter to create
- * tutorial-style pages for apps.
- */
-public class SimpleTextFragment extends Fragment {
-
-    // Contains the text that will be displayed by this Fragment 	
-    String mText;
-
-    // Contains a resource ID for the text that will be displayed by this fragment. 	
-    int mTextId = -1;
-
-    // Keys which will be used to store/retrieve text passed in via setArguments. 	
-    public static final String TEXT_KEY = "text";
-    public static final String TEXT_ID_KEY = "text_id";
-
-    // For situations where the app wants to modify text at Runtime, exposing the TextView. 	
-    private TextView mTextView;
-
-    public SimpleTextFragment() {
-    }
-
-    @Override
-    public View onCreateView(LayoutInflater inflater, ViewGroup container,
-                             Bundle savedInstanceState) {
-        // Before initializing the textView, check if any arguments were provided via setArguments. 	
-        processArguments();
-
-        // Create a new TextView and set its text to whatever was provided. 	
-        mTextView = new TextView(getActivity());
-
-        if (mText != null) {
-            mTextView.setText(mText);
-            Log.i("SimpleTextFragment", mText);
-        }
-        return mTextView;
-    }
-
-    public TextView getTextView() {
-        return mTextView;
-    }
-
-    /**
-     * Changes the text for this TextView, according to the resource ID provided.
-     *
-     * @param stringId A resource ID representing the text content for this Fragment's TextView.
-     */
-    public void setText(int stringId) {
-        getTextView().setText(getActivity().getString(stringId));
-    }
-
-    /**
-     * Processes the arguments passed into this Fragment via setArguments method.
-     * Currently the method only looks for text or a textID, nothing else.
-     */
-    public void processArguments() {
-        // For most objects we'd handle the multiple possibilities for initialization variables 	
-        // as multiple constructors.  For Fragments, however, it's customary to use 	
-        // setArguments / getArguments. 	
-        if (getArguments() != null) {
-            Bundle args = getArguments();
-            if (args.containsKey(TEXT_KEY)) {
-                mText = args.getString(TEXT_KEY);
-                Log.d("Constructor", "Added Text.");
-            } else if (args.containsKey(TEXT_ID_KEY)) {
-                mTextId = args.getInt(TEXT_ID_KEY);
-                mText = getString(mTextId);
-            }
-        }
-    }
-} 
\ No newline at end of file
diff --git a/security/keystore/BasicAndroidKeyStore/BasicAndroidKeyStore/src/main/java/com/example/android/common/logger/LogNode.java b/security/keystore/BasicAndroidKeyStore/BasicAndroidKeyStore/src/main/java/com/example/android/common/logger/LogNode.java
deleted file mode 100644
index bc37cab..0000000
--- a/security/keystore/BasicAndroidKeyStore/BasicAndroidKeyStore/src/main/java/com/example/android/common/logger/LogNode.java
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- * Copyright (C) 2012 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.common.logger;
-
-/**
- * Basic interface for a logging system that can output to one or more targets.
- * Note that in addition to classes that will output these logs in some format,
- * one can also implement this interface over a filter and insert that in the chain,
- * such that no targets further down see certain data, or see manipulated forms of the data.
- * You could, for instance, write a "ToHtmlLoggerNode" that just converted all the log data
- * it received to HTML and sent it along to the next node in the chain, without printing it
- * anywhere.
- */
-public interface LogNode {
-
-    /**
-     * Instructs first LogNode in the list to print the log data provided.
-     * @param priority Log level of the data being logged.  Verbose, Error, etc.
-     * @param tag Tag for for the log data.  Can be used to organize log statements.
-     * @param msg The actual message to be logged. The actual message to be logged.
-     * @param tr If an exception was thrown, this can be sent along for the logging facilities
-     *           to extract and print useful information.
-     */
-    public void println(int priority, String tag, String msg, Throwable tr);
-
-}
diff --git a/security/keystore/BasicAndroidKeyStore/BasicAndroidKeyStore/src/main/java/com/example/android/common/logger/LogView.java b/security/keystore/BasicAndroidKeyStore/BasicAndroidKeyStore/src/main/java/com/example/android/common/logger/LogView.java
deleted file mode 100644
index dfe7648..0000000
--- a/security/keystore/BasicAndroidKeyStore/BasicAndroidKeyStore/src/main/java/com/example/android/common/logger/LogView.java
+++ /dev/null
@@ -1,140 +0,0 @@
-/*
- * Copyright (C) 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.common.logger;
-
-import android.content.Context;
-import android.text.method.ScrollingMovementMethod;
-import android.util.*;
-import android.widget.TextView;
-
-/**
- * Created by alexlucas on 6/4/13.
- */
-
-
-public class LogView extends TextView implements LogNode {
-
-    public LogView(Context context) {
-        super(context);
-    }
-
-    public LogView(Context context, AttributeSet attrs) {
-        super(context, attrs);
-    }
-
-    public LogView(Context context, AttributeSet attrs, int defStyle) {
-        super(context, attrs, defStyle);
-    }
-
-    /**
-     * Formats the log data and prints it out to the LogView.
-     * @param priority Log level of the data being logged.  Verbose, Error, etc.
-     * @param tag Tag for for the log data.  Can be used to organize log statements.
-     * @param msg The actual message to be logged. The actual message to be logged.
-     * @param tr If an exception was thrown, this can be sent along for the logging facilities
-     *           to extract and print useful information.
-     */
-    @Override
-    public void println(int priority, String tag, String msg, Throwable tr) {
-        String priorityStr = null;
-
-        // For the purposes of this View, we want to print the priority as readable text.
-        switch(priority) {
-            case android.util.Log.VERBOSE:
-                priorityStr = "VERBOSE";
-                break;
-            case android.util.Log.DEBUG:
-                priorityStr = "DEBUG";
-                break;
-            case android.util.Log.INFO:
-                priorityStr = "INFO";
-                break;
-            case android.util.Log.WARN:
-                priorityStr = "WARN";
-                break;
-            case android.util.Log.ERROR:
-                priorityStr = "ERROR";
-                break;
-            case android.util.Log.ASSERT:
-                priorityStr = "ASSERT";
-                break;
-            default:
-                break;
-        }
-
-        // Handily, the Log class has a facility for converting a stack trace into a useable string.
-        String exceptionStr = null;
-        if (tr != null) {
-            exceptionStr = android.util.Log.getStackTraceString(tr);
-        }
-
-        // Take the priority, tag, message, and exception, and concatenate as necessary
-        // into one usable line of text.
-        StringBuilder outputBuilder = new StringBuilder();
-
-        String delimiter = "\t";
-
-        appendIfNotNull(outputBuilder, priorityStr, delimiter);
-        appendIfNotNull(outputBuilder, tag, delimiter);
-        appendIfNotNull(outputBuilder, msg, delimiter);
-        appendIfNotNull(outputBuilder, exceptionStr, delimiter);
-
-        // Actually display the text we just generated within the LogView.
-        appendToLog(outputBuilder.toString());
-
-        if (mNext != null) {
-            mNext.println(priority, tag, msg, tr);
-        }
-    }
-
-    public LogNode getNext() {
-        return mNext;
-    }
-
-    public void setNext(LogNode node) {
-        mNext = node;
-    }
-
-    /** Takes a string and adds to it, with a seperator, if the bit to be added isn't null. Since
-     * the logger takes so many arguments that might be null, this method helps cut out some of the
-     * agonizing tedium of writing the same 3 lines over and over.
-     * @param source Stringbuilder containing the text to append to.
-     * @param addStrStr The String to append
-     * @param delimiter The String to seperate the source and appendee strings. A tab or comma,
-     *                  for instance.
-     * @return The fully concatenated String as a StringBuilder
-     */
-    private StringBuilder appendIfNotNull(StringBuilder source, String addStr, String delimiter) {
-        if (addStr != null) {
-            if (addStr.length() == 0) {
-                delimiter = "";
-            }
-
-            return source.append(addStr).append(delimiter);
-        }
-        return source;
-    }
-
-    // The next LogNode in the chain.
-    LogNode mNext;
-
-    /** Outputs the string as a new line of log data in the LogView. */
-    public void appendToLog(String s) {
-        append(s + "\n");
-    }
-
-
-}
diff --git a/security/keystore/BasicAndroidKeyStore/BasicAndroidKeyStore/src/main/java/com/example/android/common/logger/LogWrapper.java b/security/keystore/BasicAndroidKeyStore/BasicAndroidKeyStore/src/main/java/com/example/android/common/logger/LogWrapper.java
deleted file mode 100644
index 16a9e7b..0000000
--- a/security/keystore/BasicAndroidKeyStore/BasicAndroidKeyStore/src/main/java/com/example/android/common/logger/LogWrapper.java
+++ /dev/null
@@ -1,75 +0,0 @@
-/*
- * Copyright (C) 2012 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.common.logger;
-
-import android.util.Log;
-
-/**
- * Helper class which wraps Android's native Log utility in the Logger interface.  This way
- * normal DDMS output can be one of the many targets receiving and outputting logs simultaneously.
- */
-public class LogWrapper implements LogNode {
-
-    // For piping:  The next node to receive Log data after this one has done its work.
-    private LogNode mNext;
-
-    /**
-     * Returns the next LogNode in the linked list.
-     */
-    public LogNode getNext() {
-        return mNext;
-    }
-
-    /**
-     * Sets the LogNode data will be sent to..
-     */
-    public void setNext(LogNode node) {
-        mNext = node;
-    }
-
-    /**
-     * Prints data out to the console using Android's native log mechanism.
-     * @param priority Log level of the data being logged.  Verbose, Error, etc.
-     * @param tag Tag for for the log data.  Can be used to organize log statements.
-     * @param msg The actual message to be logged. The actual message to be logged.
-     * @param tr If an exception was thrown, this can be sent along for the logging facilities
-     *           to extract and print useful information.
-     */
-    @Override
-    public void println(int priority, String tag, String msg, Throwable tr) {
-        // There actually are log methods that don't take a msg parameter.  For now,
-        // if that's the case, just convert null to the empty string and move on.
-        String useMsg = msg;
-        if (useMsg == null) {
-            useMsg = "";
-        }
-
-        // If an exeption was provided, convert that exception to a usable string and attach
-        // it to the end of the msg method.
-        if (tr != null) {
-            msg += "\n" + Log.getStackTraceString(tr);
-        }
-
-        // This is functionally identical to Log.x(tag, useMsg);
-        // For instance, if priority were Log.VERBOSE, this would be the same as Log.v(tag, useMsg)
-        Log.println(priority, tag, useMsg);
-
-        // If this isn't the last node in the chain, move things along.
-        if (mNext != null) {
-            mNext.println(priority, tag, msg, tr);
-        }
-    }
-}
diff --git a/security/keystore/BasicAndroidKeyStore/BasicAndroidKeyStore/src/main/res/drawable-hdpi/ic_launcher.png b/security/keystore/BasicAndroidKeyStore/BasicAndroidKeyStore/src/main/res/drawable-hdpi/ic_launcher.png
deleted file mode 100755
index 22ce606..0000000
--- a/security/keystore/BasicAndroidKeyStore/BasicAndroidKeyStore/src/main/res/drawable-hdpi/ic_launcher.png
+++ /dev/null
Binary files differ
diff --git a/security/keystore/BasicAndroidKeyStore/BasicAndroidKeyStore/src/main/res/drawable-mdpi/ic_launcher.png b/security/keystore/BasicAndroidKeyStore/BasicAndroidKeyStore/src/main/res/drawable-mdpi/ic_launcher.png
deleted file mode 100755
index f21e17b..0000000
--- a/security/keystore/BasicAndroidKeyStore/BasicAndroidKeyStore/src/main/res/drawable-mdpi/ic_launcher.png
+++ /dev/null
Binary files differ
diff --git a/security/keystore/BasicAndroidKeyStore/BasicAndroidKeyStore/src/main/res/drawable-xhdpi/ic_launcher.png b/security/keystore/BasicAndroidKeyStore/BasicAndroidKeyStore/src/main/res/drawable-xhdpi/ic_launcher.png
deleted file mode 100755
index 64b8059..0000000
--- a/security/keystore/BasicAndroidKeyStore/BasicAndroidKeyStore/src/main/res/drawable-xhdpi/ic_launcher.png
+++ /dev/null
Binary files differ
diff --git a/security/keystore/BasicAndroidKeyStore/BasicAndroidKeyStore/src/main/res/drawable-xxhdpi/ic_launcher.png b/security/keystore/BasicAndroidKeyStore/BasicAndroidKeyStore/src/main/res/drawable-xxhdpi/ic_launcher.png
deleted file mode 100755
index 6b4434a..0000000
--- a/security/keystore/BasicAndroidKeyStore/BasicAndroidKeyStore/src/main/res/drawable-xxhdpi/ic_launcher.png
+++ /dev/null
Binary files differ
diff --git a/security/keystore/BasicAndroidKeyStore/BasicAndroidKeyStore/src/main/res/layout/activity_main.xml b/security/keystore/BasicAndroidKeyStore/BasicAndroidKeyStore/src/main/res/layout/activity_main.xml
deleted file mode 100755
index a86e2b0..0000000
--- a/security/keystore/BasicAndroidKeyStore/BasicAndroidKeyStore/src/main/res/layout/activity_main.xml
+++ /dev/null
@@ -1,38 +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.
-  -->
-
-<LinearLayout
-        xmlns:android="http://schemas.android.com/apk/res/android"
-        android:orientation="vertical"
-        android:layout_width="fill_parent"
-        android:layout_height="fill_parent">
-<fragment
-        android:name="com.example.android.common.SimpleTextFragment"
-        android:id="@+id/intro_fragment"
-        android:layout_weight="1"
-        android:layout_width="match_parent"
-        android:layout_height="match_parent" />
-<View
-        android:layout_width="fill_parent"
-        android:layout_height="1dp"
-        android:background="@android:color/darker_gray"/>
-<fragment
-        android:name="com.example.android.basicandroidkeystore.LogFragment"
-        android:id="@+id/log_fragment"
-        android:layout_weight="1"
-        android:layout_width="match_parent"
-        android:layout_height="match_parent" />
-        </LinearLayout>
\ No newline at end of file
diff --git a/security/keystore/BasicAndroidKeyStore/BasicAndroidKeyStore/src/main/res/layout/log_fragment.xml b/security/keystore/BasicAndroidKeyStore/BasicAndroidKeyStore/src/main/res/layout/log_fragment.xml
deleted file mode 100644
index f2d7b75..0000000
--- a/security/keystore/BasicAndroidKeyStore/BasicAndroidKeyStore/src/main/res/layout/log_fragment.xml
+++ /dev/null
@@ -1,34 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-       
-        <!--
-          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.	
-          -->	
-        
-<ScrollView
-        xmlns:android="http://schemas.android.com/apk/res/android"
-        android:id="@+id/log_scroll"	
-        android:layout_width="match_parent"	
-        android:layout_height="match_parent">	
-        
-        <com.example.android.common.logger.LogView
-                android:id="@+id/sample_output"
-                style="@style/Log"
-                android:layout_width="match_parent"
-                android:layout_height="wrap_content"
-                android:clickable="true"
-                android:focusable="true"
-                android:text=""
-                android:gravity="bottom" />
-</ScrollView>
\ No newline at end of file
diff --git a/security/keystore/BasicAndroidKeyStore/BasicAndroidKeyStore/src/main/res/values-sw600dp/styles.xml b/security/keystore/BasicAndroidKeyStore/BasicAndroidKeyStore/src/main/res/values-sw600dp/styles.xml
deleted file mode 100644
index ffcbe8a..0000000
--- a/security/keystore/BasicAndroidKeyStore/BasicAndroidKeyStore/src/main/res/values-sw600dp/styles.xml
+++ /dev/null
@@ -1,28 +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.
-  -->
-
-<resources>
-
-    <style name="Widget.SampleOutput">
-        <item name="android:paddingTop">@dimen/margin_medium</item>
-        <item name="android:paddingBottom">@dimen/margin_medium</item>
-        <item name="android:paddingLeft">@dimen/margin_huge</item>
-        <item name="android:paddingRight">@dimen/margin_huge</item>
-        <item name="android:textAppearance">?android:textAppearanceLarge</item>
-        <item name="android:lineSpacingMultiplier">1.2</item>
-    </style>
-
-</resources>
diff --git a/security/keystore/BasicAndroidKeyStore/BasicAndroidKeyStore/src/main/res/values-v11/styles.xml b/security/keystore/BasicAndroidKeyStore/BasicAndroidKeyStore/src/main/res/values-v11/styles.xml
deleted file mode 100644
index c6c648b..0000000
--- a/security/keystore/BasicAndroidKeyStore/BasicAndroidKeyStore/src/main/res/values-v11/styles.xml
+++ /dev/null
@@ -1,19 +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.
-  -->
-
-<resources>
-    <style name="Theme.Base" parent="android:Theme.Holo.Light" />
-</resources>
diff --git a/security/keystore/BasicAndroidKeyStore/BasicAndroidKeyStore/src/main/res/values/strings.xml b/security/keystore/BasicAndroidKeyStore/BasicAndroidKeyStore/src/main/res/values/strings.xml
deleted file mode 100755
index e579aee..0000000
--- a/security/keystore/BasicAndroidKeyStore/BasicAndroidKeyStore/src/main/res/values/strings.xml
+++ /dev/null
@@ -1,37 +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.
-  -->
-
-<resources>
-    <string name="app_name">Androidkeystore</string>
-    <string name="sample_action">Sample action</string>
-
-    <!-- Steps -->
-    <string name="intro_message">
-        Welcome to the <b>Basic Android Key Store</b> sample!\n\n
-        This sample demonstrates how to use the Android Key Store to safely create and store
-        encryption keys that only your application can access.  You can also sign data using those
-        keys.\n\n
-        To create a new KeyPair, click \"Create\".\n\n
-        To sign some data using a KeyPair, click \"Sign\".\n\n
-        To verify the data using the signature provided, click \"Verify\".\n\n
-    </string>
-
-    <!-- Button labels -->
-    <string name="str_create_keys">Create</string>
-    <string name="str_sign_data">Sign</string>
-    <string name="str_verify_data">Verify</string>
-
-</resources>
diff --git a/security/keystore/BasicAndroidKeyStore/BasicAndroidKeyStore/src/main/res/values/styles.xml b/security/keystore/BasicAndroidKeyStore/BasicAndroidKeyStore/src/main/res/values/styles.xml
deleted file mode 100644
index fb75961..0000000
--- a/security/keystore/BasicAndroidKeyStore/BasicAndroidKeyStore/src/main/res/values/styles.xml
+++ /dev/null
@@ -1,39 +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.
-  -->
-
-<resources>
-
-    <!-- Activity themes -->
-
-    <style name="Theme.Base" parent="android:Theme.Light" />
-
-    <style name="Theme.Sample" parent="Theme.Base" />
-
-    <!-- Widget styling -->
-
-    <style name="Widget" />
-
-    <style name="Widget.SampleOutput">
-        <item name="android:padding">@dimen/margin_medium</item>
-        <item name="android:textAppearance">?android:textAppearanceMedium</item>
-        <item name="android:lineSpacingMultiplier">1.1</item>
-    </style>
-
-    <style name="Log" parent="Widget.SampleOutput">
-        <item name="android:typeface">monospace</item>
-    </style>
-
-</resources>
diff --git a/security/keystore/BasicAndroidKeyStore/BasicAndroidKeyStoreSample/.gitignore b/security/keystore/BasicAndroidKeyStore/BasicAndroidKeyStoreSample/.gitignore
new file mode 100644
index 0000000..6eb878d
--- /dev/null
+++ b/security/keystore/BasicAndroidKeyStore/BasicAndroidKeyStoreSample/.gitignore
@@ -0,0 +1,16 @@
+# 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.
+src/template/
+src/common/
+build.gradle
diff --git a/security/keystore/BasicAndroidKeyStore/BasicAndroidKeyStoreSample/README-simpleview.txt b/security/keystore/BasicAndroidKeyStore/BasicAndroidKeyStoreSample/README-simpleview.txt
new file mode 100644
index 0000000..4ac7cdb
--- /dev/null
+++ b/security/keystore/BasicAndroidKeyStore/BasicAndroidKeyStoreSample/README-simpleview.txt
@@ -0,0 +1,29 @@
+<#--
+        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.
+-->
+
+Steps to implement SimpleView template:
+-in template-params.xml.ftl:
+    -add the following line to common imports
+        <common src="activities"/>
+
+-Add a Fragment to handle behavior.  In your MainActivity.java class, it will reference a Fragment
+ called (yourProjectName)Fragment.java.  Create that file in your project, using the "main" source
+ folder instead of "common" or "templates".
+   For instance, if your package name is com.example.foo, create the file
+   src/main/java/com/example/foo/FooFragment.java
+
+-refer to sampleSamples/simpleViewSample for a reference implementation of a
+project built on this template.
diff --git a/connectivity/sync/BasicSyncAdapter/BasicSyncAdapterTests/proguard-project.txt b/security/keystore/BasicAndroidKeyStore/BasicAndroidKeyStoreSample/proguard-project.txt
similarity index 91%
copy from connectivity/sync/BasicSyncAdapter/BasicSyncAdapterTests/proguard-project.txt
copy to security/keystore/BasicAndroidKeyStore/BasicAndroidKeyStoreSample/proguard-project.txt
index f2fe155..0d8f171 100644
--- a/connectivity/sync/BasicSyncAdapter/BasicSyncAdapterTests/proguard-project.txt
+++ b/security/keystore/BasicAndroidKeyStore/BasicAndroidKeyStoreSample/proguard-project.txt
@@ -1,4 +1,4 @@
-# To enable ProGuard in your project, edit project.properties
+ To enable ProGuard in your project, edit project.properties
 # to define the proguard.config property as described in that file.
 #
 # Add project specific ProGuard rules here.
diff --git a/ui/actionbarcompat/ListPopupMenu/ListPopupMenu/src/main/AndroidManifest.xml b/security/keystore/BasicAndroidKeyStore/BasicAndroidKeyStoreSample/src/main/AndroidManifest.xml
similarity index 62%
copy from ui/actionbarcompat/ListPopupMenu/ListPopupMenu/src/main/AndroidManifest.xml
copy to security/keystore/BasicAndroidKeyStore/BasicAndroidKeyStoreSample/src/main/AndroidManifest.xml
index 7e9a861..28d256c 100644
--- a/ui/actionbarcompat/ListPopupMenu/ListPopupMenu/src/main/AndroidManifest.xml
+++ b/security/keystore/BasicAndroidKeyStore/BasicAndroidKeyStoreSample/src/main/AndroidManifest.xml
@@ -1,11 +1,12 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2013 The Android Open Source Project
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ 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
+     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,
@@ -13,29 +14,28 @@
  See the License for the specific language governing permissions and
  limitations under the License.
 -->
+
+
+
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
-    package="com.example.android.actionbarcompat.listpopupmenu"
+    package="com.example.android.basicandroidkeystore"
     android:versionCode="1"
     android:versionName="1.0">
 
-    <!-- ActionBarCompat provides an implementation of Popup Menu from API v7 onwards -->
-    <uses-sdk
-        android:minSdkVersion="7"
-        android:targetSdkVersion="17" />
+    <uses-sdk android:minSdkVersion="18" android:targetSdkVersion="19" />
 
-    <application
-        android:icon="@drawable/ic_launcher"
+    <application android:allowBackup="true"
         android:label="@string/app_name"
-        android:theme="@style/Theme.AppCompat"
-        android:allowBackup="true">
+        android:icon="@drawable/ic_launcher"
+        android:theme="@style/AppTheme">
 
-        <activity android:name=".MainActivity">
-            <!-- Launcher Intent filter -->
+        <activity android:name=".MainActivity"
+                  android:label="@string/app_name"
+                  android:uiOptions="splitActionBarWhenNarrow">
             <intent-filter>
                 <action android:name="android.intent.action.MAIN" />
                 <category android:name="android.intent.category.LAUNCHER" />
             </intent-filter>
         </activity>
     </application>
-
-</manifest>
\ No newline at end of file
+</manifest>
diff --git a/security/keystore/BasicAndroidKeyStore/BasicAndroidKeyStore/src/main/java/com/example/android/basicandroidkeystore/KeyStoreHelper.java b/security/keystore/BasicAndroidKeyStore/BasicAndroidKeyStoreSample/src/main/java/com/example/android/basicandroidkeystore/BasicAndroidKeyStoreFragment.java
similarity index 63%
rename from security/keystore/BasicAndroidKeyStore/BasicAndroidKeyStore/src/main/java/com/example/android/basicandroidkeystore/KeyStoreHelper.java
rename to security/keystore/BasicAndroidKeyStore/BasicAndroidKeyStoreSample/src/main/java/com/example/android/basicandroidkeystore/BasicAndroidKeyStoreFragment.java
index 7ccf733..12873e8 100644
--- a/security/keystore/BasicAndroidKeyStore/BasicAndroidKeyStore/src/main/java/com/example/android/basicandroidkeystore/KeyStoreHelper.java
+++ b/security/keystore/BasicAndroidKeyStore/BasicAndroidKeyStoreSample/src/main/java/com/example/android/basicandroidkeystore/BasicAndroidKeyStoreFragment.java
@@ -1,27 +1,29 @@
 /*
- * 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.
- */
+* Copyright (C) 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.basicandroidkeystore;
 
 import android.content.Context;
+import android.os.Bundle;
 import android.security.KeyPairGeneratorSpec;
+import android.support.v4.app.Fragment;
 import android.util.Base64;
+import android.view.MenuItem;
 
 import com.example.android.common.logger.Log;
-import com.example.android.common.SecurityConstants;
 
 import java.io.IOException;
 import java.math.BigInteger;
@@ -42,15 +44,107 @@
 
 import javax.security.auth.x500.X500Principal;
 
-public class KeyStoreHelper {
+public class BasicAndroidKeyStoreFragment extends Fragment {
 
-    public static final String TAG = "KeyStoreHelper";
+    public static final String TAG = "BasicAndroidKeyStoreFragment";
+
+    // BEGIN_INCLUDE(values)
+
+    public static final String SAMPLE_ALIAS = "myKey";
+
+    // Some sample data to sign, and later verify using the generated signature.
+    public static final String SAMPLE_INPUT="Hello, Android!";
+
+    // Just a handy place to store the signature in between signing and verifying.
+    public String mSignatureStr = null;
 
     // You can store multiple key pairs in the Key Store.  The string used to refer to the Key you
     // want to store, or later pull, is referred to as an "alias" in this case, because calling it
     // a key, when you use it to retrieve a key, would just be irritating.
     private String mAlias = null;
 
+    // END_INCLUDE(values)
+
+    @Override
+    public void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        setHasOptionsMenu(true);
+        setAlias(SAMPLE_ALIAS);
+    }
+
+    @Override
+    public void onActivityCreated(Bundle savedInstanceState) {
+        super.onActivityCreated(savedInstanceState);
+    }
+
+    @Override
+    public boolean onOptionsItemSelected(MenuItem item) {
+        switch (item.getItemId()) {
+            case R.id.btn_create_keys:
+                try {
+                    createKeys(getActivity());
+                    Log.d(TAG, "Keys created");
+                    return true;
+                } catch (NoSuchAlgorithmException e) {
+                    Log.w(TAG, "RSA not supported", e);
+                } catch (InvalidAlgorithmParameterException e) {
+                    Log.w(TAG, "No such provider: AndroidKeyStore");
+                } catch (NoSuchProviderException e) {
+                    Log.w(TAG, "Invalid Algorithm Parameter Exception", e);
+                }
+                return true;
+            case R.id.btn_sign_data:
+                try {
+                    mSignatureStr = signData(SAMPLE_INPUT);
+                } catch (KeyStoreException e) {
+                    Log.w(TAG, "KeyStore not Initialized", e);
+                } catch (UnrecoverableEntryException e) {
+                    Log.w(TAG, "KeyPair not recovered", e);
+                } catch (NoSuchAlgorithmException e) {
+                    Log.w(TAG, "RSA not supported", e);
+                } catch (InvalidKeyException e) {
+                    Log.w(TAG, "Invalid Key", e);
+                } catch (SignatureException e) {
+                    Log.w(TAG, "Invalid Signature", e);
+                } catch (IOException e) {
+                    Log.w(TAG, "IO Exception", e);
+                } catch (CertificateException e) {
+                    Log.w(TAG, "Error occurred while loading certificates", e);
+                }
+                Log.d(TAG, "Signature: " + mSignatureStr);
+                return true;
+
+            case R.id.btn_verify_data:
+                boolean verified = false;
+                try {
+                    if (mSignatureStr != null) {
+                        verified = verifyData(SAMPLE_INPUT, mSignatureStr);
+                    }
+                } catch (KeyStoreException e) {
+                    Log.w(TAG, "KeyStore not Initialized", e);
+                } catch (CertificateException e) {
+                    Log.w(TAG, "Error occurred while loading certificates", e);
+                } catch (NoSuchAlgorithmException e) {
+                    Log.w(TAG, "RSA not supported", e);
+                } catch (IOException e) {
+                    Log.w(TAG, "IO Exception", e);
+                } catch (UnrecoverableEntryException e) {
+                    Log.w(TAG, "KeyPair not recovered", e);
+                } catch (InvalidKeyException e) {
+                    Log.w(TAG, "Invalid Key", e);
+                } catch (SignatureException e) {
+                    Log.w(TAG, "Invalid Signature", e);
+                }
+                if (verified) {
+                    Log.d(TAG, "Data Signature Verified");
+                } else {
+                    Log.d(TAG, "Data not verified.");
+                }
+                return true;
+        }
+        return false;
+    }
+
     /**
      * Creates a public and private key and stores it using the Android Key Store, so that only
      * this application will be able to access the keys.
@@ -74,20 +168,18 @@
                 new KeyPairGeneratorSpec.Builder(context)
                         // You'll use the alias later to retrieve the key.  It's a key for the key!
                         .setAlias(mAlias)
-                        // The subject used for the self-signed certificate of the generated pair
+                                // The subject used for the self-signed certificate of the generated pair
                         .setSubject(new X500Principal("CN=" + mAlias))
-                        // The serial number used for the self-signed certificate of the
-                        // generated pair.
+                                // The serial number used for the self-signed certificate of the
+                                // generated pair.
                         .setSerialNumber(BigInteger.valueOf(1337))
-                        // Date range of validity for the generated pair.
+                                // Date range of validity for the generated pair.
                         .setStartDate(start.getTime())
                         .setEndDate(end.getTime())
                         .build();
         // END_INCLUDE(create_spec)
 
-
         // BEGIN_INCLUDE(create_keypair)
-
         // Initialize a KeyPair generator using the the intended algorithm (in this example, RSA
         // and the KeyStore.  This example uses the AndroidKeyStore.
         KeyPairGenerator kpGenerator = KeyPairGenerator
@@ -97,8 +189,6 @@
         KeyPair kp = kpGenerator.generateKeyPair();
         Log.d(TAG, "Public Key is: " + kp.getPublic().toString());
         // END_INCLUDE(create_keypair)
-
-
     }
 
     /**
@@ -158,8 +248,7 @@
         // Sign the data, store the result as a Base64 encoded String.
         s.update(data);
         byte[] signature = s.sign();
-        String result = null;
-        result = Base64.encodeToString(signature, Base64.DEFAULT);
+        String result = Base64.encodeToString(signature, Base64.DEFAULT);
         // END_INCLUDE(sign_data)
 
         return result;
diff --git a/security/keystore/BasicAndroidKeyStore/BasicAndroidKeyStore/src/main/java/com/example/android/common/SecurityConstants.java b/security/keystore/BasicAndroidKeyStore/BasicAndroidKeyStoreSample/src/main/java/com/example/android/basicandroidkeystore/SecurityConstants.java
similarity index 95%
rename from security/keystore/BasicAndroidKeyStore/BasicAndroidKeyStore/src/main/java/com/example/android/common/SecurityConstants.java
rename to security/keystore/BasicAndroidKeyStore/BasicAndroidKeyStoreSample/src/main/java/com/example/android/basicandroidkeystore/SecurityConstants.java
index e23110c..ea5ee30 100644
--- a/security/keystore/BasicAndroidKeyStore/BasicAndroidKeyStore/src/main/java/com/example/android/common/SecurityConstants.java
+++ b/security/keystore/BasicAndroidKeyStore/BasicAndroidKeyStoreSample/src/main/java/com/example/android/basicandroidkeystore/SecurityConstants.java
@@ -1,5 +1,3 @@
-package com.example.android.common;
-
 /*
  * Copyright 2013 The Android Open Source Project
  *
@@ -16,6 +14,8 @@
  * limitations under the License.
  */
 
+package com.example.android.basicandroidkeystore;
+
 /**
  * Helper class, contains several constants used when encrypting/decrypting data on Android.
  * This class should not be considered a complete list of the algorithms, keystore types,
@@ -30,5 +30,4 @@
 
     public static final String SIGNATURE_SHA256withRSA = "SHA256withRSA";
     public static final String SIGNATURE_SHA512withRSA = "SHA512withRSA";
-
 }
diff --git a/ui/actionbar/DoneBar/DoneBar/src/main/res/drawable-hdpi/ic_launcher.png b/security/keystore/BasicAndroidKeyStore/BasicAndroidKeyStoreSample/src/main/res/drawable-hdpi/ic_launcher.png
similarity index 100%
copy from ui/actionbar/DoneBar/DoneBar/src/main/res/drawable-hdpi/ic_launcher.png
copy to security/keystore/BasicAndroidKeyStore/BasicAndroidKeyStoreSample/src/main/res/drawable-hdpi/ic_launcher.png
Binary files differ
diff --git a/ui/actionbar/DoneBar/DoneBar/src/main/res/drawable-mdpi/ic_launcher.png b/security/keystore/BasicAndroidKeyStore/BasicAndroidKeyStoreSample/src/main/res/drawable-mdpi/ic_launcher.png
similarity index 100%
copy from ui/actionbar/DoneBar/DoneBar/src/main/res/drawable-mdpi/ic_launcher.png
copy to security/keystore/BasicAndroidKeyStore/BasicAndroidKeyStoreSample/src/main/res/drawable-mdpi/ic_launcher.png
Binary files differ
diff --git a/ui/actionbar/DoneBar/DoneBar/src/main/res/drawable-xhdpi/ic_launcher.png b/security/keystore/BasicAndroidKeyStore/BasicAndroidKeyStoreSample/src/main/res/drawable-xhdpi/ic_launcher.png
similarity index 100%
copy from ui/actionbar/DoneBar/DoneBar/src/main/res/drawable-xhdpi/ic_launcher.png
copy to security/keystore/BasicAndroidKeyStore/BasicAndroidKeyStoreSample/src/main/res/drawable-xhdpi/ic_launcher.png
Binary files differ
diff --git a/ui/actionbar/DoneBar/DoneBar/src/main/res/drawable-xxhdpi/ic_launcher.png b/security/keystore/BasicAndroidKeyStore/BasicAndroidKeyStoreSample/src/main/res/drawable-xxhdpi/ic_launcher.png
similarity index 100%
copy from ui/actionbar/DoneBar/DoneBar/src/main/res/drawable-xxhdpi/ic_launcher.png
copy to security/keystore/BasicAndroidKeyStore/BasicAndroidKeyStoreSample/src/main/res/drawable-xxhdpi/ic_launcher.png
Binary files differ
diff --git a/security/keystore/BasicAndroidKeyStore/BasicAndroidKeyStore/src/main/res/menu/main.xml b/security/keystore/BasicAndroidKeyStore/BasicAndroidKeyStoreSample/src/main/res/menu/main.xml
similarity index 100%
rename from security/keystore/BasicAndroidKeyStore/BasicAndroidKeyStore/src/main/res/menu/main.xml
rename to security/keystore/BasicAndroidKeyStore/BasicAndroidKeyStoreSample/src/main/res/menu/main.xml
diff --git a/security/keystore/BasicAndroidKeyStore/BasicAndroidKeyStoreSample/src/main/res/values/strings.xml b/security/keystore/BasicAndroidKeyStore/BasicAndroidKeyStoreSample/src/main/res/values/strings.xml
new file mode 100644
index 0000000..25ad389
--- /dev/null
+++ b/security/keystore/BasicAndroidKeyStore/BasicAndroidKeyStoreSample/src/main/res/values/strings.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ 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.
+-->
+<resources>
+    <string name="str_create_keys">Create</string>
+    <string name="str_sign_data">Sign</string>
+    <string name="str_verify_data">Verify</string>
+</resources>
diff --git a/security/keystore/BasicAndroidKeyStore/BasicAndroidKeyStoreSample/tests/AndroidManifest.xml b/security/keystore/BasicAndroidKeyStore/BasicAndroidKeyStoreSample/tests/AndroidManifest.xml
new file mode 100644
index 0000000..eb8b7b8
--- /dev/null
+++ b/security/keystore/BasicAndroidKeyStore/BasicAndroidKeyStoreSample/tests/AndroidManifest.xml
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  Copyright (C) 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 name must be unique so suffix with "tests" so package loader doesn't ignore us -->
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+          package="com.example.android.basicandroidkeystore.tests"
+          android:versionCode="1"
+          android:versionName="1.0">
+
+    <uses-sdk
+            android:minSdkVersion="18"
+            android:targetSdkVersion="19" />
+
+    <!-- We add an application tag here just so that we can indicate that
+         this package needs to link against the android.test library,
+         which is needed when building test cases. -->
+    <application>
+        <uses-library android:name="android.test.runner" />
+    </application>
+
+    <!--
+    Specifies the instrumentation test runner used to run the tests.
+    -->
+    <instrumentation
+            android:name="android.test.InstrumentationTestRunner"
+            android:targetPackage="com.example.android.basicandroidkeystore"
+            android:label="Tests for com.example.android.basicandroidkeystore" />
+
+</manifest>
\ No newline at end of file
diff --git a/security/keystore/BasicAndroidKeyStore/BasicAndroidKeyStoreSample/tests/src/com/example/android/basicandroidkeystore/tests/SampleTests.java b/security/keystore/BasicAndroidKeyStore/BasicAndroidKeyStoreSample/tests/src/com/example/android/basicandroidkeystore/tests/SampleTests.java
new file mode 100644
index 0000000..756b605
--- /dev/null
+++ b/security/keystore/BasicAndroidKeyStore/BasicAndroidKeyStoreSample/tests/src/com/example/android/basicandroidkeystore/tests/SampleTests.java
@@ -0,0 +1,79 @@
+/*
+* 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.
+*/
+
+
+
+/*
+* Copyright (C) 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.basicandroidkeystore.tests;
+
+import com.example.android.basicandroidkeystore.*;
+
+import android.test.ActivityInstrumentationTestCase2;
+
+/**
+* Tests for BasicAndroidKeyStore sample.
+*/
+public class SampleTests extends ActivityInstrumentationTestCase2<MainActivity> {
+
+    private MainActivity mTestActivity;
+    private BasicAndroidKeyStoreFragment mTestFragment;
+
+    public SampleTests() {
+        super(MainActivity.class);
+    }
+
+    @Override
+    protected void setUp() throws Exception {
+        super.setUp();
+
+        // Starts the activity under test using the default Intent with:
+        // action = {@link Intent#ACTION_MAIN}
+        // flags = {@link Intent#FLAG_ACTIVITY_NEW_TASK}
+        // All other fields are null or empty.
+        mTestActivity = getActivity();
+        mTestFragment = (BasicAndroidKeyStoreFragment)
+            mTestActivity.getSupportFragmentManager().getFragments().get(1);
+    }
+
+    /**
+    * Test if the test fixture has been set up correctly.
+    */
+    public void testPreconditions() {
+        //Try to add a message to add context to your assertions. These messages will be shown if
+        //a tests fails and make it easy to understand why a test failed
+        assertNotNull("mTestActivity is null", mTestActivity);
+        assertNotNull("mTestFragment is null", mTestFragment);
+    }
+
+    /**
+    * Add more tests below.
+    */
+
+}
\ No newline at end of file
diff --git a/security/keystore/BasicAndroidKeyStore/README.txt b/security/keystore/BasicAndroidKeyStore/README.txt
deleted file mode 100644
index 38608df..0000000
--- a/security/keystore/BasicAndroidKeyStore/README.txt
+++ /dev/null
@@ -1,6 +0,0 @@
-Build Instructions
--------------------
-This sample uses the Gradle build system. To build this project, use the
-"gradlew build" command.
-
-To see a list of all available commands, run "gradlew tasks".
\ No newline at end of file
diff --git a/security/keystore/BasicAndroidKeyStore/build.gradle b/security/keystore/BasicAndroidKeyStore/build.gradle
index 036abc8..cca9ac3 100644
--- a/security/keystore/BasicAndroidKeyStore/build.gradle
+++ b/security/keystore/BasicAndroidKeyStore/build.gradle
@@ -1,8 +1,10 @@
-buildscript {
-    repositories {
-        mavenCentral()
-    }
-    dependencies {
-        classpath 'com.android.tools.build:gradle:0.5.+'
-    }
+// BEGIN_EXCLUDE
+import com.example.android.samples.build.SampleGenPlugin
+apply plugin: SampleGenPlugin
+
+samplegen {
+  pathToBuild "../../../../../build"
+  pathToSamplesCommon "../../../common"
 }
+apply from: "../../../../../build/build.gradle"
+// END_EXCLUDE
diff --git a/security/keystore/BasicAndroidKeyStore/buildSrc/build.gradle b/security/keystore/BasicAndroidKeyStore/buildSrc/build.gradle
new file mode 100644
index 0000000..e344a8c
--- /dev/null
+++ b/security/keystore/BasicAndroidKeyStore/buildSrc/build.gradle
@@ -0,0 +1,18 @@
+
+
+
+repositories {
+    mavenCentral()
+}
+dependencies {
+    compile 'org.freemarker:freemarker:2.3.20'
+}
+
+sourceSets {
+    main {
+        groovy {
+            srcDir new File(rootDir, "../../../../../../build/buildSrc/src/main/groovy")
+        }
+    }
+}
+
diff --git a/security/keystore/BasicAndroidKeyStore/gradle/wrapper/gradle-wrapper.properties b/security/keystore/BasicAndroidKeyStore/gradle/wrapper/gradle-wrapper.properties
index 055ba6f..861eddc 100644
--- a/security/keystore/BasicAndroidKeyStore/gradle/wrapper/gradle-wrapper.properties
+++ b/security/keystore/BasicAndroidKeyStore/gradle/wrapper/gradle-wrapper.properties
@@ -1,7 +1,6 @@
-#
-#Mon Jul 22 11:40:20 PDT 2013
+#Wed Apr 10 15:27:10 PDT 2013
 distributionBase=GRADLE_USER_HOME
 distributionPath=wrapper/dists
 zipStoreBase=GRADLE_USER_HOME
 zipStorePath=wrapper/dists
-distributionUrl=http\://services.gradle.org/distributions/gradle-1.6-bin.zip
+distributionUrl=http\://services.gradle.org/distributions/gradle-1.8-bin.zip
diff --git a/security/keystore/BasicAndroidKeyStore/settings.gradle b/security/keystore/BasicAndroidKeyStore/settings.gradle
index 1d0b075..e4b36fe 100644
--- a/security/keystore/BasicAndroidKeyStore/settings.gradle
+++ b/security/keystore/BasicAndroidKeyStore/settings.gradle
@@ -1 +1,4 @@
-include ':BasicAndroidKeyStore'
+
+
+
+include 'BasicAndroidKeyStoreSample'
diff --git a/security/keystore/BasicAndroidKeyStore/template-params.xml b/security/keystore/BasicAndroidKeyStore/template-params.xml
new file mode 100644
index 0000000..d603dfa
--- /dev/null
+++ b/security/keystore/BasicAndroidKeyStore/template-params.xml
@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ 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.
+-->
+<sample>
+    <name>BasicAndroidKeyStore</name>
+    <group>Security</group>
+    <package>com.example.android.basicandroidkeystore</package>
+
+    <!-- change minSdk if needed-->
+    <minSdk>18</minSdk>
+
+    <strings>
+        <intro>
+            <![CDATA[
+                Welcome to the <b>Basic Android Key Store</b> sample!\n\n
+                This sample demonstrates how to use the Android Key Store to safely create and store
+                encryption keys that only your application can access.  You can also sign data
+                using those keys.\n\n
+                To create a new KeyPair, click \"Create\".\n\n
+                To sign some data using a KeyPair, click \"Sign\".\n\n
+                To verify the data using the signature provided, click \"Verify\".\n\n            ]]>
+        </intro>
+    </strings>
+
+    <template src="base"/>
+    <template src="SimpleView"/>
+    <common src="activities"/>
+    <common src="logger"/>
+
+</sample>
diff --git a/testing/ActivityInstrumentation/ActivityInstrumentationSample/.gitignore b/testing/ActivityInstrumentation/ActivityInstrumentationSample/.gitignore
new file mode 100644
index 0000000..6eb878d
--- /dev/null
+++ b/testing/ActivityInstrumentation/ActivityInstrumentationSample/.gitignore
@@ -0,0 +1,16 @@
+# 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.
+src/template/
+src/common/
+build.gradle
diff --git a/connectivity/sync/BasicSyncAdapter/BasicSyncAdapterTests/proguard-project.txt b/testing/ActivityInstrumentation/ActivityInstrumentationSample/proguard-project.txt
similarity index 91%
copy from connectivity/sync/BasicSyncAdapter/BasicSyncAdapterTests/proguard-project.txt
copy to testing/ActivityInstrumentation/ActivityInstrumentationSample/proguard-project.txt
index f2fe155..0d8f171 100644
--- a/connectivity/sync/BasicSyncAdapter/BasicSyncAdapterTests/proguard-project.txt
+++ b/testing/ActivityInstrumentation/ActivityInstrumentationSample/proguard-project.txt
@@ -1,4 +1,4 @@
-# To enable ProGuard in your project, edit project.properties
+ To enable ProGuard in your project, edit project.properties
 # to define the proguard.config property as described in that file.
 #
 # Add project specific ProGuard rules here.
diff --git a/ui/actionbarcompat/ListPopupMenu/ListPopupMenu/src/main/AndroidManifest.xml b/testing/ActivityInstrumentation/ActivityInstrumentationSample/src/main/AndroidManifest.xml
similarity index 62%
copy from ui/actionbarcompat/ListPopupMenu/ListPopupMenu/src/main/AndroidManifest.xml
copy to testing/ActivityInstrumentation/ActivityInstrumentationSample/src/main/AndroidManifest.xml
index 7e9a861..547d95e 100644
--- a/ui/actionbarcompat/ListPopupMenu/ListPopupMenu/src/main/AndroidManifest.xml
+++ b/testing/ActivityInstrumentation/ActivityInstrumentationSample/src/main/AndroidManifest.xml
@@ -1,11 +1,12 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2013 The Android Open Source Project
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ 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
+     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,
@@ -13,24 +14,23 @@
  See the License for the specific language governing permissions and
  limitations under the License.
 -->
+
+
+
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
-    package="com.example.android.actionbarcompat.listpopupmenu"
+    package="com.example.android.activityinstrumentation"
     android:versionCode="1"
     android:versionName="1.0">
 
-    <!-- ActionBarCompat provides an implementation of Popup Menu from API v7 onwards -->
-    <uses-sdk
-        android:minSdkVersion="7"
-        android:targetSdkVersion="17" />
+    <uses-sdk android:minSdkVersion="4" android:targetSdkVersion="17" />
 
-    <application
-        android:icon="@drawable/ic_launcher"
+    <application android:allowBackup="true"
         android:label="@string/app_name"
-        android:theme="@style/Theme.AppCompat"
-        android:allowBackup="true">
+        android:icon="@drawable/ic_launcher"
+        android:theme="@style/AppTheme">
 
-        <activity android:name=".MainActivity">
-            <!-- Launcher Intent filter -->
+        <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" />
@@ -38,4 +38,5 @@
         </activity>
     </application>
 
-</manifest>
\ No newline at end of file
+
+</manifest>
diff --git a/testing/ActivityInstrumentationSample/src/com/example/android/activityinstrumentation/MainActivity.java b/testing/ActivityInstrumentation/ActivityInstrumentationSample/src/main/java/com/example/android/activityinstrumentation/MainActivity.java
similarity index 98%
rename from testing/ActivityInstrumentationSample/src/com/example/android/activityinstrumentation/MainActivity.java
rename to testing/ActivityInstrumentation/ActivityInstrumentationSample/src/main/java/com/example/android/activityinstrumentation/MainActivity.java
index 39a7e37..39056ea 100644
--- a/testing/ActivityInstrumentationSample/src/com/example/android/activityinstrumentation/MainActivity.java
+++ b/testing/ActivityInstrumentation/ActivityInstrumentationSample/src/main/java/com/example/android/activityinstrumentation/MainActivity.java
@@ -16,9 +16,9 @@
 
 package com.example.android.activityinstrumentation;
 
+import android.app.Activity;
 import android.content.SharedPreferences;
 import android.os.Bundle;
-import android.app.Activity;
 import android.preference.PreferenceManager;
 import android.view.View;
 import android.widget.AdapterView;
@@ -67,7 +67,7 @@
         super.onCreate(savedInstanceState);
 
         // Inflate UI from res/layout/activity_main.xml
-        setContentView(R.layout.activity_main);
+        setContentView(R.layout.sample_main);
 
         // Get handle to default shared preferences for this activity
         mPrefs = PreferenceManager.getDefaultSharedPreferences(MainActivity.this);
@@ -98,7 +98,7 @@
             // statement and running the tests to watch them fail.
             @Override
             public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
-                mPrefs.edit().putInt(PREF_SPINNER_POS, position);
+                mPrefs.edit().putInt(PREF_SPINNER_POS, position).commit();
             }
 
             @Override
diff --git a/ui/actionbar/DoneBar/DoneBar/src/main/res/drawable-hdpi/ic_launcher.png b/testing/ActivityInstrumentation/ActivityInstrumentationSample/src/main/res/drawable-hdpi/ic_launcher.png
similarity index 100%
copy from ui/actionbar/DoneBar/DoneBar/src/main/res/drawable-hdpi/ic_launcher.png
copy to testing/ActivityInstrumentation/ActivityInstrumentationSample/src/main/res/drawable-hdpi/ic_launcher.png
Binary files differ
diff --git a/ui/actionbar/DoneBar/DoneBar/src/main/res/drawable-mdpi/ic_launcher.png b/testing/ActivityInstrumentation/ActivityInstrumentationSample/src/main/res/drawable-mdpi/ic_launcher.png
similarity index 100%
copy from ui/actionbar/DoneBar/DoneBar/src/main/res/drawable-mdpi/ic_launcher.png
copy to testing/ActivityInstrumentation/ActivityInstrumentationSample/src/main/res/drawable-mdpi/ic_launcher.png
Binary files differ
diff --git a/ui/actionbar/DoneBar/DoneBar/src/main/res/drawable-xhdpi/ic_launcher.png b/testing/ActivityInstrumentation/ActivityInstrumentationSample/src/main/res/drawable-xhdpi/ic_launcher.png
similarity index 100%
copy from ui/actionbar/DoneBar/DoneBar/src/main/res/drawable-xhdpi/ic_launcher.png
copy to testing/ActivityInstrumentation/ActivityInstrumentationSample/src/main/res/drawable-xhdpi/ic_launcher.png
Binary files differ
diff --git a/ui/actionbar/DoneBar/DoneBar/src/main/res/drawable-xxhdpi/ic_launcher.png b/testing/ActivityInstrumentation/ActivityInstrumentationSample/src/main/res/drawable-xxhdpi/ic_launcher.png
similarity index 100%
copy from ui/actionbar/DoneBar/DoneBar/src/main/res/drawable-xxhdpi/ic_launcher.png
copy to testing/ActivityInstrumentation/ActivityInstrumentationSample/src/main/res/drawable-xxhdpi/ic_launcher.png
Binary files differ
diff --git a/testing/ActivityInstrumentationSample/res/layout/activity_main.xml b/testing/ActivityInstrumentation/ActivityInstrumentationSample/src/main/res/layout/sample_main.xml
similarity index 100%
rename from testing/ActivityInstrumentationSample/res/layout/activity_main.xml
rename to testing/ActivityInstrumentation/ActivityInstrumentationSample/src/main/res/layout/sample_main.xml
diff --git a/testing/ActivityInstrumentationSample/res/values-sw720dp-land/dimens.xml b/testing/ActivityInstrumentation/ActivityInstrumentationSample/src/main/res/values-sw720dp-land/dimens.xml
similarity index 100%
rename from testing/ActivityInstrumentationSample/res/values-sw720dp-land/dimens.xml
rename to testing/ActivityInstrumentation/ActivityInstrumentationSample/src/main/res/values-sw720dp-land/dimens.xml
diff --git a/testing/ActivityInstrumentationSample/res/values/dimens.xml b/testing/ActivityInstrumentation/ActivityInstrumentationSample/src/main/res/values/dimens.xml
similarity index 100%
rename from testing/ActivityInstrumentationSample/res/values/dimens.xml
rename to testing/ActivityInstrumentation/ActivityInstrumentationSample/src/main/res/values/dimens.xml
diff --git a/testing/ActivityInstrumentationSample/res/values/strings.xml b/testing/ActivityInstrumentation/ActivityInstrumentationSample/src/main/res/values/strings.xml
similarity index 91%
rename from testing/ActivityInstrumentationSample/res/values/strings.xml
rename to testing/ActivityInstrumentation/ActivityInstrumentationSample/src/main/res/values/strings.xml
index 8bf4747..4ed2243 100644
--- a/testing/ActivityInstrumentationSample/res/values/strings.xml
+++ b/testing/ActivityInstrumentation/ActivityInstrumentationSample/src/main/res/values/strings.xml
@@ -16,6 +16,5 @@
   -->
 
 <resources>
-    <string name="app_name">Activity Instrumentation Sample</string>
     <string name="instructions">The value of the spinner below should be persisted when this activity is destroyed.</string>
 </resources>
diff --git a/testing/ActivityInstrumentation/ActivityInstrumentationSample/tests/AndroidManifest.xml b/testing/ActivityInstrumentation/ActivityInstrumentationSample/tests/AndroidManifest.xml
new file mode 100644
index 0000000..ad20a2a
--- /dev/null
+++ b/testing/ActivityInstrumentation/ActivityInstrumentationSample/tests/AndroidManifest.xml
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  Copyright (C) 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 name must be unique so suffix with "tests" so package loader doesn't ignore us -->
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+          package="com.example.android.activityinstrumentation.tests"
+          android:versionCode="1"
+          android:versionName="1.0">
+
+    <uses-sdk
+            android:minSdkVersion="18"
+            android:targetSdkVersion="19" />
+
+    <!-- We add an application tag here just so that we can indicate that
+         this package needs to link against the android.test library,
+         which is needed when building test cases. -->
+    <application>
+        <uses-library android:name="android.test.runner" />
+    </application>
+
+    <!--
+    Specifies the instrumentation test runner used to run the tests.
+    -->
+    <instrumentation
+            android:name="android.test.InstrumentationTestRunner"
+            android:targetPackage="com.example.android.activityinstrumentation"
+            android:label="Tests for com.example.android.activityinstrumentation" />
+
+</manifest>
\ No newline at end of file
diff --git a/testing/ActivityInstrumentationSample/tests/src/com/example/android/activityinstrumentation/MainActivityTest.java b/testing/ActivityInstrumentation/ActivityInstrumentationSample/tests/src/com/example/android/activityinstrumentation/SampleTests.java
similarity index 92%
rename from testing/ActivityInstrumentationSample/tests/src/com/example/android/activityinstrumentation/MainActivityTest.java
rename to testing/ActivityInstrumentation/ActivityInstrumentationSample/tests/src/com/example/android/activityinstrumentation/SampleTests.java
index fcffb01..3be1867 100644
--- a/testing/ActivityInstrumentationSample/tests/src/com/example/android/activityinstrumentation/MainActivityTest.java
+++ b/testing/ActivityInstrumentation/ActivityInstrumentationSample/tests/src/com/example/android/activityinstrumentation/SampleTests.java
@@ -20,6 +20,9 @@
 import android.test.ActivityInstrumentationTestCase2;
 import android.widget.Spinner;
 
+import com.example.android.activityinstrumentation.MainActivity;
+import com.example.android.activityinstrumentation.R;
+
 /**
  * This is a simple framework for a test of an Application.  See
  * {@link android.test.ApplicationTestCase ApplicationTestCase} for more information on
@@ -28,7 +31,7 @@
  * <p>To run this test, you can type:
  * adb shell am instrument -w \
  * -e class com.example.android.activityinstrumentation.MainActivityTest \
- * com.example.android.activityinstrumentation.tests/android.test.InstrumentationTestRunner
+ * quux.tests/android.test.InstrumentationTestRunner
  *
  * <p>Individual tests are defined as any method beginning with 'test'.
  *
@@ -36,9 +39,9 @@
  * copy of the application under inspection. Calling getActivity() will return a
  * handle to this activity (launching it if needed).
  */
-public class MainActivityTest extends ActivityInstrumentationTestCase2<MainActivity> {
+public class SampleTests extends ActivityInstrumentationTestCase2<MainActivity> {
 
-    public MainActivityTest() {
+    public SampleTests() {
         super("com.example.android.activityinstrumentation", MainActivity.class);
     }
 
@@ -50,7 +53,7 @@
      */
     // BEGIN_INCLUDE (test_name)
     public void testSpinnerValuePersistedBetweenLaunches() {
-    // END_INCLUDE (test_name)
+        // END_INCLUDE (test_name)
         final int TEST_SPINNER_POSITION_1 = MainActivity.WEATHER_PARTLY_CLOUDY;
 
         // BEGIN_INCLUDE (launch_activity)
diff --git a/testing/ActivityInstrumentation/build.gradle b/testing/ActivityInstrumentation/build.gradle
new file mode 100644
index 0000000..c7a137e
--- /dev/null
+++ b/testing/ActivityInstrumentation/build.gradle
@@ -0,0 +1,10 @@
+// BEGIN_EXCLUDE
+import com.example.android.samples.build.SampleGenPlugin
+apply plugin: SampleGenPlugin
+
+samplegen {
+  pathToBuild "../../../../build"
+  pathToSamplesCommon "../../common"
+}
+apply from: "../../../../build/build.gradle"
+// END_EXCLUDE
diff --git a/testing/ActivityInstrumentation/buildSrc/build.gradle b/testing/ActivityInstrumentation/buildSrc/build.gradle
new file mode 100644
index 0000000..29282af
--- /dev/null
+++ b/testing/ActivityInstrumentation/buildSrc/build.gradle
@@ -0,0 +1,18 @@
+
+
+
+repositories {
+    mavenCentral()
+}
+dependencies {
+    compile 'org.freemarker:freemarker:2.3.20'
+}
+
+sourceSets {
+    main {
+        groovy {
+            srcDir new File(rootDir, "../../../../../build/buildSrc/src/main/groovy")
+        }
+    }
+}
+
diff --git a/connectivity/network/BasicNetworkDemo/gradle/wrapper/gradle-wrapper.jar b/testing/ActivityInstrumentation/gradle/wrapper/gradle-wrapper.jar
similarity index 100%
copy from connectivity/network/BasicNetworkDemo/gradle/wrapper/gradle-wrapper.jar
copy to testing/ActivityInstrumentation/gradle/wrapper/gradle-wrapper.jar
Binary files differ
diff --git a/connectivity/network/BasicNetworkDemo/gradle/wrapper/gradle-wrapper.properties b/testing/ActivityInstrumentation/gradle/wrapper/gradle-wrapper.properties
similarity index 85%
copy from connectivity/network/BasicNetworkDemo/gradle/wrapper/gradle-wrapper.properties
copy to testing/ActivityInstrumentation/gradle/wrapper/gradle-wrapper.properties
index 055ba6f..5c22dec 100644
--- a/connectivity/network/BasicNetworkDemo/gradle/wrapper/gradle-wrapper.properties
+++ b/testing/ActivityInstrumentation/gradle/wrapper/gradle-wrapper.properties
@@ -1,5 +1,4 @@
-#
-#Mon Jul 22 11:40:20 PDT 2013
+#Wed Apr 10 15:27:10 PDT 2013
 distributionBase=GRADLE_USER_HOME
 distributionPath=wrapper/dists
 zipStoreBase=GRADLE_USER_HOME
diff --git a/connectivity/network/BasicNetworkDemo/gradlew b/testing/ActivityInstrumentation/gradlew
similarity index 100%
copy from connectivity/network/BasicNetworkDemo/gradlew
copy to testing/ActivityInstrumentation/gradlew
diff --git a/connectivity/network/BasicNetworkDemo/gradlew.bat b/testing/ActivityInstrumentation/gradlew.bat
similarity index 100%
copy from connectivity/network/BasicNetworkDemo/gradlew.bat
copy to testing/ActivityInstrumentation/gradlew.bat
diff --git a/testing/ActivityInstrumentation/settings.gradle b/testing/ActivityInstrumentation/settings.gradle
new file mode 100644
index 0000000..0f010ba
--- /dev/null
+++ b/testing/ActivityInstrumentation/settings.gradle
@@ -0,0 +1,4 @@
+
+
+
+include 'ActivityInstrumentationSample'
diff --git a/testing/ActivityInstrumentation/template-params.xml b/testing/ActivityInstrumentation/template-params.xml
new file mode 100644
index 0000000..4856a82
--- /dev/null
+++ b/testing/ActivityInstrumentation/template-params.xml
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ 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.
+-->
+<sample>
+    <name>ActivityInstrumentation</name>
+    <group>Testing</group>
+    <package>com.example.android.com.example.android.activityinstrumentation</package>
+
+
+    <!-- change minSdk if needed-->
+    <minSdk>4</minSdk>
+
+
+    <strings>
+        <intro>
+            <![CDATA[
+            This sample provides a basic example of using an InstrumentationTest to probe the
+            internal state of an Activity.
+            ]]>
+        </intro>
+    </strings>
+
+    <template src="base"/>
+    <common src="logger"/>
+
+</sample>
diff --git a/testing/ActivityInstrumentationSample/AndroidManifest.xml b/testing/ActivityInstrumentationSample/AndroidManifest.xml
deleted file mode 100644
index 783fc0c..0000000
--- a/testing/ActivityInstrumentationSample/AndroidManifest.xml
+++ /dev/null
@@ -1,45 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-  ~ 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.
-  -->
-
-<!--
-     This manifest describes the application which we'll be testing. The actual instrumentation
-     tests are build a second APK, loaded alongside this one on the device.
-
-     See also: //tests/AndroidManifest.xml
--->
-<manifest xmlns:android="http://schemas.android.com/apk/res/android"
-          package="com.example.android.activityinstrumentation"
-          android:versionCode="1"
-          android:versionName="1.0">
-
-    <uses-sdk android:minSdkVersion="7"/>
-
-    <!-- This is just a standard activity. -->
-    <application
-            android:label="@string/app_name"
-            android:icon="@drawable/ic_launcher"
-            android:theme="@style/AppTheme">
-        <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/testing/ActivityInstrumentationSample/proguard-project.txt b/testing/ActivityInstrumentationSample/proguard-project.txt
deleted file mode 100644
index f2fe155..0000000
--- a/testing/ActivityInstrumentationSample/proguard-project.txt
+++ /dev/null
@@ -1,20 +0,0 @@
-# To enable ProGuard in your project, edit project.properties
-# to define the proguard.config property as described in that file.
-#
-# Add project specific ProGuard rules here.
-# By default, the flags in this file are appended to flags specified
-# in ${sdk.dir}/tools/proguard/proguard-android.txt
-# You can edit the include path and order by changing the ProGuard
-# include property in project.properties.
-#
-# For more details, see
-#   http://developer.android.com/guide/developing/tools/proguard.html
-
-# Add any project specific keep options here:
-
-# If your project uses WebView with JS, uncomment the following
-# and specify the fully qualified class name to the JavaScript interface
-# class:
-#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
-#   public *;
-#}
diff --git a/testing/ActivityInstrumentationSample/res/drawable-hdpi/ic_launcher.png b/testing/ActivityInstrumentationSample/res/drawable-hdpi/ic_launcher.png
deleted file mode 100644
index 96a442e..0000000
--- a/testing/ActivityInstrumentationSample/res/drawable-hdpi/ic_launcher.png
+++ /dev/null
Binary files differ
diff --git a/testing/ActivityInstrumentationSample/res/drawable-ldpi/ic_launcher.png b/testing/ActivityInstrumentationSample/res/drawable-ldpi/ic_launcher.png
deleted file mode 100644
index 9923872..0000000
--- a/testing/ActivityInstrumentationSample/res/drawable-ldpi/ic_launcher.png
+++ /dev/null
Binary files differ
diff --git a/testing/ActivityInstrumentationSample/res/drawable-mdpi/ic_launcher.png b/testing/ActivityInstrumentationSample/res/drawable-mdpi/ic_launcher.png
deleted file mode 100644
index 359047d..0000000
--- a/testing/ActivityInstrumentationSample/res/drawable-mdpi/ic_launcher.png
+++ /dev/null
Binary files differ
diff --git a/testing/ActivityInstrumentationSample/res/drawable-xhdpi/ic_launcher.png b/testing/ActivityInstrumentationSample/res/drawable-xhdpi/ic_launcher.png
deleted file mode 100644
index 71c6d76..0000000
--- a/testing/ActivityInstrumentationSample/res/drawable-xhdpi/ic_launcher.png
+++ /dev/null
Binary files differ
diff --git a/testing/ActivityInstrumentationSample/res/values-v11/styles.xml b/testing/ActivityInstrumentationSample/res/values-v11/styles.xml
deleted file mode 100644
index 1b39428..0000000
--- a/testing/ActivityInstrumentationSample/res/values-v11/styles.xml
+++ /dev/null
@@ -1,28 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-  ~ 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.
-  -->
-
-<resources>
-
-    <!--
-        Base application theme for API 11+. This theme completely replaces
-        AppBaseTheme from res/values/styles.xml on API 11+ devices.
-    -->
-    <style name="AppBaseTheme" parent="android:Theme.Holo.Light">
-        <!-- API 11 theme customizations can go here. -->
-    </style>
-
-</resources>
diff --git a/testing/ActivityInstrumentationSample/res/values-v14/styles.xml b/testing/ActivityInstrumentationSample/res/values-v14/styles.xml
deleted file mode 100644
index 219b706..0000000
--- a/testing/ActivityInstrumentationSample/res/values-v14/styles.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-  ~ 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.
-  -->
-
-<resources>
-
-    <!--
-        Base application theme for API 14+. This theme completely replaces
-        AppBaseTheme from BOTH res/values/styles.xml and
-        res/values-v11/styles.xml on API 14+ devices.
-    -->
-    <style name="AppBaseTheme" parent="android:Theme.Holo.Light">
-        <!-- API 14 theme customizations can go here. -->
-    </style>
-
-</resources>
diff --git a/testing/ActivityInstrumentationSample/res/values/styles.xml b/testing/ActivityInstrumentationSample/res/values/styles.xml
deleted file mode 100644
index bdd3ba5..0000000
--- a/testing/ActivityInstrumentationSample/res/values/styles.xml
+++ /dev/null
@@ -1,37 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-  ~ 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.
-  -->
-
-<resources>
-
-    <!--
-        Base application theme, dependent on API level. This theme is replaced
-        by AppBaseTheme from res/values-vXX/styles.xml on newer devices.
-    -->
-    <style name="AppBaseTheme" parent="android:Theme.Light">
-        <!--
-            Theme customizations available in newer API levels can go in
-            res/values-vXX/styles.xml, while customizations related to
-            backward-compatibility can go here.
-        -->
-    </style>
-
-    <!-- Application theme. -->
-    <style name="AppTheme" parent="AppBaseTheme">
-        <!-- All customizations that are NOT specific to a particular API-level can go here. -->
-    </style>
-
-</resources>
diff --git a/testing/ActivityInstrumentationSample/tests/AndroidManifest.xml b/testing/ActivityInstrumentationSample/tests/AndroidManifest.xml
deleted file mode 100644
index 1547109..0000000
--- a/testing/ActivityInstrumentationSample/tests/AndroidManifest.xml
+++ /dev/null
@@ -1,37 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-  ~ 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 name must be unique so suffix with "tests" so package loader doesn't ignore us -->
-<manifest xmlns:android="http://schemas.android.com/apk/res/android"
-          package="com.example.android.activityinstrumentation.tests"
-          android:versionCode="1"
-          android:versionName="1.0">
-    <!-- We add an application tag here just so that we can indicate that
-         this package needs to link against the android.test library,
-         which is needed when building test cases. -->
-    <application>
-        <uses-library android:name="android.test.runner" />
-    </application>
-    <!--
-    This declares that this application uses the instrumentation test runner targeting
-    the package of com.example.android.foohe tests use the command:
-    "adb shell am instrument -w com.example.android.foooid.test.InstrumentationTestRunner"
-    -->
-    <instrumentation android:name="android.test.InstrumentationTestRunner"
-                     android:targetPackage="com.example.android.activityinstrumentation"
-                     android:label="Tests for com.example.android.UnitTestSample"/>
-</manifest>
diff --git a/testing/ActivityInstrumentationSample/tests/proguard-project.txt b/testing/ActivityInstrumentationSample/tests/proguard-project.txt
deleted file mode 100644
index f2fe155..0000000
--- a/testing/ActivityInstrumentationSample/tests/proguard-project.txt
+++ /dev/null
@@ -1,20 +0,0 @@
-# To enable ProGuard in your project, edit project.properties
-# to define the proguard.config property as described in that file.
-#
-# Add project specific ProGuard rules here.
-# By default, the flags in this file are appended to flags specified
-# in ${sdk.dir}/tools/proguard/proguard-android.txt
-# You can edit the include path and order by changing the ProGuard
-# include property in project.properties.
-#
-# For more details, see
-#   http://developer.android.com/guide/developing/tools/proguard.html
-
-# Add any project specific keep options here:
-
-# If your project uses WebView with JS, uncomment the following
-# and specify the fully qualified class name to the JavaScript interface
-# class:
-#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
-#   public *;
-#}
diff --git a/ui/accessibility/BasicAccessibility/BasicAccessibility/build.gradle b/ui/accessibility/BasicAccessibility/BasicAccessibility/build.gradle
deleted file mode 100644
index 0baece9..0000000
--- a/ui/accessibility/BasicAccessibility/BasicAccessibility/build.gradle
+++ /dev/null
@@ -1,10 +0,0 @@
-apply plugin: 'android'
-
-dependencies {
-    compile "com.android.support:support-v4:18.0.+"
-}
-
-android {
-    compileSdkVersion 18
-    buildToolsVersion "18.0.0"
-}
diff --git a/ui/accessibility/BasicAccessibility/BasicAccessibility/src/main/ic_launcher-web.png b/ui/accessibility/BasicAccessibility/BasicAccessibility/src/main/ic_launcher-web.png
deleted file mode 100644
index 6967d3e..0000000
--- a/ui/accessibility/BasicAccessibility/BasicAccessibility/src/main/ic_launcher-web.png
+++ /dev/null
Binary files differ
diff --git a/ui/accessibility/BasicAccessibility/BasicAccessibility/src/main/res/values-sw600dp/dimens.xml b/ui/accessibility/BasicAccessibility/BasicAccessibility/src/main/res/values-sw600dp/dimens.xml
deleted file mode 100644
index d0946b3..0000000
--- a/ui/accessibility/BasicAccessibility/BasicAccessibility/src/main/res/values-sw600dp/dimens.xml
+++ /dev/null
@@ -1,20 +0,0 @@
-<!--
-Copyright (C) 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.
--->
-
-<resources>
-    <!-- Customize dimensions originally defined in res/values/dimens.xml (such as
-         screen margins) for sw600dp devices (e.g. 7" tablets) here. -->
-</resources>
diff --git a/ui/accessibility/BasicAccessibility/BasicAccessibility/src/main/res/values-v11/styles.xml b/ui/accessibility/BasicAccessibility/BasicAccessibility/src/main/res/values-v11/styles.xml
deleted file mode 100644
index 5b1a3f2..0000000
--- a/ui/accessibility/BasicAccessibility/BasicAccessibility/src/main/res/values-v11/styles.xml
+++ /dev/null
@@ -1,27 +0,0 @@
-<!--
-Copyright (C) 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.
--->
-
-<resources>
-
-    <!--
-        Base application theme for API 11+. This theme completely replaces
-        AppBaseTheme from res/values/styles.xml on API 11+ devices.
-    -->
-    <style name="AppBaseTheme" parent="android:Theme.Holo.Light">
-        <!-- API 11 theme customizations can go here. -->
-    </style>
-
-</resources>
diff --git a/ui/accessibility/BasicAccessibility/BasicAccessibility/src/main/res/values-v14/styles.xml b/ui/accessibility/BasicAccessibility/BasicAccessibility/src/main/res/values-v14/styles.xml
deleted file mode 100644
index b16c97b..0000000
--- a/ui/accessibility/BasicAccessibility/BasicAccessibility/src/main/res/values-v14/styles.xml
+++ /dev/null
@@ -1,28 +0,0 @@
-<!--
-Copyright (C) 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.
--->
-
-<resources>
-
-    <!--
-        Base application theme for API 14+. This theme completely replaces
-        AppBaseTheme from BOTH res/values/styles.xml and
-        res/values-v11/styles.xml on API 14+ devices.
-    -->
-    <style name="AppBaseTheme" parent="android:Theme.Holo.Light.DarkActionBar">
-        <!-- API 14 theme customizations can go here. -->
-    </style>
-
-</resources>
diff --git a/ui/accessibility/BasicAccessibility/BasicAccessibility/src/main/res/values/styles.xml b/ui/accessibility/BasicAccessibility/BasicAccessibility/src/main/res/values/styles.xml
deleted file mode 100644
index b0e6075..0000000
--- a/ui/accessibility/BasicAccessibility/BasicAccessibility/src/main/res/values/styles.xml
+++ /dev/null
@@ -1,36 +0,0 @@
-<!--
-Copyright (C) 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.
--->
-
-<resources>
-
-    <!--
-        Base application theme, dependent on API level. This theme is replaced
-        by AppBaseTheme from res/values-vXX/styles.xml on newer devices.
-    -->
-    <style name="AppBaseTheme" parent="android:Theme.Light">
-        <!--
-            Theme customizations available in newer API levels can go in
-            res/values-vXX/styles.xml, while customizations related to
-            backward-compatibility can go here.
-        -->
-    </style>
-
-    <!-- Application theme. -->
-    <style name="AppTheme" parent="AppBaseTheme">
-        <!-- All customizations that are NOT specific to a particular API-level can go here. -->
-    </style>
-
-</resources>
diff --git a/ui/accessibility/BasicAccessibility/BasicAccessibilitySample/.gitignore b/ui/accessibility/BasicAccessibility/BasicAccessibilitySample/.gitignore
new file mode 100644
index 0000000..6eb878d
--- /dev/null
+++ b/ui/accessibility/BasicAccessibility/BasicAccessibilitySample/.gitignore
@@ -0,0 +1,16 @@
+# 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.
+src/template/
+src/common/
+build.gradle
diff --git a/connectivity/sync/BasicSyncAdapter/BasicSyncAdapterTests/proguard-project.txt b/ui/accessibility/BasicAccessibility/BasicAccessibilitySample/proguard-project.txt
similarity index 91%
copy from connectivity/sync/BasicSyncAdapter/BasicSyncAdapterTests/proguard-project.txt
copy to ui/accessibility/BasicAccessibility/BasicAccessibilitySample/proguard-project.txt
index f2fe155..0d8f171 100644
--- a/connectivity/sync/BasicSyncAdapter/BasicSyncAdapterTests/proguard-project.txt
+++ b/ui/accessibility/BasicAccessibility/BasicAccessibilitySample/proguard-project.txt
@@ -1,4 +1,4 @@
-# To enable ProGuard in your project, edit project.properties
+ To enable ProGuard in your project, edit project.properties
 # to define the proguard.config property as described in that file.
 #
 # Add project specific ProGuard rules here.
diff --git a/ui/accessibility/BasicAccessibility/BasicAccessibility/src/main/AndroidManifest.xml b/ui/accessibility/BasicAccessibility/BasicAccessibilitySample/src/main/AndroidManifest.xml
similarity index 77%
rename from ui/accessibility/BasicAccessibility/BasicAccessibility/src/main/AndroidManifest.xml
rename to ui/accessibility/BasicAccessibility/BasicAccessibilitySample/src/main/AndroidManifest.xml
index 3c0e66a..d61d789 100644
--- a/ui/accessibility/BasicAccessibility/BasicAccessibility/src/main/AndroidManifest.xml
+++ b/ui/accessibility/BasicAccessibility/BasicAccessibilitySample/src/main/AndroidManifest.xml
@@ -1,12 +1,12 @@
-<?xml version="1.0" encoding="utf-8"?>
+<?xml version="1.0" encoding="UTF-8"?>
 <!--
- Copyright (C) 2013 The Android Open Source Project
+ 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
+     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,
@@ -15,10 +15,12 @@
  limitations under the License.
 -->
 
+
+
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
-    package="com.example.android.ui.accessibility.BasicAccessibility"
+    package="com.example.android.basicaccessibility"
     android:versionCode="1"
-    android:versionName="1.0" >
+    android:versionName="1.0">
 
     <uses-sdk
         android:minSdkVersion="11"
@@ -30,7 +32,7 @@
         android:label="@string/app_name"
         android:theme="@style/AppTheme" >
         <activity
-            android:name="com.example.android.ui.accessibility.BasicAccessibility.MainActivity"
+            android:name=".MainActivity"
             android:label="@string/app_name" >
             <intent-filter>
                 <action android:name="android.intent.action.MAIN" />
diff --git a/ui/accessibility/BasicAccessibility/BasicAccessibility/src/main/java/com/example/android/ui/accessibility/BasicAccessibility/DialView.java b/ui/accessibility/BasicAccessibility/BasicAccessibilitySample/src/main/java/com/example/android/basicaccessibility/DialView.java
similarity index 97%
rename from ui/accessibility/BasicAccessibility/BasicAccessibility/src/main/java/com/example/android/ui/accessibility/BasicAccessibility/DialView.java
rename to ui/accessibility/BasicAccessibility/BasicAccessibilitySample/src/main/java/com/example/android/basicaccessibility/DialView.java
index 1fc5e0c..efdb449 100644
--- a/ui/accessibility/BasicAccessibility/BasicAccessibility/src/main/java/com/example/android/ui/accessibility/BasicAccessibility/DialView.java
+++ b/ui/accessibility/BasicAccessibility/BasicAccessibilitySample/src/main/java/com/example/android/basicaccessibility/DialView.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package com.example.android.ui.accessibility.BasicAccessibility;
+package com.example.android.basicaccessibility;
 
 import android.annotation.TargetApi;
 import android.content.Context;
@@ -30,7 +30,7 @@
  * Custom view to demonstrate accessibility.
  *
  * <p>This view does not use any framework widgets, so does not get any accessibility features
- * automatically. Instead, we use {@link AccessibilityEvent} to provide accessibility hints to
+ * automatically. Instead, we use {@link android.view.accessibility.AccessibilityEvent} to provide accessibility hints to
  * the OS.
  *
  * <p>For example, if TalkBack is enabled, users will be able to receive spoken feedback as they
diff --git a/ui/accessibility/BasicAccessibility/BasicAccessibility/src/main/java/com/example/android/ui/accessibility/BasicAccessibility/MainActivity.java b/ui/accessibility/BasicAccessibility/BasicAccessibilitySample/src/main/java/com/example/android/basicaccessibility/MainActivity.java
similarity index 91%
rename from ui/accessibility/BasicAccessibility/BasicAccessibility/src/main/java/com/example/android/ui/accessibility/BasicAccessibility/MainActivity.java
rename to ui/accessibility/BasicAccessibility/BasicAccessibilitySample/src/main/java/com/example/android/basicaccessibility/MainActivity.java
index 869301d..2777ad7 100644
--- a/ui/accessibility/BasicAccessibility/BasicAccessibility/src/main/java/com/example/android/ui/accessibility/BasicAccessibility/MainActivity.java
+++ b/ui/accessibility/BasicAccessibility/BasicAccessibilitySample/src/main/java/com/example/android/basicaccessibility/MainActivity.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package com.example.android.ui.accessibility.BasicAccessibility;
+package com.example.android.basicaccessibility;
 
 import android.app.Activity;
 import android.os.Bundle;
@@ -34,6 +34,6 @@
     @Override
     protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
-        setContentView(R.layout.activity_main);
+        setContentView(R.layout.sample_main);
     }
 }
diff --git a/ui/accessibility/BasicAccessibility/BasicAccessibility/src/main/res/drawable-hdpi/ic_action_discard.png b/ui/accessibility/BasicAccessibility/BasicAccessibilitySample/src/main/res/drawable-hdpi/ic_action_discard.png
similarity index 100%
rename from ui/accessibility/BasicAccessibility/BasicAccessibility/src/main/res/drawable-hdpi/ic_action_discard.png
rename to ui/accessibility/BasicAccessibility/BasicAccessibilitySample/src/main/res/drawable-hdpi/ic_action_discard.png
Binary files differ
diff --git a/ui/accessibility/BasicAccessibility/BasicAccessibility/src/main/res/drawable-hdpi/ic_action_info.png b/ui/accessibility/BasicAccessibility/BasicAccessibilitySample/src/main/res/drawable-hdpi/ic_action_info.png
similarity index 100%
rename from ui/accessibility/BasicAccessibility/BasicAccessibility/src/main/res/drawable-hdpi/ic_action_info.png
rename to ui/accessibility/BasicAccessibility/BasicAccessibilitySample/src/main/res/drawable-hdpi/ic_action_info.png
Binary files differ
diff --git a/ui/accessibility/BasicAccessibility/BasicAccessibility/src/main/res/drawable-hdpi/ic_launcher.png b/ui/accessibility/BasicAccessibility/BasicAccessibilitySample/src/main/res/drawable-hdpi/ic_launcher.png
similarity index 100%
rename from ui/accessibility/BasicAccessibility/BasicAccessibility/src/main/res/drawable-hdpi/ic_launcher.png
rename to ui/accessibility/BasicAccessibility/BasicAccessibilitySample/src/main/res/drawable-hdpi/ic_launcher.png
Binary files differ
diff --git a/ui/accessibility/BasicAccessibility/BasicAccessibility/src/main/res/drawable-hdpi/partly_cloudy.png b/ui/accessibility/BasicAccessibility/BasicAccessibilitySample/src/main/res/drawable-hdpi/partly_cloudy.png
similarity index 100%
rename from ui/accessibility/BasicAccessibility/BasicAccessibility/src/main/res/drawable-hdpi/partly_cloudy.png
rename to ui/accessibility/BasicAccessibility/BasicAccessibilitySample/src/main/res/drawable-hdpi/partly_cloudy.png
Binary files differ
diff --git a/ui/accessibility/BasicAccessibility/BasicAccessibility/src/main/res/drawable-mdpi/ic_action_discard.png b/ui/accessibility/BasicAccessibility/BasicAccessibilitySample/src/main/res/drawable-mdpi/ic_action_discard.png
similarity index 100%
rename from ui/accessibility/BasicAccessibility/BasicAccessibility/src/main/res/drawable-mdpi/ic_action_discard.png
rename to ui/accessibility/BasicAccessibility/BasicAccessibilitySample/src/main/res/drawable-mdpi/ic_action_discard.png
Binary files differ
diff --git a/ui/accessibility/BasicAccessibility/BasicAccessibility/src/main/res/drawable-mdpi/ic_action_info.png b/ui/accessibility/BasicAccessibility/BasicAccessibilitySample/src/main/res/drawable-mdpi/ic_action_info.png
similarity index 100%
rename from ui/accessibility/BasicAccessibility/BasicAccessibility/src/main/res/drawable-mdpi/ic_action_info.png
rename to ui/accessibility/BasicAccessibility/BasicAccessibilitySample/src/main/res/drawable-mdpi/ic_action_info.png
Binary files differ
diff --git a/ui/accessibility/BasicAccessibility/BasicAccessibility/src/main/res/drawable-mdpi/ic_launcher.png b/ui/accessibility/BasicAccessibility/BasicAccessibilitySample/src/main/res/drawable-mdpi/ic_launcher.png
similarity index 100%
rename from ui/accessibility/BasicAccessibility/BasicAccessibility/src/main/res/drawable-mdpi/ic_launcher.png
rename to ui/accessibility/BasicAccessibility/BasicAccessibilitySample/src/main/res/drawable-mdpi/ic_launcher.png
Binary files differ
diff --git a/ui/accessibility/BasicAccessibility/BasicAccessibility/src/main/res/drawable-xhdpi/ic_action_discard.png b/ui/accessibility/BasicAccessibility/BasicAccessibilitySample/src/main/res/drawable-xhdpi/ic_action_discard.png
similarity index 100%
rename from ui/accessibility/BasicAccessibility/BasicAccessibility/src/main/res/drawable-xhdpi/ic_action_discard.png
rename to ui/accessibility/BasicAccessibility/BasicAccessibilitySample/src/main/res/drawable-xhdpi/ic_action_discard.png
Binary files differ
diff --git a/ui/accessibility/BasicAccessibility/BasicAccessibility/src/main/res/drawable-xhdpi/ic_action_info.png b/ui/accessibility/BasicAccessibility/BasicAccessibilitySample/src/main/res/drawable-xhdpi/ic_action_info.png
similarity index 100%
rename from ui/accessibility/BasicAccessibility/BasicAccessibility/src/main/res/drawable-xhdpi/ic_action_info.png
rename to ui/accessibility/BasicAccessibility/BasicAccessibilitySample/src/main/res/drawable-xhdpi/ic_action_info.png
Binary files differ
diff --git a/ui/accessibility/BasicAccessibility/BasicAccessibility/src/main/res/drawable-xhdpi/ic_launcher.png b/ui/accessibility/BasicAccessibility/BasicAccessibilitySample/src/main/res/drawable-xhdpi/ic_launcher.png
similarity index 100%
rename from ui/accessibility/BasicAccessibility/BasicAccessibility/src/main/res/drawable-xhdpi/ic_launcher.png
rename to ui/accessibility/BasicAccessibility/BasicAccessibilitySample/src/main/res/drawable-xhdpi/ic_launcher.png
Binary files differ
diff --git a/ui/accessibility/BasicAccessibility/BasicAccessibility/src/main/res/drawable-xxhdpi/ic_launcher.png b/ui/accessibility/BasicAccessibility/BasicAccessibilitySample/src/main/res/drawable-xxhdpi/ic_launcher.png
similarity index 100%
rename from ui/accessibility/BasicAccessibility/BasicAccessibility/src/main/res/drawable-xxhdpi/ic_launcher.png
rename to ui/accessibility/BasicAccessibility/BasicAccessibilitySample/src/main/res/drawable-xxhdpi/ic_launcher.png
Binary files differ
diff --git a/ui/accessibility/BasicAccessibility/BasicAccessibility/src/main/res/layout/activity_main.xml b/ui/accessibility/BasicAccessibility/BasicAccessibilitySample/src/main/res/layout/sample_main.xml
similarity index 98%
rename from ui/accessibility/BasicAccessibility/BasicAccessibility/src/main/res/layout/activity_main.xml
rename to ui/accessibility/BasicAccessibility/BasicAccessibilitySample/src/main/res/layout/sample_main.xml
index 394c72f..64f4f38 100644
--- a/ui/accessibility/BasicAccessibility/BasicAccessibility/src/main/res/layout/activity_main.xml
+++ b/ui/accessibility/BasicAccessibility/BasicAccessibilitySample/src/main/res/layout/sample_main.xml
@@ -192,7 +192,7 @@
 
             <!-- Custom views require additonal code changes. See DialView.java for more
                  details. -->
-            <com.example.android.ui.accessibility.BasicAccessibility.DialView
+            <com.example.android.basicaccessibility.DialView
                     android:layout_width="200dp"
                     android:layout_height="200dp"
                     android:id="@+id/dialView"
diff --git a/ui/accessibility/BasicAccessibility/BasicAccessibility/src/main/res/values-sw720dp-land/dimens.xml b/ui/accessibility/BasicAccessibility/BasicAccessibilitySample/src/main/res/values-sw720dp-land/dimens.xml
similarity index 100%
rename from ui/accessibility/BasicAccessibility/BasicAccessibility/src/main/res/values-sw720dp-land/dimens.xml
rename to ui/accessibility/BasicAccessibility/BasicAccessibilitySample/src/main/res/values-sw720dp-land/dimens.xml
diff --git a/ui/accessibility/BasicAccessibility/BasicAccessibility/src/main/res/values/dimens.xml b/ui/accessibility/BasicAccessibility/BasicAccessibilitySample/src/main/res/values/dimens.xml
similarity index 100%
rename from ui/accessibility/BasicAccessibility/BasicAccessibility/src/main/res/values/dimens.xml
rename to ui/accessibility/BasicAccessibility/BasicAccessibilitySample/src/main/res/values/dimens.xml
diff --git a/ui/accessibility/BasicAccessibility/BasicAccessibility/src/main/res/values/strings.xml b/ui/accessibility/BasicAccessibility/BasicAccessibilitySample/src/main/res/values/strings.xml
similarity index 95%
rename from ui/accessibility/BasicAccessibility/BasicAccessibility/src/main/res/values/strings.xml
rename to ui/accessibility/BasicAccessibility/BasicAccessibilitySample/src/main/res/values/strings.xml
index 57b8e49..8340682 100644
--- a/ui/accessibility/BasicAccessibility/BasicAccessibility/src/main/res/values/strings.xml
+++ b/ui/accessibility/BasicAccessibility/BasicAccessibilitySample/src/main/res/values/strings.xml
@@ -16,8 +16,6 @@
 -->
 
 <resources>
-
-    <string name="app_name" >Accessibility Sample</string>
     <string name="composeButtonPressed">(Compose button pressed.)</string>
     <string name="discardButtonPressed">(Discard button pressed.)</string>
     <string name="infoButtonPressed">(Info button pressed.)</string>
diff --git a/ui/accessibility/BasicAccessibility/BasicAccessibilitySample/tests/AndroidManifest.xml b/ui/accessibility/BasicAccessibility/BasicAccessibilitySample/tests/AndroidManifest.xml
new file mode 100644
index 0000000..8dc47be
--- /dev/null
+++ b/ui/accessibility/BasicAccessibility/BasicAccessibilitySample/tests/AndroidManifest.xml
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  Copyright (C) 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 name must be unique so suffix with "tests" so package loader doesn't ignore us -->
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+          package="com.example.android.basicaccessibility.tests"
+          android:versionCode="1"
+          android:versionName="1.0">
+
+    <uses-sdk
+            android:minSdkVersion="18"
+            android:targetSdkVersion="19" />
+
+    <!-- We add an application tag here just so that we can indicate that
+         this package needs to link against the android.test library,
+         which is needed when building test cases. -->
+    <application>
+        <uses-library android:name="android.test.runner" />
+    </application>
+
+    <!--
+    Specifies the instrumentation test runner used to run the tests.
+    -->
+    <instrumentation
+            android:name="android.test.InstrumentationTestRunner"
+            android:targetPackage="com.example.android.basicaccessibility"
+            android:label="Tests for com.example.android.basicaccessibility" />
+
+</manifest>
\ No newline at end of file
diff --git a/ui/accessibility/BasicAccessibility/BasicAccessibilitySample/tests/src/com/example/android/basicaccessibility/tests/SampleTests.java b/ui/accessibility/BasicAccessibility/BasicAccessibilitySample/tests/src/com/example/android/basicaccessibility/tests/SampleTests.java
new file mode 100644
index 0000000..0c9a152
--- /dev/null
+++ b/ui/accessibility/BasicAccessibility/BasicAccessibilitySample/tests/src/com/example/android/basicaccessibility/tests/SampleTests.java
@@ -0,0 +1,79 @@
+/*
+* 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.
+*/
+
+
+
+/*
+* Copyright (C) 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.basicaccessibility.tests;
+
+import com.example.android.basicaccessibility.*;
+
+import android.test.ActivityInstrumentationTestCase2;
+
+/**
+* Tests for BasicAccessibility sample.
+*/
+public class SampleTests extends ActivityInstrumentationTestCase2<MainActivity> {
+
+    private MainActivity mTestActivity;
+    private BasicAccessibilityFragment mTestFragment;
+
+    public SampleTests() {
+        super(MainActivity.class);
+    }
+
+    @Override
+    protected void setUp() throws Exception {
+        super.setUp();
+
+        // Starts the activity under test using the default Intent with:
+        // action = {@link Intent#ACTION_MAIN}
+        // flags = {@link Intent#FLAG_ACTIVITY_NEW_TASK}
+        // All other fields are null or empty.
+        mTestActivity = getActivity();
+        mTestFragment = (BasicAccessibilityFragment)
+            mTestActivity.getSupportFragmentManager().getFragments().get(1);
+    }
+
+    /**
+    * Test if the test fixture has been set up correctly.
+    */
+    public void testPreconditions() {
+        //Try to add a message to add context to your assertions. These messages will be shown if
+        //a tests fails and make it easy to understand why a test failed
+        assertNotNull("mTestActivity is null", mTestActivity);
+        assertNotNull("mTestFragment is null", mTestFragment);
+    }
+
+    /**
+    * Add more tests below.
+    */
+
+}
\ No newline at end of file
diff --git a/ui/accessibility/BasicAccessibility/README.txt b/ui/accessibility/BasicAccessibility/README.txt
deleted file mode 100644
index 38608df..0000000
--- a/ui/accessibility/BasicAccessibility/README.txt
+++ /dev/null
@@ -1,6 +0,0 @@
-Build Instructions
--------------------
-This sample uses the Gradle build system. To build this project, use the
-"gradlew build" command.
-
-To see a list of all available commands, run "gradlew tasks".
\ No newline at end of file
diff --git a/ui/accessibility/BasicAccessibility/build.gradle b/ui/accessibility/BasicAccessibility/build.gradle
index 036abc8..cca9ac3 100644
--- a/ui/accessibility/BasicAccessibility/build.gradle
+++ b/ui/accessibility/BasicAccessibility/build.gradle
@@ -1,8 +1,10 @@
-buildscript {
-    repositories {
-        mavenCentral()
-    }
-    dependencies {
-        classpath 'com.android.tools.build:gradle:0.5.+'
-    }
+// BEGIN_EXCLUDE
+import com.example.android.samples.build.SampleGenPlugin
+apply plugin: SampleGenPlugin
+
+samplegen {
+  pathToBuild "../../../../../build"
+  pathToSamplesCommon "../../../common"
 }
+apply from: "../../../../../build/build.gradle"
+// END_EXCLUDE
diff --git a/ui/accessibility/BasicAccessibility/buildSrc/build.gradle b/ui/accessibility/BasicAccessibility/buildSrc/build.gradle
new file mode 100644
index 0000000..e344a8c
--- /dev/null
+++ b/ui/accessibility/BasicAccessibility/buildSrc/build.gradle
@@ -0,0 +1,18 @@
+
+
+
+repositories {
+    mavenCentral()
+}
+dependencies {
+    compile 'org.freemarker:freemarker:2.3.20'
+}
+
+sourceSets {
+    main {
+        groovy {
+            srcDir new File(rootDir, "../../../../../../build/buildSrc/src/main/groovy")
+        }
+    }
+}
+
diff --git a/ui/accessibility/BasicAccessibility/gradle/wrapper/gradle-wrapper.properties b/ui/accessibility/BasicAccessibility/gradle/wrapper/gradle-wrapper.properties
index 055ba6f..5c22dec 100644
--- a/ui/accessibility/BasicAccessibility/gradle/wrapper/gradle-wrapper.properties
+++ b/ui/accessibility/BasicAccessibility/gradle/wrapper/gradle-wrapper.properties
@@ -1,5 +1,4 @@
-#
-#Mon Jul 22 11:40:20 PDT 2013
+#Wed Apr 10 15:27:10 PDT 2013
 distributionBase=GRADLE_USER_HOME
 distributionPath=wrapper/dists
 zipStoreBase=GRADLE_USER_HOME
diff --git a/ui/accessibility/BasicAccessibility/settings.gradle b/ui/accessibility/BasicAccessibility/settings.gradle
index 1c4fa86..7900b3d 100644
--- a/ui/accessibility/BasicAccessibility/settings.gradle
+++ b/ui/accessibility/BasicAccessibility/settings.gradle
@@ -1 +1,4 @@
-include ':BasicAccessibility'
+
+
+
+include 'BasicAccessibilitySample'
diff --git a/ui/accessibility/BasicAccessibility/template-params.xml b/ui/accessibility/BasicAccessibility/template-params.xml
new file mode 100644
index 0000000..af9d815
--- /dev/null
+++ b/ui/accessibility/BasicAccessibility/template-params.xml
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ 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.
+-->
+<sample>
+    <name>BasicAccessibility</name>
+    <group>UI</group>
+    <package>com.example.android.basicaccessibility</package>
+
+
+    <!-- change minSdk if needed-->
+    <minSdk>11</minSdk>
+
+    <strings>
+        <intro>
+            <![CDATA[
+            This sample demonstrates how to create an accessible application, using a mix of different widgets demonstrating different ways of adding accessibility markup to a UI.
+            ]]>
+        </intro>
+    </strings>
+
+    <template src="base"/>
+    <common src="logger"/>
+
+</sample>
diff --git a/ui/actionbar/DoneBar/DoneBar/build.gradle b/ui/actionbar/DoneBar/DoneBar/build.gradle
deleted file mode 100644
index 945e1f5..0000000
--- a/ui/actionbar/DoneBar/DoneBar/build.gradle
+++ /dev/null
@@ -1,6 +0,0 @@
-apply plugin: 'android'
-
-android {
-    compileSdkVersion 18
-    buildToolsVersion "18.0.0"
-}
diff --git a/ui/actionbar/DoneBar/DoneBar/src/main/AndroidManifest.xml b/ui/actionbar/DoneBar/DoneBar/src/main/AndroidManifest.xml
deleted file mode 100755
index cce4d5e..0000000
--- a/ui/actionbar/DoneBar/DoneBar/src/main/AndroidManifest.xml
+++ /dev/null
@@ -1,45 +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.
-  -->
-
-<manifest xmlns:android="http://schemas.android.com/apk/res/android"
-    package="com.example.android.donebar"
-    android:versionCode="1"
-    android:versionName="1.0">
-
-    <uses-sdk android:minSdkVersion="14" android:targetSdkVersion="17" />
-
-    <application android:label="@string/app_name"
-        android:icon="@drawable/ic_launcher"
-        android:theme="@style/Theme.Sample"
-        android:allowBackup="true">
-
-        <activity android:name=".SampleDashboardActivity"
-            android:label="@string/app_name">
-            <intent-filter>
-                <action android:name="android.intent.action.MAIN" />
-                <category android:name="android.intent.category.LAUNCHER" />
-            </intent-filter>
-        </activity>
-
-        <activity android:name=".DoneBarActivity"
-            android:parentActivityName=".MainActivity" />
-
-        <activity android:name=".DoneButtonActivity"
-            android:parentActivityName=".MainActivity" />
-
-    </application>
-
-</manifest>
diff --git a/ui/actionbar/DoneBar/DoneBar/src/main/big_icon.png b/ui/actionbar/DoneBar/DoneBar/src/main/big_icon.png
deleted file mode 100644
index 78bb426..0000000
--- a/ui/actionbar/DoneBar/DoneBar/src/main/big_icon.png
+++ /dev/null
Binary files differ
diff --git a/ui/actionbar/DoneBar/DoneBar/src/main/java/com/example/android/donebar/SampleDashboardActivity.java b/ui/actionbar/DoneBar/DoneBar/src/main/java/com/example/android/donebar/SampleDashboardActivity.java
deleted file mode 100755
index e86e6fc..0000000
--- a/ui/actionbar/DoneBar/DoneBar/src/main/java/com/example/android/donebar/SampleDashboardActivity.java
+++ /dev/null
@@ -1,131 +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.donebar;
-
-import android.app.Activity;
-import android.content.Intent;
-import android.os.Bundle;
-import android.view.View;
-import android.view.ViewGroup;
-import android.widget.AdapterView;
-import android.widget.BaseAdapter;
-import android.widget.GridView;
-import android.widget.TextView;
-
-/**
- * A simple launcher activity offering access to the individual samples in this project.
- */
-public class SampleDashboardActivity extends Activity implements AdapterView.OnItemClickListener {
-    /**
-     * The collection of samples that will be used to populate the 'dashboard' grid.
-     */
-    private Sample[] mSamples;
-
-    protected void onCreate(Bundle savedInstanceState) {
-        super.onCreate(savedInstanceState);
-        setContentView(R.layout.activity_sample_dashboard);
-
-        // Prepare list of samples in this dashboard.
-        mSamples = new Sample[]{
-                new Sample(R.string.done_bar_title, R.string.done_bar_description,
-                        DoneBarActivity.class),
-                new Sample(R.string.done_button_title, R.string.done_button_description,
-                        DoneButtonActivity.class),
-        };
-
-        // Use the custom adapter in the GridView and hook up a click listener to handle
-        // selection of individual samples.
-        GridView gridView = (GridView) findViewById(android.R.id.list);
-        gridView.setAdapter(new SampleAdapter());
-        gridView.setOnItemClickListener(this);
-    }
-
-    @Override
-    public void onItemClick(AdapterView<?> container, View view, int position, long id) {
-        // A sample was selected in the dashboard; open it.
-        startActivity(mSamples[position].intent);
-    }
-
-    /**
-     * A custom array-based adapter, designed for use with a {@link GridView}.
-     */
-    private class SampleAdapter extends BaseAdapter {
-        @Override
-        public int getCount() {
-            return mSamples.length;
-        }
-
-        @Override
-        public Sample getItem(int position) {
-            return mSamples[position];
-        }
-
-        @Override
-        public long getItemId(int position) {
-            // The title string ID should be unique per sample, so use it as an ID.
-            return mSamples[position].titleResId;
-        }
-
-        @Override
-        public View getView(int position, View convertView, ViewGroup container) {
-            if (convertView == null) {
-                // If there was no re-usable view that can be simply repopulated, create
-                // a new root view for this grid item.
-                convertView = getLayoutInflater().inflate(
-                        R.layout.sample_dashboard_item, container, false);
-            }
-
-            // Populate the view's children with real data about this sample.
-            ((TextView) convertView.findViewById(android.R.id.text1)).setText(
-                    mSamples[position].titleResId);
-            ((TextView) convertView.findViewById(android.R.id.text2)).setText(
-                    mSamples[position].descriptionResId);
-            return convertView;
-        }
-    }
-
-    /**
-     * A simple class that stores information about a sample: a title, description, and
-     * the intent to call
-     * {@link android.content.Context#startActivity(android.content.Intent) startActivity}
-     * with in order to open the sample.
-     */
-    private class Sample {
-        int titleResId;
-        int descriptionResId;
-        Intent intent;
-
-        /**
-         * Instantiate a new sample object with a title, description, and intent.
-         */
-        private Sample(int titleResId, int descriptionResId, Intent intent) {
-            this.intent = intent;
-            this.titleResId = titleResId;
-            this.descriptionResId = descriptionResId;
-        }
-
-        /**
-         * Instantiate a new sample object with a title, description, and {@link Activity}
-         * subclass. An intent will automatically be created for the given activity.
-         */
-        private Sample(int titleResId, int descriptionResId,
-                Class<? extends Activity> activityClass) {
-            this(titleResId, descriptionResId,
-                    new Intent(SampleDashboardActivity.this, activityClass));
-        }
-    }
-}
diff --git a/ui/actionbar/DoneBar/DoneBar/src/main/res/drawable-xhdpi/sample_dashboard_item_background.9.png b/ui/actionbar/DoneBar/DoneBar/src/main/res/drawable-xhdpi/sample_dashboard_item_background.9.png
deleted file mode 100644
index 1358628..0000000
--- a/ui/actionbar/DoneBar/DoneBar/src/main/res/drawable-xhdpi/sample_dashboard_item_background.9.png
+++ /dev/null
Binary files differ
diff --git a/ui/actionbar/DoneBar/DoneBar/src/main/res/values-sw600dp/styles.xml b/ui/actionbar/DoneBar/DoneBar/src/main/res/values-sw600dp/styles.xml
deleted file mode 100644
index 401e7aa..0000000
--- a/ui/actionbar/DoneBar/DoneBar/src/main/res/values-sw600dp/styles.xml
+++ /dev/null
@@ -1,24 +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.
-  -->
-
-<resources>
-
-    <style name="Widget.SampleMessage">
-        <item name="android:textAppearance">?android:textAppearanceLarge</item>
-        <item name="android:lineSpacingMultiplier">1.2</item>
-    </style>
-
-</resources>
diff --git a/ui/actionbar/DoneBar/DoneBar/src/main/res/values/dimens.xml b/ui/actionbar/DoneBar/DoneBar/src/main/res/values/dimens.xml
deleted file mode 100644
index 39e710b..0000000
--- a/ui/actionbar/DoneBar/DoneBar/src/main/res/values/dimens.xml
+++ /dev/null
@@ -1,32 +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.
-  -->
-
-<resources>
-
-    <!-- Define standard dimensions to comply with Holo-style grids and rhythm. -->
-
-    <dimen name="margin_tiny">4dp</dimen>
-    <dimen name="margin_small">8dp</dimen>
-    <dimen name="margin_medium">16dp</dimen>
-    <dimen name="margin_large">32dp</dimen>
-    <dimen name="margin_huge">64dp</dimen>
-
-    <!-- Semantic definitions -->
-
-    <dimen name="horizontal_page_margin">@dimen/margin_medium</dimen>
-    <dimen name="vertical_page_margin">@dimen/margin_medium</dimen>
-
-</resources>
diff --git a/ui/actionbar/DoneBar/DoneBar/src/main/res/values/strings.xml b/ui/actionbar/DoneBar/DoneBar/src/main/res/values/strings.xml
deleted file mode 100755
index b56d75a..0000000
--- a/ui/actionbar/DoneBar/DoneBar/src/main/res/values/strings.xml
+++ /dev/null
@@ -1,32 +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.
-  -->
-
-<resources>
-    <string name="app_name">Done Bar</string>
-
-    <!-- Sample UI messages -->
-    <string name="intro_message">This sample demonstrates two alternative presentations of the action bar that are well-suited for <b>simple data entry scenarios</b>.</string>
-
-    <string name="done_bar_title">Done bar</string>
-    <string name="done_bar_description">In this presentation, a <b>done bar</b> replaces the action bar entirely, providing two direct actions to persist or dismiss changes. This is suitable for cases where no additional view details or actions are needed in the action bar.</string>
-
-    <string name="done_button_title">Done button</string>
-    <string name="done_button_description">In this presentation, a <b>done button</b> replaces the action bar\'s <i>Up</i> affordance and app icon, while the cancel action is made available in the action overflow. This is well-suited to scenarios where additional view details or actions may be needed in the action bar.</string>
-
-    <!-- Done bar strings -->
-    <string name="done">Done</string>
-    <string name="cancel">Cancel</string>
-</resources>
diff --git a/ui/actionbar/DoneBar/DoneBar/src/main/res/values/styles.xml b/ui/actionbar/DoneBar/DoneBar/src/main/res/values/styles.xml
deleted file mode 100644
index f3841bd..0000000
--- a/ui/actionbar/DoneBar/DoneBar/src/main/res/values/styles.xml
+++ /dev/null
@@ -1,71 +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.
-  -->
-
-<resources>
-
-    <!-- Activity themes -->
-
-    <style name="Theme.Base" parent="android:Theme.Holo.Light" />
-
-    <style name="Theme.Sample" parent="Theme.Base" />
-
-    <!-- Widget styling -->
-
-    <style name="Widget" />
-
-    <style name="Widget.SampleContentContainer">
-        <item name="android:paddingTop">@dimen/vertical_page_margin</item>
-        <item name="android:paddingBottom">@dimen/vertical_page_margin</item>
-        <item name="android:paddingLeft">@dimen/horizontal_page_margin</item>
-        <item name="android:paddingRight">@dimen/horizontal_page_margin</item>
-    </style>
-
-    <style name="Widget.SampleMessage">
-        <item name="android:textAppearance">?android:textAppearanceMedium</item>
-        <item name="android:lineSpacingMultiplier">1.1</item>
-    </style>
-
-    <style name="Widget.SampleDashboard.Grid" parent="Widget">
-        <item name="android:stretchMode">columnWidth</item>
-        <item name="android:columnWidth">200dp</item>
-        <item name="android:numColumns">auto_fit</item>
-        <item name="android:drawSelectorOnTop">true</item>
-        <item name="android:horizontalSpacing">@dimen/margin_medium</item>
-        <item name="android:verticalSpacing">@dimen/margin_medium</item>
-    </style>
-
-    <style name="Widget.SampleDashboard.Item" parent="Widget">
-        <item name="android:background">@drawable/sample_dashboard_item_background</item>
-        <item name="android:paddingTop">@dimen/margin_small</item>
-        <item name="android:paddingLeft">@dimen/margin_medium</item>
-        <item name="android:paddingRight">@dimen/margin_medium</item>
-        <item name="android:paddingBottom">@dimen/margin_medium</item>
-    </style>
-
-    <style name="Widget.SampleDashboard.Item.Title" parent="Widget">
-        <item name="android:layout_marginBottom">@dimen/margin_tiny</item>
-        <item name="android:textAppearance">?android:textAppearanceLarge</item>
-        <item name="android:textColor">#09c</item>
-        <item name="android:textStyle">bold</item>
-        <item name="android:textSize">24sp</item>
-    </style>
-
-    <style name="Widget.SampleDashboard.Item.Description" parent="Widget">
-        <item name="android:textAppearance">?android:textAppearanceSmall</item>
-        <item name="android:fontFamily">sans-serif-light</item>
-    </style>
-
-</resources>
diff --git a/ui/actionbar/DoneBar/DoneBarSample/.gitignore b/ui/actionbar/DoneBar/DoneBarSample/.gitignore
new file mode 100644
index 0000000..6eb878d
--- /dev/null
+++ b/ui/actionbar/DoneBar/DoneBarSample/.gitignore
@@ -0,0 +1,16 @@
+# 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.
+src/template/
+src/common/
+build.gradle
diff --git a/connectivity/sync/BasicSyncAdapter/BasicSyncAdapterTests/proguard-project.txt b/ui/actionbar/DoneBar/DoneBarSample/proguard-project.txt
similarity index 91%
copy from connectivity/sync/BasicSyncAdapter/BasicSyncAdapterTests/proguard-project.txt
copy to ui/actionbar/DoneBar/DoneBarSample/proguard-project.txt
index f2fe155..0d8f171 100644
--- a/connectivity/sync/BasicSyncAdapter/BasicSyncAdapterTests/proguard-project.txt
+++ b/ui/actionbar/DoneBar/DoneBarSample/proguard-project.txt
@@ -1,4 +1,4 @@
-# To enable ProGuard in your project, edit project.properties
+ To enable ProGuard in your project, edit project.properties
 # to define the proguard.config property as described in that file.
 #
 # Add project specific ProGuard rules here.
diff --git a/ui/actionbar/DoneBar/DoneBarSample/src/main/AndroidManifest.xml b/ui/actionbar/DoneBar/DoneBarSample/src/main/AndroidManifest.xml
new file mode 100644
index 0000000..4731114
--- /dev/null
+++ b/ui/actionbar/DoneBar/DoneBarSample/src/main/AndroidManifest.xml
@@ -0,0 +1,48 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ 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.
+-->
+
+
+
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+    package="com.example.android.donebar"
+    android:versionCode="1"
+    android:versionName="1.0">
+
+    <uses-sdk android:minSdkVersion="14" android:targetSdkVersion="17" />
+
+    <application android:label="@string/app_name"
+        android:icon="@drawable/ic_launcher"
+        android:theme="@style/Theme.Sample"
+        android:allowBackup="true">
+
+        <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>
+
+        <activity android:name=".DoneBarActivity"
+            android:parentActivityName=".MainActivity" />
+
+        <activity android:name=".DoneButtonActivity"
+            android:parentActivityName=".MainActivity" />
+
+    </application>
+
+</manifest>
diff --git a/ui/actionbar/DoneBar/DoneBar/src/main/java/com/example/android/donebar/DoneBarActivity.java b/ui/actionbar/DoneBar/DoneBarSample/src/main/java/com/example/android/donebar/DoneBarActivity.java
similarity index 100%
rename from ui/actionbar/DoneBar/DoneBar/src/main/java/com/example/android/donebar/DoneBarActivity.java
rename to ui/actionbar/DoneBar/DoneBarSample/src/main/java/com/example/android/donebar/DoneBarActivity.java
diff --git a/ui/actionbar/DoneBar/DoneBar/src/main/java/com/example/android/donebar/DoneButtonActivity.java b/ui/actionbar/DoneBar/DoneBarSample/src/main/java/com/example/android/donebar/DoneButtonActivity.java
similarity index 99%
rename from ui/actionbar/DoneBar/DoneBar/src/main/java/com/example/android/donebar/DoneButtonActivity.java
rename to ui/actionbar/DoneBar/DoneBarSample/src/main/java/com/example/android/donebar/DoneButtonActivity.java
index 303d1ed..3b1e37d 100755
--- a/ui/actionbar/DoneBar/DoneBar/src/main/java/com/example/android/donebar/DoneButtonActivity.java
+++ b/ui/actionbar/DoneBar/DoneBarSample/src/main/java/com/example/android/donebar/DoneButtonActivity.java
@@ -67,6 +67,7 @@
         return true;
     }
 
+
     @Override
     public boolean onOptionsItemSelected(MenuItem item) {
         switch (item.getItemId()) {
diff --git a/ui/actionbar/DoneBar/DoneBar/src/main/res/drawable-hdpi/ic_action_cancel.png b/ui/actionbar/DoneBar/DoneBarSample/src/main/res/drawable-hdpi/ic_action_cancel.png
similarity index 100%
rename from ui/actionbar/DoneBar/DoneBar/src/main/res/drawable-hdpi/ic_action_cancel.png
rename to ui/actionbar/DoneBar/DoneBarSample/src/main/res/drawable-hdpi/ic_action_cancel.png
Binary files differ
diff --git a/ui/actionbar/DoneBar/DoneBar/src/main/res/drawable-hdpi/ic_action_done.png b/ui/actionbar/DoneBar/DoneBarSample/src/main/res/drawable-hdpi/ic_action_done.png
similarity index 100%
rename from ui/actionbar/DoneBar/DoneBar/src/main/res/drawable-hdpi/ic_action_done.png
rename to ui/actionbar/DoneBar/DoneBarSample/src/main/res/drawable-hdpi/ic_action_done.png
Binary files differ
diff --git a/ui/actionbar/DoneBar/DoneBar/src/main/res/drawable-hdpi/ic_launcher.png b/ui/actionbar/DoneBar/DoneBarSample/src/main/res/drawable-hdpi/ic_launcher.png
similarity index 100%
rename from ui/actionbar/DoneBar/DoneBar/src/main/res/drawable-hdpi/ic_launcher.png
rename to ui/actionbar/DoneBar/DoneBarSample/src/main/res/drawable-hdpi/ic_launcher.png
Binary files differ
diff --git a/ui/actionbar/DoneBar/DoneBar/src/main/res/drawable-mdpi/ic_action_cancel.png b/ui/actionbar/DoneBar/DoneBarSample/src/main/res/drawable-mdpi/ic_action_cancel.png
similarity index 100%
rename from ui/actionbar/DoneBar/DoneBar/src/main/res/drawable-mdpi/ic_action_cancel.png
rename to ui/actionbar/DoneBar/DoneBarSample/src/main/res/drawable-mdpi/ic_action_cancel.png
Binary files differ
diff --git a/ui/actionbar/DoneBar/DoneBar/src/main/res/drawable-mdpi/ic_action_done.png b/ui/actionbar/DoneBar/DoneBarSample/src/main/res/drawable-mdpi/ic_action_done.png
similarity index 100%
rename from ui/actionbar/DoneBar/DoneBar/src/main/res/drawable-mdpi/ic_action_done.png
rename to ui/actionbar/DoneBar/DoneBarSample/src/main/res/drawable-mdpi/ic_action_done.png
Binary files differ
diff --git a/ui/actionbar/DoneBar/DoneBar/src/main/res/drawable-mdpi/ic_launcher.png b/ui/actionbar/DoneBar/DoneBarSample/src/main/res/drawable-mdpi/ic_launcher.png
similarity index 100%
rename from ui/actionbar/DoneBar/DoneBar/src/main/res/drawable-mdpi/ic_launcher.png
rename to ui/actionbar/DoneBar/DoneBarSample/src/main/res/drawable-mdpi/ic_launcher.png
Binary files differ
diff --git a/ui/actionbar/DoneBar/DoneBar/src/main/res/drawable-xhdpi/ic_action_cancel.png b/ui/actionbar/DoneBar/DoneBarSample/src/main/res/drawable-xhdpi/ic_action_cancel.png
similarity index 100%
rename from ui/actionbar/DoneBar/DoneBar/src/main/res/drawable-xhdpi/ic_action_cancel.png
rename to ui/actionbar/DoneBar/DoneBarSample/src/main/res/drawable-xhdpi/ic_action_cancel.png
Binary files differ
diff --git a/ui/actionbar/DoneBar/DoneBar/src/main/res/drawable-xhdpi/ic_action_done.png b/ui/actionbar/DoneBar/DoneBarSample/src/main/res/drawable-xhdpi/ic_action_done.png
similarity index 100%
rename from ui/actionbar/DoneBar/DoneBar/src/main/res/drawable-xhdpi/ic_action_done.png
rename to ui/actionbar/DoneBar/DoneBarSample/src/main/res/drawable-xhdpi/ic_action_done.png
Binary files differ
diff --git a/ui/actionbar/DoneBar/DoneBar/src/main/res/drawable-xhdpi/ic_launcher.png b/ui/actionbar/DoneBar/DoneBarSample/src/main/res/drawable-xhdpi/ic_launcher.png
similarity index 100%
rename from ui/actionbar/DoneBar/DoneBar/src/main/res/drawable-xhdpi/ic_launcher.png
rename to ui/actionbar/DoneBar/DoneBarSample/src/main/res/drawable-xhdpi/ic_launcher.png
Binary files differ
diff --git a/ui/actionbar/DoneBar/DoneBar/src/main/res/drawable-xxhdpi/ic_launcher.png b/ui/actionbar/DoneBar/DoneBarSample/src/main/res/drawable-xxhdpi/ic_launcher.png
similarity index 100%
rename from ui/actionbar/DoneBar/DoneBar/src/main/res/drawable-xxhdpi/ic_launcher.png
rename to ui/actionbar/DoneBar/DoneBarSample/src/main/res/drawable-xxhdpi/ic_launcher.png
Binary files differ
diff --git a/ui/actionbar/DoneBar/DoneBar/src/main/res/layout/actionbar_custom_view_done.xml b/ui/actionbar/DoneBar/DoneBarSample/src/main/res/layout/actionbar_custom_view_done.xml
similarity index 100%
rename from ui/actionbar/DoneBar/DoneBar/src/main/res/layout/actionbar_custom_view_done.xml
rename to ui/actionbar/DoneBar/DoneBarSample/src/main/res/layout/actionbar_custom_view_done.xml
diff --git a/ui/actionbar/DoneBar/DoneBar/src/main/res/layout/actionbar_custom_view_done_cancel.xml b/ui/actionbar/DoneBar/DoneBarSample/src/main/res/layout/actionbar_custom_view_done_cancel.xml
similarity index 100%
rename from ui/actionbar/DoneBar/DoneBar/src/main/res/layout/actionbar_custom_view_done_cancel.xml
rename to ui/actionbar/DoneBar/DoneBarSample/src/main/res/layout/actionbar_custom_view_done_cancel.xml
diff --git a/ui/actionbar/DoneBar/DoneBar/src/main/res/layout/activity_done_bar.xml b/ui/actionbar/DoneBar/DoneBarSample/src/main/res/layout/activity_done_bar.xml
similarity index 94%
rename from ui/actionbar/DoneBar/DoneBar/src/main/res/layout/activity_done_bar.xml
rename to ui/actionbar/DoneBar/DoneBarSample/src/main/res/layout/activity_done_bar.xml
index cb8980f..0d0272d 100755
--- a/ui/actionbar/DoneBar/DoneBar/src/main/res/layout/activity_done_bar.xml
+++ b/ui/actionbar/DoneBar/DoneBarSample/src/main/res/layout/activity_done_bar.xml
@@ -26,7 +26,7 @@
         <TextView style="@style/Widget.SampleMessage"
             android:layout_width="match_parent"
             android:layout_height="wrap_content"
-            android:text="@string/done_bar_description" />
+            android:text="@string/donebaractivity_description" />
 
     </LinearLayout>
 </ScrollView>
diff --git a/ui/actionbar/DoneBar/DoneBar/src/main/res/layout/activity_done_button.xml b/ui/actionbar/DoneBar/DoneBarSample/src/main/res/layout/activity_done_button.xml
similarity index 94%
rename from ui/actionbar/DoneBar/DoneBar/src/main/res/layout/activity_done_button.xml
rename to ui/actionbar/DoneBar/DoneBarSample/src/main/res/layout/activity_done_button.xml
index 3e20455..7fc2274 100755
--- a/ui/actionbar/DoneBar/DoneBar/src/main/res/layout/activity_done_button.xml
+++ b/ui/actionbar/DoneBar/DoneBarSample/src/main/res/layout/activity_done_button.xml
@@ -26,7 +26,7 @@
         <TextView style="@style/Widget.SampleMessage"
             android:layout_width="match_parent"
             android:layout_height="wrap_content"
-            android:text="@string/done_button_description" />
+            android:text="@string/donebuttonactivity_description" />
 
     </LinearLayout>
 </ScrollView>
diff --git a/ui/actionbar/DoneBar/DoneBar/src/main/res/layout/activity_sample_dashboard.xml b/ui/actionbar/DoneBar/DoneBarSample/src/main/res/layout/activity_sample_dashboard.xml
similarity index 100%
rename from ui/actionbar/DoneBar/DoneBar/src/main/res/layout/activity_sample_dashboard.xml
rename to ui/actionbar/DoneBar/DoneBarSample/src/main/res/layout/activity_sample_dashboard.xml
diff --git a/ui/actionbar/DoneBar/DoneBar/src/main/res/layout/include_cancel_button.xml b/ui/actionbar/DoneBar/DoneBarSample/src/main/res/layout/include_cancel_button.xml
similarity index 100%
rename from ui/actionbar/DoneBar/DoneBar/src/main/res/layout/include_cancel_button.xml
rename to ui/actionbar/DoneBar/DoneBarSample/src/main/res/layout/include_cancel_button.xml
diff --git a/ui/actionbar/DoneBar/DoneBar/src/main/res/layout/include_done_button.xml b/ui/actionbar/DoneBar/DoneBarSample/src/main/res/layout/include_done_button.xml
similarity index 100%
rename from ui/actionbar/DoneBar/DoneBar/src/main/res/layout/include_done_button.xml
rename to ui/actionbar/DoneBar/DoneBarSample/src/main/res/layout/include_done_button.xml
diff --git a/ui/actionbar/DoneBar/DoneBar/src/main/res/menu/cancel.xml b/ui/actionbar/DoneBar/DoneBarSample/src/main/res/menu/cancel.xml
similarity index 100%
rename from ui/actionbar/DoneBar/DoneBar/src/main/res/menu/cancel.xml
rename to ui/actionbar/DoneBar/DoneBarSample/src/main/res/menu/cancel.xml
diff --git a/ui/holo/BorderlessButtons/BorderlessButtons/src/main/res/values-sw600dp/dimens.xml b/ui/actionbar/DoneBar/DoneBarSample/src/main/res/values/strings.xml
old mode 100644
new mode 100755
similarity index 84%
copy from ui/holo/BorderlessButtons/BorderlessButtons/src/main/res/values-sw600dp/dimens.xml
copy to ui/actionbar/DoneBar/DoneBarSample/src/main/res/values/strings.xml
index 0e00174..df66a95
--- a/ui/holo/BorderlessButtons/BorderlessButtons/src/main/res/values-sw600dp/dimens.xml
+++ b/ui/actionbar/DoneBar/DoneBarSample/src/main/res/values/strings.xml
@@ -15,7 +15,7 @@
   -->
 
 <resources>
-
-    <dimen name="page_margin">@dimen/margin_huge</dimen>
-
+    <!-- Done bar strings -->
+    <string name="done">Done</string>
+    <string name="cancel">Cancel</string>
 </resources>
diff --git a/ui/actionbar/DoneBar/DoneBarSample/tests/AndroidManifest.xml b/ui/actionbar/DoneBar/DoneBarSample/tests/AndroidManifest.xml
new file mode 100644
index 0000000..40eb5e1
--- /dev/null
+++ b/ui/actionbar/DoneBar/DoneBarSample/tests/AndroidManifest.xml
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  Copyright (C) 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 name must be unique so suffix with "tests" so package loader doesn't ignore us -->
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+          package="com.example.android.donebar.tests"
+          android:versionCode="1"
+          android:versionName="1.0">
+
+    <uses-sdk
+            android:minSdkVersion="18"
+            android:targetSdkVersion="19" />
+
+    <!-- We add an application tag here just so that we can indicate that
+         this package needs to link against the android.test library,
+         which is needed when building test cases. -->
+    <application>
+        <uses-library android:name="android.test.runner" />
+    </application>
+
+    <!--
+    Specifies the instrumentation test runner used to run the tests.
+    -->
+    <instrumentation
+            android:name="android.test.InstrumentationTestRunner"
+            android:targetPackage="com.example.android.donebar"
+            android:label="Tests for com.example.android.donebar" />
+
+</manifest>
\ No newline at end of file
diff --git a/ui/actionbar/DoneBar/DoneBarSample/tests/src/com/example/android/donebar/tests/SampleTests.java b/ui/actionbar/DoneBar/DoneBarSample/tests/src/com/example/android/donebar/tests/SampleTests.java
new file mode 100644
index 0000000..c019ef8
--- /dev/null
+++ b/ui/actionbar/DoneBar/DoneBarSample/tests/src/com/example/android/donebar/tests/SampleTests.java
@@ -0,0 +1,79 @@
+/*
+* 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.
+*/
+
+
+
+/*
+* Copyright (C) 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.donebar.tests;
+
+import com.example.android.donebar.*;
+
+import android.test.ActivityInstrumentationTestCase2;
+
+/**
+* Tests for DoneBar sample.
+*/
+public class SampleTests extends ActivityInstrumentationTestCase2<MainActivity> {
+
+    private MainActivity mTestActivity;
+    private DoneBarFragment mTestFragment;
+
+    public SampleTests() {
+        super(MainActivity.class);
+    }
+
+    @Override
+    protected void setUp() throws Exception {
+        super.setUp();
+
+        // Starts the activity under test using the default Intent with:
+        // action = {@link Intent#ACTION_MAIN}
+        // flags = {@link Intent#FLAG_ACTIVITY_NEW_TASK}
+        // All other fields are null or empty.
+        mTestActivity = getActivity();
+        mTestFragment = (DoneBarFragment)
+            mTestActivity.getSupportFragmentManager().getFragments().get(1);
+    }
+
+    /**
+    * Test if the test fixture has been set up correctly.
+    */
+    public void testPreconditions() {
+        //Try to add a message to add context to your assertions. These messages will be shown if
+        //a tests fails and make it easy to understand why a test failed
+        assertNotNull("mTestActivity is null", mTestActivity);
+        assertNotNull("mTestFragment is null", mTestFragment);
+    }
+
+    /**
+    * Add more tests below.
+    */
+
+}
\ No newline at end of file
diff --git a/ui/actionbar/DoneBar/build.gradle b/ui/actionbar/DoneBar/build.gradle
index 036abc8..cca9ac3 100644
--- a/ui/actionbar/DoneBar/build.gradle
+++ b/ui/actionbar/DoneBar/build.gradle
@@ -1,8 +1,10 @@
-buildscript {
-    repositories {
-        mavenCentral()
-    }
-    dependencies {
-        classpath 'com.android.tools.build:gradle:0.5.+'
-    }
+// BEGIN_EXCLUDE
+import com.example.android.samples.build.SampleGenPlugin
+apply plugin: SampleGenPlugin
+
+samplegen {
+  pathToBuild "../../../../../build"
+  pathToSamplesCommon "../../../common"
 }
+apply from: "../../../../../build/build.gradle"
+// END_EXCLUDE
diff --git a/ui/actionbar/DoneBar/buildSrc/build.gradle b/ui/actionbar/DoneBar/buildSrc/build.gradle
new file mode 100644
index 0000000..e344a8c
--- /dev/null
+++ b/ui/actionbar/DoneBar/buildSrc/build.gradle
@@ -0,0 +1,18 @@
+
+
+
+repositories {
+    mavenCentral()
+}
+dependencies {
+    compile 'org.freemarker:freemarker:2.3.20'
+}
+
+sourceSets {
+    main {
+        groovy {
+            srcDir new File(rootDir, "../../../../../../build/buildSrc/src/main/groovy")
+        }
+    }
+}
+
diff --git a/ui/actionbar/DoneBar/gradle/wrapper/gradle-wrapper.properties b/ui/actionbar/DoneBar/gradle/wrapper/gradle-wrapper.properties
index 055ba6f..861eddc 100644
--- a/ui/actionbar/DoneBar/gradle/wrapper/gradle-wrapper.properties
+++ b/ui/actionbar/DoneBar/gradle/wrapper/gradle-wrapper.properties
@@ -1,7 +1,6 @@
-#
-#Mon Jul 22 11:40:20 PDT 2013
+#Wed Apr 10 15:27:10 PDT 2013
 distributionBase=GRADLE_USER_HOME
 distributionPath=wrapper/dists
 zipStoreBase=GRADLE_USER_HOME
 zipStorePath=wrapper/dists
-distributionUrl=http\://services.gradle.org/distributions/gradle-1.6-bin.zip
+distributionUrl=http\://services.gradle.org/distributions/gradle-1.8-bin.zip
diff --git a/ui/actionbar/DoneBar/settings.gradle b/ui/actionbar/DoneBar/settings.gradle
index 28b5ccd..d060dc7 100644
--- a/ui/actionbar/DoneBar/settings.gradle
+++ b/ui/actionbar/DoneBar/settings.gradle
@@ -1 +1,4 @@
-include ':DoneBar'
+
+
+
+include 'DoneBarSample'
diff --git a/ui/actionbar/DoneBar/template-params.xml b/ui/actionbar/DoneBar/template-params.xml
new file mode 100644
index 0000000..c5d1741
--- /dev/null
+++ b/ui/actionbar/DoneBar/template-params.xml
@@ -0,0 +1,59 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ 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.
+-->
+
+<sample>
+    <name>DoneBar</name>
+    <group>UI</group>
+    <package>com.example.android.donebar</package>
+
+    <!-- change minSdk if needed-->
+    <minSdk>14</minSdk>
+
+    <strings>
+        <intro>
+            <![CDATA[
+                This sample demonstrates two alternative presentations of the
+                action bar that are well-suited for simple data entry scenarios.
+
+                In this presentation, a done bar replaces the action
+                bar entirely, providing two direct actions to persist or dismiss changes. This is
+                suitable for cases where no additional view details or actions are needed in the
+                action bar.
+            ]]>
+        </intro>
+    </strings>
+
+    <activity>
+        <class>DoneBarActivity</class>
+        <title>Done Bar</title>
+        <description>In this presentation, a done bar replaces the action bar entirely, providing
+            two direct actions to persist or dismiss changes. This is suitable for cases where no
+            additional view details or actions are needed in the action bar.</description>
+    </activity>
+
+    <activity>
+        <class>DoneButtonActivity</class>
+        <title>Done Button</title>
+        <description>In this presentation, a done button replaces the action bar\'s "Up" affordance
+            and app icon, while the cancel action is made available in the action overflow. This is
+            well-suited to scenarios where additional view details or
+            actions may be needed in the action bar.</description>
+    </activity>
+
+    <template src="base"/>
+    <template src="ActivityCards"/>
+</sample>
diff --git a/ui/actionbarcompat/Basic/Basic/build.gradle b/ui/actionbarcompat/Basic/Basic/build.gradle
deleted file mode 100644
index 8e76487..0000000
--- a/ui/actionbarcompat/Basic/Basic/build.gradle
+++ /dev/null
@@ -1,11 +0,0 @@
-apply plugin: 'android'
-
-dependencies {
-    compile "com.android.support:support-v4:18.0.+"
-    compile "com.android.support:appcompat-v7:18.0.+"
-}
-
-android {
-    compileSdkVersion 18
-    buildToolsVersion "18.0.0"
-}
diff --git a/ui/actionbarcompat/Basic/Basic/src/main/AndroidManifest.xml b/ui/actionbarcompat/Basic/Basic/src/main/AndroidManifest.xml
deleted file mode 100644
index f0243ac..0000000
--- a/ui/actionbarcompat/Basic/Basic/src/main/AndroidManifest.xml
+++ /dev/null
@@ -1,27 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<manifest xmlns:android="http://schemas.android.com/apk/res/android"
-    package="com.example.android.actionbarcompat.basic"
-    android:versionCode="1"
-    android:versionName="1.0">
-
-    <!-- ActionBarCompat provides an Action Bar from API v7 onwards -->
-    <uses-sdk
-        android:minSdkVersion="7"
-        android:targetSdkVersion="17" />
-
-    <application
-        android:icon="@drawable/ic_launcher"
-        android:label="@string/app_name"
-        android:theme="@style/Theme.AppCompat"
-        android:allowBackup="true">
-
-        <activity android:name=".MainActivity">
-            <!-- Launcher Intent filter -->
-            <intent-filter>
-                <action android:name="android.intent.action.MAIN" />
-                <category android:name="android.intent.category.LAUNCHER" />
-            </intent-filter>
-        </activity>
-    </application>
-
-</manifest>
\ No newline at end of file
diff --git a/ui/actionbarcompat/Basic/Basic/src/main/res/values/strings.xml b/ui/actionbarcompat/Basic/Basic/src/main/res/values/strings.xml
deleted file mode 100644
index 5421e64..0000000
--- a/ui/actionbarcompat/Basic/Basic/src/main/res/values/strings.xml
+++ /dev/null
@@ -1,27 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-  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.
--->
-<resources>
-
-    <string name="app_name">ABC Basic</string>
-    <string name="menu_refresh">Refresh</string>
-    <string name="menu_location">Location</string>
-    <string name="menu_settings">Settings</string>
-    <string name="main_description">This is a basic Activity showing an
-        Action Bar. Items that are not shown as action items on the Action Bar are displayed in
-        the action bar overflow.</string>
-
-</resources>
\ No newline at end of file
diff --git a/ui/actionbarcompat/Basic/BasicSample/.gitignore b/ui/actionbarcompat/Basic/BasicSample/.gitignore
new file mode 100644
index 0000000..6eb878d
--- /dev/null
+++ b/ui/actionbarcompat/Basic/BasicSample/.gitignore
@@ -0,0 +1,16 @@
+# 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.
+src/template/
+src/common/
+build.gradle
diff --git a/connectivity/sync/BasicSyncAdapter/BasicSyncAdapterTests/proguard-project.txt b/ui/actionbarcompat/Basic/BasicSample/proguard-project.txt
similarity index 91%
copy from connectivity/sync/BasicSyncAdapter/BasicSyncAdapterTests/proguard-project.txt
copy to ui/actionbarcompat/Basic/BasicSample/proguard-project.txt
index f2fe155..0d8f171 100644
--- a/connectivity/sync/BasicSyncAdapter/BasicSyncAdapterTests/proguard-project.txt
+++ b/ui/actionbarcompat/Basic/BasicSample/proguard-project.txt
@@ -1,4 +1,4 @@
-# To enable ProGuard in your project, edit project.properties
+ To enable ProGuard in your project, edit project.properties
 # to define the proguard.config property as described in that file.
 #
 # Add project specific ProGuard rules here.
diff --git a/ui/actionbarcompat/ListPopupMenu/ListPopupMenu/src/main/AndroidManifest.xml b/ui/actionbarcompat/Basic/BasicSample/src/main/AndroidManifest.xml
similarity index 80%
copy from ui/actionbarcompat/ListPopupMenu/ListPopupMenu/src/main/AndroidManifest.xml
copy to ui/actionbarcompat/Basic/BasicSample/src/main/AndroidManifest.xml
index 7e9a861..332c055 100644
--- a/ui/actionbarcompat/ListPopupMenu/ListPopupMenu/src/main/AndroidManifest.xml
+++ b/ui/actionbarcompat/Basic/BasicSample/src/main/AndroidManifest.xml
@@ -1,11 +1,12 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2013 The Android Open Source Project
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ 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
+     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,
@@ -13,12 +14,13 @@
  See the License for the specific language governing permissions and
  limitations under the License.
 -->
+
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
-    package="com.example.android.actionbarcompat.listpopupmenu"
+    package="com.example.android.actionbarcompat.basic"
     android:versionCode="1"
     android:versionName="1.0">
 
-    <!-- ActionBarCompat provides an implementation of Popup Menu from API v7 onwards -->
+    <!-- ActionBarCompat provides an Action Bar from API v7 onwards -->
     <uses-sdk
         android:minSdkVersion="7"
         android:targetSdkVersion="17" />
diff --git a/ui/actionbarcompat/Basic/Basic/src/main/src/com/example/android/actionbarcompat/basic/MainActivity.java b/ui/actionbarcompat/Basic/BasicSample/src/main/java/com/example/android/actionbarcompat/basic/MainActivity.java
similarity index 98%
rename from ui/actionbarcompat/Basic/Basic/src/main/src/com/example/android/actionbarcompat/basic/MainActivity.java
rename to ui/actionbarcompat/Basic/BasicSample/src/main/java/com/example/android/actionbarcompat/basic/MainActivity.java
index eb63827..8d3506f 100644
--- a/ui/actionbarcompat/Basic/Basic/src/main/src/com/example/android/actionbarcompat/basic/MainActivity.java
+++ b/ui/actionbarcompat/Basic/BasicSample/src/main/java/com/example/android/actionbarcompat/basic/MainActivity.java
@@ -34,7 +34,7 @@
     @Override
     protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
-        setContentView(R.layout.activity_main);
+        setContentView(R.layout.sample_main);
     }
 
     // BEGIN_INCLUDE(create_menu)
diff --git a/ui/actionbarcompat/Basic/Basic/src/main/res/drawable-hdpi/ic_action_location.png b/ui/actionbarcompat/Basic/BasicSample/src/main/res/drawable-hdpi/ic_action_location.png
similarity index 100%
rename from ui/actionbarcompat/Basic/Basic/src/main/res/drawable-hdpi/ic_action_location.png
rename to ui/actionbarcompat/Basic/BasicSample/src/main/res/drawable-hdpi/ic_action_location.png
Binary files differ
diff --git a/ui/actionbarcompat/Basic/Basic/src/main/res/drawable-hdpi/ic_action_refresh.png b/ui/actionbarcompat/Basic/BasicSample/src/main/res/drawable-hdpi/ic_action_refresh.png
similarity index 100%
rename from ui/actionbarcompat/Basic/Basic/src/main/res/drawable-hdpi/ic_action_refresh.png
rename to ui/actionbarcompat/Basic/BasicSample/src/main/res/drawable-hdpi/ic_action_refresh.png
Binary files differ
diff --git a/ui/actionbarcompat/Basic/Basic/src/main/res/drawable-hdpi/ic_action_settings.png b/ui/actionbarcompat/Basic/BasicSample/src/main/res/drawable-hdpi/ic_action_settings.png
similarity index 100%
rename from ui/actionbarcompat/Basic/Basic/src/main/res/drawable-hdpi/ic_action_settings.png
rename to ui/actionbarcompat/Basic/BasicSample/src/main/res/drawable-hdpi/ic_action_settings.png
Binary files differ
diff --git a/ui/actionbarcompat/Basic/Basic/src/main/res/drawable-hdpi/ic_launcher.png b/ui/actionbarcompat/Basic/BasicSample/src/main/res/drawable-hdpi/ic_launcher.png
similarity index 100%
rename from ui/actionbarcompat/Basic/Basic/src/main/res/drawable-hdpi/ic_launcher.png
rename to ui/actionbarcompat/Basic/BasicSample/src/main/res/drawable-hdpi/ic_launcher.png
Binary files differ
diff --git a/ui/actionbarcompat/Basic/Basic/src/main/res/drawable-mdpi/ic_action_location.png b/ui/actionbarcompat/Basic/BasicSample/src/main/res/drawable-mdpi/ic_action_location.png
similarity index 100%
rename from ui/actionbarcompat/Basic/Basic/src/main/res/drawable-mdpi/ic_action_location.png
rename to ui/actionbarcompat/Basic/BasicSample/src/main/res/drawable-mdpi/ic_action_location.png
Binary files differ
diff --git a/ui/actionbarcompat/Basic/Basic/src/main/res/drawable-mdpi/ic_action_refresh.png b/ui/actionbarcompat/Basic/BasicSample/src/main/res/drawable-mdpi/ic_action_refresh.png
similarity index 100%
rename from ui/actionbarcompat/Basic/Basic/src/main/res/drawable-mdpi/ic_action_refresh.png
rename to ui/actionbarcompat/Basic/BasicSample/src/main/res/drawable-mdpi/ic_action_refresh.png
Binary files differ
diff --git a/ui/actionbarcompat/Basic/Basic/src/main/res/drawable-mdpi/ic_action_settings.png b/ui/actionbarcompat/Basic/BasicSample/src/main/res/drawable-mdpi/ic_action_settings.png
similarity index 100%
rename from ui/actionbarcompat/Basic/Basic/src/main/res/drawable-mdpi/ic_action_settings.png
rename to ui/actionbarcompat/Basic/BasicSample/src/main/res/drawable-mdpi/ic_action_settings.png
Binary files differ
diff --git a/ui/actionbarcompat/Basic/Basic/src/main/res/drawable-mdpi/ic_launcher.png b/ui/actionbarcompat/Basic/BasicSample/src/main/res/drawable-mdpi/ic_launcher.png
similarity index 100%
rename from ui/actionbarcompat/Basic/Basic/src/main/res/drawable-mdpi/ic_launcher.png
rename to ui/actionbarcompat/Basic/BasicSample/src/main/res/drawable-mdpi/ic_launcher.png
Binary files differ
diff --git a/ui/actionbarcompat/Basic/Basic/src/main/res/drawable-xhdpi/ic_action_location.png b/ui/actionbarcompat/Basic/BasicSample/src/main/res/drawable-xhdpi/ic_action_location.png
similarity index 100%
rename from ui/actionbarcompat/Basic/Basic/src/main/res/drawable-xhdpi/ic_action_location.png
rename to ui/actionbarcompat/Basic/BasicSample/src/main/res/drawable-xhdpi/ic_action_location.png
Binary files differ
diff --git a/ui/actionbarcompat/Basic/Basic/src/main/res/drawable-xhdpi/ic_action_refresh.png b/ui/actionbarcompat/Basic/BasicSample/src/main/res/drawable-xhdpi/ic_action_refresh.png
similarity index 100%
rename from ui/actionbarcompat/Basic/Basic/src/main/res/drawable-xhdpi/ic_action_refresh.png
rename to ui/actionbarcompat/Basic/BasicSample/src/main/res/drawable-xhdpi/ic_action_refresh.png
Binary files differ
diff --git a/ui/actionbarcompat/Basic/Basic/src/main/res/drawable-xhdpi/ic_action_settings.png b/ui/actionbarcompat/Basic/BasicSample/src/main/res/drawable-xhdpi/ic_action_settings.png
similarity index 100%
rename from ui/actionbarcompat/Basic/Basic/src/main/res/drawable-xhdpi/ic_action_settings.png
rename to ui/actionbarcompat/Basic/BasicSample/src/main/res/drawable-xhdpi/ic_action_settings.png
Binary files differ
diff --git a/ui/actionbarcompat/Basic/Basic/src/main/res/drawable-xhdpi/ic_launcher.png b/ui/actionbarcompat/Basic/BasicSample/src/main/res/drawable-xhdpi/ic_launcher.png
similarity index 100%
rename from ui/actionbarcompat/Basic/Basic/src/main/res/drawable-xhdpi/ic_launcher.png
rename to ui/actionbarcompat/Basic/BasicSample/src/main/res/drawable-xhdpi/ic_launcher.png
Binary files differ
diff --git a/ui/actionbarcompat/Basic/Basic/src/main/res/drawable-xxhdpi/ic_launcher.png b/ui/actionbarcompat/Basic/BasicSample/src/main/res/drawable-xxhdpi/ic_launcher.png
similarity index 100%
rename from ui/actionbarcompat/Basic/Basic/src/main/res/drawable-xxhdpi/ic_launcher.png
rename to ui/actionbarcompat/Basic/BasicSample/src/main/res/drawable-xxhdpi/ic_launcher.png
Binary files differ
diff --git a/ui/actionbarcompat/Basic/Basic/src/main/res/layout/activity_main.xml b/ui/actionbarcompat/Basic/BasicSample/src/main/res/layout/sample_main.xml
similarity index 94%
rename from ui/actionbarcompat/Basic/Basic/src/main/res/layout/activity_main.xml
rename to ui/actionbarcompat/Basic/BasicSample/src/main/res/layout/sample_main.xml
index 47619e0..ff589e1 100644
--- a/ui/actionbarcompat/Basic/Basic/src/main/res/layout/activity_main.xml
+++ b/ui/actionbarcompat/Basic/BasicSample/src/main/res/layout/sample_main.xml
@@ -18,5 +18,5 @@
     android:layout_width="match_parent"
     android:layout_height="match_parent"
     android:padding="16dp"
-    android:text="@string/main_description"
+    android:text="@string/intro_message"
     android:gravity="center" />
\ No newline at end of file
diff --git a/ui/actionbarcompat/Basic/Basic/src/main/res/menu/main.xml b/ui/actionbarcompat/Basic/BasicSample/src/main/res/menu/main.xml
similarity index 100%
rename from ui/actionbarcompat/Basic/Basic/src/main/res/menu/main.xml
rename to ui/actionbarcompat/Basic/BasicSample/src/main/res/menu/main.xml
diff --git a/ui/actionbarcompat/Basic/Basic/src/main/res/values/ids.xml b/ui/actionbarcompat/Basic/BasicSample/src/main/res/values/ids.xml
similarity index 100%
rename from ui/actionbarcompat/Basic/Basic/src/main/res/values/ids.xml
rename to ui/actionbarcompat/Basic/BasicSample/src/main/res/values/ids.xml
diff --git a/ui/actionbarcompat/Styled/Styled/src/main/res/values/strings.xml b/ui/actionbarcompat/Basic/BasicSample/src/main/res/values/strings.xml
similarity index 81%
copy from ui/actionbarcompat/Styled/Styled/src/main/res/values/strings.xml
copy to ui/actionbarcompat/Basic/BasicSample/src/main/res/values/strings.xml
index 63c7bb1..7867410 100644
--- a/ui/actionbarcompat/Styled/Styled/src/main/res/values/strings.xml
+++ b/ui/actionbarcompat/Basic/BasicSample/src/main/res/values/strings.xml
@@ -15,13 +15,7 @@
   limitations under the License.
 -->
 <resources>
-
-    <string name="app_name">ABC Styled</string>
     <string name="menu_refresh">Refresh</string>
     <string name="menu_location">Location</string>
     <string name="menu_settings">Settings</string>
-    <string name="main_description">This is a basic Activity showing an Action Bar which has been
-        styled.
-    </string>
-
 </resources>
\ No newline at end of file
diff --git a/ui/actionbarcompat/Basic/BasicSample/tests/AndroidManifest.xml b/ui/actionbarcompat/Basic/BasicSample/tests/AndroidManifest.xml
new file mode 100644
index 0000000..a2f7cfc
--- /dev/null
+++ b/ui/actionbarcompat/Basic/BasicSample/tests/AndroidManifest.xml
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  Copyright (C) 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 name must be unique so suffix with "tests" so package loader doesn't ignore us -->
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+          package="com.example.android.actionbarcompat.basic.tests"
+          android:versionCode="1"
+          android:versionName="1.0">
+
+    <uses-sdk
+            android:minSdkVersion="18"
+            android:targetSdkVersion="19" />
+
+    <!-- We add an application tag here just so that we can indicate that
+         this package needs to link against the android.test library,
+         which is needed when building test cases. -->
+    <application>
+        <uses-library android:name="android.test.runner" />
+    </application>
+
+    <!--
+    Specifies the instrumentation test runner used to run the tests.
+    -->
+    <instrumentation
+            android:name="android.test.InstrumentationTestRunner"
+            android:targetPackage="com.example.android.actionbarcompat.basic"
+            android:label="Tests for com.example.android.actionbarcompat.basic" />
+
+</manifest>
\ No newline at end of file
diff --git a/ui/actionbarcompat/Basic/BasicSample/tests/src/com/example/android/actionbarcompat/basic/tests/SampleTests.java b/ui/actionbarcompat/Basic/BasicSample/tests/src/com/example/android/actionbarcompat/basic/tests/SampleTests.java
new file mode 100644
index 0000000..8c1b2be
--- /dev/null
+++ b/ui/actionbarcompat/Basic/BasicSample/tests/src/com/example/android/actionbarcompat/basic/tests/SampleTests.java
@@ -0,0 +1,79 @@
+/*
+* 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.
+*/
+
+
+
+/*
+* Copyright (C) 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.actionbarcompat.basic.tests;
+
+import com.example.android.actionbarcompat.basic.*;
+
+import android.test.ActivityInstrumentationTestCase2;
+
+/**
+* Tests for Basic sample.
+*/
+public class SampleTests extends ActivityInstrumentationTestCase2<MainActivity> {
+
+    private MainActivity mTestActivity;
+    private BasicFragment mTestFragment;
+
+    public SampleTests() {
+        super(MainActivity.class);
+    }
+
+    @Override
+    protected void setUp() throws Exception {
+        super.setUp();
+
+        // Starts the activity under test using the default Intent with:
+        // action = {@link Intent#ACTION_MAIN}
+        // flags = {@link Intent#FLAG_ACTIVITY_NEW_TASK}
+        // All other fields are null or empty.
+        mTestActivity = getActivity();
+        mTestFragment = (BasicFragment)
+            mTestActivity.getSupportFragmentManager().getFragments().get(1);
+    }
+
+    /**
+    * Test if the test fixture has been set up correctly.
+    */
+    public void testPreconditions() {
+        //Try to add a message to add context to your assertions. These messages will be shown if
+        //a tests fails and make it easy to understand why a test failed
+        assertNotNull("mTestActivity is null", mTestActivity);
+        assertNotNull("mTestFragment is null", mTestFragment);
+    }
+
+    /**
+    * Add more tests below.
+    */
+
+}
\ No newline at end of file
diff --git a/ui/actionbarcompat/Basic/README.txt b/ui/actionbarcompat/Basic/README.txt
deleted file mode 100644
index 38608df..0000000
--- a/ui/actionbarcompat/Basic/README.txt
+++ /dev/null
@@ -1,6 +0,0 @@
-Build Instructions
--------------------
-This sample uses the Gradle build system. To build this project, use the
-"gradlew build" command.
-
-To see a list of all available commands, run "gradlew tasks".
\ No newline at end of file
diff --git a/ui/actionbarcompat/Basic/big_icon.png b/ui/actionbarcompat/Basic/big_icon.png
deleted file mode 100644
index 20f585a..0000000
--- a/ui/actionbarcompat/Basic/big_icon.png
+++ /dev/null
Binary files differ
diff --git a/ui/actionbarcompat/Basic/build.gradle b/ui/actionbarcompat/Basic/build.gradle
index 036abc8..cca9ac3 100644
--- a/ui/actionbarcompat/Basic/build.gradle
+++ b/ui/actionbarcompat/Basic/build.gradle
@@ -1,8 +1,10 @@
-buildscript {
-    repositories {
-        mavenCentral()
-    }
-    dependencies {
-        classpath 'com.android.tools.build:gradle:0.5.+'
-    }
+// BEGIN_EXCLUDE
+import com.example.android.samples.build.SampleGenPlugin
+apply plugin: SampleGenPlugin
+
+samplegen {
+  pathToBuild "../../../../../build"
+  pathToSamplesCommon "../../../common"
 }
+apply from: "../../../../../build/build.gradle"
+// END_EXCLUDE
diff --git a/ui/actionbarcompat/Basic/buildSrc/build.gradle b/ui/actionbarcompat/Basic/buildSrc/build.gradle
new file mode 100644
index 0000000..e344a8c
--- /dev/null
+++ b/ui/actionbarcompat/Basic/buildSrc/build.gradle
@@ -0,0 +1,18 @@
+
+
+
+repositories {
+    mavenCentral()
+}
+dependencies {
+    compile 'org.freemarker:freemarker:2.3.20'
+}
+
+sourceSets {
+    main {
+        groovy {
+            srcDir new File(rootDir, "../../../../../../build/buildSrc/src/main/groovy")
+        }
+    }
+}
+
diff --git a/ui/actionbarcompat/Basic/gradle/wrapper/gradle-wrapper.properties b/ui/actionbarcompat/Basic/gradle/wrapper/gradle-wrapper.properties
index 055ba6f..861eddc 100644
--- a/ui/actionbarcompat/Basic/gradle/wrapper/gradle-wrapper.properties
+++ b/ui/actionbarcompat/Basic/gradle/wrapper/gradle-wrapper.properties
@@ -1,7 +1,6 @@
-#
-#Mon Jul 22 11:40:20 PDT 2013
+#Wed Apr 10 15:27:10 PDT 2013
 distributionBase=GRADLE_USER_HOME
 distributionPath=wrapper/dists
 zipStoreBase=GRADLE_USER_HOME
 zipStorePath=wrapper/dists
-distributionUrl=http\://services.gradle.org/distributions/gradle-1.6-bin.zip
+distributionUrl=http\://services.gradle.org/distributions/gradle-1.8-bin.zip
diff --git a/ui/actionbarcompat/Basic/settings.gradle b/ui/actionbarcompat/Basic/settings.gradle
index 56d763b..2f3a557 100644
--- a/ui/actionbarcompat/Basic/settings.gradle
+++ b/ui/actionbarcompat/Basic/settings.gradle
@@ -1 +1,4 @@
-include ':Basic'
+
+
+
+include 'BasicSample'
diff --git a/ui/actionbarcompat/Basic/template-params.xml b/ui/actionbarcompat/Basic/template-params.xml
new file mode 100644
index 0000000..e940d2d
--- /dev/null
+++ b/ui/actionbarcompat/Basic/template-params.xml
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ 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.
+-->
+<sample>
+    <name>Basic</name>
+    <group>UI</group>
+    <package>com.example.android.actionbarcompat.basic</package>
+
+    <dependency>com.android.support:appcompat-v7:18.0.+</dependency>
+
+    <!-- change minSdk if needed-->
+    <minSdk>7</minSdk>
+
+    <strings>
+        <intro>
+            <![CDATA[
+            This sample shows you how to use ActionBarCompat to create a basic Activity which
+            displays action items. It covers inflating items from a menu resource, as well as adding
+            an item in code. Items that are not shown as action items on the Action Bar are
+            displayed in the action bar overflow.
+            ]]>
+        </intro>
+    </strings>
+
+    <template src="base"/>
+
+</sample>
diff --git a/ui/actionbarcompat/ListPopupMenu/ListPopupMenu/build.gradle b/ui/actionbarcompat/ListPopupMenu/ListPopupMenu/build.gradle
deleted file mode 100644
index 8e76487..0000000
--- a/ui/actionbarcompat/ListPopupMenu/ListPopupMenu/build.gradle
+++ /dev/null
@@ -1,11 +0,0 @@
-apply plugin: 'android'
-
-dependencies {
-    compile "com.android.support:support-v4:18.0.+"
-    compile "com.android.support:appcompat-v7:18.0.+"
-}
-
-android {
-    compileSdkVersion 18
-    buildToolsVersion "18.0.0"
-}
diff --git a/ui/actionbarcompat/ListPopupMenu/ListPopupMenuSample/.gitignore b/ui/actionbarcompat/ListPopupMenu/ListPopupMenuSample/.gitignore
new file mode 100644
index 0000000..6eb878d
--- /dev/null
+++ b/ui/actionbarcompat/ListPopupMenu/ListPopupMenuSample/.gitignore
@@ -0,0 +1,16 @@
+# 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.
+src/template/
+src/common/
+build.gradle
diff --git a/connectivity/sync/BasicSyncAdapter/BasicSyncAdapterTests/proguard-project.txt b/ui/actionbarcompat/ListPopupMenu/ListPopupMenuSample/proguard-project.txt
similarity index 91%
copy from connectivity/sync/BasicSyncAdapter/BasicSyncAdapterTests/proguard-project.txt
copy to ui/actionbarcompat/ListPopupMenu/ListPopupMenuSample/proguard-project.txt
index f2fe155..0d8f171 100644
--- a/connectivity/sync/BasicSyncAdapter/BasicSyncAdapterTests/proguard-project.txt
+++ b/ui/actionbarcompat/ListPopupMenu/ListPopupMenuSample/proguard-project.txt
@@ -1,4 +1,4 @@
-# To enable ProGuard in your project, edit project.properties
+ To enable ProGuard in your project, edit project.properties
 # to define the proguard.config property as described in that file.
 #
 # Add project specific ProGuard rules here.
diff --git a/ui/actionbarcompat/ListPopupMenu/ListPopupMenu/src/main/AndroidManifest.xml b/ui/actionbarcompat/ListPopupMenu/ListPopupMenuSample/src/main/AndroidManifest.xml
similarity index 90%
rename from ui/actionbarcompat/ListPopupMenu/ListPopupMenu/src/main/AndroidManifest.xml
rename to ui/actionbarcompat/ListPopupMenu/ListPopupMenuSample/src/main/AndroidManifest.xml
index 7e9a861..114053e 100644
--- a/ui/actionbarcompat/ListPopupMenu/ListPopupMenu/src/main/AndroidManifest.xml
+++ b/ui/actionbarcompat/ListPopupMenu/ListPopupMenuSample/src/main/AndroidManifest.xml
@@ -1,11 +1,12 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2013 The Android Open Source Project
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ 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
+     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,
@@ -13,6 +14,7 @@
  See the License for the specific language governing permissions and
  limitations under the License.
 -->
+
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
     package="com.example.android.actionbarcompat.listpopupmenu"
     android:versionCode="1"
diff --git a/ui/actionbarcompat/ListPopupMenu/ListPopupMenu/src/main/src/com/example/android/actionbarcompat/listpopupmenu/Cheeses.java b/ui/actionbarcompat/ListPopupMenu/ListPopupMenuSample/src/main/java/com/example/android/actionbarcompat/listpopupmenu/Cheeses.java
similarity index 100%
rename from ui/actionbarcompat/ListPopupMenu/ListPopupMenu/src/main/src/com/example/android/actionbarcompat/listpopupmenu/Cheeses.java
rename to ui/actionbarcompat/ListPopupMenu/ListPopupMenuSample/src/main/java/com/example/android/actionbarcompat/listpopupmenu/Cheeses.java
diff --git a/ui/actionbarcompat/ListPopupMenu/ListPopupMenu/src/main/src/com/example/android/actionbarcompat/listpopupmenu/MainActivity.java b/ui/actionbarcompat/ListPopupMenu/ListPopupMenuSample/src/main/java/com/example/android/actionbarcompat/listpopupmenu/MainActivity.java
similarity index 90%
rename from ui/actionbarcompat/ListPopupMenu/ListPopupMenu/src/main/src/com/example/android/actionbarcompat/listpopupmenu/MainActivity.java
rename to ui/actionbarcompat/ListPopupMenu/ListPopupMenuSample/src/main/java/com/example/android/actionbarcompat/listpopupmenu/MainActivity.java
index 7fd05cc..13a77f3 100644
--- a/ui/actionbarcompat/ListPopupMenu/ListPopupMenu/src/main/src/com/example/android/actionbarcompat/listpopupmenu/MainActivity.java
+++ b/ui/actionbarcompat/ListPopupMenu/ListPopupMenuSample/src/main/java/com/example/android/actionbarcompat/listpopupmenu/MainActivity.java
@@ -17,10 +17,7 @@
 package com.example.android.actionbarcompat.listpopupmenu;
 
 import android.os.Bundle;
-import android.support.v4.view.MenuItemCompat;
 import android.support.v7.app.ActionBarActivity;
-import android.view.Menu;
-import android.view.MenuItem;
 
 /**
  * This sample shows you how to use {@link android.support.v7.widget.PopupMenu PopupMenu} from
@@ -38,7 +35,7 @@
         super.onCreate(savedInstanceState);
 
         // Set content view (which contains a PopupListFragment)
-        setContentView(R.layout.activity_main);
+        setContentView(R.layout.sample_main);
     }
 
 }
diff --git a/ui/actionbarcompat/ListPopupMenu/ListPopupMenu/src/main/src/com/example/android/actionbarcompat/listpopupmenu/PopupListFragment.java b/ui/actionbarcompat/ListPopupMenu/ListPopupMenuSample/src/main/java/com/example/android/actionbarcompat/listpopupmenu/PopupListFragment.java
similarity index 100%
rename from ui/actionbarcompat/ListPopupMenu/ListPopupMenu/src/main/src/com/example/android/actionbarcompat/listpopupmenu/PopupListFragment.java
rename to ui/actionbarcompat/ListPopupMenu/ListPopupMenuSample/src/main/java/com/example/android/actionbarcompat/listpopupmenu/PopupListFragment.java
diff --git a/ui/actionbarcompat/ListPopupMenu/ListPopupMenu/src/main/res/drawable-hdpi/ic_launcher.png b/ui/actionbarcompat/ListPopupMenu/ListPopupMenuSample/src/main/res/drawable-hdpi/ic_launcher.png
similarity index 100%
rename from ui/actionbarcompat/ListPopupMenu/ListPopupMenu/src/main/res/drawable-hdpi/ic_launcher.png
rename to ui/actionbarcompat/ListPopupMenu/ListPopupMenuSample/src/main/res/drawable-hdpi/ic_launcher.png
Binary files differ
diff --git a/ui/actionbarcompat/ListPopupMenu/ListPopupMenu/src/main/res/drawable-hdpi/ic_overflow.png b/ui/actionbarcompat/ListPopupMenu/ListPopupMenuSample/src/main/res/drawable-hdpi/ic_overflow.png
similarity index 100%
rename from ui/actionbarcompat/ListPopupMenu/ListPopupMenu/src/main/res/drawable-hdpi/ic_overflow.png
rename to ui/actionbarcompat/ListPopupMenu/ListPopupMenuSample/src/main/res/drawable-hdpi/ic_overflow.png
Binary files differ
diff --git a/ui/actionbarcompat/ListPopupMenu/ListPopupMenu/src/main/res/drawable-mdpi/ic_launcher.png b/ui/actionbarcompat/ListPopupMenu/ListPopupMenuSample/src/main/res/drawable-mdpi/ic_launcher.png
similarity index 100%
rename from ui/actionbarcompat/ListPopupMenu/ListPopupMenu/src/main/res/drawable-mdpi/ic_launcher.png
rename to ui/actionbarcompat/ListPopupMenu/ListPopupMenuSample/src/main/res/drawable-mdpi/ic_launcher.png
Binary files differ
diff --git a/ui/actionbarcompat/ListPopupMenu/ListPopupMenu/src/main/res/drawable-mdpi/ic_overflow.png b/ui/actionbarcompat/ListPopupMenu/ListPopupMenuSample/src/main/res/drawable-mdpi/ic_overflow.png
similarity index 100%
rename from ui/actionbarcompat/ListPopupMenu/ListPopupMenu/src/main/res/drawable-mdpi/ic_overflow.png
rename to ui/actionbarcompat/ListPopupMenu/ListPopupMenuSample/src/main/res/drawable-mdpi/ic_overflow.png
Binary files differ
diff --git a/ui/actionbarcompat/ListPopupMenu/ListPopupMenu/src/main/res/drawable-xhdpi/ic_launcher.png b/ui/actionbarcompat/ListPopupMenu/ListPopupMenuSample/src/main/res/drawable-xhdpi/ic_launcher.png
similarity index 100%
rename from ui/actionbarcompat/ListPopupMenu/ListPopupMenu/src/main/res/drawable-xhdpi/ic_launcher.png
rename to ui/actionbarcompat/ListPopupMenu/ListPopupMenuSample/src/main/res/drawable-xhdpi/ic_launcher.png
Binary files differ
diff --git a/ui/actionbarcompat/ListPopupMenu/ListPopupMenu/src/main/res/drawable-xhdpi/ic_overflow.png b/ui/actionbarcompat/ListPopupMenu/ListPopupMenuSample/src/main/res/drawable-xhdpi/ic_overflow.png
similarity index 100%
rename from ui/actionbarcompat/ListPopupMenu/ListPopupMenu/src/main/res/drawable-xhdpi/ic_overflow.png
rename to ui/actionbarcompat/ListPopupMenu/ListPopupMenuSample/src/main/res/drawable-xhdpi/ic_overflow.png
Binary files differ
diff --git a/ui/actionbarcompat/ListPopupMenu/ListPopupMenu/src/main/res/drawable-xxhdpi/ic_launcher.png b/ui/actionbarcompat/ListPopupMenu/ListPopupMenuSample/src/main/res/drawable-xxhdpi/ic_launcher.png
similarity index 100%
rename from ui/actionbarcompat/ListPopupMenu/ListPopupMenu/src/main/res/drawable-xxhdpi/ic_launcher.png
rename to ui/actionbarcompat/ListPopupMenu/ListPopupMenuSample/src/main/res/drawable-xxhdpi/ic_launcher.png
Binary files differ
diff --git a/ui/actionbarcompat/ListPopupMenu/ListPopupMenu/src/main/res/layout/list_item.xml b/ui/actionbarcompat/ListPopupMenu/ListPopupMenuSample/src/main/res/layout/list_item.xml
similarity index 100%
rename from ui/actionbarcompat/ListPopupMenu/ListPopupMenu/src/main/res/layout/list_item.xml
rename to ui/actionbarcompat/ListPopupMenu/ListPopupMenuSample/src/main/res/layout/list_item.xml
diff --git a/ui/actionbarcompat/ListPopupMenu/ListPopupMenu/src/main/res/layout/activity_main.xml b/ui/actionbarcompat/ListPopupMenu/ListPopupMenuSample/src/main/res/layout/sample_main.xml
similarity index 100%
rename from ui/actionbarcompat/ListPopupMenu/ListPopupMenu/src/main/res/layout/activity_main.xml
rename to ui/actionbarcompat/ListPopupMenu/ListPopupMenuSample/src/main/res/layout/sample_main.xml
diff --git a/ui/actionbarcompat/ListPopupMenu/ListPopupMenu/src/main/res/menu/popup.xml b/ui/actionbarcompat/ListPopupMenu/ListPopupMenuSample/src/main/res/menu/popup.xml
similarity index 100%
rename from ui/actionbarcompat/ListPopupMenu/ListPopupMenu/src/main/res/menu/popup.xml
rename to ui/actionbarcompat/ListPopupMenu/ListPopupMenuSample/src/main/res/menu/popup.xml
diff --git a/ui/actionbarcompat/ListPopupMenu/ListPopupMenu/src/main/res/values/strings.xml b/ui/actionbarcompat/ListPopupMenu/ListPopupMenuSample/src/main/res/values/strings.xml
similarity index 92%
rename from ui/actionbarcompat/ListPopupMenu/ListPopupMenu/src/main/res/values/strings.xml
rename to ui/actionbarcompat/ListPopupMenu/ListPopupMenuSample/src/main/res/values/strings.xml
index 36233c9..e5784a9 100644
--- a/ui/actionbarcompat/ListPopupMenu/ListPopupMenu/src/main/res/values/strings.xml
+++ b/ui/actionbarcompat/ListPopupMenu/ListPopupMenuSample/src/main/res/values/strings.xml
@@ -16,7 +16,6 @@
 -->
 <resources>
 
-    <string name="app_name">ABC List Popup Menu</string>
     <string name="menu_remove">Remove</string>
     <string name="content_open_popup">Open Popup Menu</string>
 
diff --git a/ui/actionbarcompat/ListPopupMenu/ListPopupMenuSample/tests/AndroidManifest.xml b/ui/actionbarcompat/ListPopupMenu/ListPopupMenuSample/tests/AndroidManifest.xml
new file mode 100644
index 0000000..d23ab10
--- /dev/null
+++ b/ui/actionbarcompat/ListPopupMenu/ListPopupMenuSample/tests/AndroidManifest.xml
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  Copyright (C) 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 name must be unique so suffix with "tests" so package loader doesn't ignore us -->
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+          package="com.example.android.actionbarcompat.listpopupmenu.tests"
+          android:versionCode="1"
+          android:versionName="1.0">
+
+    <uses-sdk
+            android:minSdkVersion="18"
+            android:targetSdkVersion="19" />
+
+    <!-- We add an application tag here just so that we can indicate that
+         this package needs to link against the android.test library,
+         which is needed when building test cases. -->
+    <application>
+        <uses-library android:name="android.test.runner" />
+    </application>
+
+    <!--
+    Specifies the instrumentation test runner used to run the tests.
+    -->
+    <instrumentation
+            android:name="android.test.InstrumentationTestRunner"
+            android:targetPackage="com.example.android.actionbarcompat.listpopupmenu"
+            android:label="Tests for com.example.android.actionbarcompat.listpopupmenu" />
+
+</manifest>
\ No newline at end of file
diff --git a/ui/actionbarcompat/ListPopupMenu/ListPopupMenuSample/tests/src/com/example/android/actionbarcompat/listpopupmenu/tests/SampleTests.java b/ui/actionbarcompat/ListPopupMenu/ListPopupMenuSample/tests/src/com/example/android/actionbarcompat/listpopupmenu/tests/SampleTests.java
new file mode 100644
index 0000000..c91ae2e
--- /dev/null
+++ b/ui/actionbarcompat/ListPopupMenu/ListPopupMenuSample/tests/src/com/example/android/actionbarcompat/listpopupmenu/tests/SampleTests.java
@@ -0,0 +1,79 @@
+/*
+* 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.
+*/
+
+
+
+/*
+* Copyright (C) 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.actionbarcompat.listpopupmenu.tests;
+
+import com.example.android.actionbarcompat.listpopupmenu.*;
+
+import android.test.ActivityInstrumentationTestCase2;
+
+/**
+* Tests for ListPopupMenu sample.
+*/
+public class SampleTests extends ActivityInstrumentationTestCase2<MainActivity> {
+
+    private MainActivity mTestActivity;
+    private ListPopupMenuFragment mTestFragment;
+
+    public SampleTests() {
+        super(MainActivity.class);
+    }
+
+    @Override
+    protected void setUp() throws Exception {
+        super.setUp();
+
+        // Starts the activity under test using the default Intent with:
+        // action = {@link Intent#ACTION_MAIN}
+        // flags = {@link Intent#FLAG_ACTIVITY_NEW_TASK}
+        // All other fields are null or empty.
+        mTestActivity = getActivity();
+        mTestFragment = (ListPopupMenuFragment)
+            mTestActivity.getSupportFragmentManager().getFragments().get(1);
+    }
+
+    /**
+    * Test if the test fixture has been set up correctly.
+    */
+    public void testPreconditions() {
+        //Try to add a message to add context to your assertions. These messages will be shown if
+        //a tests fails and make it easy to understand why a test failed
+        assertNotNull("mTestActivity is null", mTestActivity);
+        assertNotNull("mTestFragment is null", mTestFragment);
+    }
+
+    /**
+    * Add more tests below.
+    */
+
+}
\ No newline at end of file
diff --git a/ui/actionbarcompat/ListPopupMenu/README.txt b/ui/actionbarcompat/ListPopupMenu/README.txt
deleted file mode 100644
index 38608df..0000000
--- a/ui/actionbarcompat/ListPopupMenu/README.txt
+++ /dev/null
@@ -1,6 +0,0 @@
-Build Instructions
--------------------
-This sample uses the Gradle build system. To build this project, use the
-"gradlew build" command.
-
-To see a list of all available commands, run "gradlew tasks".
\ No newline at end of file
diff --git a/ui/actionbarcompat/ListPopupMenu/big_icon.png b/ui/actionbarcompat/ListPopupMenu/big_icon.png
deleted file mode 100644
index 6968ae8..0000000
--- a/ui/actionbarcompat/ListPopupMenu/big_icon.png
+++ /dev/null
Binary files differ
diff --git a/ui/actionbarcompat/ListPopupMenu/build.gradle b/ui/actionbarcompat/ListPopupMenu/build.gradle
index 036abc8..cca9ac3 100644
--- a/ui/actionbarcompat/ListPopupMenu/build.gradle
+++ b/ui/actionbarcompat/ListPopupMenu/build.gradle
@@ -1,8 +1,10 @@
-buildscript {
-    repositories {
-        mavenCentral()
-    }
-    dependencies {
-        classpath 'com.android.tools.build:gradle:0.5.+'
-    }
+// BEGIN_EXCLUDE
+import com.example.android.samples.build.SampleGenPlugin
+apply plugin: SampleGenPlugin
+
+samplegen {
+  pathToBuild "../../../../../build"
+  pathToSamplesCommon "../../../common"
 }
+apply from: "../../../../../build/build.gradle"
+// END_EXCLUDE
diff --git a/ui/actionbarcompat/ListPopupMenu/buildSrc/build.gradle b/ui/actionbarcompat/ListPopupMenu/buildSrc/build.gradle
new file mode 100644
index 0000000..e344a8c
--- /dev/null
+++ b/ui/actionbarcompat/ListPopupMenu/buildSrc/build.gradle
@@ -0,0 +1,18 @@
+
+
+
+repositories {
+    mavenCentral()
+}
+dependencies {
+    compile 'org.freemarker:freemarker:2.3.20'
+}
+
+sourceSets {
+    main {
+        groovy {
+            srcDir new File(rootDir, "../../../../../../build/buildSrc/src/main/groovy")
+        }
+    }
+}
+
diff --git a/ui/actionbarcompat/ListPopupMenu/gradle/wrapper/gradle-wrapper.properties b/ui/actionbarcompat/ListPopupMenu/gradle/wrapper/gradle-wrapper.properties
index 055ba6f..861eddc 100644
--- a/ui/actionbarcompat/ListPopupMenu/gradle/wrapper/gradle-wrapper.properties
+++ b/ui/actionbarcompat/ListPopupMenu/gradle/wrapper/gradle-wrapper.properties
@@ -1,7 +1,6 @@
-#
-#Mon Jul 22 11:40:20 PDT 2013
+#Wed Apr 10 15:27:10 PDT 2013
 distributionBase=GRADLE_USER_HOME
 distributionPath=wrapper/dists
 zipStoreBase=GRADLE_USER_HOME
 zipStorePath=wrapper/dists
-distributionUrl=http\://services.gradle.org/distributions/gradle-1.6-bin.zip
+distributionUrl=http\://services.gradle.org/distributions/gradle-1.8-bin.zip
diff --git a/ui/actionbarcompat/ListPopupMenu/settings.gradle b/ui/actionbarcompat/ListPopupMenu/settings.gradle
index b354d69..c0f83ff 100644
--- a/ui/actionbarcompat/ListPopupMenu/settings.gradle
+++ b/ui/actionbarcompat/ListPopupMenu/settings.gradle
@@ -1 +1,4 @@
-include ':ListPopupMenu'
+
+
+
+include 'ListPopupMenuSample'
diff --git a/ui/actionbarcompat/ListPopupMenu/template-params.xml b/ui/actionbarcompat/ListPopupMenu/template-params.xml
new file mode 100644
index 0000000..0d23829
--- /dev/null
+++ b/ui/actionbarcompat/ListPopupMenu/template-params.xml
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ 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.
+-->
+<sample>
+    <name>ListPopupMenu</name>
+    <group>UI</group>
+    <package>com.example.android.actionbarcompat.listpopupmenu</package>
+
+    <dependency>com.android.support:appcompat-v7:18.0.+</dependency>
+
+    <!-- change minSdk if needed-->
+    <minSdk>7</minSdk>
+
+    <strings>
+        <intro>
+            <![CDATA[
+            This sample shows you how to use {@link android.support.v7.widget.PopupMenu PopupMenu}
+            from ActionBarCompat to create a list, with each item having a dropdown menu.
+            ]]>
+        </intro>
+    </strings>
+
+    <template src="base"/>
+
+</sample>
diff --git a/ui/actionbarcompat/ListViewModalSelect/big_icon.png b/ui/actionbarcompat/ListViewModalSelect/big_icon.png
new file mode 100644
index 0000000..0f47486
--- /dev/null
+++ b/ui/actionbarcompat/ListViewModalSelect/big_icon.png
Binary files differ
diff --git a/ui/actionbarcompat/ListViewModalSelect/build.gradle b/ui/actionbarcompat/ListViewModalSelect/build.gradle
new file mode 100644
index 0000000..5161a84
--- /dev/null
+++ b/ui/actionbarcompat/ListViewModalSelect/build.gradle
@@ -0,0 +1,26 @@
+buildscript {
+    repositories {
+        mavenCentral()
+    }
+
+    dependencies {
+        classpath 'com.android.tools.build:gradle:0.5.+'
+    }
+}
+
+apply plugin: 'android'
+
+dependencies {
+    compile "com.android.support:support-v4:18.0.+"
+    compile "com.android.support:appcompat-v7:18.0.+"
+}
+
+android {
+    compileSdkVersion 17
+    buildToolsVersion "18.0.1"
+
+    defaultConfig {
+        minSdkVersion 7
+        targetSdkVersion 16
+    }
+}
diff --git a/ui/actionbarcompat/ShareActionProvider/ShareActionProvider/src/main/AndroidManifest.xml b/ui/actionbarcompat/ListViewModalSelect/src/main/AndroidManifest.xml
similarity index 78%
rename from ui/actionbarcompat/ShareActionProvider/ShareActionProvider/src/main/AndroidManifest.xml
rename to ui/actionbarcompat/ListViewModalSelect/src/main/AndroidManifest.xml
index 8a5af4f..1ca1c5d 100644
--- a/ui/actionbarcompat/ShareActionProvider/ShareActionProvider/src/main/AndroidManifest.xml
+++ b/ui/actionbarcompat/ListViewModalSelect/src/main/AndroidManifest.xml
@@ -14,7 +14,7 @@
      limitations under the License.
 -->
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
-    package="com.example.android.actionbarcompat.shareactionprovider"
+    package="com.example.android.actionbarcompat.listviewmodalselect"
     android:versionCode="1"
     android:versionName="1.0">
 
@@ -40,13 +40,6 @@
             </intent-filter>
         </activity>
 
-        <!-- ContentProvider which serves files from this application's asset folder -->
-        <provider
-            android:name=".content.AssetProvider"
-            android:authorities="com.example.android.actionbarcompat.shareactionprovider"
-            android:grantUriPermissions="true"
-            android:exported="true" />
-
     </application>
 
 </manifest>
\ No newline at end of file
diff --git a/ui/actionbarcompat/ListViewModalSelect/src/main/res/drawable-hdpi/ic_launcher.png b/ui/actionbarcompat/ListViewModalSelect/src/main/res/drawable-hdpi/ic_launcher.png
new file mode 100644
index 0000000..a3d6711
--- /dev/null
+++ b/ui/actionbarcompat/ListViewModalSelect/src/main/res/drawable-hdpi/ic_launcher.png
Binary files differ
diff --git a/ui/actionbarcompat/ListViewModalSelect/src/main/res/drawable-mdpi/ic_launcher.png b/ui/actionbarcompat/ListViewModalSelect/src/main/res/drawable-mdpi/ic_launcher.png
new file mode 100644
index 0000000..f488bbc
--- /dev/null
+++ b/ui/actionbarcompat/ListViewModalSelect/src/main/res/drawable-mdpi/ic_launcher.png
Binary files differ
diff --git a/ui/actionbarcompat/ListViewModalSelect/src/main/res/drawable-xhdpi/ic_launcher.png b/ui/actionbarcompat/ListViewModalSelect/src/main/res/drawable-xhdpi/ic_launcher.png
new file mode 100644
index 0000000..0651b33
--- /dev/null
+++ b/ui/actionbarcompat/ListViewModalSelect/src/main/res/drawable-xhdpi/ic_launcher.png
Binary files differ
diff --git a/ui/actionbarcompat/ListViewModalSelect/src/main/res/drawable-xxhdpi/ic_launcher.png b/ui/actionbarcompat/ListViewModalSelect/src/main/res/drawable-xxhdpi/ic_launcher.png
new file mode 100644
index 0000000..ac8a199
--- /dev/null
+++ b/ui/actionbarcompat/ListViewModalSelect/src/main/res/drawable-xxhdpi/ic_launcher.png
Binary files differ
diff --git a/ui/actionbarcompat/ListPopupMenu/ListPopupMenu/src/main/res/values/strings.xml b/ui/actionbarcompat/ListViewModalSelect/src/main/res/drawable/background_checked.xml
similarity index 73%
copy from ui/actionbarcompat/ListPopupMenu/ListPopupMenu/src/main/res/values/strings.xml
copy to ui/actionbarcompat/ListViewModalSelect/src/main/res/drawable/background_checked.xml
index 36233c9..9d8bef3 100644
--- a/ui/actionbarcompat/ListPopupMenu/ListPopupMenu/src/main/res/values/strings.xml
+++ b/ui/actionbarcompat/ListViewModalSelect/src/main/res/drawable/background_checked.xml
@@ -14,10 +14,7 @@
   See the License for the specific language governing permissions and
   limitations under the License.
 -->
-<resources>
-
-    <string name="app_name">ABC List Popup Menu</string>
-    <string name="menu_remove">Remove</string>
-    <string name="content_open_popup">Open Popup Menu</string>
-
-</resources>
\ No newline at end of file
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+    <item android:state_checked="true" android:drawable="@color/translucent_blue" />
+    <item android:drawable="@android:color/transparent" />
+</selector>
\ No newline at end of file
diff --git a/ui/actionbar/DoneBar/DoneBar/src/main/res/layout/sample_dashboard_item.xml b/ui/actionbarcompat/ListViewModalSelect/src/main/res/layout/activity_main.xml
similarity index 61%
rename from ui/actionbar/DoneBar/DoneBar/src/main/res/layout/sample_dashboard_item.xml
rename to ui/actionbarcompat/ListViewModalSelect/src/main/res/layout/activity_main.xml
index 38987ee..456cd19 100644
--- a/ui/actionbar/DoneBar/DoneBar/src/main/res/layout/sample_dashboard_item.xml
+++ b/ui/actionbarcompat/ListViewModalSelect/src/main/res/layout/activity_main.xml
@@ -1,3 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
 <!--
   Copyright 2013 The Android Open Source Project
 
@@ -12,21 +13,27 @@
   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"
-    style="@style/Widget.SampleDashboard.Item"
     android:layout_width="match_parent"
     android:layout_height="match_parent"
     android:orientation="vertical">
 
-    <TextView android:id="@android:id/text1"
-        style="@style/Widget.SampleDashboard.Item.Title"
+    <fragment
+        android:id="@+id/frag_app_list"
         android:layout_width="match_parent"
-        android:layout_height="wrap_content" />
+        android:layout_height="0dp"
+        android:layout_weight="1"
+        android:name="com.example.android.actionbarcompat.listviewmodalselect.CheeseListFragment" />
 
-    <TextView android:id="@android:id/text2"
-        style="@style/Widget.SampleDashboard.Item.Description"
+    <TextView
         android:layout_width="match_parent"
-        android:layout_height="wrap_content" />
-</LinearLayout>
+        android:layout_height="wrap_content"
+        android:text="@string/intro_message"
+        android:padding="16dp"
+        android:textAppearance="?android:textAppearanceMedium"
+        android:lineSpacingMultiplier="1.1"
+        android:background="#fb3"/>
+
+</LinearLayout>
\ No newline at end of file
diff --git a/ui/actionbarcompat/ListViewModalSelect/src/main/res/layout/simple_selectable_list_item.xml b/ui/actionbarcompat/ListViewModalSelect/src/main/res/layout/simple_selectable_list_item.xml
new file mode 100644
index 0000000..5f82f4b
--- /dev/null
+++ b/ui/actionbarcompat/ListViewModalSelect/src/main/res/layout/simple_selectable_list_item.xml
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 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.
+-->
+
+<!--
+  The layout which is used in our ListView items. We use a CheckedTextView so we can
+  simulate the activated state (added in available from API v11) with the checked
+  state, which is available from API v1.
+-->
+<CheckedTextView xmlns:android="http://schemas.android.com/apk/res/android"
+    android:id="@android:id/text1"
+    android:layout_width="match_parent"
+    android:layout_height="?android:attr/listPreferredItemHeight"
+    android:textAppearance="?android:attr/textAppearanceLarge"
+    android:gravity="center_vertical"
+    android:background="@drawable/background_checked"
+    android:paddingLeft="6dip"
+    android:paddingRight="9dip"/>
\ No newline at end of file
diff --git a/ui/actionbarcompat/ListViewModalSelect/src/main/res/menu/context_cheeses.xml b/ui/actionbarcompat/ListViewModalSelect/src/main/res/menu/context_cheeses.xml
new file mode 100644
index 0000000..e845a4d
--- /dev/null
+++ b/ui/actionbarcompat/ListViewModalSelect/src/main/res/menu/context_cheeses.xml
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  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.
+-->
+
+<!--
+  As we're using ActionBarCompat, any action item attributes come from ActionBarCompat's XML
+  namespace instead of the android namespace. Here we've added a new support namespace added to
+  the menu element allowing us to use the 'showAsAction' attribute in a backwards compatible way.
+  Any other action item attributes used should be referenced from this namespace too
+  (actionProviderClass, actionViewClass, actionLayout).
+-->
+<menu xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:support="http://schemas.android.com/apk/res-auto">
+
+    <item
+        android:id="@+id/menu_remove"
+        android:title="@string/menu_remove"
+        support:showAsAction="ifRoom"/>
+
+</menu>
\ No newline at end of file
diff --git a/content/contacts/BasicContactables/BasicContactables/src/main/res/values-v11/styles.xml b/ui/actionbarcompat/ListViewModalSelect/src/main/res/values/colors.xml
similarity index 86%
rename from content/contacts/BasicContactables/BasicContactables/src/main/res/values-v11/styles.xml
rename to ui/actionbarcompat/ListViewModalSelect/src/main/res/values/colors.xml
index 2ba754c..c4e8b3a 100644
--- a/content/contacts/BasicContactables/BasicContactables/src/main/res/values-v11/styles.xml
+++ b/ui/actionbarcompat/ListViewModalSelect/src/main/res/values/colors.xml
@@ -13,8 +13,10 @@
   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>
-    <style name="Theme.Base" parent="android:Theme.Holo.Light" />
-</resources>
+
+    <!-- A translucent holo blue -->
+    <color name="translucent_blue">#9033B5E5</color>
+
+</resources>
\ No newline at end of file
diff --git a/ui/actionbarcompat/ListPopupMenu/ListPopupMenu/src/main/res/values/strings.xml b/ui/actionbarcompat/ListViewModalSelect/src/main/res/values/strings.xml
similarity index 76%
copy from ui/actionbarcompat/ListPopupMenu/ListPopupMenu/src/main/res/values/strings.xml
copy to ui/actionbarcompat/ListViewModalSelect/src/main/res/values/strings.xml
index 36233c9..1987fab 100644
--- a/ui/actionbarcompat/ListPopupMenu/ListPopupMenu/src/main/res/values/strings.xml
+++ b/ui/actionbarcompat/ListViewModalSelect/src/main/res/values/strings.xml
@@ -16,8 +16,10 @@
 -->
 <resources>
 
-    <string name="app_name">ABC List Popup Menu</string>
+    <string name="app_name">ABC ListView Modal</string>
+    <string name="intro_message">This sample demonstrates how to provide a
+        <em>MULTIPLE_MODAL</em> ListView choice mode, compatible from API v7.
+    </string>
     <string name="menu_remove">Remove</string>
-    <string name="content_open_popup">Open Popup Menu</string>
 
 </resources>
\ No newline at end of file
diff --git a/ui/actionbarcompat/ListViewModalSelect/src/main/src/com/example/android/actionbarcompat/listviewmodalselect/CheeseListFragment.java b/ui/actionbarcompat/ListViewModalSelect/src/main/src/com/example/android/actionbarcompat/listviewmodalselect/CheeseListFragment.java
new file mode 100644
index 0000000..2ea9638
--- /dev/null
+++ b/ui/actionbarcompat/ListViewModalSelect/src/main/src/com/example/android/actionbarcompat/listviewmodalselect/CheeseListFragment.java
@@ -0,0 +1,161 @@
+/*
+ * Copyright (C) 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.actionbarcompat.listviewmodalselect;
+
+import com.example.android.common.actionbarcompat.MultiSelectionUtil;
+import com.example.android.common.dummydata.Cheeses;
+
+import android.os.Bundle;
+import android.support.v4.app.ListFragment;
+import android.support.v7.app.ActionBarActivity;
+import android.support.v7.view.ActionMode;
+import android.util.SparseBooleanArray;
+import android.view.Menu;
+import android.view.MenuItem;
+import android.widget.ArrayAdapter;
+import android.widget.BaseAdapter;
+import android.widget.ListView;
+
+import java.util.ArrayList;
+import java.util.Iterator;
+
+/**
+ * This ListFragment displays a list of cheeses, allowing the user to select multiple items
+ * in a modal selection mode. In this example, the user can remove multiple items via the displayed
+ * action mode.
+ */
+public class CheeseListFragment extends ListFragment {
+
+    // ArrayList containing the cheese name Strings
+    private ArrayList<String> mItems;
+
+    // The Controller which provides CHOICE_MODE_MULTIPLE_MODAL-like functionality
+    private MultiSelectionUtil.Controller mMultiSelectController;
+
+    @Override
+    public void onActivityCreated(Bundle savedInstanceState) {
+        super.onActivityCreated(savedInstanceState);
+
+        // The items which will be displayed
+        mItems = Cheeses.asList();
+
+        // Set the ListAdapter so that the ListView displays the items
+        setListAdapter(new ArrayAdapter<String>(getActivity(), R.layout.simple_selectable_list_item,
+                        android.R.id.text1, mItems));
+
+        // BEGIN_INCLUDE(attach_controller)
+        // Attach a MultiSelectionUtil.Controller to the ListView, giving it an instance of
+        // ModalChoiceListener (see below)
+        mMultiSelectController = MultiSelectionUtil
+                .attachMultiSelectionController(getListView(), (ActionBarActivity) getActivity(),
+                        new ModalChoiceListener());
+
+        // Allow the Controller to restore itself
+        mMultiSelectController.restoreInstanceState(savedInstanceState);
+        // END_INCLUDE(attach_controller)
+    }
+
+    @Override
+    public void onSaveInstanceState(Bundle outState) {
+        super.onSaveInstanceState(outState);
+
+        // BEGIN_INCLUDE(save_instance)
+        // Allow the Controller to save it's instance state so that any checked items are
+        // stored
+        if (mMultiSelectController != null) {
+            mMultiSelectController.saveInstanceState(outState);
+        }
+        // END_INCLUDE(save_instance)
+    }
+
+    /**
+     * The listener which is provided to MultiSelectionUtil to handle any multi-selection actions.
+     * It is responsible for providing the menu to display on the action mode, and handling any
+     * action item clicks.
+     */
+    private class ModalChoiceListener implements MultiSelectionUtil.MultiChoiceModeListener {
+
+        @Override
+        public void onItemCheckedStateChanged(ActionMode mode, int position, long id,
+                boolean checked) {
+        }
+
+        @Override
+        public boolean onCreateActionMode(ActionMode actionMode, Menu menu) {
+            // Inflate the menu resource (res/menu/context_cheeses.xml) which will be displayed
+            // in the action mode
+            actionMode.getMenuInflater().inflate(R.menu.context_cheeses, menu);
+            return true;
+        }
+
+        @Override
+        public boolean onPrepareActionMode(ActionMode actionMode, Menu menu) {
+            return true;
+        }
+
+        @Override
+        public boolean onActionItemClicked(ActionMode actionMode, MenuItem menuItem) {
+            // We switch on the menu item's id, so we know which is clicked
+            switch (menuItem.getItemId()) {
+
+                // Our item with the menu_remove ID is used to remove the item(s) from the list.
+                // Here we retrieve which positions are currently checked, then iterate through the
+                // list and remove the checked items. Once finished we notify the adapter to update
+                // the ListView contents and finish the action mode.
+                case R.id.menu_remove:
+                    // Retrieve which positions are currently checked
+                    final ListView listView = getListView();
+                    SparseBooleanArray checkedPositions = listView.getCheckedItemPositions();
+
+                    // Check to see if there are any checked items
+                    if (checkedPositions.size() == 0) {
+                        return false;
+                    }
+
+                    // Iterate through the items and remove any which are checked
+                    final Iterator<String> iterator = mItems.iterator();
+                    int i = 0;
+                    while (iterator.hasNext()) {
+                        // Call next() so that the iterator index moves
+                        iterator.next();
+
+                        // Remove the item if it is checked (and increment position)
+                        if (checkedPositions.get(i++)) {
+                            iterator.remove();
+                        }
+                    }
+
+                    // Clear the ListView's checked items
+                    listView.clearChoices();
+
+                    // Finally, notify the adapter so that it updates the ListView
+                    ((BaseAdapter) getListAdapter()).notifyDataSetChanged();
+
+                    // As we're removing all of checked items, we'll close the action mode
+                    actionMode.finish();
+
+                    // We return true to signify that we have handled the action item click
+                    return true;
+            }
+
+            return false;
+        }
+
+        @Override
+        public void onDestroyActionMode(ActionMode actionMode) {
+        }
+    }
+}
\ No newline at end of file
diff --git a/ui/actionbarcompat/ListPopupMenu/ListPopupMenu/src/main/src/com/example/android/actionbarcompat/listpopupmenu/MainActivity.java b/ui/actionbarcompat/ListViewModalSelect/src/main/src/com/example/android/actionbarcompat/listviewmodalselect/MainActivity.java
similarity index 70%
copy from ui/actionbarcompat/ListPopupMenu/ListPopupMenu/src/main/src/com/example/android/actionbarcompat/listpopupmenu/MainActivity.java
copy to ui/actionbarcompat/ListViewModalSelect/src/main/src/com/example/android/actionbarcompat/listviewmodalselect/MainActivity.java
index 7fd05cc..72afc56 100644
--- a/ui/actionbarcompat/ListPopupMenu/ListPopupMenu/src/main/src/com/example/android/actionbarcompat/listpopupmenu/MainActivity.java
+++ b/ui/actionbarcompat/ListViewModalSelect/src/main/src/com/example/android/actionbarcompat/listviewmodalselect/MainActivity.java
@@ -14,22 +14,19 @@
  * limitations under the License.
  */
 
-package com.example.android.actionbarcompat.listpopupmenu;
+package com.example.android.actionbarcompat.listviewmodalselect;
 
 import android.os.Bundle;
-import android.support.v4.view.MenuItemCompat;
 import android.support.v7.app.ActionBarActivity;
-import android.view.Menu;
-import android.view.MenuItem;
 
 /**
- * This sample shows you how to use {@link android.support.v7.widget.PopupMenu PopupMenu} from
- * ActionBarCompat to create a list, with each item having a dropdown menu.
+ * This sample shows you how a provide a ListView which allows the user to select multiple items
+ * in a modal selection mode with ActionBarCompat, backwards compatible to API v7.
  * <p>
- * The interesting part of this sample is in {@link PopupListFragment}.
- *
  * This Activity extends from {@link ActionBarActivity}, which provides all of the function
  * necessary to display a compatible Action Bar on devices running Android v2.1+.
+ * <p>
+ * The interesting part of this sample is in {@link CheeseListFragment}.
  */
 public class MainActivity extends ActionBarActivity {
 
@@ -37,8 +34,8 @@
     protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
 
-        // Set content view (which contains a PopupListFragment)
+        // Set content view (which contains a CheeseListFragment)
         setContentView(R.layout.activity_main);
     }
 
-}
+}
\ No newline at end of file
diff --git a/ui/actionbarcompat/SearchView/big_icon.png b/ui/actionbarcompat/SearchView/big_icon.png
new file mode 100644
index 0000000..e4c6ee2
--- /dev/null
+++ b/ui/actionbarcompat/SearchView/big_icon.png
Binary files differ
diff --git a/ui/actionbarcompat/SearchView/build.gradle b/ui/actionbarcompat/SearchView/build.gradle
new file mode 100644
index 0000000..5161a84
--- /dev/null
+++ b/ui/actionbarcompat/SearchView/build.gradle
@@ -0,0 +1,26 @@
+buildscript {
+    repositories {
+        mavenCentral()
+    }
+
+    dependencies {
+        classpath 'com.android.tools.build:gradle:0.5.+'
+    }
+}
+
+apply plugin: 'android'
+
+dependencies {
+    compile "com.android.support:support-v4:18.0.+"
+    compile "com.android.support:appcompat-v7:18.0.+"
+}
+
+android {
+    compileSdkVersion 17
+    buildToolsVersion "18.0.1"
+
+    defaultConfig {
+        minSdkVersion 7
+        targetSdkVersion 16
+    }
+}
diff --git a/input/multitouch/BasicMultitouch/BasicMultitouch/src/main/AndroidManifest.xml b/ui/actionbarcompat/SearchView/src/main/AndroidManifest.xml
similarity index 73%
copy from input/multitouch/BasicMultitouch/BasicMultitouch/src/main/AndroidManifest.xml
copy to ui/actionbarcompat/SearchView/src/main/AndroidManifest.xml
index d6709ef..b2554d6 100644
--- a/input/multitouch/BasicMultitouch/BasicMultitouch/src/main/AndroidManifest.xml
+++ b/ui/actionbarcompat/SearchView/src/main/AndroidManifest.xml
@@ -14,30 +14,34 @@
   See the License for the specific language governing permissions and
   limitations under the License.
 -->
-
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
-    package="com.android.example.input.multitouch.basicMultitouch"
+    package="com.example.android.actionbarcompat.searchview"
     android:versionCode="1"
-    android:versionName="1.0" >
+    android:versionName="1.0">
 
+    <!--
+        ActionBarCompat provides an Action Bar with compatible SearchView
+        from API v7 onwards
+    -->
     <uses-sdk
-        android:minSdkVersion="8"
+        android:minSdkVersion="7"
         android:targetSdkVersion="17" />
 
     <application
-        android:allowBackup="true"
         android:icon="@drawable/ic_launcher"
         android:label="@string/app_name"
-        android:theme="@style/AppTheme" >
+        android:theme="@style/AppTheme"
+        android:allowBackup="true">
+
         <activity
-            android:name="com.example.android.input.multitouch.basicMultitouch.MainActivity"
-            android:label="@string/app_name" >
+            android:name=".SearchActivity">
+            <!-- Launcher Intent filter -->
             <intent-filter>
                 <action android:name="android.intent.action.MAIN" />
-
                 <category android:name="android.intent.category.LAUNCHER" />
             </intent-filter>
         </activity>
+
     </application>
 
-</manifest>
\ No newline at end of file
+</manifest>
diff --git a/ui/actionbarcompat/SearchView/src/main/res/drawable-hdpi/ic_action_search.png b/ui/actionbarcompat/SearchView/src/main/res/drawable-hdpi/ic_action_search.png
new file mode 100644
index 0000000..9839a13
--- /dev/null
+++ b/ui/actionbarcompat/SearchView/src/main/res/drawable-hdpi/ic_action_search.png
Binary files differ
diff --git a/ui/actionbarcompat/SearchView/src/main/res/drawable-hdpi/ic_launcher.png b/ui/actionbarcompat/SearchView/src/main/res/drawable-hdpi/ic_launcher.png
new file mode 100644
index 0000000..45afb7d
--- /dev/null
+++ b/ui/actionbarcompat/SearchView/src/main/res/drawable-hdpi/ic_launcher.png
Binary files differ
diff --git a/ui/actionbarcompat/SearchView/src/main/res/drawable-mdpi/ic_action_search.png b/ui/actionbarcompat/SearchView/src/main/res/drawable-mdpi/ic_action_search.png
new file mode 100644
index 0000000..076085c
--- /dev/null
+++ b/ui/actionbarcompat/SearchView/src/main/res/drawable-mdpi/ic_action_search.png
Binary files differ
diff --git a/ui/actionbarcompat/SearchView/src/main/res/drawable-mdpi/ic_launcher.png b/ui/actionbarcompat/SearchView/src/main/res/drawable-mdpi/ic_launcher.png
new file mode 100644
index 0000000..57f2527
--- /dev/null
+++ b/ui/actionbarcompat/SearchView/src/main/res/drawable-mdpi/ic_launcher.png
Binary files differ
diff --git a/ui/actionbarcompat/SearchView/src/main/res/drawable-xhdpi/ic_action_search.png b/ui/actionbarcompat/SearchView/src/main/res/drawable-xhdpi/ic_action_search.png
new file mode 100644
index 0000000..f9272df
--- /dev/null
+++ b/ui/actionbarcompat/SearchView/src/main/res/drawable-xhdpi/ic_action_search.png
Binary files differ
diff --git a/ui/actionbarcompat/SearchView/src/main/res/drawable-xhdpi/ic_launcher.png b/ui/actionbarcompat/SearchView/src/main/res/drawable-xhdpi/ic_launcher.png
new file mode 100644
index 0000000..478f739
--- /dev/null
+++ b/ui/actionbarcompat/SearchView/src/main/res/drawable-xhdpi/ic_launcher.png
Binary files differ
diff --git a/ui/actionbarcompat/SearchView/src/main/res/drawable-xxhdpi/ic_launcher.png b/ui/actionbarcompat/SearchView/src/main/res/drawable-xxhdpi/ic_launcher.png
new file mode 100644
index 0000000..2e14315
--- /dev/null
+++ b/ui/actionbarcompat/SearchView/src/main/res/drawable-xxhdpi/ic_launcher.png
Binary files differ
diff --git a/ui/actionbarcompat/Basic/Basic/src/main/res/layout/activity_main.xml b/ui/actionbarcompat/SearchView/src/main/res/layout/activity_main.xml
similarity index 79%
copy from ui/actionbarcompat/Basic/Basic/src/main/res/layout/activity_main.xml
copy to ui/actionbarcompat/SearchView/src/main/res/layout/activity_main.xml
index 47619e0..9158690 100644
--- a/ui/actionbarcompat/Basic/Basic/src/main/res/layout/activity_main.xml
+++ b/ui/actionbarcompat/SearchView/src/main/res/layout/activity_main.xml
@@ -14,9 +14,8 @@
   See the License for the specific language governing permissions and
   limitations under the License.
 -->
-<TextView xmlns:android="http://schemas.android.com/apk/res/android"
+<fragment xmlns:android="http://schemas.android.com/apk/res/android"
+    android:id="@+id/frag_app_list"
     android:layout_width="match_parent"
     android:layout_height="match_parent"
-    android:padding="16dp"
-    android:text="@string/main_description"
-    android:gravity="center" />
\ No newline at end of file
+    android:name="com.example.android.actionbarcompat.searchview.AppListFragment" />
diff --git a/ui/actionbarcompat/SearchView/src/main/res/layout/list_item.xml b/ui/actionbarcompat/SearchView/src/main/res/layout/list_item.xml
new file mode 100644
index 0000000..893796c
--- /dev/null
+++ b/ui/actionbarcompat/SearchView/src/main/res/layout/list_item.xml
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  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.
+-->
+
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:orientation="horizontal"
+    android:layout_width="match_parent"
+    android:layout_height="?android:listPreferredItemHeight"
+    android:padding="8dp"
+    android:gravity="center_vertical">
+
+    <ImageView
+        android:id="@+id/icon"
+        android:layout_width="wrap_content"
+        android:layout_height="match_parent"
+        android:layout_marginRight="8dp"
+        android:scaleType="fitCenter"
+        android:contentDescription="@string/content_item_icon"/>
+
+    <TextView
+        android:id="@android:id/text1"
+        android:layout_width="0dp"
+        android:layout_weight="1"
+        android:layout_height="wrap_content"
+        android:textAppearance="?android:textAppearanceMedium"
+        android:maxLines="1"
+        android:ellipsize="end"/>
+
+</LinearLayout>
\ No newline at end of file
diff --git a/ui/actionbarcompat/SearchView/src/main/res/menu/main.xml b/ui/actionbarcompat/SearchView/src/main/res/menu/main.xml
new file mode 100644
index 0000000..1709e8b
--- /dev/null
+++ b/ui/actionbarcompat/SearchView/src/main/res/menu/main.xml
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  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.
+-->
+
+<!--
+  As we're using ActionBarCompat, any action item attributes come from ActionBarCompat's XML
+  namespace instead of the android namespace. Here we've added a new support namespace added to
+  the menu element allowing us to use the 'showAsAction' attribute in a backwards compatible way.
+  Any other action item attributes used should be referenced from this namespace too
+  (actionProviderClass, actionViewClass, actionLayout).
+-->
+<menu xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:support="http://schemas.android.com/apk/res-auto">
+
+    <!--
+        Here we create an item, setting the actionViewClass attribute to point to ActionBarCompat's
+        SearchView. We add the collapseActionView flag to showAsAction so that the SearchView is
+        collapsed until the user clicks on the action item.
+    -->
+    <item
+        android:id="@+id/menu_search"
+        android:title="@string/menu_search"
+        android:icon="@drawable/ic_action_search"
+        support:actionViewClass="android.support.v7.widget.SearchView"
+        support:showAsAction="ifRoom|collapseActionView"/>
+
+</menu>
\ No newline at end of file
diff --git a/ui/actionbarcompat/ListPopupMenu/ListPopupMenu/src/main/res/values/strings.xml b/ui/actionbarcompat/SearchView/src/main/res/values/strings.xml
similarity index 69%
copy from ui/actionbarcompat/ListPopupMenu/ListPopupMenu/src/main/res/values/strings.xml
copy to ui/actionbarcompat/SearchView/src/main/res/values/strings.xml
index 36233c9..4a5ab36 100644
--- a/ui/actionbarcompat/ListPopupMenu/ListPopupMenu/src/main/res/values/strings.xml
+++ b/ui/actionbarcompat/SearchView/src/main/res/values/strings.xml
@@ -16,8 +16,10 @@
 -->
 <resources>
 
-    <string name="app_name">ABC List Popup Menu</string>
-    <string name="menu_remove">Remove</string>
-    <string name="content_open_popup">Open Popup Menu</string>
+    <string name="app_name">ABC Search Demo</string>
+    <string name="applist_empty_text">Search for an app above.</string>
+    <string name="search_hint">Search applications</string>
+    <string name="menu_search">Search</string>
+    <string name="content_item_icon">Item Icon</string>
 
 </resources>
\ No newline at end of file
diff --git a/content/contacts/BasicContactables/BasicContactables/src/main/res/values-v11/styles.xml b/ui/actionbarcompat/SearchView/src/main/res/values/styles.xml
similarity index 86%
copy from content/contacts/BasicContactables/BasicContactables/src/main/res/values-v11/styles.xml
copy to ui/actionbarcompat/SearchView/src/main/res/values/styles.xml
index 2ba754c..d9a47e3 100644
--- a/content/contacts/BasicContactables/BasicContactables/src/main/res/values-v11/styles.xml
+++ b/ui/actionbarcompat/SearchView/src/main/res/values/styles.xml
@@ -13,8 +13,10 @@
   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>
-    <style name="Theme.Base" parent="android:Theme.Holo.Light" />
-</resources>
+
+    <!-- Application theme. -->
+    <style name="AppTheme" parent="Theme.AppCompat"></style>
+
+</resources>
\ No newline at end of file
diff --git a/ui/actionbarcompat/SearchView/src/main/src/com/example/android/actionbarcompat/searchview/AppListFragment.java b/ui/actionbarcompat/SearchView/src/main/src/com/example/android/actionbarcompat/searchview/AppListFragment.java
new file mode 100644
index 0000000..981eb37
--- /dev/null
+++ b/ui/actionbarcompat/SearchView/src/main/src/com/example/android/actionbarcompat/searchview/AppListFragment.java
@@ -0,0 +1,256 @@
+/*
+ * Copyright (C) 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.actionbarcompat.searchview;
+
+import android.content.pm.ApplicationInfo;
+import android.content.pm.PackageManager;
+import android.graphics.drawable.Drawable;
+import android.os.AsyncTask;
+import android.os.Bundle;
+import android.support.v4.app.ListFragment;
+import android.text.TextUtils;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.BaseAdapter;
+import android.widget.ImageView;
+import android.widget.TextView;
+
+import java.lang.ref.WeakReference;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.regex.Pattern;
+
+/**
+ * A ListFragment which displays a list of applications currently on the device, with
+ * filtering functionality.
+ */
+public class AppListFragment extends ListFragment {
+
+    // Stores the full list of applications installed on the device
+    private final List<ApplicationItem> mInstalledApps = new ArrayList<ApplicationItem>();
+
+    // Stores the result of the last query
+    private final  List<ApplicationItem> mFilteredApps = new ArrayList<ApplicationItem>();
+
+    private PackageManager mPackageManager;
+
+    @Override
+    public void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+
+        // Retrieve all of the applications installed on this device
+        mPackageManager = getActivity().getPackageManager();
+
+        // Start an AsyncTask to load the application's installed on the device
+        new LoadApplicationsTask().execute();
+    }
+
+    @Override
+    public void onViewCreated(View view, Bundle savedInstanceState) {
+        super.onViewCreated(view, savedInstanceState);
+
+        // Set the ListView's Adapter to display the filtered applications
+        setListAdapter(new AppAdapter());
+
+        // Set the text which displays when the ListView is empty
+        setEmptyText(getString(R.string.applist_empty_text));
+
+        // If the installed applications is not loaded yet, hide the list
+        if (mInstalledApps.isEmpty()) {
+            setListShown(false);
+        }
+    }
+
+    /**
+     * Set the query used to filter the installed application's names.
+     * @param query Query to filter against.
+     */
+    public void setFilterQuery(String query) {
+        // Fail-fast if the installed apps has not been loaded yet
+        if (mInstalledApps.isEmpty()) {
+            return;
+        }
+
+        // Clear current filtered apps and hide ListView
+        mFilteredApps.clear();
+
+        if (TextUtils.isEmpty(query)) {
+            // If the query is empty, show all install apps
+            mFilteredApps.addAll(mInstalledApps);
+        } else {
+            // Compile Regex Pattern which will match if the app name contains the query
+            final Pattern p = Pattern.compile(".*" + query + ".*", Pattern.CASE_INSENSITIVE);
+
+            // Iterate through the installed apps to see if their label matches the query
+            for (ApplicationItem application : mInstalledApps) {
+                // If the app label matches the query, add it to the filtered apps list
+                if (p.matcher(application.label).matches()) {
+                    mFilteredApps.add(application);
+                }
+            }
+        }
+
+        // Notify the adapter so that it updates the ListView's contents
+        AppAdapter adapter = (AppAdapter) getListAdapter();
+        adapter.notifyDataSetChanged();
+    }
+
+    private class AppAdapter extends BaseAdapter {
+        private final LayoutInflater mInflater;
+
+        AppAdapter() {
+            mInflater = LayoutInflater.from(getActivity());
+        }
+
+        @Override
+        public int getCount() {
+            return mFilteredApps.size();
+        }
+
+        @Override
+        public ApplicationItem getItem(int position) {
+            return mFilteredApps.get(position);
+        }
+
+        @Override
+        public long getItemId(int position) {
+            return position;
+        }
+
+        @Override
+        public View getView(int position, View convertView, ViewGroup parent) {
+            if (convertView == null) {
+                convertView = mInflater.inflate(R.layout.list_item, parent, false);
+            }
+
+            final ApplicationItem item = getItem(position);
+
+            // Set the application's label on the TextView
+            ((TextView) convertView.findViewById(android.R.id.text1))
+                    .setText(item.label);
+
+            // ImageView to display the application's icon
+            ImageView imageView = (ImageView) convertView.findViewById(R.id.icon);
+
+            // Check the item's drawable reference to see if it is available already
+            Drawable icon = item.drawable != null ? item.drawable.get() : null;
+
+            if (icon != null) {
+                imageView.setImageDrawable(icon);
+            } else {
+                // Start a new AsyncTask which will retrieve the application icon and display it in
+                // the ImageView
+                new ApplicationIconTask(imageView).execute(item);
+            }
+
+            return convertView;
+        }
+    }
+
+    /**
+     * Our model object for each application item. Allows us to load the label async and store the
+     * result for use later (filtering and displaying in the adapter).
+     */
+    private static class ApplicationItem {
+        final ApplicationInfo applicationInfo;
+        final CharSequence label;
+        WeakReference<Drawable> drawable;
+
+        ApplicationItem(PackageManager packageManager, ApplicationInfo applicationInfo) {
+            this.applicationInfo = applicationInfo;
+
+            // Load and store the app's label using the PackageManager
+            this.label = applicationInfo.loadLabel(packageManager);
+        }
+    }
+
+    /**
+     * Simple AsyncTask which retrieves the installed applications from the {@link PackageManager}
+     * and stores them locally.
+     */
+    private class LoadApplicationsTask extends AsyncTask<Void, Void, List<ApplicationItem>> {
+
+        @Override
+        protected List<ApplicationItem> doInBackground(Void... voids) {
+            // Load all installed applications on the device
+            List<ApplicationInfo> apps = mPackageManager.getInstalledApplications(0);
+            // Create an ArrayList used to store the result
+            ArrayList<ApplicationItem> loadedApps = new ArrayList<ApplicationItem>();
+
+            // Iterate through the results and create an ApplicationItem instance for each one,
+            // adding them to the returned List.
+            for (ApplicationInfo info : apps) {
+                loadedApps.add(new ApplicationItem(mPackageManager, info));
+            }
+
+            return loadedApps;
+        }
+
+        @Override
+        protected void onPostExecute(List<ApplicationItem> loadedApps) {
+            super.onPostExecute(loadedApps);
+
+            // Add the results to the install apps list
+            mInstalledApps.addAll(loadedApps);
+
+            // Reset the query to update the ListView
+            setFilterQuery(null);
+
+            // Make sure the list is shown
+            setListShown(true);
+        }
+    }
+
+    /**
+     * Simple AsyncTask which loads the given application's logo from the {@link PackageManager} and
+     * displays it in the given {@link ImageView}
+     */
+    private class ApplicationIconTask extends AsyncTask<ApplicationItem, Void, Drawable> {
+        private final ImageView mImageView;
+
+        ApplicationIconTask(ImageView imageView) {
+            mImageView = imageView;
+        }
+
+        @Override
+        protected Drawable doInBackground(ApplicationItem... params) {
+            Drawable icon = null;
+
+            // Check to see that we've been provided one item
+            if (params.length == 1) {
+                ApplicationItem item = params[0];
+
+                // Load the icon from the PackageManager
+                icon = item.applicationInfo.loadIcon(mPackageManager);
+
+                // Store the icon in a WeakReference so we do not cause a OutOfMemoryError.
+                item.drawable = new WeakReference<Drawable>(icon);
+            }
+
+            return icon;
+        }
+
+        @Override
+        protected void onPostExecute(Drawable icon) {
+            super.onPostExecute(icon);
+            // Display the icon in the ImageView
+            mImageView.setImageDrawable(icon);
+        }
+    }
+
+}
diff --git a/ui/actionbarcompat/SearchView/src/main/src/com/example/android/actionbarcompat/searchview/SearchActivity.java b/ui/actionbarcompat/SearchView/src/main/src/com/example/android/actionbarcompat/searchview/SearchActivity.java
new file mode 100644
index 0000000..c0cbdda
--- /dev/null
+++ b/ui/actionbarcompat/SearchView/src/main/src/com/example/android/actionbarcompat/searchview/SearchActivity.java
@@ -0,0 +1,126 @@
+/*
+ * Copyright (C) 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.actionbarcompat.searchview;
+
+import android.os.Bundle;
+import android.support.v4.view.MenuItemCompat;
+import android.support.v7.app.ActionBarActivity;
+import android.support.v7.widget.SearchView;
+import android.view.Menu;
+import android.view.MenuItem;
+
+/**
+ * This sample shows you how to use {@link SearchView} to provide a search function in a single
+ * Activity, when utilizing ActionBarCompat.
+ *
+ * This Activity extends from {@link ActionBarActivity}, which provides all of the function
+ * necessary to display a compatible Action Bar on devices running Android v2.1+.
+ */
+public class SearchActivity extends ActionBarActivity {
+
+    private AppListFragment mAppListFragment;
+
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        setContentView(R.layout.activity_main);
+
+        // Retrieve the AppListFragment from the layout
+        mAppListFragment = (AppListFragment) getSupportFragmentManager()
+                .findFragmentById(R.id.frag_app_list);
+    }
+
+    // BEGIN_INCLUDE(create_menu)
+    /**
+     * Use this method to instantiate your menu, inflating our {@code main} menu resource.
+     */
+    @Override
+    public boolean onCreateOptionsMenu(Menu menu) {
+        // Inflate our menu from the resources by using the menu inflater.
+        getMenuInflater().inflate(R.menu.main, menu);
+
+        return super.onCreateOptionsMenu(menu);
+    }
+    // END_INCLUDE(create_menu)
+
+
+    /**
+     * This is called just before the menu is about to be displayed. You should
+     * use this method to modify your menu or its items. In this example, we
+     * retrieve the SearchView.
+     */
+    @Override
+    public boolean onPrepareOptionsMenu(Menu menu) {
+        // BEGIN_INCLUDE(retrieve_view)
+        // First we retrieve the searchable menu item
+        MenuItem searchItem = menu.findItem(R.id.menu_search);
+
+        // Now we get the SearchView from the item
+        final SearchView searchView = (SearchView) MenuItemCompat.getActionView(searchItem);
+        // END_INCLUDE(retrieve_view)
+
+        // Set the hint text which displays when the SearchView is empty
+        searchView.setQueryHint(getString(R.string.search_hint));
+
+        // BEGIN_INCLUDE(action_expand_listener)
+        // We now set OnActionExpandListener on the menu item so we can reset SearchView's query
+        // when it is collapsed.
+        MenuItemCompat.setOnActionExpandListener(searchItem,
+                new MenuItemCompat.OnActionExpandListener() {
+                    @Override
+                    public boolean onMenuItemActionExpand(MenuItem menuItem) {
+                        // Return true to allow the action view to expand
+                        return true;
+                    }
+
+                    @Override
+                    public boolean onMenuItemActionCollapse(MenuItem menuItem) {
+                        // When the action view is collapsed, reset the query
+                        searchView.setQuery(null, true);
+
+                        // Return true to allow the action view to collapse
+                        return true;
+                    }
+                });
+        // END_INCLUDE(action_expand_listener)
+
+        // BEGIN_INCLUDE(query_text_listener)
+        // We now set a OnQueryTextListener so we are notified when the query has changed
+        searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
+            @Override
+            public boolean onQueryTextSubmit(String s) {
+                // Propagate query to our AppListFragment
+                mAppListFragment.setFilterQuery(s);
+
+                // Return true to signify that we have handled the query submit
+                return true;
+            }
+
+            @Override
+            public boolean onQueryTextChange(String s) {
+                // Propagate query to our AppListFragment
+                mAppListFragment.setFilterQuery(s);
+
+                // Return true to signify that we have handled the query change
+                return true;
+            }
+        });
+        // END_INCLUDE(query_text_listener)
+
+        return super.onPrepareOptionsMenu(menu);
+    }
+}
diff --git a/ui/actionbarcompat/ShareActionProvider/README.txt b/ui/actionbarcompat/ShareActionProvider/README.txt
deleted file mode 100644
index 38608df..0000000
--- a/ui/actionbarcompat/ShareActionProvider/README.txt
+++ /dev/null
@@ -1,6 +0,0 @@
-Build Instructions
--------------------
-This sample uses the Gradle build system. To build this project, use the
-"gradlew build" command.
-
-To see a list of all available commands, run "gradlew tasks".
\ No newline at end of file
diff --git a/ui/actionbarcompat/ShareActionProvider/ShareActionProvider/build.gradle b/ui/actionbarcompat/ShareActionProvider/ShareActionProvider/build.gradle
deleted file mode 100644
index 8e76487..0000000
--- a/ui/actionbarcompat/ShareActionProvider/ShareActionProvider/build.gradle
+++ /dev/null
@@ -1,11 +0,0 @@
-apply plugin: 'android'
-
-dependencies {
-    compile "com.android.support:support-v4:18.0.+"
-    compile "com.android.support:appcompat-v7:18.0.+"
-}
-
-android {
-    compileSdkVersion 18
-    buildToolsVersion "18.0.0"
-}
diff --git a/ui/actionbarcompat/ShareActionProvider/ShareActionProviderSample/.gitignore b/ui/actionbarcompat/ShareActionProvider/ShareActionProviderSample/.gitignore
new file mode 100644
index 0000000..6eb878d
--- /dev/null
+++ b/ui/actionbarcompat/ShareActionProvider/ShareActionProviderSample/.gitignore
@@ -0,0 +1,16 @@
+# 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.
+src/template/
+src/common/
+build.gradle
diff --git a/connectivity/sync/BasicSyncAdapter/BasicSyncAdapterTests/proguard-project.txt b/ui/actionbarcompat/ShareActionProvider/ShareActionProviderSample/proguard-project.txt
similarity index 91%
copy from connectivity/sync/BasicSyncAdapter/BasicSyncAdapterTests/proguard-project.txt
copy to ui/actionbarcompat/ShareActionProvider/ShareActionProviderSample/proguard-project.txt
index f2fe155..0d8f171 100644
--- a/connectivity/sync/BasicSyncAdapter/BasicSyncAdapterTests/proguard-project.txt
+++ b/ui/actionbarcompat/ShareActionProvider/ShareActionProviderSample/proguard-project.txt
@@ -1,4 +1,4 @@
-# To enable ProGuard in your project, edit project.properties
+ To enable ProGuard in your project, edit project.properties
 # to define the proguard.config property as described in that file.
 #
 # Add project specific ProGuard rules here.
diff --git a/ui/actionbarcompat/ShareActionProvider/ShareActionProvider/src/main/AndroidManifest.xml b/ui/actionbarcompat/ShareActionProvider/ShareActionProviderSample/src/main/AndroidManifest.xml
similarity index 65%
copy from ui/actionbarcompat/ShareActionProvider/ShareActionProvider/src/main/AndroidManifest.xml
copy to ui/actionbarcompat/ShareActionProvider/ShareActionProviderSample/src/main/AndroidManifest.xml
index 8a5af4f..be1ed49 100644
--- a/ui/actionbarcompat/ShareActionProvider/ShareActionProvider/src/main/AndroidManifest.xml
+++ b/ui/actionbarcompat/ShareActionProvider/ShareActionProviderSample/src/main/AndroidManifest.xml
@@ -1,18 +1,20 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2010 The Android Open Source Project
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ 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
+ 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
+     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.
+ 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.
 -->
+
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
     package="com.example.android.actionbarcompat.shareactionprovider"
     android:versionCode="1"
diff --git a/ui/actionbarcompat/ShareActionProvider/ShareActionProvider/src/main/assets/photo_1.jpg b/ui/actionbarcompat/ShareActionProvider/ShareActionProviderSample/src/main/assets/photo_1.jpg
similarity index 100%
rename from ui/actionbarcompat/ShareActionProvider/ShareActionProvider/src/main/assets/photo_1.jpg
rename to ui/actionbarcompat/ShareActionProvider/ShareActionProviderSample/src/main/assets/photo_1.jpg
Binary files differ
diff --git a/ui/actionbarcompat/ShareActionProvider/ShareActionProvider/src/main/assets/photo_2.jpg b/ui/actionbarcompat/ShareActionProvider/ShareActionProviderSample/src/main/assets/photo_2.jpg
similarity index 100%
rename from ui/actionbarcompat/ShareActionProvider/ShareActionProvider/src/main/assets/photo_2.jpg
rename to ui/actionbarcompat/ShareActionProvider/ShareActionProviderSample/src/main/assets/photo_2.jpg
Binary files differ
diff --git a/ui/actionbarcompat/ShareActionProvider/ShareActionProvider/src/main/assets/photo_3.jpg b/ui/actionbarcompat/ShareActionProvider/ShareActionProviderSample/src/main/assets/photo_3.jpg
similarity index 100%
rename from ui/actionbarcompat/ShareActionProvider/ShareActionProvider/src/main/assets/photo_3.jpg
rename to ui/actionbarcompat/ShareActionProvider/ShareActionProviderSample/src/main/assets/photo_3.jpg
Binary files differ
diff --git a/ui/actionbarcompat/ShareActionProvider/ShareActionProvider/src/main/src/com/example/android/actionbarcompat/shareactionprovider/MainActivity.java b/ui/actionbarcompat/ShareActionProvider/ShareActionProviderSample/src/main/java/com/example/android/actionbarcompat/shareactionprovider/MainActivity.java
similarity index 99%
rename from ui/actionbarcompat/ShareActionProvider/ShareActionProvider/src/main/src/com/example/android/actionbarcompat/shareactionprovider/MainActivity.java
rename to ui/actionbarcompat/ShareActionProvider/ShareActionProviderSample/src/main/java/com/example/android/actionbarcompat/shareactionprovider/MainActivity.java
index c651b39..b8cc900 100644
--- a/ui/actionbarcompat/ShareActionProvider/ShareActionProvider/src/main/src/com/example/android/actionbarcompat/shareactionprovider/MainActivity.java
+++ b/ui/actionbarcompat/ShareActionProvider/ShareActionProviderSample/src/main/java/com/example/android/actionbarcompat/shareactionprovider/MainActivity.java
@@ -16,8 +16,6 @@
 
 package com.example.android.actionbarcompat.shareactionprovider;
 
-import com.example.android.actionbarcompat.shareactionprovider.content.ContentItem;
-
 import android.content.Intent;
 import android.os.Bundle;
 import android.support.v4.view.MenuItemCompat;
@@ -33,6 +31,8 @@
 import android.widget.ImageView;
 import android.widget.TextView;
 
+import com.example.android.actionbarcompat.shareactionprovider.content.ContentItem;
+
 import java.util.ArrayList;
 
 /**
@@ -59,7 +59,7 @@
         super.onCreate(savedInstanceState);
 
         // Set content view (which contains a CheeseListFragment)
-        setContentView(R.layout.activity_main);
+        setContentView(R.layout.sample_main);
 
         // Retrieve the ViewPager from the content view
         ViewPager vp = (ViewPager) findViewById(R.id.viewpager);
diff --git a/ui/actionbarcompat/ShareActionProvider/ShareActionProvider/src/main/src/com/example/android/actionbarcompat/shareactionprovider/content/AssetProvider.java b/ui/actionbarcompat/ShareActionProvider/ShareActionProviderSample/src/main/java/com/example/android/actionbarcompat/shareactionprovider/content/AssetProvider.java
similarity index 100%
rename from ui/actionbarcompat/ShareActionProvider/ShareActionProvider/src/main/src/com/example/android/actionbarcompat/shareactionprovider/content/AssetProvider.java
rename to ui/actionbarcompat/ShareActionProvider/ShareActionProviderSample/src/main/java/com/example/android/actionbarcompat/shareactionprovider/content/AssetProvider.java
diff --git a/ui/actionbarcompat/ShareActionProvider/ShareActionProvider/src/main/src/com/example/android/actionbarcompat/shareactionprovider/content/ContentItem.java b/ui/actionbarcompat/ShareActionProvider/ShareActionProviderSample/src/main/java/com/example/android/actionbarcompat/shareactionprovider/content/ContentItem.java
similarity index 96%
rename from ui/actionbarcompat/ShareActionProvider/ShareActionProvider/src/main/src/com/example/android/actionbarcompat/shareactionprovider/content/ContentItem.java
rename to ui/actionbarcompat/ShareActionProvider/ShareActionProviderSample/src/main/java/com/example/android/actionbarcompat/shareactionprovider/content/ContentItem.java
index 09f8003..756a9e6 100644
--- a/ui/actionbarcompat/ShareActionProvider/ShareActionProvider/src/main/src/com/example/android/actionbarcompat/shareactionprovider/content/ContentItem.java
+++ b/ui/actionbarcompat/ShareActionProvider/ShareActionProviderSample/src/main/java/com/example/android/actionbarcompat/shareactionprovider/content/ContentItem.java
@@ -72,7 +72,7 @@
     }
 
     /**
-     * Returns an {@link Intent} which can be used to share this item's content with other
+     * Returns an {@link android.content.Intent} which can be used to share this item's content with other
      * applications.
      *
      * @param context - Context to be used for fetching resources if needed
diff --git a/ui/actionbarcompat/ShareActionProvider/ShareActionProvider/src/main/res/drawable-hdpi/ic_launcher.png b/ui/actionbarcompat/ShareActionProvider/ShareActionProviderSample/src/main/res/drawable-hdpi/ic_launcher.png
similarity index 100%
rename from ui/actionbarcompat/ShareActionProvider/ShareActionProvider/src/main/res/drawable-hdpi/ic_launcher.png
rename to ui/actionbarcompat/ShareActionProvider/ShareActionProviderSample/src/main/res/drawable-hdpi/ic_launcher.png
Binary files differ
diff --git a/ui/actionbarcompat/ShareActionProvider/ShareActionProvider/src/main/res/drawable-mdpi/ic_launcher.png b/ui/actionbarcompat/ShareActionProvider/ShareActionProviderSample/src/main/res/drawable-mdpi/ic_launcher.png
similarity index 100%
rename from ui/actionbarcompat/ShareActionProvider/ShareActionProvider/src/main/res/drawable-mdpi/ic_launcher.png
rename to ui/actionbarcompat/ShareActionProvider/ShareActionProviderSample/src/main/res/drawable-mdpi/ic_launcher.png
Binary files differ
diff --git a/ui/actionbarcompat/ShareActionProvider/ShareActionProvider/src/main/res/drawable-xhdpi/ic_launcher.png b/ui/actionbarcompat/ShareActionProvider/ShareActionProviderSample/src/main/res/drawable-xhdpi/ic_launcher.png
similarity index 100%
rename from ui/actionbarcompat/ShareActionProvider/ShareActionProvider/src/main/res/drawable-xhdpi/ic_launcher.png
rename to ui/actionbarcompat/ShareActionProvider/ShareActionProviderSample/src/main/res/drawable-xhdpi/ic_launcher.png
Binary files differ
diff --git a/ui/actionbarcompat/ShareActionProvider/ShareActionProvider/src/main/res/drawable-xxhdpi/ic_launcher.png b/ui/actionbarcompat/ShareActionProvider/ShareActionProviderSample/src/main/res/drawable-xxhdpi/ic_launcher.png
similarity index 100%
rename from ui/actionbarcompat/ShareActionProvider/ShareActionProvider/src/main/res/drawable-xxhdpi/ic_launcher.png
rename to ui/actionbarcompat/ShareActionProvider/ShareActionProviderSample/src/main/res/drawable-xxhdpi/ic_launcher.png
Binary files differ
diff --git a/ui/actionbarcompat/ShareActionProvider/ShareActionProvider/src/main/res/layout/item_image.xml b/ui/actionbarcompat/ShareActionProvider/ShareActionProviderSample/src/main/res/layout/item_image.xml
similarity index 100%
rename from ui/actionbarcompat/ShareActionProvider/ShareActionProvider/src/main/res/layout/item_image.xml
rename to ui/actionbarcompat/ShareActionProvider/ShareActionProviderSample/src/main/res/layout/item_image.xml
diff --git a/ui/actionbarcompat/ShareActionProvider/ShareActionProvider/src/main/res/layout/item_text.xml b/ui/actionbarcompat/ShareActionProvider/ShareActionProviderSample/src/main/res/layout/item_text.xml
similarity index 100%
rename from ui/actionbarcompat/ShareActionProvider/ShareActionProvider/src/main/res/layout/item_text.xml
rename to ui/actionbarcompat/ShareActionProvider/ShareActionProviderSample/src/main/res/layout/item_text.xml
diff --git a/ui/actionbarcompat/ShareActionProvider/ShareActionProvider/src/main/res/layout/activity_main.xml b/ui/actionbarcompat/ShareActionProvider/ShareActionProviderSample/src/main/res/layout/sample_main.xml
similarity index 100%
rename from ui/actionbarcompat/ShareActionProvider/ShareActionProvider/src/main/res/layout/activity_main.xml
rename to ui/actionbarcompat/ShareActionProvider/ShareActionProviderSample/src/main/res/layout/sample_main.xml
diff --git a/ui/actionbarcompat/ShareActionProvider/ShareActionProvider/src/main/res/menu/main_menu.xml b/ui/actionbarcompat/ShareActionProvider/ShareActionProviderSample/src/main/res/menu/main_menu.xml
similarity index 100%
rename from ui/actionbarcompat/ShareActionProvider/ShareActionProvider/src/main/res/menu/main_menu.xml
rename to ui/actionbarcompat/ShareActionProvider/ShareActionProviderSample/src/main/res/menu/main_menu.xml
diff --git a/ui/actionbarcompat/ShareActionProvider/ShareActionProvider/src/main/res/values/strings.xml b/ui/actionbarcompat/ShareActionProvider/ShareActionProviderSample/src/main/res/values/strings.xml
similarity index 82%
rename from ui/actionbarcompat/ShareActionProvider/ShareActionProvider/src/main/res/values/strings.xml
rename to ui/actionbarcompat/ShareActionProvider/ShareActionProviderSample/src/main/res/values/strings.xml
index d2b7ef8..298596f 100644
--- a/ui/actionbarcompat/ShareActionProvider/ShareActionProvider/src/main/res/values/strings.xml
+++ b/ui/actionbarcompat/ShareActionProvider/ShareActionProviderSample/src/main/res/values/strings.xml
@@ -15,15 +15,9 @@
   limitations under the License.
 -->
 <resources>
-
-    <string name="app_name">ABC ShareActionProvider</string>
-    <string name="intro_message">This sample demonstrates how to show a
-        <i>ShareActionProvider</i>, updated for the selected content.</string>
     <string name="menu_share">Share</string>
-
     <string name="quote_1">Expectation is the root of all heartache - William Shakespeare</string>
     <string name="quote_2">The true sign of intelligence is not knowledge but imagination - Albert
         Einstein</string>
     <string name="quote_3">As for me, all I know is that I know nothing - Socrates</string>
-
 </resources>
\ No newline at end of file
diff --git a/ui/actionbarcompat/ShareActionProvider/ShareActionProviderSample/tests/AndroidManifest.xml b/ui/actionbarcompat/ShareActionProvider/ShareActionProviderSample/tests/AndroidManifest.xml
new file mode 100644
index 0000000..c52949c
--- /dev/null
+++ b/ui/actionbarcompat/ShareActionProvider/ShareActionProviderSample/tests/AndroidManifest.xml
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  Copyright (C) 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 name must be unique so suffix with "tests" so package loader doesn't ignore us -->
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+          package="com.example.android.actionbarcompat.shareactionprovider.tests"
+          android:versionCode="1"
+          android:versionName="1.0">
+
+    <uses-sdk
+            android:minSdkVersion="18"
+            android:targetSdkVersion="19" />
+
+    <!-- We add an application tag here just so that we can indicate that
+         this package needs to link against the android.test library,
+         which is needed when building test cases. -->
+    <application>
+        <uses-library android:name="android.test.runner" />
+    </application>
+
+    <!--
+    Specifies the instrumentation test runner used to run the tests.
+    -->
+    <instrumentation
+            android:name="android.test.InstrumentationTestRunner"
+            android:targetPackage="com.example.android.actionbarcompat.shareactionprovider"
+            android:label="Tests for com.example.android.actionbarcompat.shareactionprovider" />
+
+</manifest>
\ No newline at end of file
diff --git a/ui/actionbarcompat/ShareActionProvider/ShareActionProviderSample/tests/src/com/example/android/actionbarcompat/shareactionprovider/tests/SampleTests.java b/ui/actionbarcompat/ShareActionProvider/ShareActionProviderSample/tests/src/com/example/android/actionbarcompat/shareactionprovider/tests/SampleTests.java
new file mode 100644
index 0000000..e655bcf
--- /dev/null
+++ b/ui/actionbarcompat/ShareActionProvider/ShareActionProviderSample/tests/src/com/example/android/actionbarcompat/shareactionprovider/tests/SampleTests.java
@@ -0,0 +1,79 @@
+/*
+* 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.
+*/
+
+
+
+/*
+* Copyright (C) 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.actionbarcompat.shareactionprovider.tests;
+
+import com.example.android.actionbarcompat.shareactionprovider.*;
+
+import android.test.ActivityInstrumentationTestCase2;
+
+/**
+* Tests for ShareActionProvider sample.
+*/
+public class SampleTests extends ActivityInstrumentationTestCase2<MainActivity> {
+
+    private MainActivity mTestActivity;
+    private ShareActionProviderFragment mTestFragment;
+
+    public SampleTests() {
+        super(MainActivity.class);
+    }
+
+    @Override
+    protected void setUp() throws Exception {
+        super.setUp();
+
+        // Starts the activity under test using the default Intent with:
+        // action = {@link Intent#ACTION_MAIN}
+        // flags = {@link Intent#FLAG_ACTIVITY_NEW_TASK}
+        // All other fields are null or empty.
+        mTestActivity = getActivity();
+        mTestFragment = (ShareActionProviderFragment)
+            mTestActivity.getSupportFragmentManager().getFragments().get(1);
+    }
+
+    /**
+    * Test if the test fixture has been set up correctly.
+    */
+    public void testPreconditions() {
+        //Try to add a message to add context to your assertions. These messages will be shown if
+        //a tests fails and make it easy to understand why a test failed
+        assertNotNull("mTestActivity is null", mTestActivity);
+        assertNotNull("mTestFragment is null", mTestFragment);
+    }
+
+    /**
+    * Add more tests below.
+    */
+
+}
\ No newline at end of file
diff --git a/ui/actionbarcompat/ShareActionProvider/big_icon.png b/ui/actionbarcompat/ShareActionProvider/big_icon.png
deleted file mode 100644
index 7da0b23..0000000
--- a/ui/actionbarcompat/ShareActionProvider/big_icon.png
+++ /dev/null
Binary files differ
diff --git a/ui/actionbarcompat/ShareActionProvider/build.gradle b/ui/actionbarcompat/ShareActionProvider/build.gradle
index 036abc8..cca9ac3 100644
--- a/ui/actionbarcompat/ShareActionProvider/build.gradle
+++ b/ui/actionbarcompat/ShareActionProvider/build.gradle
@@ -1,8 +1,10 @@
-buildscript {
-    repositories {
-        mavenCentral()
-    }
-    dependencies {
-        classpath 'com.android.tools.build:gradle:0.5.+'
-    }
+// BEGIN_EXCLUDE
+import com.example.android.samples.build.SampleGenPlugin
+apply plugin: SampleGenPlugin
+
+samplegen {
+  pathToBuild "../../../../../build"
+  pathToSamplesCommon "../../../common"
 }
+apply from: "../../../../../build/build.gradle"
+// END_EXCLUDE
diff --git a/ui/actionbarcompat/ShareActionProvider/buildSrc/build.gradle b/ui/actionbarcompat/ShareActionProvider/buildSrc/build.gradle
new file mode 100644
index 0000000..e344a8c
--- /dev/null
+++ b/ui/actionbarcompat/ShareActionProvider/buildSrc/build.gradle
@@ -0,0 +1,18 @@
+
+
+
+repositories {
+    mavenCentral()
+}
+dependencies {
+    compile 'org.freemarker:freemarker:2.3.20'
+}
+
+sourceSets {
+    main {
+        groovy {
+            srcDir new File(rootDir, "../../../../../../build/buildSrc/src/main/groovy")
+        }
+    }
+}
+
diff --git a/ui/actionbarcompat/ShareActionProvider/gradle/wrapper/gradle-wrapper.properties b/ui/actionbarcompat/ShareActionProvider/gradle/wrapper/gradle-wrapper.properties
index 055ba6f..861eddc 100644
--- a/ui/actionbarcompat/ShareActionProvider/gradle/wrapper/gradle-wrapper.properties
+++ b/ui/actionbarcompat/ShareActionProvider/gradle/wrapper/gradle-wrapper.properties
@@ -1,7 +1,6 @@
-#
-#Mon Jul 22 11:40:20 PDT 2013
+#Wed Apr 10 15:27:10 PDT 2013
 distributionBase=GRADLE_USER_HOME
 distributionPath=wrapper/dists
 zipStoreBase=GRADLE_USER_HOME
 zipStorePath=wrapper/dists
-distributionUrl=http\://services.gradle.org/distributions/gradle-1.6-bin.zip
+distributionUrl=http\://services.gradle.org/distributions/gradle-1.8-bin.zip
diff --git a/ui/actionbarcompat/ShareActionProvider/settings.gradle b/ui/actionbarcompat/ShareActionProvider/settings.gradle
index 38418ad..92cd602 100644
--- a/ui/actionbarcompat/ShareActionProvider/settings.gradle
+++ b/ui/actionbarcompat/ShareActionProvider/settings.gradle
@@ -1 +1,4 @@
-include ':ShareActionProvider'
+
+
+
+include 'ShareActionProviderSample'
diff --git a/ui/actionbarcompat/ShareActionProvider/template-params.xml b/ui/actionbarcompat/ShareActionProvider/template-params.xml
new file mode 100644
index 0000000..cf6cb88
--- /dev/null
+++ b/ui/actionbarcompat/ShareActionProvider/template-params.xml
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ 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.
+-->
+<sample>
+    <name>ShareActionProvider</name>
+    <group>UI</group>
+    <package>com.example.android.actionbarcompat.shareactionprovider</package>
+
+    <dependency>com.android.support:appcompat-v7:18.0.+</dependency>
+
+    <!-- change minSdk if needed-->
+    <minSdk>7</minSdk>
+
+    <strings>
+        <intro>
+            <![CDATA[
+            This sample shows you how a provide a context-sensitive ShareActionProvider with
+            ActionBarCompat, backwards compatible to API v7.
+            ]]>
+        </intro>
+    </strings>
+
+    <template src="base"/>
+
+</sample>
diff --git a/ui/actionbarcompat/Styled/README.txt b/ui/actionbarcompat/Styled/README.txt
deleted file mode 100644
index 38608df..0000000
--- a/ui/actionbarcompat/Styled/README.txt
+++ /dev/null
@@ -1,6 +0,0 @@
-Build Instructions
--------------------
-This sample uses the Gradle build system. To build this project, use the
-"gradlew build" command.
-
-To see a list of all available commands, run "gradlew tasks".
\ No newline at end of file
diff --git a/ui/actionbarcompat/Styled/Styled/build.gradle b/ui/actionbarcompat/Styled/Styled/build.gradle
deleted file mode 100644
index 8e76487..0000000
--- a/ui/actionbarcompat/Styled/Styled/build.gradle
+++ /dev/null
@@ -1,11 +0,0 @@
-apply plugin: 'android'
-
-dependencies {
-    compile "com.android.support:support-v4:18.0.+"
-    compile "com.android.support:appcompat-v7:18.0.+"
-}
-
-android {
-    compileSdkVersion 18
-    buildToolsVersion "18.0.0"
-}
diff --git a/ui/actionbarcompat/Styled/StyledSample/.gitignore b/ui/actionbarcompat/Styled/StyledSample/.gitignore
new file mode 100644
index 0000000..6eb878d
--- /dev/null
+++ b/ui/actionbarcompat/Styled/StyledSample/.gitignore
@@ -0,0 +1,16 @@
+# 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.
+src/template/
+src/common/
+build.gradle
diff --git a/connectivity/sync/BasicSyncAdapter/BasicSyncAdapterTests/proguard-project.txt b/ui/actionbarcompat/Styled/StyledSample/proguard-project.txt
similarity index 91%
copy from connectivity/sync/BasicSyncAdapter/BasicSyncAdapterTests/proguard-project.txt
copy to ui/actionbarcompat/Styled/StyledSample/proguard-project.txt
index f2fe155..0d8f171 100644
--- a/connectivity/sync/BasicSyncAdapter/BasicSyncAdapterTests/proguard-project.txt
+++ b/ui/actionbarcompat/Styled/StyledSample/proguard-project.txt
@@ -1,4 +1,4 @@
-# To enable ProGuard in your project, edit project.properties
+ To enable ProGuard in your project, edit project.properties
 # to define the proguard.config property as described in that file.
 #
 # Add project specific ProGuard rules here.
diff --git a/ui/actionbarcompat/Styled/Styled/src/main/AndroidManifest.xml b/ui/actionbarcompat/Styled/StyledSample/src/main/AndroidManifest.xml
similarity index 68%
rename from ui/actionbarcompat/Styled/Styled/src/main/AndroidManifest.xml
rename to ui/actionbarcompat/Styled/StyledSample/src/main/AndroidManifest.xml
index c51f234..06394c7 100644
--- a/ui/actionbarcompat/Styled/Styled/src/main/AndroidManifest.xml
+++ b/ui/actionbarcompat/Styled/StyledSample/src/main/AndroidManifest.xml
@@ -1,19 +1,20 @@
-<?xml version="1.0" encoding="utf-8"?>
+<?xml version="1.0" encoding="UTF-8"?>
 <!--
-  Copyright 2013 The Android Open Source Project
+ 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
+ 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
+     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.
+ 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.
 -->
+
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
     package="com.example.android.actionbarcompat.styled"
     android:versionCode="1"
diff --git a/ui/actionbarcompat/Styled/Styled/src/main/src/com/example/android/actionbarcompat/styled/MainActivity.java b/ui/actionbarcompat/Styled/StyledSample/src/main/java/com/example/android/actionbarcompat/styled/MainActivity.java
similarity index 98%
rename from ui/actionbarcompat/Styled/Styled/src/main/src/com/example/android/actionbarcompat/styled/MainActivity.java
rename to ui/actionbarcompat/Styled/StyledSample/src/main/java/com/example/android/actionbarcompat/styled/MainActivity.java
index c258827..19fe3a1 100644
--- a/ui/actionbarcompat/Styled/Styled/src/main/src/com/example/android/actionbarcompat/styled/MainActivity.java
+++ b/ui/actionbarcompat/Styled/StyledSample/src/main/java/com/example/android/actionbarcompat/styled/MainActivity.java
@@ -40,7 +40,7 @@
     @Override
     protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
-        setContentView(R.layout.activity_main);
+        setContentView(R.layout.sample_main);
 
         // Set the Action Bar to use tabs for navigation
         ActionBar ab = getSupportActionBar();
diff --git a/ui/actionbarcompat/Styled/Styled/src/main/res/drawable-hdpi/ab_bottom_solid_styled.9.png b/ui/actionbarcompat/Styled/StyledSample/src/main/res/drawable-hdpi/ab_bottom_solid_styled.9.png
similarity index 100%
rename from ui/actionbarcompat/Styled/Styled/src/main/res/drawable-hdpi/ab_bottom_solid_styled.9.png
rename to ui/actionbarcompat/Styled/StyledSample/src/main/res/drawable-hdpi/ab_bottom_solid_styled.9.png
Binary files differ
diff --git a/ui/actionbarcompat/Styled/Styled/src/main/res/drawable-hdpi/ab_solid_styled.9.png b/ui/actionbarcompat/Styled/StyledSample/src/main/res/drawable-hdpi/ab_solid_styled.9.png
similarity index 100%
rename from ui/actionbarcompat/Styled/Styled/src/main/res/drawable-hdpi/ab_solid_styled.9.png
rename to ui/actionbarcompat/Styled/StyledSample/src/main/res/drawable-hdpi/ab_solid_styled.9.png
Binary files differ
diff --git a/ui/actionbarcompat/Styled/Styled/src/main/res/drawable-hdpi/ab_stacked_solid_styled.9.png b/ui/actionbarcompat/Styled/StyledSample/src/main/res/drawable-hdpi/ab_stacked_solid_styled.9.png
similarity index 100%
rename from ui/actionbarcompat/Styled/Styled/src/main/res/drawable-hdpi/ab_stacked_solid_styled.9.png
rename to ui/actionbarcompat/Styled/StyledSample/src/main/res/drawable-hdpi/ab_stacked_solid_styled.9.png
Binary files differ
diff --git a/ui/actionbarcompat/Styled/Styled/src/main/res/drawable-hdpi/ic_action_location.png b/ui/actionbarcompat/Styled/StyledSample/src/main/res/drawable-hdpi/ic_action_location.png
similarity index 100%
rename from ui/actionbarcompat/Styled/Styled/src/main/res/drawable-hdpi/ic_action_location.png
rename to ui/actionbarcompat/Styled/StyledSample/src/main/res/drawable-hdpi/ic_action_location.png
Binary files differ
diff --git a/ui/actionbarcompat/Styled/Styled/src/main/res/drawable-hdpi/ic_action_refresh.png b/ui/actionbarcompat/Styled/StyledSample/src/main/res/drawable-hdpi/ic_action_refresh.png
similarity index 100%
rename from ui/actionbarcompat/Styled/Styled/src/main/res/drawable-hdpi/ic_action_refresh.png
rename to ui/actionbarcompat/Styled/StyledSample/src/main/res/drawable-hdpi/ic_action_refresh.png
Binary files differ
diff --git a/ui/actionbarcompat/Styled/Styled/src/main/res/drawable-hdpi/ic_action_settings.png b/ui/actionbarcompat/Styled/StyledSample/src/main/res/drawable-hdpi/ic_action_settings.png
similarity index 100%
rename from ui/actionbarcompat/Styled/Styled/src/main/res/drawable-hdpi/ic_action_settings.png
rename to ui/actionbarcompat/Styled/StyledSample/src/main/res/drawable-hdpi/ic_action_settings.png
Binary files differ
diff --git a/ui/actionbarcompat/Styled/Styled/src/main/res/drawable-hdpi/ic_launcher.png b/ui/actionbarcompat/Styled/StyledSample/src/main/res/drawable-hdpi/ic_launcher.png
similarity index 100%
rename from ui/actionbarcompat/Styled/Styled/src/main/res/drawable-hdpi/ic_launcher.png
rename to ui/actionbarcompat/Styled/StyledSample/src/main/res/drawable-hdpi/ic_launcher.png
Binary files differ
diff --git a/ui/actionbarcompat/Styled/Styled/src/main/res/drawable-hdpi/list_focused_styled.9.png b/ui/actionbarcompat/Styled/StyledSample/src/main/res/drawable-hdpi/list_focused_styled.9.png
similarity index 100%
rename from ui/actionbarcompat/Styled/Styled/src/main/res/drawable-hdpi/list_focused_styled.9.png
rename to ui/actionbarcompat/Styled/StyledSample/src/main/res/drawable-hdpi/list_focused_styled.9.png
Binary files differ
diff --git a/ui/actionbarcompat/Styled/Styled/src/main/res/drawable-hdpi/menu_dropdown_panel_styled.9.png b/ui/actionbarcompat/Styled/StyledSample/src/main/res/drawable-hdpi/menu_dropdown_panel_styled.9.png
similarity index 100%
rename from ui/actionbarcompat/Styled/Styled/src/main/res/drawable-hdpi/menu_dropdown_panel_styled.9.png
rename to ui/actionbarcompat/Styled/StyledSample/src/main/res/drawable-hdpi/menu_dropdown_panel_styled.9.png
Binary files differ
diff --git a/ui/actionbarcompat/Styled/Styled/src/main/res/drawable-hdpi/progress_bg_styled.9.png b/ui/actionbarcompat/Styled/StyledSample/src/main/res/drawable-hdpi/progress_bg_styled.9.png
similarity index 100%
rename from ui/actionbarcompat/Styled/Styled/src/main/res/drawable-hdpi/progress_bg_styled.9.png
rename to ui/actionbarcompat/Styled/StyledSample/src/main/res/drawable-hdpi/progress_bg_styled.9.png
Binary files differ
diff --git a/ui/actionbarcompat/Styled/Styled/src/main/res/drawable-hdpi/progress_primary_styled.9.png b/ui/actionbarcompat/Styled/StyledSample/src/main/res/drawable-hdpi/progress_primary_styled.9.png
similarity index 100%
rename from ui/actionbarcompat/Styled/Styled/src/main/res/drawable-hdpi/progress_primary_styled.9.png
rename to ui/actionbarcompat/Styled/StyledSample/src/main/res/drawable-hdpi/progress_primary_styled.9.png
Binary files differ
diff --git a/ui/actionbarcompat/Styled/Styled/src/main/res/drawable-hdpi/progress_secondary_styled.9.png b/ui/actionbarcompat/Styled/StyledSample/src/main/res/drawable-hdpi/progress_secondary_styled.9.png
similarity index 100%
rename from ui/actionbarcompat/Styled/Styled/src/main/res/drawable-hdpi/progress_secondary_styled.9.png
rename to ui/actionbarcompat/Styled/StyledSample/src/main/res/drawable-hdpi/progress_secondary_styled.9.png
Binary files differ
diff --git a/ui/actionbarcompat/Styled/Styled/src/main/res/drawable-hdpi/spinner_ab_default_styled.9.png b/ui/actionbarcompat/Styled/StyledSample/src/main/res/drawable-hdpi/spinner_ab_default_styled.9.png
similarity index 100%
rename from ui/actionbarcompat/Styled/Styled/src/main/res/drawable-hdpi/spinner_ab_default_styled.9.png
rename to ui/actionbarcompat/Styled/StyledSample/src/main/res/drawable-hdpi/spinner_ab_default_styled.9.png
Binary files differ
diff --git a/ui/actionbarcompat/Styled/Styled/src/main/res/drawable-hdpi/spinner_ab_disabled_styled.9.png b/ui/actionbarcompat/Styled/StyledSample/src/main/res/drawable-hdpi/spinner_ab_disabled_styled.9.png
similarity index 100%
rename from ui/actionbarcompat/Styled/Styled/src/main/res/drawable-hdpi/spinner_ab_disabled_styled.9.png
rename to ui/actionbarcompat/Styled/StyledSample/src/main/res/drawable-hdpi/spinner_ab_disabled_styled.9.png
Binary files differ
diff --git a/ui/actionbarcompat/Styled/Styled/src/main/res/drawable-hdpi/spinner_ab_focused_styled.9.png b/ui/actionbarcompat/Styled/StyledSample/src/main/res/drawable-hdpi/spinner_ab_focused_styled.9.png
similarity index 100%
rename from ui/actionbarcompat/Styled/Styled/src/main/res/drawable-hdpi/spinner_ab_focused_styled.9.png
rename to ui/actionbarcompat/Styled/StyledSample/src/main/res/drawable-hdpi/spinner_ab_focused_styled.9.png
Binary files differ
diff --git a/ui/actionbarcompat/Styled/Styled/src/main/res/drawable-hdpi/spinner_ab_pressed_styled.9.png b/ui/actionbarcompat/Styled/StyledSample/src/main/res/drawable-hdpi/spinner_ab_pressed_styled.9.png
similarity index 100%
rename from ui/actionbarcompat/Styled/Styled/src/main/res/drawable-hdpi/spinner_ab_pressed_styled.9.png
rename to ui/actionbarcompat/Styled/StyledSample/src/main/res/drawable-hdpi/spinner_ab_pressed_styled.9.png
Binary files differ
diff --git a/ui/actionbarcompat/Styled/Styled/src/main/res/drawable-hdpi/tab_selected_focused_styled.9.png b/ui/actionbarcompat/Styled/StyledSample/src/main/res/drawable-hdpi/tab_selected_focused_styled.9.png
similarity index 100%
rename from ui/actionbarcompat/Styled/Styled/src/main/res/drawable-hdpi/tab_selected_focused_styled.9.png
rename to ui/actionbarcompat/Styled/StyledSample/src/main/res/drawable-hdpi/tab_selected_focused_styled.9.png
Binary files differ
diff --git a/ui/actionbarcompat/Styled/Styled/src/main/res/drawable-hdpi/tab_selected_pressed_styled.9.png b/ui/actionbarcompat/Styled/StyledSample/src/main/res/drawable-hdpi/tab_selected_pressed_styled.9.png
similarity index 100%
rename from ui/actionbarcompat/Styled/Styled/src/main/res/drawable-hdpi/tab_selected_pressed_styled.9.png
rename to ui/actionbarcompat/Styled/StyledSample/src/main/res/drawable-hdpi/tab_selected_pressed_styled.9.png
Binary files differ
diff --git a/ui/actionbarcompat/Styled/Styled/src/main/res/drawable-hdpi/tab_selected_styled.9.png b/ui/actionbarcompat/Styled/StyledSample/src/main/res/drawable-hdpi/tab_selected_styled.9.png
similarity index 100%
rename from ui/actionbarcompat/Styled/Styled/src/main/res/drawable-hdpi/tab_selected_styled.9.png
rename to ui/actionbarcompat/Styled/StyledSample/src/main/res/drawable-hdpi/tab_selected_styled.9.png
Binary files differ
diff --git a/ui/actionbarcompat/Styled/Styled/src/main/res/drawable-hdpi/tab_unselected_focused_styled.9.png b/ui/actionbarcompat/Styled/StyledSample/src/main/res/drawable-hdpi/tab_unselected_focused_styled.9.png
similarity index 100%
rename from ui/actionbarcompat/Styled/Styled/src/main/res/drawable-hdpi/tab_unselected_focused_styled.9.png
rename to ui/actionbarcompat/Styled/StyledSample/src/main/res/drawable-hdpi/tab_unselected_focused_styled.9.png
Binary files differ
diff --git a/ui/actionbarcompat/Styled/Styled/src/main/res/drawable-hdpi/tab_unselected_pressed_styled.9.png b/ui/actionbarcompat/Styled/StyledSample/src/main/res/drawable-hdpi/tab_unselected_pressed_styled.9.png
similarity index 100%
rename from ui/actionbarcompat/Styled/Styled/src/main/res/drawable-hdpi/tab_unselected_pressed_styled.9.png
rename to ui/actionbarcompat/Styled/StyledSample/src/main/res/drawable-hdpi/tab_unselected_pressed_styled.9.png
Binary files differ
diff --git a/ui/actionbarcompat/Styled/Styled/src/main/res/drawable-mdpi/ab_bottom_solid_styled.9.png b/ui/actionbarcompat/Styled/StyledSample/src/main/res/drawable-mdpi/ab_bottom_solid_styled.9.png
similarity index 100%
rename from ui/actionbarcompat/Styled/Styled/src/main/res/drawable-mdpi/ab_bottom_solid_styled.9.png
rename to ui/actionbarcompat/Styled/StyledSample/src/main/res/drawable-mdpi/ab_bottom_solid_styled.9.png
Binary files differ
diff --git a/ui/actionbarcompat/Styled/Styled/src/main/res/drawable-mdpi/ab_solid_styled.9.png b/ui/actionbarcompat/Styled/StyledSample/src/main/res/drawable-mdpi/ab_solid_styled.9.png
similarity index 100%
rename from ui/actionbarcompat/Styled/Styled/src/main/res/drawable-mdpi/ab_solid_styled.9.png
rename to ui/actionbarcompat/Styled/StyledSample/src/main/res/drawable-mdpi/ab_solid_styled.9.png
Binary files differ
diff --git a/ui/actionbarcompat/Styled/Styled/src/main/res/drawable-mdpi/ab_stacked_solid_styled.9.png b/ui/actionbarcompat/Styled/StyledSample/src/main/res/drawable-mdpi/ab_stacked_solid_styled.9.png
similarity index 100%
rename from ui/actionbarcompat/Styled/Styled/src/main/res/drawable-mdpi/ab_stacked_solid_styled.9.png
rename to ui/actionbarcompat/Styled/StyledSample/src/main/res/drawable-mdpi/ab_stacked_solid_styled.9.png
Binary files differ
diff --git a/ui/actionbarcompat/Styled/Styled/src/main/res/drawable-mdpi/ic_action_location.png b/ui/actionbarcompat/Styled/StyledSample/src/main/res/drawable-mdpi/ic_action_location.png
similarity index 100%
rename from ui/actionbarcompat/Styled/Styled/src/main/res/drawable-mdpi/ic_action_location.png
rename to ui/actionbarcompat/Styled/StyledSample/src/main/res/drawable-mdpi/ic_action_location.png
Binary files differ
diff --git a/ui/actionbarcompat/Styled/Styled/src/main/res/drawable-mdpi/ic_action_refresh.png b/ui/actionbarcompat/Styled/StyledSample/src/main/res/drawable-mdpi/ic_action_refresh.png
similarity index 100%
rename from ui/actionbarcompat/Styled/Styled/src/main/res/drawable-mdpi/ic_action_refresh.png
rename to ui/actionbarcompat/Styled/StyledSample/src/main/res/drawable-mdpi/ic_action_refresh.png
Binary files differ
diff --git a/ui/actionbarcompat/Styled/Styled/src/main/res/drawable-mdpi/ic_action_settings.png b/ui/actionbarcompat/Styled/StyledSample/src/main/res/drawable-mdpi/ic_action_settings.png
similarity index 100%
rename from ui/actionbarcompat/Styled/Styled/src/main/res/drawable-mdpi/ic_action_settings.png
rename to ui/actionbarcompat/Styled/StyledSample/src/main/res/drawable-mdpi/ic_action_settings.png
Binary files differ
diff --git a/ui/actionbarcompat/Styled/Styled/src/main/res/drawable-mdpi/ic_launcher.png b/ui/actionbarcompat/Styled/StyledSample/src/main/res/drawable-mdpi/ic_launcher.png
similarity index 100%
rename from ui/actionbarcompat/Styled/Styled/src/main/res/drawable-mdpi/ic_launcher.png
rename to ui/actionbarcompat/Styled/StyledSample/src/main/res/drawable-mdpi/ic_launcher.png
Binary files differ
diff --git a/ui/actionbarcompat/Styled/Styled/src/main/res/drawable-mdpi/list_focused_styled.9.png b/ui/actionbarcompat/Styled/StyledSample/src/main/res/drawable-mdpi/list_focused_styled.9.png
similarity index 100%
rename from ui/actionbarcompat/Styled/Styled/src/main/res/drawable-mdpi/list_focused_styled.9.png
rename to ui/actionbarcompat/Styled/StyledSample/src/main/res/drawable-mdpi/list_focused_styled.9.png
Binary files differ
diff --git a/ui/actionbarcompat/Styled/Styled/src/main/res/drawable-mdpi/menu_dropdown_panel_styled.9.png b/ui/actionbarcompat/Styled/StyledSample/src/main/res/drawable-mdpi/menu_dropdown_panel_styled.9.png
similarity index 100%
rename from ui/actionbarcompat/Styled/Styled/src/main/res/drawable-mdpi/menu_dropdown_panel_styled.9.png
rename to ui/actionbarcompat/Styled/StyledSample/src/main/res/drawable-mdpi/menu_dropdown_panel_styled.9.png
Binary files differ
diff --git a/ui/actionbarcompat/Styled/Styled/src/main/res/drawable-mdpi/progress_bg_styled.9.png b/ui/actionbarcompat/Styled/StyledSample/src/main/res/drawable-mdpi/progress_bg_styled.9.png
similarity index 100%
rename from ui/actionbarcompat/Styled/Styled/src/main/res/drawable-mdpi/progress_bg_styled.9.png
rename to ui/actionbarcompat/Styled/StyledSample/src/main/res/drawable-mdpi/progress_bg_styled.9.png
Binary files differ
diff --git a/ui/actionbarcompat/Styled/Styled/src/main/res/drawable-mdpi/progress_primary_styled.9.png b/ui/actionbarcompat/Styled/StyledSample/src/main/res/drawable-mdpi/progress_primary_styled.9.png
similarity index 100%
rename from ui/actionbarcompat/Styled/Styled/src/main/res/drawable-mdpi/progress_primary_styled.9.png
rename to ui/actionbarcompat/Styled/StyledSample/src/main/res/drawable-mdpi/progress_primary_styled.9.png
Binary files differ
diff --git a/ui/actionbarcompat/Styled/Styled/src/main/res/drawable-mdpi/progress_secondary_styled.9.png b/ui/actionbarcompat/Styled/StyledSample/src/main/res/drawable-mdpi/progress_secondary_styled.9.png
similarity index 100%
rename from ui/actionbarcompat/Styled/Styled/src/main/res/drawable-mdpi/progress_secondary_styled.9.png
rename to ui/actionbarcompat/Styled/StyledSample/src/main/res/drawable-mdpi/progress_secondary_styled.9.png
Binary files differ
diff --git a/ui/actionbarcompat/Styled/Styled/src/main/res/drawable-mdpi/spinner_ab_default_styled.9.png b/ui/actionbarcompat/Styled/StyledSample/src/main/res/drawable-mdpi/spinner_ab_default_styled.9.png
similarity index 100%
rename from ui/actionbarcompat/Styled/Styled/src/main/res/drawable-mdpi/spinner_ab_default_styled.9.png
rename to ui/actionbarcompat/Styled/StyledSample/src/main/res/drawable-mdpi/spinner_ab_default_styled.9.png
Binary files differ
diff --git a/ui/actionbarcompat/Styled/Styled/src/main/res/drawable-mdpi/spinner_ab_disabled_styled.9.png b/ui/actionbarcompat/Styled/StyledSample/src/main/res/drawable-mdpi/spinner_ab_disabled_styled.9.png
similarity index 100%
rename from ui/actionbarcompat/Styled/Styled/src/main/res/drawable-mdpi/spinner_ab_disabled_styled.9.png
rename to ui/actionbarcompat/Styled/StyledSample/src/main/res/drawable-mdpi/spinner_ab_disabled_styled.9.png
Binary files differ
diff --git a/ui/actionbarcompat/Styled/Styled/src/main/res/drawable-mdpi/spinner_ab_focused_styled.9.png b/ui/actionbarcompat/Styled/StyledSample/src/main/res/drawable-mdpi/spinner_ab_focused_styled.9.png
similarity index 100%
rename from ui/actionbarcompat/Styled/Styled/src/main/res/drawable-mdpi/spinner_ab_focused_styled.9.png
rename to ui/actionbarcompat/Styled/StyledSample/src/main/res/drawable-mdpi/spinner_ab_focused_styled.9.png
Binary files differ
diff --git a/ui/actionbarcompat/Styled/Styled/src/main/res/drawable-mdpi/spinner_ab_pressed_styled.9.png b/ui/actionbarcompat/Styled/StyledSample/src/main/res/drawable-mdpi/spinner_ab_pressed_styled.9.png
similarity index 100%
rename from ui/actionbarcompat/Styled/Styled/src/main/res/drawable-mdpi/spinner_ab_pressed_styled.9.png
rename to ui/actionbarcompat/Styled/StyledSample/src/main/res/drawable-mdpi/spinner_ab_pressed_styled.9.png
Binary files differ
diff --git a/ui/actionbarcompat/Styled/Styled/src/main/res/drawable-mdpi/tab_selected_focused_styled.9.png b/ui/actionbarcompat/Styled/StyledSample/src/main/res/drawable-mdpi/tab_selected_focused_styled.9.png
similarity index 100%
rename from ui/actionbarcompat/Styled/Styled/src/main/res/drawable-mdpi/tab_selected_focused_styled.9.png
rename to ui/actionbarcompat/Styled/StyledSample/src/main/res/drawable-mdpi/tab_selected_focused_styled.9.png
Binary files differ
diff --git a/ui/actionbarcompat/Styled/Styled/src/main/res/drawable-mdpi/tab_selected_pressed_styled.9.png b/ui/actionbarcompat/Styled/StyledSample/src/main/res/drawable-mdpi/tab_selected_pressed_styled.9.png
similarity index 100%
rename from ui/actionbarcompat/Styled/Styled/src/main/res/drawable-mdpi/tab_selected_pressed_styled.9.png
rename to ui/actionbarcompat/Styled/StyledSample/src/main/res/drawable-mdpi/tab_selected_pressed_styled.9.png
Binary files differ
diff --git a/ui/actionbarcompat/Styled/Styled/src/main/res/drawable-mdpi/tab_selected_styled.9.png b/ui/actionbarcompat/Styled/StyledSample/src/main/res/drawable-mdpi/tab_selected_styled.9.png
similarity index 100%
rename from ui/actionbarcompat/Styled/Styled/src/main/res/drawable-mdpi/tab_selected_styled.9.png
rename to ui/actionbarcompat/Styled/StyledSample/src/main/res/drawable-mdpi/tab_selected_styled.9.png
Binary files differ
diff --git a/ui/actionbarcompat/Styled/Styled/src/main/res/drawable-mdpi/tab_unselected_focused_styled.9.png b/ui/actionbarcompat/Styled/StyledSample/src/main/res/drawable-mdpi/tab_unselected_focused_styled.9.png
similarity index 100%
rename from ui/actionbarcompat/Styled/Styled/src/main/res/drawable-mdpi/tab_unselected_focused_styled.9.png
rename to ui/actionbarcompat/Styled/StyledSample/src/main/res/drawable-mdpi/tab_unselected_focused_styled.9.png
Binary files differ
diff --git a/ui/actionbarcompat/Styled/Styled/src/main/res/drawable-mdpi/tab_unselected_pressed_styled.9.png b/ui/actionbarcompat/Styled/StyledSample/src/main/res/drawable-mdpi/tab_unselected_pressed_styled.9.png
similarity index 100%
rename from ui/actionbarcompat/Styled/Styled/src/main/res/drawable-mdpi/tab_unselected_pressed_styled.9.png
rename to ui/actionbarcompat/Styled/StyledSample/src/main/res/drawable-mdpi/tab_unselected_pressed_styled.9.png
Binary files differ
diff --git a/ui/actionbarcompat/Styled/Styled/src/main/res/drawable-xhdpi/ab_bottom_solid_styled.9.png b/ui/actionbarcompat/Styled/StyledSample/src/main/res/drawable-xhdpi/ab_bottom_solid_styled.9.png
similarity index 100%
rename from ui/actionbarcompat/Styled/Styled/src/main/res/drawable-xhdpi/ab_bottom_solid_styled.9.png
rename to ui/actionbarcompat/Styled/StyledSample/src/main/res/drawable-xhdpi/ab_bottom_solid_styled.9.png
Binary files differ
diff --git a/ui/actionbarcompat/Styled/Styled/src/main/res/drawable-xhdpi/ab_solid_styled.9.png b/ui/actionbarcompat/Styled/StyledSample/src/main/res/drawable-xhdpi/ab_solid_styled.9.png
similarity index 100%
rename from ui/actionbarcompat/Styled/Styled/src/main/res/drawable-xhdpi/ab_solid_styled.9.png
rename to ui/actionbarcompat/Styled/StyledSample/src/main/res/drawable-xhdpi/ab_solid_styled.9.png
Binary files differ
diff --git a/ui/actionbarcompat/Styled/Styled/src/main/res/drawable-xhdpi/ab_stacked_solid_styled.9.png b/ui/actionbarcompat/Styled/StyledSample/src/main/res/drawable-xhdpi/ab_stacked_solid_styled.9.png
similarity index 100%
rename from ui/actionbarcompat/Styled/Styled/src/main/res/drawable-xhdpi/ab_stacked_solid_styled.9.png
rename to ui/actionbarcompat/Styled/StyledSample/src/main/res/drawable-xhdpi/ab_stacked_solid_styled.9.png
Binary files differ
diff --git a/ui/actionbarcompat/Styled/Styled/src/main/res/drawable-xhdpi/ic_action_location.png b/ui/actionbarcompat/Styled/StyledSample/src/main/res/drawable-xhdpi/ic_action_location.png
similarity index 100%
rename from ui/actionbarcompat/Styled/Styled/src/main/res/drawable-xhdpi/ic_action_location.png
rename to ui/actionbarcompat/Styled/StyledSample/src/main/res/drawable-xhdpi/ic_action_location.png
Binary files differ
diff --git a/ui/actionbarcompat/Styled/Styled/src/main/res/drawable-xhdpi/ic_action_refresh.png b/ui/actionbarcompat/Styled/StyledSample/src/main/res/drawable-xhdpi/ic_action_refresh.png
similarity index 100%
rename from ui/actionbarcompat/Styled/Styled/src/main/res/drawable-xhdpi/ic_action_refresh.png
rename to ui/actionbarcompat/Styled/StyledSample/src/main/res/drawable-xhdpi/ic_action_refresh.png
Binary files differ
diff --git a/ui/actionbarcompat/Styled/Styled/src/main/res/drawable-xhdpi/ic_action_settings.png b/ui/actionbarcompat/Styled/StyledSample/src/main/res/drawable-xhdpi/ic_action_settings.png
similarity index 100%
rename from ui/actionbarcompat/Styled/Styled/src/main/res/drawable-xhdpi/ic_action_settings.png
rename to ui/actionbarcompat/Styled/StyledSample/src/main/res/drawable-xhdpi/ic_action_settings.png
Binary files differ
diff --git a/ui/actionbarcompat/Styled/Styled/src/main/res/drawable-xhdpi/ic_launcher.png b/ui/actionbarcompat/Styled/StyledSample/src/main/res/drawable-xhdpi/ic_launcher.png
similarity index 100%
rename from ui/actionbarcompat/Styled/Styled/src/main/res/drawable-xhdpi/ic_launcher.png
rename to ui/actionbarcompat/Styled/StyledSample/src/main/res/drawable-xhdpi/ic_launcher.png
Binary files differ
diff --git a/ui/actionbarcompat/Styled/Styled/src/main/res/drawable-xhdpi/list_focused_styled.9.png b/ui/actionbarcompat/Styled/StyledSample/src/main/res/drawable-xhdpi/list_focused_styled.9.png
similarity index 100%
rename from ui/actionbarcompat/Styled/Styled/src/main/res/drawable-xhdpi/list_focused_styled.9.png
rename to ui/actionbarcompat/Styled/StyledSample/src/main/res/drawable-xhdpi/list_focused_styled.9.png
Binary files differ
diff --git a/ui/actionbarcompat/Styled/Styled/src/main/res/drawable-xhdpi/menu_dropdown_panel_styled.9.png b/ui/actionbarcompat/Styled/StyledSample/src/main/res/drawable-xhdpi/menu_dropdown_panel_styled.9.png
similarity index 100%
rename from ui/actionbarcompat/Styled/Styled/src/main/res/drawable-xhdpi/menu_dropdown_panel_styled.9.png
rename to ui/actionbarcompat/Styled/StyledSample/src/main/res/drawable-xhdpi/menu_dropdown_panel_styled.9.png
Binary files differ
diff --git a/ui/actionbarcompat/Styled/Styled/src/main/res/drawable-xhdpi/progress_bg_styled.9.png b/ui/actionbarcompat/Styled/StyledSample/src/main/res/drawable-xhdpi/progress_bg_styled.9.png
similarity index 100%
rename from ui/actionbarcompat/Styled/Styled/src/main/res/drawable-xhdpi/progress_bg_styled.9.png
rename to ui/actionbarcompat/Styled/StyledSample/src/main/res/drawable-xhdpi/progress_bg_styled.9.png
Binary files differ
diff --git a/ui/actionbarcompat/Styled/Styled/src/main/res/drawable-xhdpi/progress_primary_styled.9.png b/ui/actionbarcompat/Styled/StyledSample/src/main/res/drawable-xhdpi/progress_primary_styled.9.png
similarity index 100%
rename from ui/actionbarcompat/Styled/Styled/src/main/res/drawable-xhdpi/progress_primary_styled.9.png
rename to ui/actionbarcompat/Styled/StyledSample/src/main/res/drawable-xhdpi/progress_primary_styled.9.png
Binary files differ
diff --git a/ui/actionbarcompat/Styled/Styled/src/main/res/drawable-xhdpi/progress_secondary_styled.9.png b/ui/actionbarcompat/Styled/StyledSample/src/main/res/drawable-xhdpi/progress_secondary_styled.9.png
similarity index 100%
rename from ui/actionbarcompat/Styled/Styled/src/main/res/drawable-xhdpi/progress_secondary_styled.9.png
rename to ui/actionbarcompat/Styled/StyledSample/src/main/res/drawable-xhdpi/progress_secondary_styled.9.png
Binary files differ
diff --git a/ui/actionbarcompat/Styled/Styled/src/main/res/drawable-xhdpi/spinner_ab_default_styled.9.png b/ui/actionbarcompat/Styled/StyledSample/src/main/res/drawable-xhdpi/spinner_ab_default_styled.9.png
similarity index 100%
rename from ui/actionbarcompat/Styled/Styled/src/main/res/drawable-xhdpi/spinner_ab_default_styled.9.png
rename to ui/actionbarcompat/Styled/StyledSample/src/main/res/drawable-xhdpi/spinner_ab_default_styled.9.png
Binary files differ
diff --git a/ui/actionbarcompat/Styled/Styled/src/main/res/drawable-xhdpi/spinner_ab_disabled_styled.9.png b/ui/actionbarcompat/Styled/StyledSample/src/main/res/drawable-xhdpi/spinner_ab_disabled_styled.9.png
similarity index 100%
rename from ui/actionbarcompat/Styled/Styled/src/main/res/drawable-xhdpi/spinner_ab_disabled_styled.9.png
rename to ui/actionbarcompat/Styled/StyledSample/src/main/res/drawable-xhdpi/spinner_ab_disabled_styled.9.png
Binary files differ
diff --git a/ui/actionbarcompat/Styled/Styled/src/main/res/drawable-xhdpi/spinner_ab_focused_styled.9.png b/ui/actionbarcompat/Styled/StyledSample/src/main/res/drawable-xhdpi/spinner_ab_focused_styled.9.png
similarity index 100%
rename from ui/actionbarcompat/Styled/Styled/src/main/res/drawable-xhdpi/spinner_ab_focused_styled.9.png
rename to ui/actionbarcompat/Styled/StyledSample/src/main/res/drawable-xhdpi/spinner_ab_focused_styled.9.png
Binary files differ
diff --git a/ui/actionbarcompat/Styled/Styled/src/main/res/drawable-xhdpi/spinner_ab_pressed_styled.9.png b/ui/actionbarcompat/Styled/StyledSample/src/main/res/drawable-xhdpi/spinner_ab_pressed_styled.9.png
similarity index 100%
rename from ui/actionbarcompat/Styled/Styled/src/main/res/drawable-xhdpi/spinner_ab_pressed_styled.9.png
rename to ui/actionbarcompat/Styled/StyledSample/src/main/res/drawable-xhdpi/spinner_ab_pressed_styled.9.png
Binary files differ
diff --git a/ui/actionbarcompat/Styled/Styled/src/main/res/drawable-xhdpi/tab_selected_focused_styled.9.png b/ui/actionbarcompat/Styled/StyledSample/src/main/res/drawable-xhdpi/tab_selected_focused_styled.9.png
similarity index 100%
rename from ui/actionbarcompat/Styled/Styled/src/main/res/drawable-xhdpi/tab_selected_focused_styled.9.png
rename to ui/actionbarcompat/Styled/StyledSample/src/main/res/drawable-xhdpi/tab_selected_focused_styled.9.png
Binary files differ
diff --git a/ui/actionbarcompat/Styled/Styled/src/main/res/drawable-xhdpi/tab_selected_pressed_styled.9.png b/ui/actionbarcompat/Styled/StyledSample/src/main/res/drawable-xhdpi/tab_selected_pressed_styled.9.png
similarity index 100%
rename from ui/actionbarcompat/Styled/Styled/src/main/res/drawable-xhdpi/tab_selected_pressed_styled.9.png
rename to ui/actionbarcompat/Styled/StyledSample/src/main/res/drawable-xhdpi/tab_selected_pressed_styled.9.png
Binary files differ
diff --git a/ui/actionbarcompat/Styled/Styled/src/main/res/drawable-xhdpi/tab_selected_styled.9.png b/ui/actionbarcompat/Styled/StyledSample/src/main/res/drawable-xhdpi/tab_selected_styled.9.png
similarity index 100%
rename from ui/actionbarcompat/Styled/Styled/src/main/res/drawable-xhdpi/tab_selected_styled.9.png
rename to ui/actionbarcompat/Styled/StyledSample/src/main/res/drawable-xhdpi/tab_selected_styled.9.png
Binary files differ
diff --git a/ui/actionbarcompat/Styled/Styled/src/main/res/drawable-xhdpi/tab_unselected_focused_styled.9.png b/ui/actionbarcompat/Styled/StyledSample/src/main/res/drawable-xhdpi/tab_unselected_focused_styled.9.png
similarity index 100%
rename from ui/actionbarcompat/Styled/Styled/src/main/res/drawable-xhdpi/tab_unselected_focused_styled.9.png
rename to ui/actionbarcompat/Styled/StyledSample/src/main/res/drawable-xhdpi/tab_unselected_focused_styled.9.png
Binary files differ
diff --git a/ui/actionbarcompat/Styled/Styled/src/main/res/drawable-xhdpi/tab_unselected_pressed_styled.9.png b/ui/actionbarcompat/Styled/StyledSample/src/main/res/drawable-xhdpi/tab_unselected_pressed_styled.9.png
similarity index 100%
rename from ui/actionbarcompat/Styled/Styled/src/main/res/drawable-xhdpi/tab_unselected_pressed_styled.9.png
rename to ui/actionbarcompat/Styled/StyledSample/src/main/res/drawable-xhdpi/tab_unselected_pressed_styled.9.png
Binary files differ
diff --git a/ui/actionbarcompat/Styled/Styled/src/main/res/drawable-xxhdpi/ic_launcher.png b/ui/actionbarcompat/Styled/StyledSample/src/main/res/drawable-xxhdpi/ic_launcher.png
similarity index 100%
rename from ui/actionbarcompat/Styled/Styled/src/main/res/drawable-xxhdpi/ic_launcher.png
rename to ui/actionbarcompat/Styled/StyledSample/src/main/res/drawable-xxhdpi/ic_launcher.png
Binary files differ
diff --git a/ui/actionbarcompat/Styled/Styled/src/main/res/drawable/pressed_background.xml b/ui/actionbarcompat/Styled/StyledSample/src/main/res/drawable/pressed_background.xml
similarity index 100%
rename from ui/actionbarcompat/Styled/Styled/src/main/res/drawable/pressed_background.xml
rename to ui/actionbarcompat/Styled/StyledSample/src/main/res/drawable/pressed_background.xml
diff --git a/ui/actionbarcompat/Styled/Styled/src/main/res/drawable/progress_horizontal.xml b/ui/actionbarcompat/Styled/StyledSample/src/main/res/drawable/progress_horizontal.xml
similarity index 100%
rename from ui/actionbarcompat/Styled/Styled/src/main/res/drawable/progress_horizontal.xml
rename to ui/actionbarcompat/Styled/StyledSample/src/main/res/drawable/progress_horizontal.xml
diff --git a/ui/actionbarcompat/Styled/Styled/src/main/res/drawable/selectable_background.xml b/ui/actionbarcompat/Styled/StyledSample/src/main/res/drawable/selectable_background.xml
similarity index 100%
rename from ui/actionbarcompat/Styled/Styled/src/main/res/drawable/selectable_background.xml
rename to ui/actionbarcompat/Styled/StyledSample/src/main/res/drawable/selectable_background.xml
diff --git a/ui/actionbarcompat/Styled/Styled/src/main/res/drawable/spinner_background_ab.xml b/ui/actionbarcompat/Styled/StyledSample/src/main/res/drawable/spinner_background_ab.xml
similarity index 100%
rename from ui/actionbarcompat/Styled/Styled/src/main/res/drawable/spinner_background_ab.xml
rename to ui/actionbarcompat/Styled/StyledSample/src/main/res/drawable/spinner_background_ab.xml
diff --git a/ui/actionbarcompat/Styled/Styled/src/main/res/drawable/tab_indicator_ab.xml b/ui/actionbarcompat/Styled/StyledSample/src/main/res/drawable/tab_indicator_ab.xml
similarity index 100%
rename from ui/actionbarcompat/Styled/Styled/src/main/res/drawable/tab_indicator_ab.xml
rename to ui/actionbarcompat/Styled/StyledSample/src/main/res/drawable/tab_indicator_ab.xml
diff --git a/ui/actionbarcompat/Styled/Styled/src/main/res/layout/activity_main.xml b/ui/actionbarcompat/Styled/StyledSample/src/main/res/layout/sample_main.xml
similarity index 100%
rename from ui/actionbarcompat/Styled/Styled/src/main/res/layout/activity_main.xml
rename to ui/actionbarcompat/Styled/StyledSample/src/main/res/layout/sample_main.xml
diff --git a/ui/actionbarcompat/Styled/Styled/src/main/res/menu/main.xml b/ui/actionbarcompat/Styled/StyledSample/src/main/res/menu/main.xml
similarity index 100%
rename from ui/actionbarcompat/Styled/Styled/src/main/res/menu/main.xml
rename to ui/actionbarcompat/Styled/StyledSample/src/main/res/menu/main.xml
diff --git a/ui/actionbarcompat/Styled/Styled/src/main/res/values-v14/styles.xml b/ui/actionbarcompat/Styled/StyledSample/src/main/res/values-v14/styles.xml
similarity index 100%
rename from ui/actionbarcompat/Styled/Styled/src/main/res/values-v14/styles.xml
rename to ui/actionbarcompat/Styled/StyledSample/src/main/res/values-v14/styles.xml
diff --git a/ui/actionbarcompat/Styled/Styled/src/main/res/values/colors.xml b/ui/actionbarcompat/Styled/StyledSample/src/main/res/values/colors.xml
similarity index 100%
rename from ui/actionbarcompat/Styled/Styled/src/main/res/values/colors.xml
rename to ui/actionbarcompat/Styled/StyledSample/src/main/res/values/colors.xml
diff --git a/ui/actionbarcompat/Styled/Styled/src/main/res/values/strings.xml b/ui/actionbarcompat/Styled/StyledSample/src/main/res/values/strings.xml
similarity index 94%
rename from ui/actionbarcompat/Styled/Styled/src/main/res/values/strings.xml
rename to ui/actionbarcompat/Styled/StyledSample/src/main/res/values/strings.xml
index 63c7bb1..de698d4 100644
--- a/ui/actionbarcompat/Styled/Styled/src/main/res/values/strings.xml
+++ b/ui/actionbarcompat/Styled/StyledSample/src/main/res/values/strings.xml
@@ -16,7 +16,6 @@
 -->
 <resources>
 
-    <string name="app_name">ABC Styled</string>
     <string name="menu_refresh">Refresh</string>
     <string name="menu_location">Location</string>
     <string name="menu_settings">Settings</string>
diff --git a/ui/actionbarcompat/Styled/Styled/src/main/res/values/styles.xml b/ui/actionbarcompat/Styled/StyledSample/src/main/res/values/styles.xml
similarity index 100%
rename from ui/actionbarcompat/Styled/Styled/src/main/res/values/styles.xml
rename to ui/actionbarcompat/Styled/StyledSample/src/main/res/values/styles.xml
diff --git a/ui/actionbarcompat/Styled/StyledSample/tests/AndroidManifest.xml b/ui/actionbarcompat/Styled/StyledSample/tests/AndroidManifest.xml
new file mode 100644
index 0000000..a990607
--- /dev/null
+++ b/ui/actionbarcompat/Styled/StyledSample/tests/AndroidManifest.xml
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  Copyright (C) 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 name must be unique so suffix with "tests" so package loader doesn't ignore us -->
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+          package="com.example.android.actionbarcompat.styled.tests"
+          android:versionCode="1"
+          android:versionName="1.0">
+
+    <uses-sdk
+            android:minSdkVersion="18"
+            android:targetSdkVersion="19" />
+
+    <!-- We add an application tag here just so that we can indicate that
+         this package needs to link against the android.test library,
+         which is needed when building test cases. -->
+    <application>
+        <uses-library android:name="android.test.runner" />
+    </application>
+
+    <!--
+    Specifies the instrumentation test runner used to run the tests.
+    -->
+    <instrumentation
+            android:name="android.test.InstrumentationTestRunner"
+            android:targetPackage="com.example.android.actionbarcompat.styled"
+            android:label="Tests for com.example.android.actionbarcompat.styled" />
+
+</manifest>
\ No newline at end of file
diff --git a/ui/actionbarcompat/Styled/StyledSample/tests/src/com/example/android/actionbarcompat/styled/tests/SampleTests.java b/ui/actionbarcompat/Styled/StyledSample/tests/src/com/example/android/actionbarcompat/styled/tests/SampleTests.java
new file mode 100644
index 0000000..204afdc
--- /dev/null
+++ b/ui/actionbarcompat/Styled/StyledSample/tests/src/com/example/android/actionbarcompat/styled/tests/SampleTests.java
@@ -0,0 +1,79 @@
+/*
+* 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.
+*/
+
+
+
+/*
+* Copyright (C) 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.actionbarcompat.styled.tests;
+
+import com.example.android.actionbarcompat.styled.*;
+
+import android.test.ActivityInstrumentationTestCase2;
+
+/**
+* Tests for Styled sample.
+*/
+public class SampleTests extends ActivityInstrumentationTestCase2<MainActivity> {
+
+    private MainActivity mTestActivity;
+    private StyledFragment mTestFragment;
+
+    public SampleTests() {
+        super(MainActivity.class);
+    }
+
+    @Override
+    protected void setUp() throws Exception {
+        super.setUp();
+
+        // Starts the activity under test using the default Intent with:
+        // action = {@link Intent#ACTION_MAIN}
+        // flags = {@link Intent#FLAG_ACTIVITY_NEW_TASK}
+        // All other fields are null or empty.
+        mTestActivity = getActivity();
+        mTestFragment = (StyledFragment)
+            mTestActivity.getSupportFragmentManager().getFragments().get(1);
+    }
+
+    /**
+    * Test if the test fixture has been set up correctly.
+    */
+    public void testPreconditions() {
+        //Try to add a message to add context to your assertions. These messages will be shown if
+        //a tests fails and make it easy to understand why a test failed
+        assertNotNull("mTestActivity is null", mTestActivity);
+        assertNotNull("mTestFragment is null", mTestFragment);
+    }
+
+    /**
+    * Add more tests below.
+    */
+
+}
\ No newline at end of file
diff --git a/ui/actionbarcompat/Styled/build.gradle b/ui/actionbarcompat/Styled/build.gradle
index 036abc8..cca9ac3 100644
--- a/ui/actionbarcompat/Styled/build.gradle
+++ b/ui/actionbarcompat/Styled/build.gradle
@@ -1,8 +1,10 @@
-buildscript {
-    repositories {
-        mavenCentral()
-    }
-    dependencies {
-        classpath 'com.android.tools.build:gradle:0.5.+'
-    }
+// BEGIN_EXCLUDE
+import com.example.android.samples.build.SampleGenPlugin
+apply plugin: SampleGenPlugin
+
+samplegen {
+  pathToBuild "../../../../../build"
+  pathToSamplesCommon "../../../common"
 }
+apply from: "../../../../../build/build.gradle"
+// END_EXCLUDE
diff --git a/ui/actionbarcompat/Styled/buildSrc/build.gradle b/ui/actionbarcompat/Styled/buildSrc/build.gradle
new file mode 100644
index 0000000..e344a8c
--- /dev/null
+++ b/ui/actionbarcompat/Styled/buildSrc/build.gradle
@@ -0,0 +1,18 @@
+
+
+
+repositories {
+    mavenCentral()
+}
+dependencies {
+    compile 'org.freemarker:freemarker:2.3.20'
+}
+
+sourceSets {
+    main {
+        groovy {
+            srcDir new File(rootDir, "../../../../../../build/buildSrc/src/main/groovy")
+        }
+    }
+}
+
diff --git a/ui/actionbarcompat/Styled/gradle/wrapper/gradle-wrapper.properties b/ui/actionbarcompat/Styled/gradle/wrapper/gradle-wrapper.properties
index 055ba6f..861eddc 100644
--- a/ui/actionbarcompat/Styled/gradle/wrapper/gradle-wrapper.properties
+++ b/ui/actionbarcompat/Styled/gradle/wrapper/gradle-wrapper.properties
@@ -1,7 +1,6 @@
-#
-#Mon Jul 22 11:40:20 PDT 2013
+#Wed Apr 10 15:27:10 PDT 2013
 distributionBase=GRADLE_USER_HOME
 distributionPath=wrapper/dists
 zipStoreBase=GRADLE_USER_HOME
 zipStorePath=wrapper/dists
-distributionUrl=http\://services.gradle.org/distributions/gradle-1.6-bin.zip
+distributionUrl=http\://services.gradle.org/distributions/gradle-1.8-bin.zip
diff --git a/ui/actionbarcompat/Styled/settings.gradle b/ui/actionbarcompat/Styled/settings.gradle
index a515427..3e32af4 100644
--- a/ui/actionbarcompat/Styled/settings.gradle
+++ b/ui/actionbarcompat/Styled/settings.gradle
@@ -1 +1,4 @@
-include ':Styled'
+
+
+
+include 'StyledSample'
diff --git a/ui/actionbarcompat/Styled/template-params.xml b/ui/actionbarcompat/Styled/template-params.xml
new file mode 100644
index 0000000..33577f0
--- /dev/null
+++ b/ui/actionbarcompat/Styled/template-params.xml
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ 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.
+-->
+<sample>
+    <name>Styled</name>
+    <group>UI</group>
+    <package>com.example.android.actionbarcompat.styled</package>
+
+    <dependency>com.android.support:appcompat-v7:18.0.+</dependency>
+
+    <!-- change minSdk if needed-->
+    <minSdk>7</minSdk>
+
+
+    <strings>
+        <intro>
+            <![CDATA[
+            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 show three tabs.
+            ]]>
+        </intro>
+    </strings>
+
+    <template src="base"/>
+
+</sample>
diff --git a/ui/holo/BorderlessButtons/BorderlessButtons/build.gradle b/ui/holo/BorderlessButtons/BorderlessButtons/build.gradle
deleted file mode 100644
index 945e1f5..0000000
--- a/ui/holo/BorderlessButtons/BorderlessButtons/build.gradle
+++ /dev/null
@@ -1,6 +0,0 @@
-apply plugin: 'android'
-
-android {
-    compileSdkVersion 18
-    buildToolsVersion "18.0.0"
-}
diff --git a/ui/holo/BorderlessButtons/BorderlessButtons/src/main/big_icon.png b/ui/holo/BorderlessButtons/BorderlessButtons/src/main/big_icon.png
deleted file mode 100644
index a8b32a9..0000000
--- a/ui/holo/BorderlessButtons/BorderlessButtons/src/main/big_icon.png
+++ /dev/null
Binary files differ
diff --git a/ui/holo/BorderlessButtons/BorderlessButtons/src/main/res/drawable-hdpi/ic_launcher.png b/ui/holo/BorderlessButtons/BorderlessButtons/src/main/res/drawable-hdpi/ic_launcher.png
deleted file mode 100644
index 05591fd..0000000
--- a/ui/holo/BorderlessButtons/BorderlessButtons/src/main/res/drawable-hdpi/ic_launcher.png
+++ /dev/null
Binary files differ
diff --git a/ui/holo/BorderlessButtons/BorderlessButtons/src/main/res/drawable-mdpi/ic_launcher.png b/ui/holo/BorderlessButtons/BorderlessButtons/src/main/res/drawable-mdpi/ic_launcher.png
deleted file mode 100644
index ed81674..0000000
--- a/ui/holo/BorderlessButtons/BorderlessButtons/src/main/res/drawable-mdpi/ic_launcher.png
+++ /dev/null
Binary files differ
diff --git a/ui/holo/BorderlessButtons/BorderlessButtons/src/main/res/drawable-xhdpi/ic_launcher.png b/ui/holo/BorderlessButtons/BorderlessButtons/src/main/res/drawable-xhdpi/ic_launcher.png
deleted file mode 100644
index 0fef898..0000000
--- a/ui/holo/BorderlessButtons/BorderlessButtons/src/main/res/drawable-xhdpi/ic_launcher.png
+++ /dev/null
Binary files differ
diff --git a/ui/holo/BorderlessButtons/BorderlessButtons/src/main/res/drawable-xxhdpi/ic_launcher.png b/ui/holo/BorderlessButtons/BorderlessButtons/src/main/res/drawable-xxhdpi/ic_launcher.png
deleted file mode 100644
index cccd5d4..0000000
--- a/ui/holo/BorderlessButtons/BorderlessButtons/src/main/res/drawable-xxhdpi/ic_launcher.png
+++ /dev/null
Binary files differ
diff --git a/ui/holo/BorderlessButtons/BorderlessButtons/src/main/res/values/dimens.xml b/ui/holo/BorderlessButtons/BorderlessButtons/src/main/res/values/dimens.xml
deleted file mode 100644
index be5bb40..0000000
--- a/ui/holo/BorderlessButtons/BorderlessButtons/src/main/res/values/dimens.xml
+++ /dev/null
@@ -1,33 +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.
-  -->
-
-<resources>
-
-    <!-- Define standard dimensions to comply with Holo-style grids and rhythm. -->
-
-    <dimen name="margin_tiny">4dp</dimen>
-    <dimen name="margin_small">8dp</dimen>
-    <dimen name="margin_medium">16dp</dimen>
-    <dimen name="margin_large">32dp</dimen>
-    <dimen name="margin_huge">64dp</dimen>
-
-    <dimen name="standard_touch_target_size">48dp</dimen>
-
-    <!-- Meta-dimension that switches on screen size -->
-
-    <dimen name="page_margin">@dimen/margin_medium</dimen>
-
-</resources>
diff --git a/ui/holo/BorderlessButtons/BorderlessButtons/src/main/res/values/styles.xml b/ui/holo/BorderlessButtons/BorderlessButtons/src/main/res/values/styles.xml
deleted file mode 100644
index 469816c..0000000
--- a/ui/holo/BorderlessButtons/BorderlessButtons/src/main/res/values/styles.xml
+++ /dev/null
@@ -1,39 +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.
-  -->
-
-<resources>
-
-    <!-- Activity themes -->
-
-    <style name="Theme.Base" parent="android:Theme.Holo.Light" />
-
-    <style name="Theme.Sample" parent="Theme.Base" />
-
-    <!-- Widget styling -->
-
-    <style name="Widget" />
-
-    <style name="Widget.DescriptionBar">
-        <item name="android:background">#fb3</item>
-        <item name="android:paddingTop">@dimen/margin_medium</item>
-        <item name="android:paddingBottom">@dimen/margin_medium</item>
-        <item name="android:paddingLeft">@dimen/page_margin</item>
-        <item name="android:paddingRight">@dimen/page_margin</item>
-        <item name="android:textAppearance">?android:textAppearanceMedium</item>
-        <item name="android:lineSpacingMultiplier">1.1</item>
-    </style>
-
-</resources>
diff --git a/ui/holo/BorderlessButtons/BorderlessButtonsSample/.gitignore b/ui/holo/BorderlessButtons/BorderlessButtonsSample/.gitignore
new file mode 100644
index 0000000..6eb878d
--- /dev/null
+++ b/ui/holo/BorderlessButtons/BorderlessButtonsSample/.gitignore
@@ -0,0 +1,16 @@
+# 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.
+src/template/
+src/common/
+build.gradle
diff --git a/connectivity/sync/BasicSyncAdapter/BasicSyncAdapterTests/proguard-project.txt b/ui/holo/BorderlessButtons/BorderlessButtonsSample/proguard-project.txt
similarity index 91%
copy from connectivity/sync/BasicSyncAdapter/BasicSyncAdapterTests/proguard-project.txt
copy to ui/holo/BorderlessButtons/BorderlessButtonsSample/proguard-project.txt
index f2fe155..0d8f171 100644
--- a/connectivity/sync/BasicSyncAdapter/BasicSyncAdapterTests/proguard-project.txt
+++ b/ui/holo/BorderlessButtons/BorderlessButtonsSample/proguard-project.txt
@@ -1,4 +1,4 @@
-# To enable ProGuard in your project, edit project.properties
+ To enable ProGuard in your project, edit project.properties
 # to define the proguard.config property as described in that file.
 #
 # Add project specific ProGuard rules here.
diff --git a/ui/holo/BorderlessButtons/BorderlessButtons/src/main/AndroidManifest.xml b/ui/holo/BorderlessButtons/BorderlessButtonsSample/src/main/AndroidManifest.xml
old mode 100755
new mode 100644
similarity index 100%
rename from ui/holo/BorderlessButtons/BorderlessButtons/src/main/AndroidManifest.xml
rename to ui/holo/BorderlessButtons/BorderlessButtonsSample/src/main/AndroidManifest.xml
diff --git a/ui/holo/BorderlessButtons/BorderlessButtons/src/main/java/com/example/android/borderlessbuttons/MainActivity.java b/ui/holo/BorderlessButtons/BorderlessButtonsSample/src/main/java/com/example/android/borderlessbuttons/MainActivity.java
similarity index 98%
rename from ui/holo/BorderlessButtons/BorderlessButtons/src/main/java/com/example/android/borderlessbuttons/MainActivity.java
rename to ui/holo/BorderlessButtons/BorderlessButtonsSample/src/main/java/com/example/android/borderlessbuttons/MainActivity.java
index 9f27997..04105f4 100755
--- a/ui/holo/BorderlessButtons/BorderlessButtons/src/main/java/com/example/android/borderlessbuttons/MainActivity.java
+++ b/ui/holo/BorderlessButtons/BorderlessButtonsSample/src/main/java/com/example/android/borderlessbuttons/MainActivity.java
@@ -41,7 +41,7 @@
 
     protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
-        setContentView(R.layout.activity_main);
+        setContentView(R.layout.sample_main);
 
         setListAdapter(mListAdapter);
 
diff --git a/ui/holo/BorderlessButtons/BorderlessButtons/src/main/res/drawable-hdpi/ic_action_delete.png b/ui/holo/BorderlessButtons/BorderlessButtonsSample/src/main/res/drawable-hdpi/ic_action_delete.png
similarity index 100%
rename from ui/holo/BorderlessButtons/BorderlessButtons/src/main/res/drawable-hdpi/ic_action_delete.png
rename to ui/holo/BorderlessButtons/BorderlessButtonsSample/src/main/res/drawable-hdpi/ic_action_delete.png
Binary files differ
diff --git a/ui/actionbar/DoneBar/DoneBar/src/main/res/drawable-hdpi/ic_launcher.png b/ui/holo/BorderlessButtons/BorderlessButtonsSample/src/main/res/drawable-hdpi/ic_launcher.png
similarity index 100%
copy from ui/actionbar/DoneBar/DoneBar/src/main/res/drawable-hdpi/ic_launcher.png
copy to ui/holo/BorderlessButtons/BorderlessButtonsSample/src/main/res/drawable-hdpi/ic_launcher.png
Binary files differ
diff --git a/ui/holo/BorderlessButtons/BorderlessButtons/src/main/res/drawable-mdpi/ic_action_delete.png b/ui/holo/BorderlessButtons/BorderlessButtonsSample/src/main/res/drawable-mdpi/ic_action_delete.png
similarity index 100%
rename from ui/holo/BorderlessButtons/BorderlessButtons/src/main/res/drawable-mdpi/ic_action_delete.png
rename to ui/holo/BorderlessButtons/BorderlessButtonsSample/src/main/res/drawable-mdpi/ic_action_delete.png
Binary files differ
diff --git a/ui/actionbar/DoneBar/DoneBar/src/main/res/drawable-mdpi/ic_launcher.png b/ui/holo/BorderlessButtons/BorderlessButtonsSample/src/main/res/drawable-mdpi/ic_launcher.png
similarity index 100%
copy from ui/actionbar/DoneBar/DoneBar/src/main/res/drawable-mdpi/ic_launcher.png
copy to ui/holo/BorderlessButtons/BorderlessButtonsSample/src/main/res/drawable-mdpi/ic_launcher.png
Binary files differ
diff --git a/ui/holo/BorderlessButtons/BorderlessButtons/src/main/res/drawable-xhdpi/ic_action_delete.png b/ui/holo/BorderlessButtons/BorderlessButtonsSample/src/main/res/drawable-xhdpi/ic_action_delete.png
similarity index 100%
rename from ui/holo/BorderlessButtons/BorderlessButtons/src/main/res/drawable-xhdpi/ic_action_delete.png
rename to ui/holo/BorderlessButtons/BorderlessButtonsSample/src/main/res/drawable-xhdpi/ic_action_delete.png
Binary files differ
diff --git a/ui/actionbar/DoneBar/DoneBar/src/main/res/drawable-xhdpi/ic_launcher.png b/ui/holo/BorderlessButtons/BorderlessButtonsSample/src/main/res/drawable-xhdpi/ic_launcher.png
similarity index 100%
copy from ui/actionbar/DoneBar/DoneBar/src/main/res/drawable-xhdpi/ic_launcher.png
copy to ui/holo/BorderlessButtons/BorderlessButtonsSample/src/main/res/drawable-xhdpi/ic_launcher.png
Binary files differ
diff --git a/ui/actionbar/DoneBar/DoneBar/src/main/res/drawable-xxhdpi/ic_launcher.png b/ui/holo/BorderlessButtons/BorderlessButtonsSample/src/main/res/drawable-xxhdpi/ic_launcher.png
similarity index 100%
copy from ui/actionbar/DoneBar/DoneBar/src/main/res/drawable-xxhdpi/ic_launcher.png
copy to ui/holo/BorderlessButtons/BorderlessButtonsSample/src/main/res/drawable-xxhdpi/ic_launcher.png
Binary files differ
diff --git a/ui/holo/BorderlessButtons/BorderlessButtons/src/main/res/layout/list_item.xml b/ui/holo/BorderlessButtons/BorderlessButtonsSample/src/main/res/layout/list_item.xml
similarity index 100%
rename from ui/holo/BorderlessButtons/BorderlessButtons/src/main/res/layout/list_item.xml
rename to ui/holo/BorderlessButtons/BorderlessButtonsSample/src/main/res/layout/list_item.xml
diff --git a/ui/holo/BorderlessButtons/BorderlessButtons/src/main/res/layout/activity_main.xml b/ui/holo/BorderlessButtons/BorderlessButtonsSample/src/main/res/layout/sample_main.xml
similarity index 100%
rename from ui/holo/BorderlessButtons/BorderlessButtons/src/main/res/layout/activity_main.xml
rename to ui/holo/BorderlessButtons/BorderlessButtonsSample/src/main/res/layout/sample_main.xml
diff --git a/ui/holo/BorderlessButtons/BorderlessButtons/src/main/res/menu/main.xml b/ui/holo/BorderlessButtons/BorderlessButtonsSample/src/main/res/menu/main.xml
similarity index 100%
rename from ui/holo/BorderlessButtons/BorderlessButtons/src/main/res/menu/main.xml
rename to ui/holo/BorderlessButtons/BorderlessButtonsSample/src/main/res/menu/main.xml
diff --git a/ui/actionbar/DoneBar/DoneBar/src/main/res/values-sw600dp/dimens.xml b/ui/holo/BorderlessButtons/BorderlessButtonsSample/src/main/res/values/dimens.xml
similarity index 78%
rename from ui/actionbar/DoneBar/DoneBar/src/main/res/values-sw600dp/dimens.xml
rename to ui/holo/BorderlessButtons/BorderlessButtonsSample/src/main/res/values/dimens.xml
index 22074a2..71a1fc7 100644
--- a/ui/actionbar/DoneBar/DoneBar/src/main/res/values-sw600dp/dimens.xml
+++ b/ui/holo/BorderlessButtons/BorderlessButtonsSample/src/main/res/values/dimens.xml
@@ -16,9 +16,10 @@
 
 <resources>
 
-    <!-- Semantic definitions -->
+    <dimen name="standard_touch_target_size">48dp</dimen>
 
-    <dimen name="horizontal_page_margin">@dimen/margin_huge</dimen>
-    <dimen name="vertical_page_margin">@dimen/margin_medium</dimen>
+    <!-- Meta-dimension that switches on screen size -->
+
+    <dimen name="page_margin">@dimen/margin_medium</dimen>
 
 </resources>
diff --git a/ui/holo/BorderlessButtons/BorderlessButtons/src/main/res/values/strings.xml b/ui/holo/BorderlessButtons/BorderlessButtonsSample/src/main/res/values/strings.xml
similarity index 80%
rename from ui/holo/BorderlessButtons/BorderlessButtons/src/main/res/values/strings.xml
rename to ui/holo/BorderlessButtons/BorderlessButtonsSample/src/main/res/values/strings.xml
index c685088..fb141d2 100755
--- a/ui/holo/BorderlessButtons/BorderlessButtons/src/main/res/values/strings.xml
+++ b/ui/holo/BorderlessButtons/BorderlessButtonsSample/src/main/res/values/strings.xml
@@ -15,9 +15,6 @@
   -->
 
 <resources>
-    <string name="app_name">Borderless Buttons</string>
-    <string name="intro_message">This sample demonstrates the use of <b>borderless buttons</b>, <b>bottom button bars</b> (<i>OK</i> and <i>Cancel</i>) and <b>dividers</b> to establish visual structure.</string>
-
     <string name="cancel">Cancel</string>
     <string name="ok">OK</string>
 
diff --git a/ui/holo/BorderlessButtons/BorderlessButtons/src/main/res/values-sw600dp/styles.xml b/ui/holo/BorderlessButtons/BorderlessButtonsSample/src/main/res/values/styles.xml
similarity index 90%
copy from ui/holo/BorderlessButtons/BorderlessButtons/src/main/res/values-sw600dp/styles.xml
copy to ui/holo/BorderlessButtons/BorderlessButtonsSample/src/main/res/values/styles.xml
index 9ce5eb3..36e0445 100644
--- a/ui/holo/BorderlessButtons/BorderlessButtons/src/main/res/values-sw600dp/styles.xml
+++ b/ui/holo/BorderlessButtons/BorderlessButtonsSample/src/main/res/values/styles.xml
@@ -16,14 +16,16 @@
 
 <resources>
 
+    <!-- Widget styling -->
+
     <style name="Widget.DescriptionBar">
         <item name="android:background">#fb3</item>
         <item name="android:paddingTop">@dimen/margin_medium</item>
         <item name="android:paddingBottom">@dimen/margin_medium</item>
         <item name="android:paddingLeft">@dimen/page_margin</item>
         <item name="android:paddingRight">@dimen/page_margin</item>
-        <item name="android:textAppearance">?android:textAppearanceLarge</item>
-        <item name="android:lineSpacingMultiplier">1.2</item>
+        <item name="android:textAppearance">?android:textAppearanceMedium</item>
+        <item name="android:lineSpacingMultiplier">1.1</item>
     </style>
 
 </resources>
diff --git a/ui/holo/BorderlessButtons/README.txt b/ui/holo/BorderlessButtons/README.txt
deleted file mode 100644
index 38608df..0000000
--- a/ui/holo/BorderlessButtons/README.txt
+++ /dev/null
@@ -1,6 +0,0 @@
-Build Instructions
--------------------
-This sample uses the Gradle build system. To build this project, use the
-"gradlew build" command.
-
-To see a list of all available commands, run "gradlew tasks".
\ No newline at end of file
diff --git a/ui/holo/BorderlessButtons/build.gradle b/ui/holo/BorderlessButtons/build.gradle
index 036abc8..cca9ac3 100644
--- a/ui/holo/BorderlessButtons/build.gradle
+++ b/ui/holo/BorderlessButtons/build.gradle
@@ -1,8 +1,10 @@
-buildscript {
-    repositories {
-        mavenCentral()
-    }
-    dependencies {
-        classpath 'com.android.tools.build:gradle:0.5.+'
-    }
+// BEGIN_EXCLUDE
+import com.example.android.samples.build.SampleGenPlugin
+apply plugin: SampleGenPlugin
+
+samplegen {
+  pathToBuild "../../../../../build"
+  pathToSamplesCommon "../../../common"
 }
+apply from: "../../../../../build/build.gradle"
+// END_EXCLUDE
diff --git a/ui/holo/BorderlessButtons/buildSrc/build.gradle b/ui/holo/BorderlessButtons/buildSrc/build.gradle
new file mode 100644
index 0000000..e344a8c
--- /dev/null
+++ b/ui/holo/BorderlessButtons/buildSrc/build.gradle
@@ -0,0 +1,18 @@
+
+
+
+repositories {
+    mavenCentral()
+}
+dependencies {
+    compile 'org.freemarker:freemarker:2.3.20'
+}
+
+sourceSets {
+    main {
+        groovy {
+            srcDir new File(rootDir, "../../../../../../build/buildSrc/src/main/groovy")
+        }
+    }
+}
+
diff --git a/ui/holo/BorderlessButtons/gradle/wrapper/gradle-wrapper.properties b/ui/holo/BorderlessButtons/gradle/wrapper/gradle-wrapper.properties
index 055ba6f..861eddc 100644
--- a/ui/holo/BorderlessButtons/gradle/wrapper/gradle-wrapper.properties
+++ b/ui/holo/BorderlessButtons/gradle/wrapper/gradle-wrapper.properties
@@ -1,7 +1,6 @@
-#
-#Mon Jul 22 11:40:20 PDT 2013
+#Wed Apr 10 15:27:10 PDT 2013
 distributionBase=GRADLE_USER_HOME
 distributionPath=wrapper/dists
 zipStoreBase=GRADLE_USER_HOME
 zipStorePath=wrapper/dists
-distributionUrl=http\://services.gradle.org/distributions/gradle-1.6-bin.zip
+distributionUrl=http\://services.gradle.org/distributions/gradle-1.8-bin.zip
diff --git a/ui/holo/BorderlessButtons/settings.gradle b/ui/holo/BorderlessButtons/settings.gradle
index d543498..f5220c4 100644
--- a/ui/holo/BorderlessButtons/settings.gradle
+++ b/ui/holo/BorderlessButtons/settings.gradle
@@ -1 +1,4 @@
-include ':BorderlessButtons'
+
+
+
+include 'BorderlessButtonsSample'
diff --git a/ui/holo/BorderlessButtons/template-params.xml b/ui/holo/BorderlessButtons/template-params.xml
new file mode 100644
index 0000000..c0d9aeb
--- /dev/null
+++ b/ui/holo/BorderlessButtons/template-params.xml
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ 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.
+-->
+<sample>
+    <name>BorderlessButtons</name>
+    <group>UI</group>
+    <package>com.example.android.borderlessbuttons</package>
+
+    <!-- change minSdk if needed-->
+    <minSdk>14</minSdk>
+
+    <strings>
+        <intro>
+            <![CDATA[
+                This sample demonstrates the use of borderless buttons, bottom button bars
+                (OK and Cancel) and dividers to establish visual structure.
+            ]]>
+        </intro>
+    </strings>
+
+    <template src="base"/>
+    <common src="logger"/>
+
+</sample>
diff --git a/ui/lists/CustomChoiceList/CustomChoiceList/build.gradle b/ui/lists/CustomChoiceList/CustomChoiceList/build.gradle
deleted file mode 100644
index 6083faa..0000000
--- a/ui/lists/CustomChoiceList/CustomChoiceList/build.gradle
+++ /dev/null
@@ -1,7 +0,0 @@
-
-apply plugin: 'android'
-
-android {
-    compileSdkVersion 18
-    buildToolsVersion "18.0.0"
-}
diff --git a/ui/lists/CustomChoiceList/CustomChoiceList/src/main/res/values-sw600dp/dimens.xml b/ui/lists/CustomChoiceList/CustomChoiceList/src/main/res/values-sw600dp/dimens.xml
deleted file mode 100644
index 0e00174..0000000
--- a/ui/lists/CustomChoiceList/CustomChoiceList/src/main/res/values-sw600dp/dimens.xml
+++ /dev/null
@@ -1,21 +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.
-  -->
-
-<resources>
-
-    <dimen name="page_margin">@dimen/margin_huge</dimen>
-
-</resources>
diff --git a/ui/lists/CustomChoiceList/CustomChoiceList/src/main/res/values-sw600dp/styles.xml b/ui/lists/CustomChoiceList/CustomChoiceList/src/main/res/values-sw600dp/styles.xml
deleted file mode 100644
index 9ce5eb3..0000000
--- a/ui/lists/CustomChoiceList/CustomChoiceList/src/main/res/values-sw600dp/styles.xml
+++ /dev/null
@@ -1,29 +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.
-  -->
-
-<resources>
-
-    <style name="Widget.DescriptionBar">
-        <item name="android:background">#fb3</item>
-        <item name="android:paddingTop">@dimen/margin_medium</item>
-        <item name="android:paddingBottom">@dimen/margin_medium</item>
-        <item name="android:paddingLeft">@dimen/page_margin</item>
-        <item name="android:paddingRight">@dimen/page_margin</item>
-        <item name="android:textAppearance">?android:textAppearanceLarge</item>
-        <item name="android:lineSpacingMultiplier">1.2</item>
-    </style>
-
-</resources>
diff --git a/ui/lists/CustomChoiceList/CustomChoiceList/src/main/res/values-v11/styles.xml b/ui/lists/CustomChoiceList/CustomChoiceList/src/main/res/values-v11/styles.xml
deleted file mode 100644
index 3dff32a..0000000
--- a/ui/lists/CustomChoiceList/CustomChoiceList/src/main/res/values-v11/styles.xml
+++ /dev/null
@@ -1,21 +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.
-  -->
-
-<resources>
-
-    <style name="Theme.Base" parent="android:Theme.Holo.Light" />
-
-</resources>
diff --git a/ui/lists/CustomChoiceList/CustomChoiceList/src/main/res/values/dimens.xml b/ui/lists/CustomChoiceList/CustomChoiceList/src/main/res/values/dimens.xml
deleted file mode 100644
index 8bb8753..0000000
--- a/ui/lists/CustomChoiceList/CustomChoiceList/src/main/res/values/dimens.xml
+++ /dev/null
@@ -1,31 +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.
-  -->
-
-<resources>
-
-    <!-- Define standard dimensions to comply with Holo-style grids and rhythm. -->
-
-    <dimen name="margin_tiny">4dp</dimen>
-    <dimen name="margin_small">8dp</dimen>
-    <dimen name="margin_medium">16dp</dimen>
-    <dimen name="margin_large">32dp</dimen>
-    <dimen name="margin_huge">64dp</dimen>
-
-    <!-- Meta-dimension that switches on screen size -->
-
-    <dimen name="page_margin">@dimen/margin_medium</dimen>
-
-</resources>
diff --git a/ui/lists/CustomChoiceList/CustomChoiceList/src/main/res/values/strings.xml b/ui/lists/CustomChoiceList/CustomChoiceList/src/main/res/values/strings.xml
deleted file mode 100755
index 54389e2..0000000
--- a/ui/lists/CustomChoiceList/CustomChoiceList/src/main/res/values/strings.xml
+++ /dev/null
@@ -1,20 +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.
-  -->
-
-<resources>
-    <string name="app_name">Custom Choice List</string>
-    <string name="intro_message">This sample demonstrates how to create <b>custom checkable layouts</b>, for use with <i>ListView</i>\'s <i>choiceMode</i> attribute.</string>
-</resources>
diff --git a/ui/lists/CustomChoiceList/CustomChoiceList/src/main/res/values/styles.xml b/ui/lists/CustomChoiceList/CustomChoiceList/src/main/res/values/styles.xml
deleted file mode 100644
index e0a12d3..0000000
--- a/ui/lists/CustomChoiceList/CustomChoiceList/src/main/res/values/styles.xml
+++ /dev/null
@@ -1,39 +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.
-  -->
-
-<resources>
-
-    <!-- Activity themes -->
-
-    <style name="Theme.Base" parent="android:Theme.Light" />
-
-    <style name="Theme.Sample" parent="Theme.Base" />
-
-    <!-- Widget styling -->
-
-    <style name="Widget" />
-
-    <style name="Widget.DescriptionBar">
-        <item name="android:background">#fb3</item>
-        <item name="android:paddingTop">@dimen/margin_medium</item>
-        <item name="android:paddingBottom">@dimen/margin_medium</item>
-        <item name="android:paddingLeft">@dimen/page_margin</item>
-        <item name="android:paddingRight">@dimen/page_margin</item>
-        <item name="android:textAppearance">?android:textAppearanceMedium</item>
-        <item name="android:lineSpacingMultiplier">1.1</item>
-    </style>
-
-</resources>
diff --git a/ui/lists/CustomChoiceList/CustomChoiceListSample/.gitignore b/ui/lists/CustomChoiceList/CustomChoiceListSample/.gitignore
new file mode 100644
index 0000000..6eb878d
--- /dev/null
+++ b/ui/lists/CustomChoiceList/CustomChoiceListSample/.gitignore
@@ -0,0 +1,16 @@
+# 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.
+src/template/
+src/common/
+build.gradle
diff --git a/connectivity/sync/BasicSyncAdapter/BasicSyncAdapterTests/proguard-project.txt b/ui/lists/CustomChoiceList/CustomChoiceListSample/proguard-project.txt
similarity index 91%
copy from connectivity/sync/BasicSyncAdapter/BasicSyncAdapterTests/proguard-project.txt
copy to ui/lists/CustomChoiceList/CustomChoiceListSample/proguard-project.txt
index f2fe155..0d8f171 100644
--- a/connectivity/sync/BasicSyncAdapter/BasicSyncAdapterTests/proguard-project.txt
+++ b/ui/lists/CustomChoiceList/CustomChoiceListSample/proguard-project.txt
@@ -1,4 +1,4 @@
-# To enable ProGuard in your project, edit project.properties
+ To enable ProGuard in your project, edit project.properties
 # to define the proguard.config property as described in that file.
 #
 # Add project specific ProGuard rules here.
diff --git a/ui/lists/CustomChoiceList/CustomChoiceList/src/main/AndroidManifest.xml b/ui/lists/CustomChoiceList/CustomChoiceListSample/src/main/AndroidManifest.xml
old mode 100755
new mode 100644
similarity index 100%
rename from ui/lists/CustomChoiceList/CustomChoiceList/src/main/AndroidManifest.xml
rename to ui/lists/CustomChoiceList/CustomChoiceListSample/src/main/AndroidManifest.xml
diff --git a/ui/lists/CustomChoiceList/CustomChoiceList/src/main/java/com/example/android/customchoicelist/CheckableLinearLayout.java b/ui/lists/CustomChoiceList/CustomChoiceListSample/src/main/java/com/example/android/customchoicelist/CheckableLinearLayout.java
similarity index 94%
rename from ui/lists/CustomChoiceList/CustomChoiceList/src/main/java/com/example/android/customchoicelist/CheckableLinearLayout.java
rename to ui/lists/CustomChoiceList/CustomChoiceListSample/src/main/java/com/example/android/customchoicelist/CheckableLinearLayout.java
index 97be8cb..a30eb2a 100644
--- a/ui/lists/CustomChoiceList/CustomChoiceList/src/main/java/com/example/android/customchoicelist/CheckableLinearLayout.java
+++ b/ui/lists/CustomChoiceList/CustomChoiceListSample/src/main/java/com/example/android/customchoicelist/CheckableLinearLayout.java
@@ -24,7 +24,7 @@
 import android.widget.LinearLayout;
 
 /**
- * This is a simple wrapper for {@link LinearLayout} that implements the {@link Checkable}
+ * This is a simple wrapper for {@link android.widget.LinearLayout} that implements the {@link android.widget.Checkable}
  * interface by keeping an internal 'checked' state flag.
  * <p>
  * This can be used as the root view for a custom list item layout for
diff --git a/ui/lists/CustomChoiceList/CustomChoiceList/src/main/java/com/example/android/customchoicelist/Cheeses.java b/ui/lists/CustomChoiceList/CustomChoiceListSample/src/main/java/com/example/android/customchoicelist/Cheeses.java
similarity index 100%
rename from ui/lists/CustomChoiceList/CustomChoiceList/src/main/java/com/example/android/customchoicelist/Cheeses.java
rename to ui/lists/CustomChoiceList/CustomChoiceListSample/src/main/java/com/example/android/customchoicelist/Cheeses.java
diff --git a/ui/lists/CustomChoiceList/CustomChoiceList/src/main/java/com/example/android/customchoicelist/MainActivity.java b/ui/lists/CustomChoiceList/CustomChoiceListSample/src/main/java/com/example/android/customchoicelist/MainActivity.java
similarity index 97%
rename from ui/lists/CustomChoiceList/CustomChoiceList/src/main/java/com/example/android/customchoicelist/MainActivity.java
rename to ui/lists/CustomChoiceList/CustomChoiceListSample/src/main/java/com/example/android/customchoicelist/MainActivity.java
index e27ff97..e4e89f2 100755
--- a/ui/lists/CustomChoiceList/CustomChoiceList/src/main/java/com/example/android/customchoicelist/MainActivity.java
+++ b/ui/lists/CustomChoiceList/CustomChoiceListSample/src/main/java/com/example/android/customchoicelist/MainActivity.java
@@ -31,7 +31,7 @@
 public class MainActivity extends ListActivity {
     protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
-        setContentView(R.layout.activity_main);
+        setContentView(R.layout.sample_main);
         setListAdapter(new MyAdapter());
     }
 
diff --git a/ui/lists/CustomChoiceList/CustomChoiceList/src/main/res/color/hideable_text_color.xml b/ui/lists/CustomChoiceList/CustomChoiceListSample/src/main/res/color/hideable_text_color.xml
similarity index 100%
rename from ui/lists/CustomChoiceList/CustomChoiceList/src/main/res/color/hideable_text_color.xml
rename to ui/lists/CustomChoiceList/CustomChoiceListSample/src/main/res/color/hideable_text_color.xml
diff --git a/ui/lists/CustomChoiceList/CustomChoiceList/src/main/res/drawable-hdpi/ic_launcher.png b/ui/lists/CustomChoiceList/CustomChoiceListSample/src/main/res/drawable-hdpi/ic_launcher.png
similarity index 100%
rename from ui/lists/CustomChoiceList/CustomChoiceList/src/main/res/drawable-hdpi/ic_launcher.png
rename to ui/lists/CustomChoiceList/CustomChoiceListSample/src/main/res/drawable-hdpi/ic_launcher.png
Binary files differ
diff --git a/ui/lists/CustomChoiceList/CustomChoiceList/src/main/res/drawable-mdpi/ic_launcher.png b/ui/lists/CustomChoiceList/CustomChoiceListSample/src/main/res/drawable-mdpi/ic_launcher.png
similarity index 100%
rename from ui/lists/CustomChoiceList/CustomChoiceList/src/main/res/drawable-mdpi/ic_launcher.png
rename to ui/lists/CustomChoiceList/CustomChoiceListSample/src/main/res/drawable-mdpi/ic_launcher.png
Binary files differ
diff --git a/ui/lists/CustomChoiceList/CustomChoiceList/src/main/res/drawable-xhdpi/ic_hideable_item_checked.png b/ui/lists/CustomChoiceList/CustomChoiceListSample/src/main/res/drawable-xhdpi/ic_hideable_item_checked.png
similarity index 100%
rename from ui/lists/CustomChoiceList/CustomChoiceList/src/main/res/drawable-xhdpi/ic_hideable_item_checked.png
rename to ui/lists/CustomChoiceList/CustomChoiceListSample/src/main/res/drawable-xhdpi/ic_hideable_item_checked.png
Binary files differ
diff --git a/ui/lists/CustomChoiceList/CustomChoiceList/src/main/res/drawable-xhdpi/ic_hideable_item_unchecked.png b/ui/lists/CustomChoiceList/CustomChoiceListSample/src/main/res/drawable-xhdpi/ic_hideable_item_unchecked.png
similarity index 100%
rename from ui/lists/CustomChoiceList/CustomChoiceList/src/main/res/drawable-xhdpi/ic_hideable_item_unchecked.png
rename to ui/lists/CustomChoiceList/CustomChoiceListSample/src/main/res/drawable-xhdpi/ic_hideable_item_unchecked.png
Binary files differ
diff --git a/ui/lists/CustomChoiceList/CustomChoiceList/src/main/res/drawable-xhdpi/ic_launcher.png b/ui/lists/CustomChoiceList/CustomChoiceListSample/src/main/res/drawable-xhdpi/ic_launcher.png
similarity index 100%
rename from ui/lists/CustomChoiceList/CustomChoiceList/src/main/res/drawable-xhdpi/ic_launcher.png
rename to ui/lists/CustomChoiceList/CustomChoiceListSample/src/main/res/drawable-xhdpi/ic_launcher.png
Binary files differ
diff --git a/ui/lists/CustomChoiceList/CustomChoiceList/src/main/res/drawable-xxhdpi/ic_launcher.png b/ui/lists/CustomChoiceList/CustomChoiceListSample/src/main/res/drawable-xxhdpi/ic_launcher.png
similarity index 100%
rename from ui/lists/CustomChoiceList/CustomChoiceList/src/main/res/drawable-xxhdpi/ic_launcher.png
rename to ui/lists/CustomChoiceList/CustomChoiceListSample/src/main/res/drawable-xxhdpi/ic_launcher.png
Binary files differ
diff --git a/ui/lists/CustomChoiceList/CustomChoiceList/src/main/res/drawable/ic_hideable_item.xml b/ui/lists/CustomChoiceList/CustomChoiceListSample/src/main/res/drawable/ic_hideable_item.xml
similarity index 100%
rename from ui/lists/CustomChoiceList/CustomChoiceList/src/main/res/drawable/ic_hideable_item.xml
rename to ui/lists/CustomChoiceList/CustomChoiceListSample/src/main/res/drawable/ic_hideable_item.xml
diff --git a/ui/lists/CustomChoiceList/CustomChoiceList/src/main/res/layout/list_item.xml b/ui/lists/CustomChoiceList/CustomChoiceListSample/src/main/res/layout/list_item.xml
similarity index 96%
rename from ui/lists/CustomChoiceList/CustomChoiceList/src/main/res/layout/list_item.xml
rename to ui/lists/CustomChoiceList/CustomChoiceListSample/src/main/res/layout/list_item.xml
index ecbd63d..09a17ed 100644
--- a/ui/lists/CustomChoiceList/CustomChoiceList/src/main/res/layout/list_item.xml
+++ b/ui/lists/CustomChoiceList/CustomChoiceListSample/src/main/res/layout/list_item.xml
@@ -15,7 +15,7 @@
   -->
 
 <!--
-    The ListView from activity_main.xml has a choiceMode set, meaning that when a user
+    The ListView from sample_main.xml has a choiceMode set, meaning that when a user
     selects a list item, the ListView will set the state for that item's root view
     (this CheckableLinearLayout) to "checked". Note that this requires that the root view
     implements the Checkable interface. Once the root view is checked, any children that
diff --git a/ui/lists/CustomChoiceList/CustomChoiceList/src/main/res/layout/activity_main.xml b/ui/lists/CustomChoiceList/CustomChoiceListSample/src/main/res/layout/sample_main.xml
similarity index 100%
rename from ui/lists/CustomChoiceList/CustomChoiceList/src/main/res/layout/activity_main.xml
rename to ui/lists/CustomChoiceList/CustomChoiceListSample/src/main/res/layout/sample_main.xml
diff --git a/ui/holo/BorderlessButtons/BorderlessButtons/src/main/res/values-sw600dp/dimens.xml b/ui/lists/CustomChoiceList/CustomChoiceListSample/src/main/res/values/dimens.xml
similarity index 84%
copy from ui/holo/BorderlessButtons/BorderlessButtons/src/main/res/values-sw600dp/dimens.xml
copy to ui/lists/CustomChoiceList/CustomChoiceListSample/src/main/res/values/dimens.xml
index 0e00174..c22027e 100644
--- a/ui/holo/BorderlessButtons/BorderlessButtons/src/main/res/values-sw600dp/dimens.xml
+++ b/ui/lists/CustomChoiceList/CustomChoiceListSample/src/main/res/values/dimens.xml
@@ -16,6 +16,8 @@
 
 <resources>
 
-    <dimen name="page_margin">@dimen/margin_huge</dimen>
+    <!-- Meta-dimension that switches on screen size -->
+
+    <dimen name="page_margin">@dimen/margin_medium</dimen>
 
 </resources>
diff --git a/ui/holo/BorderlessButtons/BorderlessButtons/src/main/res/values-sw600dp/styles.xml b/ui/lists/CustomChoiceList/CustomChoiceListSample/src/main/res/values/styles.xml
similarity index 92%
rename from ui/holo/BorderlessButtons/BorderlessButtons/src/main/res/values-sw600dp/styles.xml
rename to ui/lists/CustomChoiceList/CustomChoiceListSample/src/main/res/values/styles.xml
index 9ce5eb3..0851a81 100644
--- a/ui/holo/BorderlessButtons/BorderlessButtons/src/main/res/values-sw600dp/styles.xml
+++ b/ui/lists/CustomChoiceList/CustomChoiceListSample/src/main/res/values/styles.xml
@@ -15,15 +15,14 @@
   -->
 
 <resources>
-
     <style name="Widget.DescriptionBar">
         <item name="android:background">#fb3</item>
         <item name="android:paddingTop">@dimen/margin_medium</item>
         <item name="android:paddingBottom">@dimen/margin_medium</item>
         <item name="android:paddingLeft">@dimen/page_margin</item>
         <item name="android:paddingRight">@dimen/page_margin</item>
-        <item name="android:textAppearance">?android:textAppearanceLarge</item>
-        <item name="android:lineSpacingMultiplier">1.2</item>
+        <item name="android:textAppearance">?android:textAppearanceMedium</item>
+        <item name="android:lineSpacingMultiplier">1.1</item>
     </style>
 
 </resources>
diff --git a/ui/lists/CustomChoiceList/README.txt b/ui/lists/CustomChoiceList/README.txt
deleted file mode 100644
index 38608df..0000000
--- a/ui/lists/CustomChoiceList/README.txt
+++ /dev/null
@@ -1,6 +0,0 @@
-Build Instructions
--------------------
-This sample uses the Gradle build system. To build this project, use the
-"gradlew build" command.
-
-To see a list of all available commands, run "gradlew tasks".
\ No newline at end of file
diff --git a/ui/lists/CustomChoiceList/build.gradle b/ui/lists/CustomChoiceList/build.gradle
index 036abc8..cca9ac3 100644
--- a/ui/lists/CustomChoiceList/build.gradle
+++ b/ui/lists/CustomChoiceList/build.gradle
@@ -1,8 +1,10 @@
-buildscript {
-    repositories {
-        mavenCentral()
-    }
-    dependencies {
-        classpath 'com.android.tools.build:gradle:0.5.+'
-    }
+// BEGIN_EXCLUDE
+import com.example.android.samples.build.SampleGenPlugin
+apply plugin: SampleGenPlugin
+
+samplegen {
+  pathToBuild "../../../../../build"
+  pathToSamplesCommon "../../../common"
 }
+apply from: "../../../../../build/build.gradle"
+// END_EXCLUDE
diff --git a/ui/lists/CustomChoiceList/buildSrc/build.gradle b/ui/lists/CustomChoiceList/buildSrc/build.gradle
new file mode 100644
index 0000000..e344a8c
--- /dev/null
+++ b/ui/lists/CustomChoiceList/buildSrc/build.gradle
@@ -0,0 +1,18 @@
+
+
+
+repositories {
+    mavenCentral()
+}
+dependencies {
+    compile 'org.freemarker:freemarker:2.3.20'
+}
+
+sourceSets {
+    main {
+        groovy {
+            srcDir new File(rootDir, "../../../../../../build/buildSrc/src/main/groovy")
+        }
+    }
+}
+
diff --git a/ui/lists/CustomChoiceList/gradle/wrapper/gradle-wrapper.properties b/ui/lists/CustomChoiceList/gradle/wrapper/gradle-wrapper.properties
index 055ba6f..861eddc 100644
--- a/ui/lists/CustomChoiceList/gradle/wrapper/gradle-wrapper.properties
+++ b/ui/lists/CustomChoiceList/gradle/wrapper/gradle-wrapper.properties
@@ -1,7 +1,6 @@
-#
-#Mon Jul 22 11:40:20 PDT 2013
+#Wed Apr 10 15:27:10 PDT 2013
 distributionBase=GRADLE_USER_HOME
 distributionPath=wrapper/dists
 zipStoreBase=GRADLE_USER_HOME
 zipStorePath=wrapper/dists
-distributionUrl=http\://services.gradle.org/distributions/gradle-1.6-bin.zip
+distributionUrl=http\://services.gradle.org/distributions/gradle-1.8-bin.zip
diff --git a/ui/lists/CustomChoiceList/settings.gradle b/ui/lists/CustomChoiceList/settings.gradle
index 0c9c7b4..6d876cf 100644
--- a/ui/lists/CustomChoiceList/settings.gradle
+++ b/ui/lists/CustomChoiceList/settings.gradle
@@ -1 +1,4 @@
-include ':CustomChoiceList'
+
+
+
+include 'CustomChoiceListSample'
diff --git a/ui/lists/CustomChoiceList/template-params.xml b/ui/lists/CustomChoiceList/template-params.xml
new file mode 100644
index 0000000..b58c0ac
--- /dev/null
+++ b/ui/lists/CustomChoiceList/template-params.xml
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ 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.
+-->
+<sample>
+    <name>CustomChoiceList</name>
+    <group>UI</group>
+    <package>com.example.android.customchoicelist</package>
+
+    <!-- change minSdk if needed-->
+    <minSdk>3</minSdk>
+
+    <strings>
+        <intro>
+            <![CDATA[
+                This sample demonstrates how to create custom checkable layouts, for use with ListView\'s choiceMode
+                attribute.
+            ]]>
+        </intro>
+    </strings>
+
+    <template src="base"/>
+    <common src="logger"/>
+
+</sample>
diff --git a/ui/notifications/BasicNotifications/BasicNotifications/build.gradle b/ui/notifications/BasicNotifications/BasicNotifications/build.gradle
deleted file mode 100644
index 0baece9..0000000
--- a/ui/notifications/BasicNotifications/BasicNotifications/build.gradle
+++ /dev/null
@@ -1,10 +0,0 @@
-apply plugin: 'android'
-
-dependencies {
-    compile "com.android.support:support-v4:18.0.+"
-}
-
-android {
-    compileSdkVersion 18
-    buildToolsVersion "18.0.0"
-}
diff --git a/ui/notifications/BasicNotifications/BasicNotifications/src/main/AndroidManifest.xml b/ui/notifications/BasicNotifications/BasicNotifications/src/main/AndroidManifest.xml
deleted file mode 100644
index 5193ae6..0000000
--- a/ui/notifications/BasicNotifications/BasicNotifications/src/main/AndroidManifest.xml
+++ /dev/null
@@ -1,41 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-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.
--->
-<manifest xmlns:android="http://schemas.android.com/apk/res/android"
-          package="com.example.android.basicnotifications"
-          android:versionCode="1"
-          android:versionName="1.0">
-
-    <uses-sdk
-        android:minSdkVersion="8"
-        android:targetSdkVersion="17"/>
-
-    <application
-        android:allowBackup="true"
-        android:icon="@drawable/ic_launcher"
-        android:label="@string/app_name"
-        android:theme="@style/AppTheme">
-        <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/ui/notifications/BasicNotifications/BasicNotifications/src/main/big_icon.png b/ui/notifications/BasicNotifications/BasicNotifications/src/main/big_icon.png
deleted file mode 100644
index 38a25ae..0000000
--- a/ui/notifications/BasicNotifications/BasicNotifications/src/main/big_icon.png
+++ /dev/null
Binary files differ
diff --git a/ui/notifications/BasicNotifications/BasicNotifications/src/main/res/values-v11/styles.xml b/ui/notifications/BasicNotifications/BasicNotifications/src/main/res/values-v11/styles.xml
deleted file mode 100644
index a55cffb..0000000
--- a/ui/notifications/BasicNotifications/BasicNotifications/src/main/res/values-v11/styles.xml
+++ /dev/null
@@ -1,27 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-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.
--->
-<resources>
-
-    <!--
-        Base application theme for API 11+. This theme completely replaces
-        AppBaseTheme from res/values/styles.xml on API 11+ devices.
-    -->
-    <style name="AppBaseTheme" parent="android:Theme.Holo.Light">
-        <!-- API 11 theme customizations can go here. -->
-    </style>
-
-</resources>
diff --git a/ui/notifications/BasicNotifications/BasicNotifications/src/main/res/values-v14/styles.xml b/ui/notifications/BasicNotifications/BasicNotifications/src/main/res/values-v14/styles.xml
deleted file mode 100644
index e010230..0000000
--- a/ui/notifications/BasicNotifications/BasicNotifications/src/main/res/values-v14/styles.xml
+++ /dev/null
@@ -1,28 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-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.
--->
-<resources>
-
-    <!--
-        Base application theme for API 14+. This theme completely replaces
-        AppBaseTheme from BOTH res/values/styles.xml and
-        res/values-v11/styles.xml on API 14+ devices.
-    -->
-    <style name="AppBaseTheme" parent="android:Theme.Holo.Light">
-        <!-- API 14 theme customizations can go here. -->
-    </style>
-
-</resources>
diff --git a/ui/notifications/BasicNotifications/BasicNotifications/src/main/res/values/styles.xml b/ui/notifications/BasicNotifications/BasicNotifications/src/main/res/values/styles.xml
deleted file mode 100644
index 916d51a..0000000
--- a/ui/notifications/BasicNotifications/BasicNotifications/src/main/res/values/styles.xml
+++ /dev/null
@@ -1,37 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-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.
--->
-<resources>
-
-    <!--
-        Base application theme, dependent on API level. This theme is replaced
-        by AppBaseTheme from res/values-vXX/styles.xml on newer devices.
-    -->
-    <style name="AppBaseTheme" parent="android:Theme.Light">
-        <!--
-            Theme customizations available in newer API levels can go in
-            res/values-vXX/styles.xml, while customizations related to
-            backward-compatibility can go here.
-        -->
-    </style>
-
-    <!-- Application theme. -->
-    <style name="AppTheme" parent="AppBaseTheme">
-        <!-- All customizations that are NOT specific to a particular API-level can go here. -->
-    </style>
-
-
-</resources>
diff --git a/ui/notifications/BasicNotifications/BasicNotificationsSample/.gitignore b/ui/notifications/BasicNotifications/BasicNotificationsSample/.gitignore
new file mode 100644
index 0000000..6eb878d
--- /dev/null
+++ b/ui/notifications/BasicNotifications/BasicNotificationsSample/.gitignore
@@ -0,0 +1,16 @@
+# 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.
+src/template/
+src/common/
+build.gradle
diff --git a/connectivity/sync/BasicSyncAdapter/BasicSyncAdapterTests/proguard-project.txt b/ui/notifications/BasicNotifications/BasicNotificationsSample/proguard-project.txt
similarity index 91%
copy from connectivity/sync/BasicSyncAdapter/BasicSyncAdapterTests/proguard-project.txt
copy to ui/notifications/BasicNotifications/BasicNotificationsSample/proguard-project.txt
index f2fe155..0d8f171 100644
--- a/connectivity/sync/BasicSyncAdapter/BasicSyncAdapterTests/proguard-project.txt
+++ b/ui/notifications/BasicNotifications/BasicNotificationsSample/proguard-project.txt
@@ -1,4 +1,4 @@
-# To enable ProGuard in your project, edit project.properties
+ To enable ProGuard in your project, edit project.properties
 # to define the proguard.config property as described in that file.
 #
 # Add project specific ProGuard rules here.
diff --git a/ui/accessibility/BasicAccessibility/BasicAccessibility/src/main/AndroidManifest.xml b/ui/notifications/BasicNotifications/BasicNotificationsSample/src/main/AndroidManifest.xml
similarity index 65%
copy from ui/accessibility/BasicAccessibility/BasicAccessibility/src/main/AndroidManifest.xml
copy to ui/notifications/BasicNotifications/BasicNotificationsSample/src/main/AndroidManifest.xml
index 3c0e66a..1e37d0b 100644
--- a/ui/accessibility/BasicAccessibility/BasicAccessibility/src/main/AndroidManifest.xml
+++ b/ui/notifications/BasicNotifications/BasicNotificationsSample/src/main/AndroidManifest.xml
@@ -1,12 +1,12 @@
-<?xml version="1.0" encoding="utf-8"?>
+<?xml version="1.0" encoding="UTF-8"?>
 <!--
- Copyright (C) 2013 The Android Open Source Project
+ 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
+     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,
@@ -16,25 +16,25 @@
 -->
 
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
-    package="com.example.android.ui.accessibility.BasicAccessibility"
+    package="com.example.android.basicnotifications"
     android:versionCode="1"
-    android:versionName="1.0" >
+    android:versionName="1.0">
 
     <uses-sdk
-        android:minSdkVersion="11"
-        android:targetSdkVersion="16" />
+        android:minSdkVersion="8"
+        android:targetSdkVersion="17"/>
 
     <application
         android:allowBackup="true"
         android:icon="@drawable/ic_launcher"
         android:label="@string/app_name"
-        android:theme="@style/AppTheme" >
+        android:theme="@style/AppTheme">
         <activity
-            android:name="com.example.android.ui.accessibility.BasicAccessibility.MainActivity"
-            android:label="@string/app_name" >
+            android:name=".MainActivity"
+            android:label="@string/app_name">
             <intent-filter>
-                <action android:name="android.intent.action.MAIN" />
-                <category android:name="android.intent.category.LAUNCHER" />
+                <action android:name="android.intent.action.MAIN"/>
+                <category android:name="android.intent.category.LAUNCHER"/>
             </intent-filter>
         </activity>
     </application>
diff --git a/ui/notifications/BasicNotifications/BasicNotifications/src/main/java/com/example/android/basicnotifications/MainActivity.java b/ui/notifications/BasicNotifications/BasicNotificationsSample/src/main/java/com/example/android/basicnotifications/MainActivity.java
similarity index 98%
rename from ui/notifications/BasicNotifications/BasicNotifications/src/main/java/com/example/android/basicnotifications/MainActivity.java
rename to ui/notifications/BasicNotifications/BasicNotificationsSample/src/main/java/com/example/android/basicnotifications/MainActivity.java
index 50ac798..3e78c34 100644
--- a/ui/notifications/BasicNotifications/BasicNotifications/src/main/java/com/example/android/basicnotifications/MainActivity.java
+++ b/ui/notifications/BasicNotifications/BasicNotificationsSample/src/main/java/com/example/android/basicnotifications/MainActivity.java
@@ -23,7 +23,7 @@
 
     public void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
-        setContentView(R.layout.main_layout);
+        setContentView(R.layout.sample_layout);
 
     }
 
diff --git a/ui/notifications/BasicNotifications/BasicNotifications/src/main/res/drawable-hdpi-v11/ic_stat_notification.png b/ui/notifications/BasicNotifications/BasicNotificationsSample/src/main/res/drawable-hdpi-v11/ic_stat_notification.png
similarity index 100%
rename from ui/notifications/BasicNotifications/BasicNotifications/src/main/res/drawable-hdpi-v11/ic_stat_notification.png
rename to ui/notifications/BasicNotifications/BasicNotificationsSample/src/main/res/drawable-hdpi-v11/ic_stat_notification.png
Binary files differ
diff --git a/ui/notifications/BasicNotifications/BasicNotifications/src/main/res/drawable-hdpi-v9/ic_stat_notification.png b/ui/notifications/BasicNotifications/BasicNotificationsSample/src/main/res/drawable-hdpi-v9/ic_stat_notification.png
similarity index 100%
rename from ui/notifications/BasicNotifications/BasicNotifications/src/main/res/drawable-hdpi-v9/ic_stat_notification.png
rename to ui/notifications/BasicNotifications/BasicNotificationsSample/src/main/res/drawable-hdpi-v9/ic_stat_notification.png
Binary files differ
diff --git a/ui/notifications/BasicNotifications/BasicNotifications/src/main/res/drawable-hdpi/ic_launcher.png b/ui/notifications/BasicNotifications/BasicNotificationsSample/src/main/res/drawable-hdpi/ic_launcher.png
similarity index 100%
rename from ui/notifications/BasicNotifications/BasicNotifications/src/main/res/drawable-hdpi/ic_launcher.png
rename to ui/notifications/BasicNotifications/BasicNotificationsSample/src/main/res/drawable-hdpi/ic_launcher.png
Binary files differ
diff --git a/ui/notifications/BasicNotifications/BasicNotifications/src/main/res/drawable-hdpi/ic_stat_notification.png b/ui/notifications/BasicNotifications/BasicNotificationsSample/src/main/res/drawable-hdpi/ic_stat_notification.png
similarity index 100%
rename from ui/notifications/BasicNotifications/BasicNotifications/src/main/res/drawable-hdpi/ic_stat_notification.png
rename to ui/notifications/BasicNotifications/BasicNotificationsSample/src/main/res/drawable-hdpi/ic_stat_notification.png
Binary files differ
diff --git a/ui/notifications/BasicNotifications/BasicNotifications/src/main/res/drawable-ldpi-v11/ic_stat_notification.png b/ui/notifications/BasicNotifications/BasicNotificationsSample/src/main/res/drawable-ldpi-v11/ic_stat_notification.png
similarity index 100%
rename from ui/notifications/BasicNotifications/BasicNotifications/src/main/res/drawable-ldpi-v11/ic_stat_notification.png
rename to ui/notifications/BasicNotifications/BasicNotificationsSample/src/main/res/drawable-ldpi-v11/ic_stat_notification.png
Binary files differ
diff --git a/ui/notifications/BasicNotifications/BasicNotifications/src/main/res/drawable-ldpi-v9/ic_stat_notification.png b/ui/notifications/BasicNotifications/BasicNotificationsSample/src/main/res/drawable-ldpi-v9/ic_stat_notification.png
similarity index 100%
rename from ui/notifications/BasicNotifications/BasicNotifications/src/main/res/drawable-ldpi-v9/ic_stat_notification.png
rename to ui/notifications/BasicNotifications/BasicNotificationsSample/src/main/res/drawable-ldpi-v9/ic_stat_notification.png
Binary files differ
diff --git a/ui/notifications/BasicNotifications/BasicNotifications/src/main/res/drawable-mdpi-v11/ic_stat_notification.png b/ui/notifications/BasicNotifications/BasicNotificationsSample/src/main/res/drawable-mdpi-v11/ic_stat_notification.png
similarity index 100%
rename from ui/notifications/BasicNotifications/BasicNotifications/src/main/res/drawable-mdpi-v11/ic_stat_notification.png
rename to ui/notifications/BasicNotifications/BasicNotificationsSample/src/main/res/drawable-mdpi-v11/ic_stat_notification.png
Binary files differ
diff --git a/ui/notifications/BasicNotifications/BasicNotifications/src/main/res/drawable-mdpi-v9/ic_stat_notification.png b/ui/notifications/BasicNotifications/BasicNotificationsSample/src/main/res/drawable-mdpi-v9/ic_stat_notification.png
similarity index 100%
rename from ui/notifications/BasicNotifications/BasicNotifications/src/main/res/drawable-mdpi-v9/ic_stat_notification.png
rename to ui/notifications/BasicNotifications/BasicNotificationsSample/src/main/res/drawable-mdpi-v9/ic_stat_notification.png
Binary files differ
diff --git a/ui/notifications/BasicNotifications/BasicNotifications/src/main/res/drawable-mdpi/ic_launcher.png b/ui/notifications/BasicNotifications/BasicNotificationsSample/src/main/res/drawable-mdpi/ic_launcher.png
similarity index 100%
rename from ui/notifications/BasicNotifications/BasicNotifications/src/main/res/drawable-mdpi/ic_launcher.png
rename to ui/notifications/BasicNotifications/BasicNotificationsSample/src/main/res/drawable-mdpi/ic_launcher.png
Binary files differ
diff --git a/ui/notifications/BasicNotifications/BasicNotifications/src/main/res/drawable-mdpi/ic_stat_notification.png b/ui/notifications/BasicNotifications/BasicNotificationsSample/src/main/res/drawable-mdpi/ic_stat_notification.png
similarity index 100%
rename from ui/notifications/BasicNotifications/BasicNotifications/src/main/res/drawable-mdpi/ic_stat_notification.png
rename to ui/notifications/BasicNotifications/BasicNotificationsSample/src/main/res/drawable-mdpi/ic_stat_notification.png
Binary files differ
diff --git a/ui/notifications/BasicNotifications/BasicNotifications/src/main/res/drawable-xhdpi-v11/ic_stat_notification.png b/ui/notifications/BasicNotifications/BasicNotificationsSample/src/main/res/drawable-xhdpi-v11/ic_stat_notification.png
similarity index 100%
rename from ui/notifications/BasicNotifications/BasicNotifications/src/main/res/drawable-xhdpi-v11/ic_stat_notification.png
rename to ui/notifications/BasicNotifications/BasicNotificationsSample/src/main/res/drawable-xhdpi-v11/ic_stat_notification.png
Binary files differ
diff --git a/ui/notifications/BasicNotifications/BasicNotifications/src/main/res/drawable-xhdpi-v9/ic_stat_notification.png b/ui/notifications/BasicNotifications/BasicNotificationsSample/src/main/res/drawable-xhdpi-v9/ic_stat_notification.png
similarity index 100%
rename from ui/notifications/BasicNotifications/BasicNotifications/src/main/res/drawable-xhdpi-v9/ic_stat_notification.png
rename to ui/notifications/BasicNotifications/BasicNotificationsSample/src/main/res/drawable-xhdpi-v9/ic_stat_notification.png
Binary files differ
diff --git a/ui/notifications/BasicNotifications/BasicNotifications/src/main/res/drawable-xhdpi/ic_launcher.png b/ui/notifications/BasicNotifications/BasicNotificationsSample/src/main/res/drawable-xhdpi/ic_launcher.png
similarity index 100%
rename from ui/notifications/BasicNotifications/BasicNotifications/src/main/res/drawable-xhdpi/ic_launcher.png
rename to ui/notifications/BasicNotifications/BasicNotificationsSample/src/main/res/drawable-xhdpi/ic_launcher.png
Binary files differ
diff --git a/ui/notifications/BasicNotifications/BasicNotifications/src/main/res/drawable-xhdpi/ic_stat_notification.png b/ui/notifications/BasicNotifications/BasicNotificationsSample/src/main/res/drawable-xhdpi/ic_stat_notification.png
similarity index 100%
rename from ui/notifications/BasicNotifications/BasicNotifications/src/main/res/drawable-xhdpi/ic_stat_notification.png
rename to ui/notifications/BasicNotifications/BasicNotificationsSample/src/main/res/drawable-xhdpi/ic_stat_notification.png
Binary files differ
diff --git a/ui/notifications/BasicNotifications/BasicNotifications/src/main/res/drawable-xxhdpi/ic_launcher.png b/ui/notifications/BasicNotifications/BasicNotificationsSample/src/main/res/drawable-xxhdpi/ic_launcher.png
similarity index 100%
rename from ui/notifications/BasicNotifications/BasicNotifications/src/main/res/drawable-xxhdpi/ic_launcher.png
rename to ui/notifications/BasicNotifications/BasicNotificationsSample/src/main/res/drawable-xxhdpi/ic_launcher.png
Binary files differ
diff --git a/ui/notifications/BasicNotifications/BasicNotifications/src/main/res/layout/main_layout.xml b/ui/notifications/BasicNotifications/BasicNotificationsSample/src/main/res/layout/sample_layout.xml
similarity index 100%
rename from ui/notifications/BasicNotifications/BasicNotifications/src/main/res/layout/main_layout.xml
rename to ui/notifications/BasicNotifications/BasicNotificationsSample/src/main/res/layout/sample_layout.xml
diff --git a/ui/notifications/BasicNotifications/BasicNotifications/src/main/res/values/strings.xml b/ui/notifications/BasicNotifications/BasicNotificationsSample/src/main/res/values/strings.xml
similarity index 96%
rename from ui/notifications/BasicNotifications/BasicNotifications/src/main/res/values/strings.xml
rename to ui/notifications/BasicNotifications/BasicNotificationsSample/src/main/res/values/strings.xml
index d9300ef..075f681 100644
--- a/ui/notifications/BasicNotifications/BasicNotifications/src/main/res/values/strings.xml
+++ b/ui/notifications/BasicNotifications/BasicNotificationsSample/src/main/res/values/strings.xml
@@ -16,7 +16,6 @@
 -->
 <resources>
 
-    <string name="app_name">Basic Notifications</string>
     <string name="description">
         Tap the button below to send a notification.\n\nThe notification\'s icon will immediately
         appear in the notification bar. Drag the notification bar open to see the full
diff --git a/ui/notifications/BasicNotifications/BasicNotificationsSample/tests/AndroidManifest.xml b/ui/notifications/BasicNotifications/BasicNotificationsSample/tests/AndroidManifest.xml
new file mode 100644
index 0000000..62c01e8
--- /dev/null
+++ b/ui/notifications/BasicNotifications/BasicNotificationsSample/tests/AndroidManifest.xml
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  Copyright (C) 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 name must be unique so suffix with "tests" so package loader doesn't ignore us -->
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+          package="com.example.android.basicnotifications.tests"
+          android:versionCode="1"
+          android:versionName="1.0">
+
+    <uses-sdk
+            android:minSdkVersion="18"
+            android:targetSdkVersion="19" />
+
+    <!-- We add an application tag here just so that we can indicate that
+         this package needs to link against the android.test library,
+         which is needed when building test cases. -->
+    <application>
+        <uses-library android:name="android.test.runner" />
+    </application>
+
+    <!--
+    Specifies the instrumentation test runner used to run the tests.
+    -->
+    <instrumentation
+            android:name="android.test.InstrumentationTestRunner"
+            android:targetPackage="com.example.android.basicnotifications"
+            android:label="Tests for com.example.android.basicnotifications" />
+
+</manifest>
\ No newline at end of file
diff --git a/ui/notifications/BasicNotifications/BasicNotificationsSample/tests/src/com/example/android/basicnotifications/tests/SampleTests.java b/ui/notifications/BasicNotifications/BasicNotificationsSample/tests/src/com/example/android/basicnotifications/tests/SampleTests.java
new file mode 100644
index 0000000..ffe5840
--- /dev/null
+++ b/ui/notifications/BasicNotifications/BasicNotificationsSample/tests/src/com/example/android/basicnotifications/tests/SampleTests.java
@@ -0,0 +1,79 @@
+/*
+* 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.
+*/
+
+
+
+/*
+* Copyright (C) 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.basicnotifications.tests;
+
+import com.example.android.basicnotifications.*;
+
+import android.test.ActivityInstrumentationTestCase2;
+
+/**
+* Tests for BasicNotifications sample.
+*/
+public class SampleTests extends ActivityInstrumentationTestCase2<MainActivity> {
+
+    private MainActivity mTestActivity;
+    private BasicNotificationsFragment mTestFragment;
+
+    public SampleTests() {
+        super(MainActivity.class);
+    }
+
+    @Override
+    protected void setUp() throws Exception {
+        super.setUp();
+
+        // Starts the activity under test using the default Intent with:
+        // action = {@link Intent#ACTION_MAIN}
+        // flags = {@link Intent#FLAG_ACTIVITY_NEW_TASK}
+        // All other fields are null or empty.
+        mTestActivity = getActivity();
+        mTestFragment = (BasicNotificationsFragment)
+            mTestActivity.getSupportFragmentManager().getFragments().get(1);
+    }
+
+    /**
+    * Test if the test fixture has been set up correctly.
+    */
+    public void testPreconditions() {
+        //Try to add a message to add context to your assertions. These messages will be shown if
+        //a tests fails and make it easy to understand why a test failed
+        assertNotNull("mTestActivity is null", mTestActivity);
+        assertNotNull("mTestFragment is null", mTestFragment);
+    }
+
+    /**
+    * Add more tests below.
+    */
+
+}
\ No newline at end of file
diff --git a/ui/notifications/BasicNotifications/README.txt b/ui/notifications/BasicNotifications/README.txt
deleted file mode 100644
index 38608df..0000000
--- a/ui/notifications/BasicNotifications/README.txt
+++ /dev/null
@@ -1,6 +0,0 @@
-Build Instructions
--------------------
-This sample uses the Gradle build system. To build this project, use the
-"gradlew build" command.
-
-To see a list of all available commands, run "gradlew tasks".
\ No newline at end of file
diff --git a/ui/notifications/BasicNotifications/build.gradle b/ui/notifications/BasicNotifications/build.gradle
index 036abc8..cca9ac3 100644
--- a/ui/notifications/BasicNotifications/build.gradle
+++ b/ui/notifications/BasicNotifications/build.gradle
@@ -1,8 +1,10 @@
-buildscript {
-    repositories {
-        mavenCentral()
-    }
-    dependencies {
-        classpath 'com.android.tools.build:gradle:0.5.+'
-    }
+// BEGIN_EXCLUDE
+import com.example.android.samples.build.SampleGenPlugin
+apply plugin: SampleGenPlugin
+
+samplegen {
+  pathToBuild "../../../../../build"
+  pathToSamplesCommon "../../../common"
 }
+apply from: "../../../../../build/build.gradle"
+// END_EXCLUDE
diff --git a/ui/notifications/BasicNotifications/buildSrc/build.gradle b/ui/notifications/BasicNotifications/buildSrc/build.gradle
new file mode 100644
index 0000000..e344a8c
--- /dev/null
+++ b/ui/notifications/BasicNotifications/buildSrc/build.gradle
@@ -0,0 +1,18 @@
+
+
+
+repositories {
+    mavenCentral()
+}
+dependencies {
+    compile 'org.freemarker:freemarker:2.3.20'
+}
+
+sourceSets {
+    main {
+        groovy {
+            srcDir new File(rootDir, "../../../../../../build/buildSrc/src/main/groovy")
+        }
+    }
+}
+
diff --git a/ui/notifications/BasicNotifications/gradle/wrapper/gradle-wrapper.properties b/ui/notifications/BasicNotifications/gradle/wrapper/gradle-wrapper.properties
index 055ba6f..861eddc 100644
--- a/ui/notifications/BasicNotifications/gradle/wrapper/gradle-wrapper.properties
+++ b/ui/notifications/BasicNotifications/gradle/wrapper/gradle-wrapper.properties
@@ -1,7 +1,6 @@
-#
-#Mon Jul 22 11:40:20 PDT 2013
+#Wed Apr 10 15:27:10 PDT 2013
 distributionBase=GRADLE_USER_HOME
 distributionPath=wrapper/dists
 zipStoreBase=GRADLE_USER_HOME
 zipStorePath=wrapper/dists
-distributionUrl=http\://services.gradle.org/distributions/gradle-1.6-bin.zip
+distributionUrl=http\://services.gradle.org/distributions/gradle-1.8-bin.zip
diff --git a/ui/notifications/BasicNotifications/settings.gradle b/ui/notifications/BasicNotifications/settings.gradle
index 6f0df94..b33d67f 100644
--- a/ui/notifications/BasicNotifications/settings.gradle
+++ b/ui/notifications/BasicNotifications/settings.gradle
@@ -1 +1,4 @@
-include ':BasicNotifications'
+
+
+
+include 'BasicNotificationsSample'
diff --git a/ui/notifications/BasicNotifications/template-params.xml b/ui/notifications/BasicNotifications/template-params.xml
new file mode 100644
index 0000000..7118c24
--- /dev/null
+++ b/ui/notifications/BasicNotifications/template-params.xml
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ 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.
+-->
+
+<sample>
+    <name>BasicNotifications</name>
+    <group>UI</group>
+    <package>com.example.android.basicnotifications</package>
+    <!-- change minSdk if needed-->
+    <minSdk>8</minSdk>
+
+    <strings>
+        <intro>
+            <![CDATA[
+            This sample demonstrates how to display events in the system\'s notification bar. The
+            NotificationCompat API is used for compatibility with older devices, running Android
+            2.2 (Froyo) or newer.
+            ]]>
+        </intro>
+    </strings>
+
+    <template src="base"/>
+</sample>
diff --git a/ui/notifications/CustomNotifications/CustomNotifications/build.gradle b/ui/notifications/CustomNotifications/CustomNotifications/build.gradle
deleted file mode 100644
index 47fc855..0000000
--- a/ui/notifications/CustomNotifications/CustomNotifications/build.gradle
+++ /dev/null
@@ -1,10 +0,0 @@
-apply plugin: 'android'
-
-dependencies {
-    compile 'com.android.support:support-v4:18.0.0+'
-}
-
-android {
-    compileSdkVersion 18
-    buildToolsVersion "18.0.0"
-}
diff --git a/ui/notifications/CustomNotifications/CustomNotifications/src/main/AndroidManifest.xml b/ui/notifications/CustomNotifications/CustomNotifications/src/main/AndroidManifest.xml
deleted file mode 100644
index 8821b1a..0000000
--- a/ui/notifications/CustomNotifications/CustomNotifications/src/main/AndroidManifest.xml
+++ /dev/null
@@ -1,42 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-  * Copyright (C) 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.
-  -->
-
-<manifest xmlns:android="http://schemas.android.com/apk/res/android"
-    package="com.example.android.customnotifications"
-    android:versionCode="1"
-    android:versionName="1.0" >
-
-    <uses-sdk
-        android:minSdkVersion="4"
-        android:targetSdkVersion="18" />
-
-    <application
-        android:allowBackup="true"
-        android:icon="@drawable/ic_launcher"
-        android:label="@string/app_name"
-        android:theme="@style/AppTheme" >
-        <activity
-            android:name="com.example.android.customnotifications.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/ui/notifications/CustomNotifications/CustomNotifications/src/main/res/values-v11/styles.xml b/ui/notifications/CustomNotifications/CustomNotifications/src/main/res/values-v11/styles.xml
deleted file mode 100644
index b454dee..0000000
--- a/ui/notifications/CustomNotifications/CustomNotifications/src/main/res/values-v11/styles.xml
+++ /dev/null
@@ -1,26 +0,0 @@
-<!--
-  * Copyright (C) 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.
-  -->
-
-<resources>
-
-    <!--
-        Base application theme for API 11+. This theme completely replaces
-        AppBaseTheme from res/values/styles.xml on API 11+ devices.
-    -->
-    <style name="AppBaseTheme" parent="android:Theme.Holo.Light.DarkActionBar">
-        <!-- API 11 theme customizations can go here. -->
-    </style>
-
-</resources>
diff --git a/ui/notifications/CustomNotifications/CustomNotifications/src/main/res/values-v14/styles.xml b/ui/notifications/CustomNotifications/CustomNotifications/src/main/res/values-v14/styles.xml
deleted file mode 100644
index 1cf1112..0000000
--- a/ui/notifications/CustomNotifications/CustomNotifications/src/main/res/values-v14/styles.xml
+++ /dev/null
@@ -1,27 +0,0 @@
-<!--
-  * Copyright (C) 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.
-  -->
-
-<resources>
-
-    <!--
-        Base application theme for API 14+. This theme completely replaces
-        AppBaseTheme from BOTH res/values/styles.xml and
-        res/values-v11/styles.xml on API 14+ devices.
-    -->
-    <style name="AppBaseTheme" parent="android:Theme.Holo.Light.DarkActionBar">
-        <!-- API 14 theme customizations can go here. -->
-    </style>
-
-</resources>
diff --git a/ui/notifications/CustomNotifications/CustomNotifications/src/main/res/values/styles.xml b/ui/notifications/CustomNotifications/CustomNotifications/src/main/res/values/styles.xml
deleted file mode 100644
index eca4340..0000000
--- a/ui/notifications/CustomNotifications/CustomNotifications/src/main/res/values/styles.xml
+++ /dev/null
@@ -1,39 +0,0 @@
-<!--
-  * Copyright (C) 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.
-  -->
-
-<resources>
-
-    <!--
-        Base application theme, dependent on API level. This theme is replaced
-        by AppBaseTheme from res/values-vXX/styles.xml on newer devices.
-    -->
-    <style name="AppBaseTheme" parent="android:Theme.Light">
-        <!--
-            Theme customizations available in newer API levels can go in
-            res/values-vXX/styles.xml, while customizations related to
-            backward-compatibility can go here.
-        -->
-    </style>
-
-    <!-- Application theme. -->
-    <style name="AppTheme" parent="AppBaseTheme">
-        <!-- All customizations that are NOT specific to a particular API-level can go here. -->
-    </style>
-
-    <style name="NotificationContent" parent="@android:style/TextAppearance.Small">
-        <item name="android:textColor">?android:attr/textColorPrimaryInverse</item>
-    </style>
-
-</resources>
diff --git a/ui/notifications/CustomNotifications/CustomNotificationsSample/.gitignore b/ui/notifications/CustomNotifications/CustomNotificationsSample/.gitignore
new file mode 100644
index 0000000..6eb878d
--- /dev/null
+++ b/ui/notifications/CustomNotifications/CustomNotificationsSample/.gitignore
@@ -0,0 +1,16 @@
+# 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.
+src/template/
+src/common/
+build.gradle
diff --git a/connectivity/sync/BasicSyncAdapter/BasicSyncAdapterTests/proguard-project.txt b/ui/notifications/CustomNotifications/CustomNotificationsSample/proguard-project.txt
similarity index 91%
copy from connectivity/sync/BasicSyncAdapter/BasicSyncAdapterTests/proguard-project.txt
copy to ui/notifications/CustomNotifications/CustomNotificationsSample/proguard-project.txt
index f2fe155..0d8f171 100644
--- a/connectivity/sync/BasicSyncAdapter/BasicSyncAdapterTests/proguard-project.txt
+++ b/ui/notifications/CustomNotifications/CustomNotificationsSample/proguard-project.txt
@@ -1,4 +1,4 @@
-# To enable ProGuard in your project, edit project.properties
+ To enable ProGuard in your project, edit project.properties
 # to define the proguard.config property as described in that file.
 #
 # Add project specific ProGuard rules here.
diff --git a/ui/accessibility/BasicAccessibility/BasicAccessibility/src/main/AndroidManifest.xml b/ui/notifications/CustomNotifications/CustomNotificationsSample/src/main/AndroidManifest.xml
similarity index 72%
copy from ui/accessibility/BasicAccessibility/BasicAccessibility/src/main/AndroidManifest.xml
copy to ui/notifications/CustomNotifications/CustomNotificationsSample/src/main/AndroidManifest.xml
index 3c0e66a..b20a411 100644
--- a/ui/accessibility/BasicAccessibility/BasicAccessibility/src/main/AndroidManifest.xml
+++ b/ui/notifications/CustomNotifications/CustomNotificationsSample/src/main/AndroidManifest.xml
@@ -1,12 +1,12 @@
-<?xml version="1.0" encoding="utf-8"?>
+<?xml version="1.0" encoding="UTF-8"?>
 <!--
- Copyright (C) 2013 The Android Open Source Project
+ 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
+     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,
@@ -15,14 +15,16 @@
  limitations under the License.
 -->
 
+
+
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
-    package="com.example.android.ui.accessibility.BasicAccessibility"
+    package="com.example.android.customnotifications"
     android:versionCode="1"
-    android:versionName="1.0" >
+    android:versionName="1.0">
 
     <uses-sdk
-        android:minSdkVersion="11"
-        android:targetSdkVersion="16" />
+        android:minSdkVersion="4"
+        android:targetSdkVersion="18" />
 
     <application
         android:allowBackup="true"
@@ -30,10 +32,11 @@
         android:label="@string/app_name"
         android:theme="@style/AppTheme" >
         <activity
-            android:name="com.example.android.ui.accessibility.BasicAccessibility.MainActivity"
+            android:name="com.example.android.customnotifications.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>
diff --git a/ui/notifications/CustomNotifications/CustomNotifications/src/main/java/com/example/android/customnotifications/MainActivity.java b/ui/notifications/CustomNotifications/CustomNotificationsSample/src/main/java/com/example/android/customnotifications/MainActivity.java
similarity index 91%
rename from ui/notifications/CustomNotifications/CustomNotifications/src/main/java/com/example/android/customnotifications/MainActivity.java
rename to ui/notifications/CustomNotifications/CustomNotificationsSample/src/main/java/com/example/android/customnotifications/MainActivity.java
index eae95f1..57a4315 100644
--- a/ui/notifications/CustomNotifications/CustomNotifications/src/main/java/com/example/android/customnotifications/MainActivity.java
+++ b/ui/notifications/CustomNotifications/CustomNotificationsSample/src/main/java/com/example/android/customnotifications/MainActivity.java
@@ -35,11 +35,11 @@
      *
      * <p>On API level 16 and above a big content view is also defined that is used for the
      * 'expanded' notification. The notification is created by the NotificationCompat.Builder.
-     * The expanded content view is set directly on the {@link Notification} once it has been build.
-     * (See {@link Notification#bigContentView}.) </p>
+     * The expanded content view is set directly on the {@link android.app.Notification} once it has been build.
+     * (See {@link android.app.Notification#bigContentView}.) </p>
      *
-     * <p>The content views are inflated as {@link RemoteViews} directly from their XML layout
-     * definitions using {@link RemoteViews#RemoteViews(String, int)}.</p>
+     * <p>The content views are inflated as {@link android.widget.RemoteViews} directly from their XML layout
+     * definitions using {@link android.widget.RemoteViews#RemoteViews(String, int)}.</p>
      */
     private void createNotification() {
         // BEGIN_INCLUDE(notificationCompat)
@@ -109,7 +109,7 @@
     @Override
     protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
-        setContentView(R.layout.activity_main);
+        setContentView(R.layout.sample_main);
     }
 
     /**
diff --git a/ui/notifications/CustomNotifications/CustomNotifications/src/main/res/drawable-hdpi-v11/ic_stat_custom.png b/ui/notifications/CustomNotifications/CustomNotificationsSample/src/main/res/drawable-hdpi-v11/ic_stat_custom.png
similarity index 100%
rename from ui/notifications/CustomNotifications/CustomNotifications/src/main/res/drawable-hdpi-v11/ic_stat_custom.png
rename to ui/notifications/CustomNotifications/CustomNotificationsSample/src/main/res/drawable-hdpi-v11/ic_stat_custom.png
Binary files differ
diff --git a/ui/notifications/CustomNotifications/CustomNotifications/src/main/res/drawable-hdpi-v9/ic_stat_custom.png b/ui/notifications/CustomNotifications/CustomNotificationsSample/src/main/res/drawable-hdpi-v9/ic_stat_custom.png
similarity index 100%
rename from ui/notifications/CustomNotifications/CustomNotifications/src/main/res/drawable-hdpi-v9/ic_stat_custom.png
rename to ui/notifications/CustomNotifications/CustomNotificationsSample/src/main/res/drawable-hdpi-v9/ic_stat_custom.png
Binary files differ
diff --git a/ui/notifications/CustomNotifications/CustomNotifications/src/main/res/drawable-hdpi/ic_launcher.png b/ui/notifications/CustomNotifications/CustomNotificationsSample/src/main/res/drawable-hdpi/ic_launcher.png
similarity index 100%
rename from ui/notifications/CustomNotifications/CustomNotifications/src/main/res/drawable-hdpi/ic_launcher.png
rename to ui/notifications/CustomNotifications/CustomNotificationsSample/src/main/res/drawable-hdpi/ic_launcher.png
Binary files differ
diff --git a/ui/notifications/CustomNotifications/CustomNotifications/src/main/res/drawable-hdpi/ic_stat_custom.png b/ui/notifications/CustomNotifications/CustomNotificationsSample/src/main/res/drawable-hdpi/ic_stat_custom.png
similarity index 100%
rename from ui/notifications/CustomNotifications/CustomNotifications/src/main/res/drawable-hdpi/ic_stat_custom.png
rename to ui/notifications/CustomNotifications/CustomNotificationsSample/src/main/res/drawable-hdpi/ic_stat_custom.png
Binary files differ
diff --git a/ui/notifications/CustomNotifications/CustomNotifications/src/main/res/drawable-ldpi-v11/ic_stat_custom.png b/ui/notifications/CustomNotifications/CustomNotificationsSample/src/main/res/drawable-ldpi-v11/ic_stat_custom.png
similarity index 100%
rename from ui/notifications/CustomNotifications/CustomNotifications/src/main/res/drawable-ldpi-v11/ic_stat_custom.png
rename to ui/notifications/CustomNotifications/CustomNotificationsSample/src/main/res/drawable-ldpi-v11/ic_stat_custom.png
Binary files differ
diff --git a/ui/notifications/CustomNotifications/CustomNotifications/src/main/res/drawable-ldpi-v9/ic_stat_custom.png b/ui/notifications/CustomNotifications/CustomNotificationsSample/src/main/res/drawable-ldpi-v9/ic_stat_custom.png
similarity index 100%
rename from ui/notifications/CustomNotifications/CustomNotifications/src/main/res/drawable-ldpi-v9/ic_stat_custom.png
rename to ui/notifications/CustomNotifications/CustomNotificationsSample/src/main/res/drawable-ldpi-v9/ic_stat_custom.png
Binary files differ
diff --git a/ui/notifications/CustomNotifications/CustomNotifications/src/main/res/drawable-mdpi-v11/ic_stat_custom.png b/ui/notifications/CustomNotifications/CustomNotificationsSample/src/main/res/drawable-mdpi-v11/ic_stat_custom.png
similarity index 100%
rename from ui/notifications/CustomNotifications/CustomNotifications/src/main/res/drawable-mdpi-v11/ic_stat_custom.png
rename to ui/notifications/CustomNotifications/CustomNotificationsSample/src/main/res/drawable-mdpi-v11/ic_stat_custom.png
Binary files differ
diff --git a/ui/notifications/CustomNotifications/CustomNotifications/src/main/res/drawable-mdpi-v9/ic_stat_custom.png b/ui/notifications/CustomNotifications/CustomNotificationsSample/src/main/res/drawable-mdpi-v9/ic_stat_custom.png
similarity index 100%
rename from ui/notifications/CustomNotifications/CustomNotifications/src/main/res/drawable-mdpi-v9/ic_stat_custom.png
rename to ui/notifications/CustomNotifications/CustomNotificationsSample/src/main/res/drawable-mdpi-v9/ic_stat_custom.png
Binary files differ
diff --git a/ui/notifications/CustomNotifications/CustomNotifications/src/main/res/drawable-mdpi/ic_launcher.png b/ui/notifications/CustomNotifications/CustomNotificationsSample/src/main/res/drawable-mdpi/ic_launcher.png
similarity index 100%
rename from ui/notifications/CustomNotifications/CustomNotifications/src/main/res/drawable-mdpi/ic_launcher.png
rename to ui/notifications/CustomNotifications/CustomNotificationsSample/src/main/res/drawable-mdpi/ic_launcher.png
Binary files differ
diff --git a/ui/notifications/CustomNotifications/CustomNotifications/src/main/res/drawable-mdpi/ic_stat_custom.png b/ui/notifications/CustomNotifications/CustomNotificationsSample/src/main/res/drawable-mdpi/ic_stat_custom.png
similarity index 100%
rename from ui/notifications/CustomNotifications/CustomNotifications/src/main/res/drawable-mdpi/ic_stat_custom.png
rename to ui/notifications/CustomNotifications/CustomNotificationsSample/src/main/res/drawable-mdpi/ic_stat_custom.png
Binary files differ
diff --git a/ui/notifications/CustomNotifications/CustomNotifications/src/main/res/drawable-xhdpi-v11/ic_stat_custom.png b/ui/notifications/CustomNotifications/CustomNotificationsSample/src/main/res/drawable-xhdpi-v11/ic_stat_custom.png
similarity index 100%
rename from ui/notifications/CustomNotifications/CustomNotifications/src/main/res/drawable-xhdpi-v11/ic_stat_custom.png
rename to ui/notifications/CustomNotifications/CustomNotificationsSample/src/main/res/drawable-xhdpi-v11/ic_stat_custom.png
Binary files differ
diff --git a/ui/notifications/CustomNotifications/CustomNotifications/src/main/res/drawable-xhdpi-v9/ic_stat_custom.png b/ui/notifications/CustomNotifications/CustomNotificationsSample/src/main/res/drawable-xhdpi-v9/ic_stat_custom.png
similarity index 100%
rename from ui/notifications/CustomNotifications/CustomNotifications/src/main/res/drawable-xhdpi-v9/ic_stat_custom.png
rename to ui/notifications/CustomNotifications/CustomNotificationsSample/src/main/res/drawable-xhdpi-v9/ic_stat_custom.png
Binary files differ
diff --git a/ui/notifications/CustomNotifications/CustomNotifications/src/main/res/drawable-xhdpi/ic_launcher.png b/ui/notifications/CustomNotifications/CustomNotificationsSample/src/main/res/drawable-xhdpi/ic_launcher.png
similarity index 100%
rename from ui/notifications/CustomNotifications/CustomNotifications/src/main/res/drawable-xhdpi/ic_launcher.png
rename to ui/notifications/CustomNotifications/CustomNotificationsSample/src/main/res/drawable-xhdpi/ic_launcher.png
Binary files differ
diff --git a/ui/notifications/CustomNotifications/CustomNotifications/src/main/res/drawable-xhdpi/ic_stat_custom.png b/ui/notifications/CustomNotifications/CustomNotificationsSample/src/main/res/drawable-xhdpi/ic_stat_custom.png
similarity index 100%
rename from ui/notifications/CustomNotifications/CustomNotifications/src/main/res/drawable-xhdpi/ic_stat_custom.png
rename to ui/notifications/CustomNotifications/CustomNotificationsSample/src/main/res/drawable-xhdpi/ic_stat_custom.png
Binary files differ
diff --git a/ui/notifications/CustomNotifications/CustomNotifications/src/main/res/drawable-xhdpi/robot.png b/ui/notifications/CustomNotifications/CustomNotificationsSample/src/main/res/drawable-xhdpi/robot.png
similarity index 100%
rename from ui/notifications/CustomNotifications/CustomNotifications/src/main/res/drawable-xhdpi/robot.png
rename to ui/notifications/CustomNotifications/CustomNotificationsSample/src/main/res/drawable-xhdpi/robot.png
Binary files differ
diff --git a/ui/notifications/CustomNotifications/CustomNotifications/src/main/res/drawable-xhdpi/robot_expanded.png b/ui/notifications/CustomNotifications/CustomNotificationsSample/src/main/res/drawable-xhdpi/robot_expanded.png
similarity index 100%
rename from ui/notifications/CustomNotifications/CustomNotifications/src/main/res/drawable-xhdpi/robot_expanded.png
rename to ui/notifications/CustomNotifications/CustomNotificationsSample/src/main/res/drawable-xhdpi/robot_expanded.png
Binary files differ
diff --git a/ui/notifications/CustomNotifications/CustomNotifications/src/main/res/drawable-xxhdpi/ic_launcher.png b/ui/notifications/CustomNotifications/CustomNotificationsSample/src/main/res/drawable-xxhdpi/ic_launcher.png
similarity index 100%
rename from ui/notifications/CustomNotifications/CustomNotifications/src/main/res/drawable-xxhdpi/ic_launcher.png
rename to ui/notifications/CustomNotifications/CustomNotificationsSample/src/main/res/drawable-xxhdpi/ic_launcher.png
Binary files differ
diff --git a/ui/notifications/CustomNotifications/CustomNotifications/src/main/res/layout/notification.xml b/ui/notifications/CustomNotifications/CustomNotificationsSample/src/main/res/layout/notification.xml
similarity index 100%
rename from ui/notifications/CustomNotifications/CustomNotifications/src/main/res/layout/notification.xml
rename to ui/notifications/CustomNotifications/CustomNotificationsSample/src/main/res/layout/notification.xml
diff --git a/ui/notifications/CustomNotifications/CustomNotifications/src/main/res/layout/notification_expanded.xml b/ui/notifications/CustomNotifications/CustomNotificationsSample/src/main/res/layout/notification_expanded.xml
similarity index 100%
rename from ui/notifications/CustomNotifications/CustomNotifications/src/main/res/layout/notification_expanded.xml
rename to ui/notifications/CustomNotifications/CustomNotificationsSample/src/main/res/layout/notification_expanded.xml
diff --git a/ui/notifications/CustomNotifications/CustomNotifications/src/main/res/layout/activity_main.xml b/ui/notifications/CustomNotifications/CustomNotificationsSample/src/main/res/layout/sample_main.xml
similarity index 100%
rename from ui/notifications/CustomNotifications/CustomNotifications/src/main/res/layout/activity_main.xml
rename to ui/notifications/CustomNotifications/CustomNotificationsSample/src/main/res/layout/sample_main.xml
diff --git a/ui/notifications/CustomNotifications/CustomNotifications/src/main/res/values-sw720dp-land/dimens.xml b/ui/notifications/CustomNotifications/CustomNotificationsSample/src/main/res/values-sw720dp-land/dimens.xml
similarity index 100%
rename from ui/notifications/CustomNotifications/CustomNotifications/src/main/res/values-sw720dp-land/dimens.xml
rename to ui/notifications/CustomNotifications/CustomNotificationsSample/src/main/res/values-sw720dp-land/dimens.xml
diff --git a/ui/notifications/CustomNotifications/CustomNotifications/src/main/res/values-v9/styles.xml b/ui/notifications/CustomNotifications/CustomNotificationsSample/src/main/res/values-v9/styles.xml
similarity index 100%
rename from ui/notifications/CustomNotifications/CustomNotifications/src/main/res/values-v9/styles.xml
rename to ui/notifications/CustomNotifications/CustomNotificationsSample/src/main/res/values-v9/styles.xml
diff --git a/ui/notifications/CustomNotifications/CustomNotifications/src/main/res/values/dimens.xml b/ui/notifications/CustomNotifications/CustomNotificationsSample/src/main/res/values/dimens.xml
similarity index 100%
rename from ui/notifications/CustomNotifications/CustomNotifications/src/main/res/values/dimens.xml
rename to ui/notifications/CustomNotifications/CustomNotificationsSample/src/main/res/values/dimens.xml
diff --git a/ui/notifications/CustomNotifications/CustomNotifications/src/main/res/values/strings.xml b/ui/notifications/CustomNotifications/CustomNotificationsSample/src/main/res/values/strings.xml
similarity index 96%
rename from ui/notifications/CustomNotifications/CustomNotifications/src/main/res/values/strings.xml
rename to ui/notifications/CustomNotifications/CustomNotificationsSample/src/main/res/values/strings.xml
index 3247f39..a766441 100644
--- a/ui/notifications/CustomNotifications/CustomNotifications/src/main/res/values/strings.xml
+++ b/ui/notifications/CustomNotifications/CustomNotificationsSample/src/main/res/values/strings.xml
@@ -16,7 +16,6 @@
 
 <resources>
 
-    <string name="app_name">CustomNotifications</string>
     <string name="expanded">I\'m the expanded notification.\nCollapse me!</string>
     <string name="collapsed">I\'m the collapsed notification.\nCreated at: %s</string>
     <string name="show_notification">Show Notification</string>
diff --git a/ui/notifications/CustomNotifications/CustomNotifications/src/main/res/values-sw600dp/dimens.xml b/ui/notifications/CustomNotifications/CustomNotificationsSample/src/main/res/values/styles.xml
similarity index 77%
rename from ui/notifications/CustomNotifications/CustomNotifications/src/main/res/values-sw600dp/dimens.xml
rename to ui/notifications/CustomNotifications/CustomNotificationsSample/src/main/res/values/styles.xml
index eb7d98a..1d3d45b 100644
--- a/ui/notifications/CustomNotifications/CustomNotifications/src/main/res/values-sw600dp/dimens.xml
+++ b/ui/notifications/CustomNotifications/CustomNotificationsSample/src/main/res/values/styles.xml
@@ -14,6 +14,9 @@
   -->
 
 <resources>
-    <!-- Customize dimensions originally defined in res/values/dimens.xml (such as
-         screen margins) for sw600dp devices (e.g. 7" tablets) here. -->
+
+    <style name="NotificationContent" parent="@android:style/TextAppearance.Small">
+        <item name="android:textColor">?android:attr/textColorPrimaryInverse</item>
+    </style>
+
 </resources>
diff --git a/ui/notifications/CustomNotifications/build.gradle b/ui/notifications/CustomNotifications/build.gradle
index 5a6276f..cca9ac3 100644
--- a/ui/notifications/CustomNotifications/build.gradle
+++ b/ui/notifications/CustomNotifications/build.gradle
@@ -1,13 +1,10 @@
-// Top-level build file where you can add configuration options common to all sub-projects/modules.     
-buildscript {
-    repositories {
-        mavenCentral()
-    }
-    dependencies {
-        classpath 'com.android.tools.build:gradle:0.5.+'
-    }
-}
+// BEGIN_EXCLUDE
+import com.example.android.samples.build.SampleGenPlugin
+apply plugin: SampleGenPlugin
 
-repositories {
-    mavenCentral()
+samplegen {
+  pathToBuild "../../../../../build"
+  pathToSamplesCommon "../../../common"
 }
+apply from: "../../../../../build/build.gradle"
+// END_EXCLUDE
diff --git a/ui/notifications/CustomNotifications/buildSrc/build.gradle b/ui/notifications/CustomNotifications/buildSrc/build.gradle
new file mode 100644
index 0000000..e344a8c
--- /dev/null
+++ b/ui/notifications/CustomNotifications/buildSrc/build.gradle
@@ -0,0 +1,18 @@
+
+
+
+repositories {
+    mavenCentral()
+}
+dependencies {
+    compile 'org.freemarker:freemarker:2.3.20'
+}
+
+sourceSets {
+    main {
+        groovy {
+            srcDir new File(rootDir, "../../../../../../build/buildSrc/src/main/groovy")
+        }
+    }
+}
+
diff --git a/connectivity/network/BasicNetworkDemo/gradle/wrapper/gradle-wrapper.jar b/ui/notifications/CustomNotifications/gradle/wrapper/gradle-wrapper.jar
similarity index 100%
copy from connectivity/network/BasicNetworkDemo/gradle/wrapper/gradle-wrapper.jar
copy to ui/notifications/CustomNotifications/gradle/wrapper/gradle-wrapper.jar
Binary files differ
diff --git a/connectivity/network/BasicNetworkDemo/gradle/wrapper/gradle-wrapper.properties b/ui/notifications/CustomNotifications/gradle/wrapper/gradle-wrapper.properties
similarity index 80%
copy from connectivity/network/BasicNetworkDemo/gradle/wrapper/gradle-wrapper.properties
copy to ui/notifications/CustomNotifications/gradle/wrapper/gradle-wrapper.properties
index 055ba6f..861eddc 100644
--- a/connectivity/network/BasicNetworkDemo/gradle/wrapper/gradle-wrapper.properties
+++ b/ui/notifications/CustomNotifications/gradle/wrapper/gradle-wrapper.properties
@@ -1,7 +1,6 @@
-#
-#Mon Jul 22 11:40:20 PDT 2013
+#Wed Apr 10 15:27:10 PDT 2013
 distributionBase=GRADLE_USER_HOME
 distributionPath=wrapper/dists
 zipStoreBase=GRADLE_USER_HOME
 zipStorePath=wrapper/dists
-distributionUrl=http\://services.gradle.org/distributions/gradle-1.6-bin.zip
+distributionUrl=http\://services.gradle.org/distributions/gradle-1.8-bin.zip
diff --git a/connectivity/network/BasicNetworkDemo/gradlew b/ui/notifications/CustomNotifications/gradlew
similarity index 100%
copy from connectivity/network/BasicNetworkDemo/gradlew
copy to ui/notifications/CustomNotifications/gradlew
diff --git a/connectivity/network/BasicNetworkDemo/gradlew.bat b/ui/notifications/CustomNotifications/gradlew.bat
similarity index 100%
copy from connectivity/network/BasicNetworkDemo/gradlew.bat
copy to ui/notifications/CustomNotifications/gradlew.bat
diff --git a/ui/notifications/CustomNotifications/settings.gradle b/ui/notifications/CustomNotifications/settings.gradle
index f19c616..71d4992 100644
--- a/ui/notifications/CustomNotifications/settings.gradle
+++ b/ui/notifications/CustomNotifications/settings.gradle
@@ -1 +1,4 @@
-include ':CustomNotifications'
+
+
+
+include 'CustomNotificationsSample'
diff --git a/ui/notifications/CustomNotifications/template-params.xml b/ui/notifications/CustomNotifications/template-params.xml
new file mode 100644
index 0000000..ff90ca3
--- /dev/null
+++ b/ui/notifications/CustomNotifications/template-params.xml
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ 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.
+-->
+<sample>
+    <name>CustomNotifications</name>
+    <group>UI</group>
+    <package>com.example.android.customnotifications</package>
+
+    <!-- change minSdk if needed-->
+    <minSdk>4</minSdk>
+
+    <strings>
+        <intro>
+            <![CDATA[
+            This sample demonstrates notifications with custom content views.
+            ]]>
+        </intro>
+    </strings>
+
+    <template src="base"/>
+
+</sample>
diff --git a/ui/views/HorizontalPaging/HorizontalPaging/build.gradle b/ui/views/HorizontalPaging/HorizontalPaging/build.gradle
deleted file mode 100644
index 0baece9..0000000
--- a/ui/views/HorizontalPaging/HorizontalPaging/build.gradle
+++ /dev/null
@@ -1,10 +0,0 @@
-apply plugin: 'android'
-
-dependencies {
-    compile "com.android.support:support-v4:18.0.+"
-}
-
-android {
-    compileSdkVersion 18
-    buildToolsVersion "18.0.0"
-}
diff --git a/ui/views/HorizontalPaging/HorizontalPaging/src/main/AndroidManifest.xml b/ui/views/HorizontalPaging/HorizontalPaging/src/main/AndroidManifest.xml
deleted file mode 100644
index 4359521..0000000
--- a/ui/views/HorizontalPaging/HorizontalPaging/src/main/AndroidManifest.xml
+++ /dev/null
@@ -1,30 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<manifest xmlns:android="http://schemas.android.com/apk/res/android"
-    package="com.example.android.horizontalpaging"
-    android:versionCode="1"
-    android:versionName="1.0" >
-
-    <!-- While ViewPager will work on API 4 or above, tabs require an ActionBar. ActionBar is only
-         available in API 11 or above. -->
-    <uses-sdk
-        android:minSdkVersion="11"
-        android:targetSdkVersion="16" />
-
-    <application
-        android:allowBackup="true"
-        android:icon="@drawable/ic_launcher"
-        android:label="@string/app_name"
-        android:theme="@style/AppTheme" >
-    <!-- This is a standard Activity invocation for MainActivity. -->
-    <activity
-        android:name="com.example.android.horizontalpaging.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/ui/views/HorizontalPaging/HorizontalPaging/src/main/res/values-sw600dp/dimens.xml b/ui/views/HorizontalPaging/HorizontalPaging/src/main/res/values-sw600dp/dimens.xml
deleted file mode 100644
index 886b05f..0000000
--- a/ui/views/HorizontalPaging/HorizontalPaging/src/main/res/values-sw600dp/dimens.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<resources>
-    <!-- Customize dimensions originally defined in res/values/dimens.xml (such as
-         screen margins) for sw600dp devices (e.g. 7" tablets) here. -->
-</resources>
diff --git a/ui/views/HorizontalPaging/HorizontalPaging/src/main/res/values-v11/styles.xml b/ui/views/HorizontalPaging/HorizontalPaging/src/main/res/values-v11/styles.xml
deleted file mode 100644
index 3c02242..0000000
--- a/ui/views/HorizontalPaging/HorizontalPaging/src/main/res/values-v11/styles.xml
+++ /dev/null
@@ -1,11 +0,0 @@
-<resources>
-
-    <!--
-        Base application theme for API 11+. This theme completely replaces
-        AppBaseTheme from res/values/styles.xml on API 11+ devices.
-    -->
-    <style name="AppBaseTheme" parent="android:Theme.Holo.Light">
-        <!-- API 11 theme customizations can go here. -->
-    </style>
-
-</resources>
diff --git a/ui/views/HorizontalPaging/HorizontalPaging/src/main/res/values/styles.xml b/ui/views/HorizontalPaging/HorizontalPaging/src/main/res/values/styles.xml
deleted file mode 100644
index 6ce89c7..0000000
--- a/ui/views/HorizontalPaging/HorizontalPaging/src/main/res/values/styles.xml
+++ /dev/null
@@ -1,20 +0,0 @@
-<resources>
-
-    <!--
-        Base application theme, dependent on API level. This theme is replaced
-        by AppBaseTheme from res/values-vXX/styles.xml on newer devices.
-    -->
-    <style name="AppBaseTheme" parent="android:Theme.Light">
-        <!--
-            Theme customizations available in newer API levels can go in
-            res/values-vXX/styles.xml, while customizations related to
-            backward-compatibility can go here.
-        -->
-    </style>
-
-    <!-- Application theme. -->
-    <style name="AppTheme" parent="AppBaseTheme">
-        <!-- All customizations that are NOT specific to a particular API-level can go here. -->
-    </style>
-
-</resources>
diff --git a/ui/views/HorizontalPaging/HorizontalPagingSample/.gitignore b/ui/views/HorizontalPaging/HorizontalPagingSample/.gitignore
new file mode 100644
index 0000000..6eb878d
--- /dev/null
+++ b/ui/views/HorizontalPaging/HorizontalPagingSample/.gitignore
@@ -0,0 +1,16 @@
+# 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.
+src/template/
+src/common/
+build.gradle
diff --git a/connectivity/sync/BasicSyncAdapter/BasicSyncAdapterTests/proguard-project.txt b/ui/views/HorizontalPaging/HorizontalPagingSample/proguard-project.txt
similarity index 91%
copy from connectivity/sync/BasicSyncAdapter/BasicSyncAdapterTests/proguard-project.txt
copy to ui/views/HorizontalPaging/HorizontalPagingSample/proguard-project.txt
index f2fe155..0d8f171 100644
--- a/connectivity/sync/BasicSyncAdapter/BasicSyncAdapterTests/proguard-project.txt
+++ b/ui/views/HorizontalPaging/HorizontalPagingSample/proguard-project.txt
@@ -1,4 +1,4 @@
-# To enable ProGuard in your project, edit project.properties
+ To enable ProGuard in your project, edit project.properties
 # to define the proguard.config property as described in that file.
 #
 # Add project specific ProGuard rules here.
diff --git a/ui/accessibility/BasicAccessibility/BasicAccessibility/src/main/AndroidManifest.xml b/ui/views/HorizontalPaging/HorizontalPagingSample/src/main/AndroidManifest.xml
similarity index 71%
copy from ui/accessibility/BasicAccessibility/BasicAccessibility/src/main/AndroidManifest.xml
copy to ui/views/HorizontalPaging/HorizontalPagingSample/src/main/AndroidManifest.xml
index 3c0e66a..33b9e15 100644
--- a/ui/accessibility/BasicAccessibility/BasicAccessibility/src/main/AndroidManifest.xml
+++ b/ui/views/HorizontalPaging/HorizontalPagingSample/src/main/AndroidManifest.xml
@@ -1,12 +1,12 @@
-<?xml version="1.0" encoding="utf-8"?>
+<?xml version="1.0" encoding="UTF-8"?>
 <!--
- Copyright (C) 2013 The Android Open Source Project
+ 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
+     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,
@@ -16,10 +16,12 @@
 -->
 
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
-    package="com.example.android.ui.accessibility.BasicAccessibility"
+    package="com.example.android.horizontalpaging"
     android:versionCode="1"
     android:versionName="1.0" >
 
+    <!-- While ViewPager will work on API 4 or above, tabs require an ActionBar. ActionBar is only
+         available in API 11 or above. -->
     <uses-sdk
         android:minSdkVersion="11"
         android:targetSdkVersion="16" />
@@ -29,11 +31,13 @@
         android:icon="@drawable/ic_launcher"
         android:label="@string/app_name"
         android:theme="@style/AppTheme" >
+        <!-- This is a standard Activity invocation for MainActivity. -->
         <activity
-            android:name="com.example.android.ui.accessibility.BasicAccessibility.MainActivity"
+            android:name="com.example.android.horizontalpaging.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>
diff --git a/ui/views/HorizontalPaging/HorizontalPaging/src/main/java/com/example/android/horizontalpaging/MainActivity.java b/ui/views/HorizontalPaging/HorizontalPagingSample/src/main/java/com/example/android/horizontalpaging/MainActivity.java
similarity index 94%
rename from ui/views/HorizontalPaging/HorizontalPaging/src/main/java/com/example/android/horizontalpaging/MainActivity.java
rename to ui/views/HorizontalPaging/HorizontalPagingSample/src/main/java/com/example/android/horizontalpaging/MainActivity.java
index 2cdca42..fdd4495 100644
--- a/ui/views/HorizontalPaging/HorizontalPaging/src/main/java/com/example/android/horizontalpaging/MainActivity.java
+++ b/ui/views/HorizontalPaging/HorizontalPagingSample/src/main/java/com/example/android/horizontalpaging/MainActivity.java
@@ -1,7 +1,5 @@
 package com.example.android.horizontalpaging;
 
-import java.util.Locale;
-
 import android.app.ActionBar;
 import android.app.FragmentTransaction;
 import android.os.Bundle;
@@ -9,16 +7,14 @@
 import android.support.v4.app.FragmentActivity;
 import android.support.v4.app.FragmentManager;
 import android.support.v4.app.FragmentPagerAdapter;
-import android.support.v4.app.NavUtils;
 import android.support.v4.view.ViewPager;
-import android.view.Gravity;
 import android.view.LayoutInflater;
-import android.view.Menu;
-import android.view.MenuItem;
 import android.view.View;
 import android.view.ViewGroup;
 import android.widget.TextView;
 
+import java.util.Locale;
+
 public class MainActivity extends FragmentActivity implements ActionBar.TabListener {
 
     /**
@@ -37,7 +33,7 @@
     ViewPager mViewPager;
 
     /**
-     * Create the activity. Sets up an {@link ActionBar} with tabs, and then configures the
+     * Create the activity. Sets up an {@link android.app.ActionBar} with tabs, and then configures the
      * {@link ViewPager} contained inside R.layout.activity_main.
      *
      * <p>A {@link SectionsPagerAdapter} will be instantiated to hold the different pages of
@@ -51,7 +47,7 @@
     protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
         // Load the UI from res/layout/activity_main.xml
-        setContentView(R.layout.activity_main);
+        setContentView(R.layout.sample_main);
 
         // Set up the action bar. The navigation mode is set to NAVIGATION_MODE_TABS, which will
         // cause the ActionBar to render a set of tabs. Note that these tabs are *not* rendered
@@ -101,7 +97,7 @@
      * Update {@link ViewPager} after a tab has been selected in the ActionBar.
      *
      * @param tab Tab that was selected.
-     * @param fragmentTransaction A {@link FragmentTransaction} for queuing fragment operations to
+     * @param fragmentTransaction A {@link android.app.FragmentTransaction} for queuing fragment operations to
      *                            execute once this method returns. This FragmentTransaction does
      *                            not support being added to the back stack.
      */
@@ -114,14 +110,14 @@
     // END_INCLUDE (on_tab_selected)
 
     /**
-     * Unused. Required for {@link ActionBar.TabListener}.
+     * Unused. Required for {@link android.app.ActionBar.TabListener}.
      */
     @Override
     public void onTabUnselected(ActionBar.Tab tab, FragmentTransaction fragmentTransaction) {
     }
 
     /**
-     * Unused. Required for {@link ActionBar.TabListener}.
+     * Unused. Required for {@link android.app.ActionBar.TabListener}.
      */
     @Override
     public void onTabReselected(ActionBar.Tab tab, FragmentTransaction fragmentTransaction) {
diff --git a/ui/views/HorizontalPaging/HorizontalPaging/src/main/res/drawable-hdpi/ic_launcher.png b/ui/views/HorizontalPaging/HorizontalPagingSample/src/main/res/drawable-hdpi/ic_launcher.png
similarity index 100%
rename from ui/views/HorizontalPaging/HorizontalPaging/src/main/res/drawable-hdpi/ic_launcher.png
rename to ui/views/HorizontalPaging/HorizontalPagingSample/src/main/res/drawable-hdpi/ic_launcher.png
Binary files differ
diff --git a/ui/views/HorizontalPaging/HorizontalPaging/src/main/res/drawable-mdpi/ic_launcher.png b/ui/views/HorizontalPaging/HorizontalPagingSample/src/main/res/drawable-mdpi/ic_launcher.png
similarity index 100%
rename from ui/views/HorizontalPaging/HorizontalPaging/src/main/res/drawable-mdpi/ic_launcher.png
rename to ui/views/HorizontalPaging/HorizontalPagingSample/src/main/res/drawable-mdpi/ic_launcher.png
Binary files differ
diff --git a/ui/views/HorizontalPaging/HorizontalPaging/src/main/res/drawable-xhdpi/ic_launcher.png b/ui/views/HorizontalPaging/HorizontalPagingSample/src/main/res/drawable-xhdpi/ic_launcher.png
similarity index 100%
rename from ui/views/HorizontalPaging/HorizontalPaging/src/main/res/drawable-xhdpi/ic_launcher.png
rename to ui/views/HorizontalPaging/HorizontalPagingSample/src/main/res/drawable-xhdpi/ic_launcher.png
Binary files differ
diff --git a/ui/views/HorizontalPaging/HorizontalPaging/src/main/res/layout/fragment_main_dummy.xml b/ui/views/HorizontalPaging/HorizontalPagingSample/src/main/res/layout/fragment_main_dummy.xml
similarity index 100%
rename from ui/views/HorizontalPaging/HorizontalPaging/src/main/res/layout/fragment_main_dummy.xml
rename to ui/views/HorizontalPaging/HorizontalPagingSample/src/main/res/layout/fragment_main_dummy.xml
diff --git a/ui/views/HorizontalPaging/HorizontalPaging/src/main/res/layout/activity_main.xml b/ui/views/HorizontalPaging/HorizontalPagingSample/src/main/res/layout/sample_main.xml
similarity index 100%
rename from ui/views/HorizontalPaging/HorizontalPaging/src/main/res/layout/activity_main.xml
rename to ui/views/HorizontalPaging/HorizontalPagingSample/src/main/res/layout/sample_main.xml
diff --git a/ui/views/HorizontalPaging/HorizontalPaging/src/main/res/values/dimens.xml b/ui/views/HorizontalPaging/HorizontalPagingSample/src/main/res/values/dimens.xml
similarity index 100%
rename from ui/views/HorizontalPaging/HorizontalPaging/src/main/res/values/dimens.xml
rename to ui/views/HorizontalPaging/HorizontalPagingSample/src/main/res/values/dimens.xml
diff --git a/ui/views/HorizontalPaging/HorizontalPaging/src/main/res/values/strings.xml b/ui/views/HorizontalPaging/HorizontalPagingSample/src/main/res/values/strings.xml
similarity index 81%
rename from ui/views/HorizontalPaging/HorizontalPaging/src/main/res/values/strings.xml
rename to ui/views/HorizontalPaging/HorizontalPagingSample/src/main/res/values/strings.xml
index ec05e06..f9b4212 100644
--- a/ui/views/HorizontalPaging/HorizontalPaging/src/main/res/values/strings.xml
+++ b/ui/views/HorizontalPaging/HorizontalPagingSample/src/main/res/values/strings.xml
@@ -1,7 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources>
 
-    <string name="app_name">Horizontal Paging Sample</string>
     <string name="action_settings">Settings</string>
     <string name="title_section1">Section 1</string>
     <string name="title_section2">Section 2</string>
diff --git a/ui/views/HorizontalPaging/HorizontalPaging/src/main/res/values-sw720dp-land/dimens.xml b/ui/views/HorizontalPaging/HorizontalPagingSample/src/main/res/values/values-sw720dp-land/dimens.xml
similarity index 100%
rename from ui/views/HorizontalPaging/HorizontalPaging/src/main/res/values-sw720dp-land/dimens.xml
rename to ui/views/HorizontalPaging/HorizontalPagingSample/src/main/res/values/values-sw720dp-land/dimens.xml
diff --git a/ui/views/HorizontalPaging/HorizontalPagingSample/tests/AndroidManifest.xml b/ui/views/HorizontalPaging/HorizontalPagingSample/tests/AndroidManifest.xml
new file mode 100644
index 0000000..3f35ede
--- /dev/null
+++ b/ui/views/HorizontalPaging/HorizontalPagingSample/tests/AndroidManifest.xml
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  Copyright (C) 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 name must be unique so suffix with "tests" so package loader doesn't ignore us -->
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+          package="com.example.android.horizontalpaging.tests"
+          android:versionCode="1"
+          android:versionName="1.0">
+
+    <uses-sdk
+            android:minSdkVersion="18"
+            android:targetSdkVersion="19" />
+
+    <!-- We add an application tag here just so that we can indicate that
+         this package needs to link against the android.test library,
+         which is needed when building test cases. -->
+    <application>
+        <uses-library android:name="android.test.runner" />
+    </application>
+
+    <!--
+    Specifies the instrumentation test runner used to run the tests.
+    -->
+    <instrumentation
+            android:name="android.test.InstrumentationTestRunner"
+            android:targetPackage="com.example.android.horizontalpaging"
+            android:label="Tests for com.example.android.horizontalpaging" />
+
+</manifest>
\ No newline at end of file
diff --git a/ui/views/HorizontalPaging/HorizontalPagingSample/tests/src/com/example/android/horizontalpaging/tests/SampleTests.java b/ui/views/HorizontalPaging/HorizontalPagingSample/tests/src/com/example/android/horizontalpaging/tests/SampleTests.java
new file mode 100644
index 0000000..206eea9
--- /dev/null
+++ b/ui/views/HorizontalPaging/HorizontalPagingSample/tests/src/com/example/android/horizontalpaging/tests/SampleTests.java
@@ -0,0 +1,79 @@
+/*
+* 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.
+*/
+
+
+
+/*
+* Copyright (C) 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.horizontalpaging.tests;
+
+import com.example.android.horizontalpaging.*;
+
+import android.test.ActivityInstrumentationTestCase2;
+
+/**
+* Tests for HorizontalPaging sample.
+*/
+public class SampleTests extends ActivityInstrumentationTestCase2<MainActivity> {
+
+    private MainActivity mTestActivity;
+    private HorizontalPagingFragment mTestFragment;
+
+    public SampleTests() {
+        super(MainActivity.class);
+    }
+
+    @Override
+    protected void setUp() throws Exception {
+        super.setUp();
+
+        // Starts the activity under test using the default Intent with:
+        // action = {@link Intent#ACTION_MAIN}
+        // flags = {@link Intent#FLAG_ACTIVITY_NEW_TASK}
+        // All other fields are null or empty.
+        mTestActivity = getActivity();
+        mTestFragment = (HorizontalPagingFragment)
+            mTestActivity.getSupportFragmentManager().getFragments().get(1);
+    }
+
+    /**
+    * Test if the test fixture has been set up correctly.
+    */
+    public void testPreconditions() {
+        //Try to add a message to add context to your assertions. These messages will be shown if
+        //a tests fails and make it easy to understand why a test failed
+        assertNotNull("mTestActivity is null", mTestActivity);
+        assertNotNull("mTestFragment is null", mTestFragment);
+    }
+
+    /**
+    * Add more tests below.
+    */
+
+}
\ No newline at end of file
diff --git a/ui/views/HorizontalPaging/README.txt b/ui/views/HorizontalPaging/README.txt
deleted file mode 100644
index 38608df..0000000
--- a/ui/views/HorizontalPaging/README.txt
+++ /dev/null
@@ -1,6 +0,0 @@
-Build Instructions
--------------------
-This sample uses the Gradle build system. To build this project, use the
-"gradlew build" command.
-
-To see a list of all available commands, run "gradlew tasks".
\ No newline at end of file
diff --git a/ui/views/HorizontalPaging/build.gradle b/ui/views/HorizontalPaging/build.gradle
index 036abc8..cca9ac3 100644
--- a/ui/views/HorizontalPaging/build.gradle
+++ b/ui/views/HorizontalPaging/build.gradle
@@ -1,8 +1,10 @@
-buildscript {
-    repositories {
-        mavenCentral()
-    }
-    dependencies {
-        classpath 'com.android.tools.build:gradle:0.5.+'
-    }
+// BEGIN_EXCLUDE
+import com.example.android.samples.build.SampleGenPlugin
+apply plugin: SampleGenPlugin
+
+samplegen {
+  pathToBuild "../../../../../build"
+  pathToSamplesCommon "../../../common"
 }
+apply from: "../../../../../build/build.gradle"
+// END_EXCLUDE
diff --git a/ui/views/HorizontalPaging/buildSrc/build.gradle b/ui/views/HorizontalPaging/buildSrc/build.gradle
new file mode 100644
index 0000000..e344a8c
--- /dev/null
+++ b/ui/views/HorizontalPaging/buildSrc/build.gradle
@@ -0,0 +1,18 @@
+
+
+
+repositories {
+    mavenCentral()
+}
+dependencies {
+    compile 'org.freemarker:freemarker:2.3.20'
+}
+
+sourceSets {
+    main {
+        groovy {
+            srcDir new File(rootDir, "../../../../../../build/buildSrc/src/main/groovy")
+        }
+    }
+}
+
diff --git a/ui/views/HorizontalPaging/gradle/wrapper/gradle-wrapper.properties b/ui/views/HorizontalPaging/gradle/wrapper/gradle-wrapper.properties
index 055ba6f..861eddc 100644
--- a/ui/views/HorizontalPaging/gradle/wrapper/gradle-wrapper.properties
+++ b/ui/views/HorizontalPaging/gradle/wrapper/gradle-wrapper.properties
@@ -1,7 +1,6 @@
-#
-#Mon Jul 22 11:40:20 PDT 2013
+#Wed Apr 10 15:27:10 PDT 2013
 distributionBase=GRADLE_USER_HOME
 distributionPath=wrapper/dists
 zipStoreBase=GRADLE_USER_HOME
 zipStorePath=wrapper/dists
-distributionUrl=http\://services.gradle.org/distributions/gradle-1.6-bin.zip
+distributionUrl=http\://services.gradle.org/distributions/gradle-1.8-bin.zip
diff --git a/ui/views/HorizontalPaging/settings.gradle b/ui/views/HorizontalPaging/settings.gradle
index 892a596..f70f0f1 100644
--- a/ui/views/HorizontalPaging/settings.gradle
+++ b/ui/views/HorizontalPaging/settings.gradle
@@ -1 +1,4 @@
-include ':HorizontalPaging'
+
+
+
+include 'HorizontalPagingSample'
diff --git a/ui/views/HorizontalPaging/template-params.xml b/ui/views/HorizontalPaging/template-params.xml
new file mode 100644
index 0000000..e0546b1
--- /dev/null
+++ b/ui/views/HorizontalPaging/template-params.xml
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ 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.
+-->
+<sample>
+    <name>HorizontalPaging</name>
+    <group>UI</group>
+    <package>com.example.android.horizontalpaging</package>
+
+    <!-- change minSdk if needed-->
+    <minSdk>11</minSdk>
+
+    <strings>
+        <intro>
+            <![CDATA[
+            This sample demonstrates how to implement horizontal paging between fragments in
+            applications that use ActionBar, using a ViewPager widget.
+            ]]>
+        </intro>
+    </strings>
+
+    <template src="base"/>
+
+</sample>
diff --git a/ui/views/TextSwitcher/README.txt b/ui/views/TextSwitcher/README.txt
deleted file mode 100644
index 38608df..0000000
--- a/ui/views/TextSwitcher/README.txt
+++ /dev/null
@@ -1,6 +0,0 @@
-Build Instructions
--------------------
-This sample uses the Gradle build system. To build this project, use the
-"gradlew build" command.
-
-To see a list of all available commands, run "gradlew tasks".
\ No newline at end of file
diff --git a/ui/views/TextSwitcher/TextSwitcher/build.gradle b/ui/views/TextSwitcher/TextSwitcher/build.gradle
deleted file mode 100644
index 0baece9..0000000
--- a/ui/views/TextSwitcher/TextSwitcher/build.gradle
+++ /dev/null
@@ -1,10 +0,0 @@
-apply plugin: 'android'
-
-dependencies {
-    compile "com.android.support:support-v4:18.0.+"
-}
-
-android {
-    compileSdkVersion 18
-    buildToolsVersion "18.0.0"
-}
diff --git a/ui/views/TextSwitcher/TextSwitcher/src/main/res/values/styles.xml b/ui/views/TextSwitcher/TextSwitcher/src/main/res/values/styles.xml
deleted file mode 100644
index 27efa47..0000000
--- a/ui/views/TextSwitcher/TextSwitcher/src/main/res/values/styles.xml
+++ /dev/null
@@ -1,36 +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.
--->
-
-<resources>
-
-    <!--
-        Base application theme, dependent on API level. This theme is replaced
-        by AppBaseTheme from res/values-vXX/styles.xml on newer devices.
-    -->
-    <style name="AppBaseTheme" parent="android:Theme.Light">
-        <!--
-            Theme customizations available in newer API levels can go in
-            res/values-vXX/styles.xml, while customizations related to
-            backward-compatibility can go here.
-        -->
-    </style>
-
-    <!-- Application theme. -->
-    <style name="AppTheme" parent="AppBaseTheme">
-        <!-- All customizations that are NOT specific to a particular API-level can go here. -->
-    </style>
-
-</resources>
diff --git a/ui/views/TextSwitcher/TextSwitcherSample/.gitignore b/ui/views/TextSwitcher/TextSwitcherSample/.gitignore
new file mode 100644
index 0000000..6eb878d
--- /dev/null
+++ b/ui/views/TextSwitcher/TextSwitcherSample/.gitignore
@@ -0,0 +1,16 @@
+# 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.
+src/template/
+src/common/
+build.gradle
diff --git a/connectivity/sync/BasicSyncAdapter/BasicSyncAdapterTests/proguard-project.txt b/ui/views/TextSwitcher/TextSwitcherSample/proguard-project.txt
similarity index 91%
copy from connectivity/sync/BasicSyncAdapter/BasicSyncAdapterTests/proguard-project.txt
copy to ui/views/TextSwitcher/TextSwitcherSample/proguard-project.txt
index f2fe155..0d8f171 100644
--- a/connectivity/sync/BasicSyncAdapter/BasicSyncAdapterTests/proguard-project.txt
+++ b/ui/views/TextSwitcher/TextSwitcherSample/proguard-project.txt
@@ -1,4 +1,4 @@
-# To enable ProGuard in your project, edit project.properties
+ To enable ProGuard in your project, edit project.properties
 # to define the proguard.config property as described in that file.
 #
 # Add project specific ProGuard rules here.
diff --git a/ui/views/TextSwitcher/TextSwitcher/src/main/AndroidManifest.xml b/ui/views/TextSwitcher/TextSwitcherSample/src/main/AndroidManifest.xml
similarity index 90%
rename from ui/views/TextSwitcher/TextSwitcher/src/main/AndroidManifest.xml
rename to ui/views/TextSwitcher/TextSwitcherSample/src/main/AndroidManifest.xml
index 707bfe3..7f512a3 100644
--- a/ui/views/TextSwitcher/TextSwitcher/src/main/AndroidManifest.xml
+++ b/ui/views/TextSwitcher/TextSwitcherSample/src/main/AndroidManifest.xml
@@ -16,7 +16,7 @@
 -->
 
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
-    package="com.example.android.view.textswitcher"
+    package="com.example.android.textswitcher"
     android:versionCode="1"
     android:versionName="1.0" >
 
@@ -30,7 +30,7 @@
         android:label="@string/app_name"
         android:theme="@style/AppTheme" >
         <activity
-            android:name="com.example.android.ui.views.textswitcher.MainActivity"
+            android:name=".MainActivity"
             android:label="@string/app_name" >
             <intent-filter>
                 <action android:name="android.intent.action.MAIN" />
diff --git a/ui/views/TextSwitcher/TextSwitcher/src/main/java/com/example/android/ui/views/textswitcher/MainActivity.java b/ui/views/TextSwitcher/TextSwitcherSample/src/main/java/com/example/android/textswitcher/MainActivity.java
similarity index 83%
rename from ui/views/TextSwitcher/TextSwitcher/src/main/java/com/example/android/ui/views/textswitcher/MainActivity.java
rename to ui/views/TextSwitcher/TextSwitcherSample/src/main/java/com/example/android/textswitcher/MainActivity.java
index 1beeb59..a8cbb5e 100644
--- a/ui/views/TextSwitcher/TextSwitcher/src/main/java/com/example/android/ui/views/textswitcher/MainActivity.java
+++ b/ui/views/TextSwitcher/TextSwitcherSample/src/main/java/com/example/android/textswitcher/MainActivity.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package com.example.android.ui.views.textswitcher;
+package com.example.android.textswitcher;
 
 import android.app.Activity;
 import android.os.Bundle;
@@ -25,16 +25,13 @@
 import android.widget.Button;
 import android.widget.TextSwitcher;
 import android.widget.TextView;
-import android.widget.ViewSwitcher;
 import android.widget.ViewSwitcher.ViewFactory;
 
-import com.example.android.view.textswitcher.R;
-
 /**
- * This sample shows the use of the {@link TextSwitcher} View with animations. A
- * {@link TextSwitcher} is a special type of {@link ViewSwitcher} that animates
+ * This sample shows the use of the {@link android.widget.TextSwitcher} View with animations. A
+ * {@link android.widget.TextSwitcher} is a special type of {@link android.widget.ViewSwitcher} that animates
  * the current text out and new text in when
- * {@link TextSwitcher#setText(CharSequence)} is called.
+ * {@link android.widget.TextSwitcher#setText(CharSequence)} is called.
  */
 public class MainActivity extends Activity {
     private TextSwitcher mSwitcher;
@@ -43,7 +40,7 @@
     @Override
     protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
-        setContentView(R.layout.activity_main);
+        setContentView(R.layout.sample_main);
 
         // Get the TextSwitcher view from the layout
         mSwitcher = (TextSwitcher) findViewById(R.id.switcher);
@@ -88,10 +85,10 @@
 
     // BEGIN_INCLUDE(factory)
     /**
-     * The {@link ViewFactory} used to create {@link TextView}s that the
-     * {@link TextSwitcher} will switch between.
+     * The {@link android.widget.ViewSwitcher.ViewFactory} used to create {@link android.widget.TextView}s that the
+     * {@link android.widget.TextSwitcher} will switch between.
      */
-    private ViewSwitcher.ViewFactory mFactory = new ViewFactory() {
+    private ViewFactory mFactory = new ViewFactory() {
 
         @Override
         public View makeView() {
diff --git a/ui/views/TextSwitcher/TextSwitcher/src/main/res/drawable-hdpi/ic_launcher.png b/ui/views/TextSwitcher/TextSwitcherSample/src/main/res/drawable-hdpi/ic_launcher.png
similarity index 100%
rename from ui/views/TextSwitcher/TextSwitcher/src/main/res/drawable-hdpi/ic_launcher.png
rename to ui/views/TextSwitcher/TextSwitcherSample/src/main/res/drawable-hdpi/ic_launcher.png
Binary files differ
diff --git a/ui/views/TextSwitcher/TextSwitcher/src/main/res/drawable-mdpi/ic_launcher.png b/ui/views/TextSwitcher/TextSwitcherSample/src/main/res/drawable-mdpi/ic_launcher.png
similarity index 100%
rename from ui/views/TextSwitcher/TextSwitcher/src/main/res/drawable-mdpi/ic_launcher.png
rename to ui/views/TextSwitcher/TextSwitcherSample/src/main/res/drawable-mdpi/ic_launcher.png
Binary files differ
diff --git a/ui/views/TextSwitcher/TextSwitcher/src/main/res/drawable-xhdpi/ic_launcher.png b/ui/views/TextSwitcher/TextSwitcherSample/src/main/res/drawable-xhdpi/ic_launcher.png
similarity index 100%
rename from ui/views/TextSwitcher/TextSwitcher/src/main/res/drawable-xhdpi/ic_launcher.png
rename to ui/views/TextSwitcher/TextSwitcherSample/src/main/res/drawable-xhdpi/ic_launcher.png
Binary files differ
diff --git a/ui/views/TextSwitcher/TextSwitcher/src/main/res/drawable-xxhdpi/ic_launcher.png b/ui/views/TextSwitcher/TextSwitcherSample/src/main/res/drawable-xxhdpi/ic_launcher.png
similarity index 100%
rename from ui/views/TextSwitcher/TextSwitcher/src/main/res/drawable-xxhdpi/ic_launcher.png
rename to ui/views/TextSwitcher/TextSwitcherSample/src/main/res/drawable-xxhdpi/ic_launcher.png
Binary files differ
diff --git a/ui/views/TextSwitcher/TextSwitcher/src/main/res/layout/activity_main.xml b/ui/views/TextSwitcher/TextSwitcherSample/src/main/res/layout/sample_main.xml
similarity index 100%
rename from ui/views/TextSwitcher/TextSwitcher/src/main/res/layout/activity_main.xml
rename to ui/views/TextSwitcher/TextSwitcherSample/src/main/res/layout/sample_main.xml
diff --git a/ui/views/TextSwitcher/TextSwitcher/src/main/res/values-sw600dp/dimens.xml b/ui/views/TextSwitcher/TextSwitcherSample/src/main/res/values-sw600dp/dimens.xml
similarity index 100%
rename from ui/views/TextSwitcher/TextSwitcher/src/main/res/values-sw600dp/dimens.xml
rename to ui/views/TextSwitcher/TextSwitcherSample/src/main/res/values-sw600dp/dimens.xml
diff --git a/ui/views/TextSwitcher/TextSwitcher/src/main/res/values-sw720dp-land/dimens.xml b/ui/views/TextSwitcher/TextSwitcherSample/src/main/res/values-sw720dp-land/dimens.xml
similarity index 100%
rename from ui/views/TextSwitcher/TextSwitcher/src/main/res/values-sw720dp-land/dimens.xml
rename to ui/views/TextSwitcher/TextSwitcherSample/src/main/res/values-sw720dp-land/dimens.xml
diff --git a/ui/views/TextSwitcher/TextSwitcher/src/main/res/values-v11/styles.xml b/ui/views/TextSwitcher/TextSwitcherSample/src/main/res/values-v11/styles.xml
similarity index 100%
rename from ui/views/TextSwitcher/TextSwitcher/src/main/res/values-v11/styles.xml
rename to ui/views/TextSwitcher/TextSwitcherSample/src/main/res/values-v11/styles.xml
diff --git a/ui/views/TextSwitcher/TextSwitcher/src/main/res/values-v14/styles.xml b/ui/views/TextSwitcher/TextSwitcherSample/src/main/res/values-v14/styles.xml
similarity index 100%
rename from ui/views/TextSwitcher/TextSwitcher/src/main/res/values-v14/styles.xml
rename to ui/views/TextSwitcher/TextSwitcherSample/src/main/res/values-v14/styles.xml
diff --git a/ui/views/TextSwitcher/TextSwitcher/src/main/res/values/dimens.xml b/ui/views/TextSwitcher/TextSwitcherSample/src/main/res/values/dimens.xml
similarity index 100%
rename from ui/views/TextSwitcher/TextSwitcher/src/main/res/values/dimens.xml
rename to ui/views/TextSwitcher/TextSwitcherSample/src/main/res/values/dimens.xml
diff --git a/ui/views/TextSwitcher/TextSwitcher/src/main/res/values/strings.xml b/ui/views/TextSwitcher/TextSwitcherSample/src/main/res/values/strings.xml
similarity index 94%
rename from ui/views/TextSwitcher/TextSwitcher/src/main/res/values/strings.xml
rename to ui/views/TextSwitcher/TextSwitcherSample/src/main/res/values/strings.xml
index 6b281e6..612b6cb 100644
--- a/ui/views/TextSwitcher/TextSwitcher/src/main/res/values/strings.xml
+++ b/ui/views/TextSwitcher/TextSwitcherSample/src/main/res/values/strings.xml
@@ -17,7 +17,6 @@
 
 <resources>
 
-    <string name="app_name">TextSwitcherSample</string>
     <string name="intro">This sample illustrates the use of a <b>TextSwitcher</b> to display text.
 \n\n<b>Click the button</b> below to set new text in the TextSwitcher and observe the in and out
  fade animations.</string>
diff --git a/ui/views/TextSwitcher/build.gradle b/ui/views/TextSwitcher/build.gradle
index 036abc8..cca9ac3 100644
--- a/ui/views/TextSwitcher/build.gradle
+++ b/ui/views/TextSwitcher/build.gradle
@@ -1,8 +1,10 @@
-buildscript {
-    repositories {
-        mavenCentral()
-    }
-    dependencies {
-        classpath 'com.android.tools.build:gradle:0.5.+'
-    }
+// BEGIN_EXCLUDE
+import com.example.android.samples.build.SampleGenPlugin
+apply plugin: SampleGenPlugin
+
+samplegen {
+  pathToBuild "../../../../../build"
+  pathToSamplesCommon "../../../common"
 }
+apply from: "../../../../../build/build.gradle"
+// END_EXCLUDE
diff --git a/ui/views/TextSwitcher/buildSrc/build.gradle b/ui/views/TextSwitcher/buildSrc/build.gradle
new file mode 100644
index 0000000..e344a8c
--- /dev/null
+++ b/ui/views/TextSwitcher/buildSrc/build.gradle
@@ -0,0 +1,18 @@
+
+
+
+repositories {
+    mavenCentral()
+}
+dependencies {
+    compile 'org.freemarker:freemarker:2.3.20'
+}
+
+sourceSets {
+    main {
+        groovy {
+            srcDir new File(rootDir, "../../../../../../build/buildSrc/src/main/groovy")
+        }
+    }
+}
+
diff --git a/ui/views/TextSwitcher/gradle/wrapper/gradle-wrapper.properties b/ui/views/TextSwitcher/gradle/wrapper/gradle-wrapper.properties
index 055ba6f..861eddc 100644
--- a/ui/views/TextSwitcher/gradle/wrapper/gradle-wrapper.properties
+++ b/ui/views/TextSwitcher/gradle/wrapper/gradle-wrapper.properties
@@ -1,7 +1,6 @@
-#
-#Mon Jul 22 11:40:20 PDT 2013
+#Wed Apr 10 15:27:10 PDT 2013
 distributionBase=GRADLE_USER_HOME
 distributionPath=wrapper/dists
 zipStoreBase=GRADLE_USER_HOME
 zipStorePath=wrapper/dists
-distributionUrl=http\://services.gradle.org/distributions/gradle-1.6-bin.zip
+distributionUrl=http\://services.gradle.org/distributions/gradle-1.8-bin.zip
diff --git a/ui/views/TextSwitcher/settings.gradle b/ui/views/TextSwitcher/settings.gradle
index aefb871..6740a95 100644
--- a/ui/views/TextSwitcher/settings.gradle
+++ b/ui/views/TextSwitcher/settings.gradle
@@ -1 +1,4 @@
-include ':TextSwitcher'
+
+
+
+include 'TextSwitcherSample'
diff --git a/ui/views/TextSwitcher/template-params.xml b/ui/views/TextSwitcher/template-params.xml
new file mode 100644
index 0000000..365c708
--- /dev/null
+++ b/ui/views/TextSwitcher/template-params.xml
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ 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.
+-->
+<sample>
+    <name>TextSwitcher</name>
+    <group>UI</group>
+    <package>com.example.android.textswitcher</package>
+
+    <!-- change minSdk if needed-->
+    <minSdk>4</minSdk>
+
+    <strings>
+        <intro>
+            <![CDATA[
+                This sample illustrates the use of a TextSwitcher to display text.
+                \n\nClick the button below to set new text in the TextSwitcher and observe the
+                in and out fade animations.
+            ]]>
+        </intro>
+    </strings>
+
+    <template src="base"/>
+    <common src="logger"/>
+
+</sample>
diff --git a/ui/window/AdvancedImmersiveMode/AdvancedImmersiveModeSample/.gitignore b/ui/window/AdvancedImmersiveMode/AdvancedImmersiveModeSample/.gitignore
new file mode 100644
index 0000000..ce281ed
--- /dev/null
+++ b/ui/window/AdvancedImmersiveMode/AdvancedImmersiveModeSample/.gitignore
@@ -0,0 +1,15 @@
+# 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.
+src/template/
+src/common/
diff --git a/ui/window/AdvancedImmersiveMode/AdvancedImmersiveModeSample/README-singleview.txt b/ui/window/AdvancedImmersiveMode/AdvancedImmersiveModeSample/README-singleview.txt
new file mode 100644
index 0000000..0cacd46
--- /dev/null
+++ b/ui/window/AdvancedImmersiveMode/AdvancedImmersiveModeSample/README-singleview.txt
@@ -0,0 +1,47 @@
+<#--
+        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.
+-->
+
+Steps to implement SingleView template:
+-in template-params.xml.ftl:
+    -add the following line to common imports
+        <common src="activities"/>
+
+    -add a string for the action button's text using the element name "sample_action".
+    This element should be a child of <strings>:
+        <strings>
+        ...
+        <sample_action>ButtonText</sample_action>
+        ...
+        </strings>
+
+
+
+-Add a Fragment to handle behavior.  In your MainActivity.java class, it will reference a Fragment
+ called (yourProjectName)Fragment.java.  Create that file in your project, using the "main" source
+ folder instead of "common" or "templates".
+   For instance, if your package name is com.example.foo, create the file
+   src/main/java/com/example/foo/FooFragment.java
+
+
+-Within this fragment, make sure that the onCreate method has the line
+ "setHasOptionsMenu(true);", to enable the fragment to handle menu events.
+
+-In order to override menu events, override onOptionsItemSelected.
+
+-refer to sampleSamples/singleViewSample for a reference implementation of a
+project built on this template.
+
+
diff --git a/ui/window/AdvancedImmersiveMode/AdvancedImmersiveModeSample/build.gradle b/ui/window/AdvancedImmersiveMode/AdvancedImmersiveModeSample/build.gradle
new file mode 100644
index 0000000..03db3dd
--- /dev/null
+++ b/ui/window/AdvancedImmersiveMode/AdvancedImmersiveModeSample/build.gradle
@@ -0,0 +1,57 @@
+
+
+
+buildscript {
+    repositories {
+        mavenCentral()
+    }
+
+    dependencies {
+        classpath 'com.android.tools.build:gradle:0.6.+'
+    }
+}
+
+apply plugin: 'android'
+
+dependencies {
+    // Add the support lib that is appropriate for SDK 4
+    compile "com.android.support:support-v4:18.0.+"
+}
+
+// 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 19
+    buildToolsVersion "18.0.1"
+
+    sourceSets {
+        main {
+            dirs.each { dir ->
+                java.srcDirs "src/${dir}/java"
+                res.srcDirs "src/${dir}/res"
+            }
+        }
+        instrumentTest.setRoot('tests')
+        instrumentTest.java.srcDirs = ['tests/src']
+    }
+}
+
+task preflight (dependsOn: parent.preflight) {
+    project.afterEvaluate {
+        // Inject a preflight task into each variant so we have a place to hook tasks
+        // that need to run before any of the android build tasks.
+        //
+        android.applicationVariants.each { variant ->
+            tasks.getByPath("prepare${variant.name.capitalize()}Dependencies").dependsOn preflight
+        }
+    }
+}
+
+
+
diff --git a/connectivity/sync/BasicSyncAdapter/BasicSyncAdapterTests/proguard-project.txt b/ui/window/AdvancedImmersiveMode/AdvancedImmersiveModeSample/proguard-project.txt
similarity index 91%
copy from connectivity/sync/BasicSyncAdapter/BasicSyncAdapterTests/proguard-project.txt
copy to ui/window/AdvancedImmersiveMode/AdvancedImmersiveModeSample/proguard-project.txt
index f2fe155..0d8f171 100644
--- a/connectivity/sync/BasicSyncAdapter/BasicSyncAdapterTests/proguard-project.txt
+++ b/ui/window/AdvancedImmersiveMode/AdvancedImmersiveModeSample/proguard-project.txt
@@ -1,4 +1,4 @@
-# To enable ProGuard in your project, edit project.properties
+ To enable ProGuard in your project, edit project.properties
 # to define the proguard.config property as described in that file.
 #
 # Add project specific ProGuard rules here.
diff --git a/ui/window/AdvancedImmersiveMode/AdvancedImmersiveModeSample/src/main/AndroidManifest.xml b/ui/window/AdvancedImmersiveMode/AdvancedImmersiveModeSample/src/main/AndroidManifest.xml
new file mode 100644
index 0000000..1d01856
--- /dev/null
+++ b/ui/window/AdvancedImmersiveMode/AdvancedImmersiveModeSample/src/main/AndroidManifest.xml
@@ -0,0 +1,56 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ 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.
+-->
+
+<!-- the versionCode is an integer representation of this version of your application.  New
+     versions get higher numbers, so the upgrade system can avoid dealing with the ambiguity
+     of "1.9" vs "1.10".  versionName, on the other hand, can be whatever you want, as the code
+     that handles upgrading Android apps between versions on your device just ignores it.-->
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+    package="com.example.android.advancedimmersivemode"
+    android:versionCode="1"
+    android:versionName="1.0">
+
+    <!-- This sample is to demonstrate features released in API 19.
+         So while it would technically run on an earlier version of Android,
+         there wouldn't be much point) -->
+    <uses-sdk android:minSdkVersion="19" android:targetSdkVersion="19" />
+    <!-- allowBackup declares if the app can be part of device-wide backups such as "adb backup" -->
+    <!-- theme is a way of applying UI decisions across your entire application.  You can also
+         define it on a per-application basis. -->
+    <application
+        android:allowBackup="true"
+        android:label="@string/app_name"
+        android:icon="@drawable/ic_launcher"
+        android:theme="@style/AppTheme">
+
+        <!-- Every activity needs its own Manifest element.  The intent-filter contained in the
+             element declares the intents that can be used to activate this Activity.  For instance,
+             the one below flags this Activity as a "main" entry point of this app, and suitable
+             for creating a shortcut to in the Launcher.  If you wanted your app to have 5
+             different Activities available in the launcher, you could just make 5 activities
+             with that intent filter.  Please don't do that.  Just because it's a good example
+             doesn't mean it's a good idea. -->
+        <activity android:name=".MainActivity"
+                  android:label="@string/app_name"
+                  android:uiOptions="splitActionBarWhenNarrow">
+            <intent-filter>
+                <action android:name="android.intent.action.MAIN" />
+                <category android:name="android.intent.category.LAUNCHER" />
+            </intent-filter>
+        </activity>
+    </application>
+</manifest>
diff --git a/ui/window/AdvancedImmersiveMode/AdvancedImmersiveModeSample/src/main/java/com/example/android/advancedimmersivemode/AdvancedImmersiveModeFragment.java b/ui/window/AdvancedImmersiveMode/AdvancedImmersiveModeSample/src/main/java/com/example/android/advancedimmersivemode/AdvancedImmersiveModeFragment.java
new file mode 100644
index 0000000..fe11ecb
--- /dev/null
+++ b/ui/window/AdvancedImmersiveMode/AdvancedImmersiveModeSample/src/main/java/com/example/android/advancedimmersivemode/AdvancedImmersiveModeFragment.java
@@ -0,0 +1,174 @@
+/*
+* Copyright (C) 2012 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.advancedimmersivemode;
+
+import android.os.Bundle;
+import android.support.v4.app.Fragment;
+import android.view.MenuItem;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.CheckBox;
+
+import com.example.android.common.logger.Log;
+
+/**
+ * Demonstrates how to update the app's UI by toggling immersive mode.
+ * Checkboxes are also made available for toggling other UI flags which can
+ * alter the behavior of immersive mode.
+ */
+public class AdvancedImmersiveModeFragment extends Fragment {
+
+    public static final String TAG = "AdvancedImmersiveModeFragment";
+    public CheckBox mHideNavCheckbox;
+    public CheckBox mHideStatusBarCheckBox;
+    public CheckBox mImmersiveModeCheckBox;
+    public CheckBox mImmersiveModeStickyCheckBox;
+    public CheckBox mLowProfileCheckBox;
+
+
+    @Override
+    public void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        setHasOptionsMenu(true);
+    }
+
+    @Override
+    public void onActivityCreated(Bundle savedInstanceState) {
+        super.onActivityCreated(savedInstanceState);
+
+        final View decorView = getActivity().getWindow().getDecorView();
+        ViewGroup parentView = (ViewGroup) getActivity().getWindow().getDecorView()
+                .findViewById(R.id.sample_main_layout);
+
+        mLowProfileCheckBox = new CheckBox(getActivity());
+        mLowProfileCheckBox.setText("Enable Low Profile mode.");
+        parentView.addView(mLowProfileCheckBox);
+
+        mHideNavCheckbox = new CheckBox(getActivity());
+        mHideNavCheckbox.setChecked(true);
+        mHideNavCheckbox.setText("Hide Navigation bar");
+        parentView.addView(mHideNavCheckbox);
+
+        mHideStatusBarCheckBox = new CheckBox(getActivity());
+        mHideStatusBarCheckBox.setChecked(true);
+        mHideStatusBarCheckBox.setText("Hide Status Bar");
+        parentView.addView(mHideStatusBarCheckBox);
+
+        mImmersiveModeCheckBox = new CheckBox(getActivity());
+        mImmersiveModeCheckBox.setText("Enable Immersive Mode.");
+        parentView.addView(mImmersiveModeCheckBox);
+
+        mImmersiveModeStickyCheckBox = new CheckBox(getActivity());
+        mImmersiveModeStickyCheckBox.setText("Enable Immersive Mode (Sticky)");
+        parentView.addView(mImmersiveModeStickyCheckBox);
+
+    }
+
+    @Override
+    public boolean onOptionsItemSelected(MenuItem item) {
+        if (item.getItemId() == R.id.sample_action) {
+            toggleImmersiveMode();
+        }
+        return true;
+    }
+
+    /**
+     * Detects and toggles immersive mode (also known as "hidey bar" mode).
+     */
+    public void toggleImmersiveMode() {
+
+        // BEGIN_INCLUDE (get_current_ui_flags)
+        // The "Decor View" is the parent view of the Activity.  It's also conveniently the easiest
+        // one to find from within a fragment, since there's a handy helper method to pull it, and
+        // we don't have to bother with picking a view somewhere deeper in the hierarchy and calling
+        // "findViewById" on it.
+        View decorView = getActivity().getWindow().getDecorView();
+        int uiOptions = decorView.getSystemUiVisibility();
+        int newUiOptions = uiOptions;
+        // END_INCLUDE (get_current_ui_flags)
+
+        // BEGIN_INCLUDE (toggle_lowprofile_mode)
+        // Low profile mode doesn't resize the screen at all, but it covers the nav & status bar
+        // icons with black so they're less distracting.  Unlike "full screen" and "hide nav bar,"
+        // this mode doesn't interact with immersive mode at all, but it's instructive when running
+        // this sample to observe the differences in behavior.
+        if (mLowProfileCheckBox.isChecked()) {
+            newUiOptions |= View.SYSTEM_UI_FLAG_LOW_PROFILE;
+        } else {
+            newUiOptions &= ~View.SYSTEM_UI_FLAG_LOW_PROFILE;
+        }
+        // END_INCLUDE (toggle_lowprofile_mode)
+
+        // BEGIN_INCLUDE (toggle_fullscreen_mode)
+        // When enabled, this flag hides non-critical UI, such as the status bar,
+        // which usually shows notification icons, battery life, etc
+        // on phone-sized devices.  The bar reappears when the user swipes it down.  When immersive
+        // mode is also enabled, the app-drawable area expands, and when the status bar is swiped
+        // down, it appears semi-transparently and slides in over the app, instead of pushing it
+        // down.
+        if (mHideStatusBarCheckBox.isChecked()) {
+            newUiOptions |= View.SYSTEM_UI_FLAG_FULLSCREEN;
+        } else {
+            newUiOptions &= ~View.SYSTEM_UI_FLAG_FULLSCREEN;
+        }
+        // END_INCLUDE (toggle_fullscreen_mode)
+
+        // BEGIN_INCLUDE (toggle_hidenav_mode)
+        // When enabled, this flag hides the black nav bar along the bottom,
+        // where the home/back buttons are.  The nav bar normally instantly reappears
+        // when the user touches the screen.  When immersive mode is also enabled, the nav bar
+        // stays hidden until the user swipes it back.
+        if (mHideNavCheckbox.isChecked()) {
+            newUiOptions |= View.SYSTEM_UI_FLAG_HIDE_NAVIGATION;
+        } else {
+            newUiOptions &= ~View.SYSTEM_UI_FLAG_HIDE_NAVIGATION;
+        }
+        // END_INCLUDE (toggle_hidenav_mode)
+
+        // BEGIN_INCLUDE (toggle_immersive_mode)
+        // Immersive mode doesn't do anything without at least one of the previous flags
+        // enabled.  When enabled, it allows the user to swipe the status and/or nav bars
+        // off-screen.  When the user swipes the bars back onto the screen, the flags are cleared
+        // and immersive mode is automatically disabled.
+        if (mImmersiveModeCheckBox.isChecked()) {
+            newUiOptions |= View.SYSTEM_UI_FLAG_IMMERSIVE;
+        } else {
+            newUiOptions &= ~View.SYSTEM_UI_FLAG_IMMERSIVE;
+        }
+        // END_INCLUDE (toggle_immersive_mode)
+
+        // BEGIN_INCLUDE (toggle_immersive_mode_sticky)
+        // There's actually two forms of immersive mode, normal and "sticky".  Sticky immersive mode
+        // is different in 2 key ways:
+        //
+        // * Uses semi-transparent bars for the nav and status bars
+        // * This UI flag will *not* be cleared when the user interacts with the UI.
+        //   When the user swipes, the bars will temporarily appear for a few seconds and then
+        //   disappear again.
+        if (mImmersiveModeStickyCheckBox.isChecked()) {
+            newUiOptions |= View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY;
+        } else {
+            newUiOptions &= ~View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY;
+        }
+        // END_INCLUDE (toggle_immersive_mode_sticky)
+
+        // BEGIN_INCLUDE (set_ui_flags)
+        //Set the new UI flags.
+        decorView.setSystemUiVisibility(newUiOptions);
+        Log.i(TAG, "Current height: " + decorView.getHeight() + ", width: " + decorView.getWidth());
+        // END_INCLUDE (set_ui_flags)
+    }
+}
diff --git a/ui/window/AdvancedImmersiveMode/AdvancedImmersiveModeSample/tests/AndroidManifest.xml b/ui/window/AdvancedImmersiveMode/AdvancedImmersiveModeSample/tests/AndroidManifest.xml
new file mode 100644
index 0000000..7117969
--- /dev/null
+++ b/ui/window/AdvancedImmersiveMode/AdvancedImmersiveModeSample/tests/AndroidManifest.xml
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  Copyright (C) 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 name must be unique so suffix with "tests" so package loader doesn't ignore us -->
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+          package="com.example.android.advancedimmersivemode.tests"
+          android:versionCode="1"
+          android:versionName="1.0">
+
+    <uses-sdk
+            android:minSdkVersion="19"
+            android:targetSdkVersion="19" />
+
+    <!-- We add an application tag here just so that we can indicate that
+         this package needs to link against the android.test library,
+         which is needed when building test cases. -->
+    <application>
+        <uses-library android:name="android.test.runner" />
+    </application>
+
+    <!--
+    Specifies the instrumentation test runner used to run the tests.
+    -->
+    <instrumentation
+            android:name="android.test.InstrumentationTestRunner"
+            android:targetPackage="com.example.android.advancedimmersivemode"
+            android:label="Tests for com.example.android.advancedimmersivemode" />
+
+</manifest>
\ No newline at end of file
diff --git a/ui/window/AdvancedImmersiveMode/AdvancedImmersiveModeSample/tests/src/com/example/android/advancedimmersivemode/tests/SampleTests.java b/ui/window/AdvancedImmersiveMode/AdvancedImmersiveModeSample/tests/src/com/example/android/advancedimmersivemode/tests/SampleTests.java
new file mode 100644
index 0000000..c51a488
--- /dev/null
+++ b/ui/window/AdvancedImmersiveMode/AdvancedImmersiveModeSample/tests/src/com/example/android/advancedimmersivemode/tests/SampleTests.java
@@ -0,0 +1,126 @@
+/*
+* 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.
+*/
+/*
+* Copyright (C) 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.advancedimmersivemode.tests;
+
+import com.example.android.advancedimmersivemode.*;
+
+import android.test.ActivityInstrumentationTestCase2;
+import android.test.UiThreadTest;
+
+/**
+* Tests for AdvancedImmersiveMode sample.
+*/
+public class SampleTests extends ActivityInstrumentationTestCase2<MainActivity> {
+
+    private MainActivity mTestActivity;
+    private AdvancedImmersiveModeFragment mTestFragment;
+
+    public SampleTests() {
+        super(MainActivity.class);
+    }
+
+    @Override
+    protected void setUp() throws Exception {
+        super.setUp();
+
+        mTestActivity = getActivity();
+        mTestFragment = (AdvancedImmersiveModeFragment)
+            mTestActivity.getSupportFragmentManager().getFragments().get(1);
+    }
+
+    /**
+    * Test if the test fixture has been set up correctly.
+    */
+    public void testPreconditions() {
+        assertNotNull("mTestActivity is null", mTestActivity);
+        assertNotNull("mTestFragment is null", mTestFragment);
+    }
+
+
+    /**
+     * Verify that the UI flags actually changed when the toggle method is called.
+     */
+    @UiThreadTest
+    public void testFlagsChanged() {
+        int uiFlags = getActivity().getWindow().getDecorView().getSystemUiVisibility();
+        mTestFragment.mImmersiveModeCheckBox.setChecked(true);
+        mTestFragment.mHideNavCheckbox.setChecked(true);
+        mTestFragment.mHideStatusBarCheckBox.setChecked(true);
+        mTestFragment.toggleImmersiveMode();
+        int newUiFlags = getActivity().getWindow().getDecorView().getSystemUiVisibility();
+        assertTrue("UI Flags didn't toggle.", uiFlags != newUiFlags);
+    }
+
+    /**
+     * Verify that the view's height actually changed when the toggle method is called.
+     * This should result in a change in height for the DecorView.
+     */
+    public void testDecorHeightExpanded() {
+        // Grab the initial height of the DecorWindow.
+        int startingHeight = getActivity().getWindow().getDecorView().getHeight();
+
+        // In order to test that this worked:  Need to toggle the immersive mode on the UI thread,
+        // wait a suitable amount of time (this test goes with 200 ms), then check to see if the
+        // height changed.
+        try {
+            Runnable testRunnable = (new Runnable() {
+                public void run() {
+                    // Toggle immersive mode
+                    mTestFragment.mImmersiveModeCheckBox.setChecked(true);
+                    mTestFragment.mHideNavCheckbox.setChecked(true);
+                    mTestFragment.mHideStatusBarCheckBox.setChecked(true);
+                    mTestFragment.toggleImmersiveMode();
+                    synchronized(this) {
+                        // Notify any thread waiting on this runnable that it can continue
+                        this.notify();
+                    }
+                }
+            });
+            synchronized(testRunnable) {
+                // Since toggling immersive mode makes changes to the view hierarchy, it needs to run
+                // on the UI thread, or crashing will occur.
+                mTestActivity.runOnUiThread(testRunnable);
+                testRunnable.wait();
+
+            }
+            synchronized(this) {
+                //Wait about 200ms for the change to take place
+                wait(200L);
+            }
+        } catch (Throwable throwable) {
+            fail(throwable.getMessage());
+        }
+
+        int expandedHeight = getActivity().getWindow().getDecorView().getHeight();
+        assertTrue("Bars aren't hidden.", expandedHeight != startingHeight);
+    }
+
+}
\ No newline at end of file
diff --git a/ui/window/AdvancedImmersiveMode/build.gradle b/ui/window/AdvancedImmersiveMode/build.gradle
new file mode 100644
index 0000000..cca9ac3
--- /dev/null
+++ b/ui/window/AdvancedImmersiveMode/build.gradle
@@ -0,0 +1,10 @@
+// BEGIN_EXCLUDE
+import com.example.android.samples.build.SampleGenPlugin
+apply plugin: SampleGenPlugin
+
+samplegen {
+  pathToBuild "../../../../../build"
+  pathToSamplesCommon "../../../common"
+}
+apply from: "../../../../../build/build.gradle"
+// END_EXCLUDE
diff --git a/ui/window/AdvancedImmersiveMode/buildSrc/build.gradle b/ui/window/AdvancedImmersiveMode/buildSrc/build.gradle
new file mode 100644
index 0000000..7cebf71
--- /dev/null
+++ b/ui/window/AdvancedImmersiveMode/buildSrc/build.gradle
@@ -0,0 +1,15 @@
+repositories {
+    mavenCentral()
+}
+dependencies {
+    compile 'org.freemarker:freemarker:2.3.20'
+}
+
+sourceSets {
+    main {
+        groovy {
+            srcDir new File(rootDir, "../../../../../../build/buildSrc/src/main/groovy")
+        }
+    }
+}
+
diff --git a/connectivity/network/BasicNetworkDemo/gradle/wrapper/gradle-wrapper.jar b/ui/window/AdvancedImmersiveMode/gradle/wrapper/gradle-wrapper.jar
similarity index 100%
copy from connectivity/network/BasicNetworkDemo/gradle/wrapper/gradle-wrapper.jar
copy to ui/window/AdvancedImmersiveMode/gradle/wrapper/gradle-wrapper.jar
Binary files differ
diff --git a/connectivity/network/BasicNetworkDemo/gradle/wrapper/gradle-wrapper.properties b/ui/window/AdvancedImmersiveMode/gradle/wrapper/gradle-wrapper.properties
similarity index 80%
copy from connectivity/network/BasicNetworkDemo/gradle/wrapper/gradle-wrapper.properties
copy to ui/window/AdvancedImmersiveMode/gradle/wrapper/gradle-wrapper.properties
index 055ba6f..861eddc 100644
--- a/connectivity/network/BasicNetworkDemo/gradle/wrapper/gradle-wrapper.properties
+++ b/ui/window/AdvancedImmersiveMode/gradle/wrapper/gradle-wrapper.properties
@@ -1,7 +1,6 @@
-#
-#Mon Jul 22 11:40:20 PDT 2013
+#Wed Apr 10 15:27:10 PDT 2013
 distributionBase=GRADLE_USER_HOME
 distributionPath=wrapper/dists
 zipStoreBase=GRADLE_USER_HOME
 zipStorePath=wrapper/dists
-distributionUrl=http\://services.gradle.org/distributions/gradle-1.6-bin.zip
+distributionUrl=http\://services.gradle.org/distributions/gradle-1.8-bin.zip
diff --git a/connectivity/network/BasicNetworkDemo/gradlew b/ui/window/AdvancedImmersiveMode/gradlew
similarity index 100%
copy from connectivity/network/BasicNetworkDemo/gradlew
copy to ui/window/AdvancedImmersiveMode/gradlew
diff --git a/connectivity/network/BasicNetworkDemo/gradlew.bat b/ui/window/AdvancedImmersiveMode/gradlew.bat
similarity index 100%
copy from connectivity/network/BasicNetworkDemo/gradlew.bat
copy to ui/window/AdvancedImmersiveMode/gradlew.bat
diff --git a/ui/window/AdvancedImmersiveMode/settings.gradle b/ui/window/AdvancedImmersiveMode/settings.gradle
new file mode 100644
index 0000000..0f7ed4b
--- /dev/null
+++ b/ui/window/AdvancedImmersiveMode/settings.gradle
@@ -0,0 +1 @@
+include 'AdvancedImmersiveModeSample'
diff --git a/ui/window/AdvancedImmersiveMode/template-params.xml b/ui/window/AdvancedImmersiveMode/template-params.xml
new file mode 100644
index 0000000..0f23700
--- /dev/null
+++ b/ui/window/AdvancedImmersiveMode/template-params.xml
@@ -0,0 +1,47 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ 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.
+-->
+<sample>
+    <name>AdvancedImmersiveMode</name>
+    <group>UI</group>
+    <package>com.example.android.advancedimmersivemode</package>
+
+
+    <!-- change minSdk if needed-->
+    <minSdk>4</minSdk>
+    <compileSdkVersion>19</compileSdkVersion>
+
+    <strings>
+        <intro>
+            <![CDATA[
+            \"Immersive Mode\" is a new UI mode which improves \"hide full screen\" and
+            \"hide nav bar\" modes, by letting users swipe the bars in and out.  This sample
+            lets the user experiment with immersive mode by enabling it and seeing how it interacts
+            with some of the other UI flags related to full-screen apps.
+            \n\nThis sample also lets the user choose between normal immersive mode and "sticky"
+            immersive mode, which removes the status bar and nav bar
+            a few seconds after the user has swiped them back in.
+            ]]>
+        </intro>
+        <sample_action>Try these settings!</sample_action>
+    </strings>
+
+    <template src="base"/>
+    <template src="SingleView"/>
+    <common src="logger"/>
+    <common src="activities"/>
+
+</sample>
diff --git a/ui/window/BasicImmersiveMode/BasicImmersiveModeSample/.gitignore b/ui/window/BasicImmersiveMode/BasicImmersiveModeSample/.gitignore
new file mode 100644
index 0000000..6eb878d
--- /dev/null
+++ b/ui/window/BasicImmersiveMode/BasicImmersiveModeSample/.gitignore
@@ -0,0 +1,16 @@
+# 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.
+src/template/
+src/common/
+build.gradle
diff --git a/ui/window/BasicImmersiveMode/BasicImmersiveModeSample/README-singleview.txt b/ui/window/BasicImmersiveMode/BasicImmersiveModeSample/README-singleview.txt
new file mode 100644
index 0000000..0cacd46
--- /dev/null
+++ b/ui/window/BasicImmersiveMode/BasicImmersiveModeSample/README-singleview.txt
@@ -0,0 +1,47 @@
+<#--
+        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.
+-->
+
+Steps to implement SingleView template:
+-in template-params.xml.ftl:
+    -add the following line to common imports
+        <common src="activities"/>
+
+    -add a string for the action button's text using the element name "sample_action".
+    This element should be a child of <strings>:
+        <strings>
+        ...
+        <sample_action>ButtonText</sample_action>
+        ...
+        </strings>
+
+
+
+-Add a Fragment to handle behavior.  In your MainActivity.java class, it will reference a Fragment
+ called (yourProjectName)Fragment.java.  Create that file in your project, using the "main" source
+ folder instead of "common" or "templates".
+   For instance, if your package name is com.example.foo, create the file
+   src/main/java/com/example/foo/FooFragment.java
+
+
+-Within this fragment, make sure that the onCreate method has the line
+ "setHasOptionsMenu(true);", to enable the fragment to handle menu events.
+
+-In order to override menu events, override onOptionsItemSelected.
+
+-refer to sampleSamples/singleViewSample for a reference implementation of a
+project built on this template.
+
+
diff --git a/connectivity/sync/BasicSyncAdapter/BasicSyncAdapterTests/proguard-project.txt b/ui/window/BasicImmersiveMode/BasicImmersiveModeSample/proguard-project.txt
similarity index 91%
copy from connectivity/sync/BasicSyncAdapter/BasicSyncAdapterTests/proguard-project.txt
copy to ui/window/BasicImmersiveMode/BasicImmersiveModeSample/proguard-project.txt
index f2fe155..0d8f171 100644
--- a/connectivity/sync/BasicSyncAdapter/BasicSyncAdapterTests/proguard-project.txt
+++ b/ui/window/BasicImmersiveMode/BasicImmersiveModeSample/proguard-project.txt
@@ -1,4 +1,4 @@
-# To enable ProGuard in your project, edit project.properties
+ To enable ProGuard in your project, edit project.properties
 # to define the proguard.config property as described in that file.
 #
 # Add project specific ProGuard rules here.
diff --git a/ui/actionbarcompat/ListPopupMenu/ListPopupMenu/src/main/AndroidManifest.xml b/ui/window/BasicImmersiveMode/BasicImmersiveModeSample/src/main/AndroidManifest.xml
similarity index 62%
copy from ui/actionbarcompat/ListPopupMenu/ListPopupMenu/src/main/AndroidManifest.xml
copy to ui/window/BasicImmersiveMode/BasicImmersiveModeSample/src/main/AndroidManifest.xml
index 7e9a861..00b4e3c 100644
--- a/ui/actionbarcompat/ListPopupMenu/ListPopupMenu/src/main/AndroidManifest.xml
+++ b/ui/window/BasicImmersiveMode/BasicImmersiveModeSample/src/main/AndroidManifest.xml
@@ -1,11 +1,12 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2013 The Android Open Source Project
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ 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
+     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,
@@ -14,28 +15,24 @@
  limitations under the License.
 -->
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
-    package="com.example.android.actionbarcompat.listpopupmenu"
+    package="com.example.android.basicimmersivemode"
     android:versionCode="1"
     android:versionName="1.0">
 
-    <!-- ActionBarCompat provides an implementation of Popup Menu from API v7 onwards -->
-    <uses-sdk
-        android:minSdkVersion="7"
-        android:targetSdkVersion="17" />
+    <uses-sdk android:minSdkVersion="19" android:targetSdkVersion="19" />
 
-    <application
-        android:icon="@drawable/ic_launcher"
+    <application android:allowBackup="true"
         android:label="@string/app_name"
-        android:theme="@style/Theme.AppCompat"
-        android:allowBackup="true">
+        android:icon="@drawable/ic_launcher"
+        android:theme="@style/AppTheme">
 
-        <activity android:name=".MainActivity">
-            <!-- Launcher Intent filter -->
+        <activity android:name=".MainActivity"
+                  android:label="@string/app_name"
+                  android:uiOptions="splitActionBarWhenNarrow">
             <intent-filter>
                 <action android:name="android.intent.action.MAIN" />
                 <category android:name="android.intent.category.LAUNCHER" />
             </intent-filter>
         </activity>
     </application>
-
-</manifest>
\ No newline at end of file
+</manifest>
diff --git a/ui/window/BasicImmersiveMode/BasicImmersiveModeSample/src/main/java/com/example/android/basicimmersivemode/BasicImmersiveModeFragment.java b/ui/window/BasicImmersiveMode/BasicImmersiveModeSample/src/main/java/com/example/android/basicimmersivemode/BasicImmersiveModeFragment.java
new file mode 100644
index 0000000..a675e05
--- /dev/null
+++ b/ui/window/BasicImmersiveMode/BasicImmersiveModeSample/src/main/java/com/example/android/basicimmersivemode/BasicImmersiveModeFragment.java
@@ -0,0 +1,88 @@
+/*
+* Copyright (C) 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.basicimmersivemode;
+
+import android.os.Bundle;
+import android.support.v4.app.Fragment;
+import android.view.MenuItem;
+import android.view.View;
+
+import com.example.android.common.logger.Log;
+
+public class BasicImmersiveModeFragment extends Fragment {
+
+    public static final String TAG = "BasicImmersiveModeFragment";
+
+    @Override
+    public void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        setHasOptionsMenu(true);
+    }
+
+    @Override
+    public void onActivityCreated(Bundle savedInstanceState) {
+        super.onActivityCreated(savedInstanceState);
+        final View decorView = getActivity().getWindow().getDecorView();
+        decorView.setOnSystemUiVisibilityChangeListener(
+                new View.OnSystemUiVisibilityChangeListener() {
+                    @Override
+                    public void onSystemUiVisibilityChange(int i) {
+                        int height = decorView.getHeight();
+                        Log.i(TAG, "Current height: " + height);
+                    }
+                });
+    }
+
+    @Override
+    public boolean onOptionsItemSelected(MenuItem item) {
+        if (item.getItemId() == R.id.sample_action) {
+            toggleHideyBar();
+        }
+        return true;
+    }
+
+    /**
+     * Detects and toggles immersive mode.
+     */
+    public void toggleHideyBar() {
+        // BEGIN_INCLUDE (get_current_ui_flags)
+        // The UI options currently enabled are represented by a bitfield.
+        // getSystemUiVisibility() gives us that bitfield.
+        int uiOptions = getActivity().getWindow().getDecorView().getSystemUiVisibility();
+        int newUiOptions = uiOptions;
+        // END_INCLUDE (get_current_ui_flags)
+        // BEGIN_INCLUDE (toggle_ui_flags)
+        boolean isImmersiveModeEnabled =
+                ((uiOptions | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY) == uiOptions);
+        if (isImmersiveModeEnabled) {
+            Log.i(TAG, "Turning immersive mode mode off. ");
+        } else {
+            Log.i(TAG, "Turning immersive mode mode on.");
+        }
+
+        // Immersive mode: Backward compatible to KitKat (API 19).
+        // Note that this flag doesn't do anything by itself, it only augments the behavior
+        // of HIDE_NAVIGATION and FLAG_FULLSCREEN.  For the purposes of this sample
+        // all three flags are being toggled together.
+        // This sample uses the "sticky" form of immersive mode, which will let the user swipe
+        // the bars back in again, but will automatically make them disappear a few seconds later.
+        newUiOptions ^= View.SYSTEM_UI_FLAG_HIDE_NAVIGATION;
+        newUiOptions ^= View.SYSTEM_UI_FLAG_FULLSCREEN;
+        newUiOptions ^= View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY;
+        getActivity().getWindow().getDecorView().setSystemUiVisibility(newUiOptions);
+        //END_INCLUDE (set_ui_flags)
+    }
+}
diff --git a/ui/actionbar/DoneBar/DoneBar/src/main/res/drawable-hdpi/ic_launcher.png b/ui/window/BasicImmersiveMode/BasicImmersiveModeSample/src/main/res/drawable-hdpi/ic_launcher.png
similarity index 100%
copy from ui/actionbar/DoneBar/DoneBar/src/main/res/drawable-hdpi/ic_launcher.png
copy to ui/window/BasicImmersiveMode/BasicImmersiveModeSample/src/main/res/drawable-hdpi/ic_launcher.png
Binary files differ
diff --git a/ui/actionbar/DoneBar/DoneBar/src/main/res/drawable-mdpi/ic_launcher.png b/ui/window/BasicImmersiveMode/BasicImmersiveModeSample/src/main/res/drawable-mdpi/ic_launcher.png
similarity index 100%
copy from ui/actionbar/DoneBar/DoneBar/src/main/res/drawable-mdpi/ic_launcher.png
copy to ui/window/BasicImmersiveMode/BasicImmersiveModeSample/src/main/res/drawable-mdpi/ic_launcher.png
Binary files differ
diff --git a/ui/actionbar/DoneBar/DoneBar/src/main/res/drawable-xhdpi/ic_launcher.png b/ui/window/BasicImmersiveMode/BasicImmersiveModeSample/src/main/res/drawable-xhdpi/ic_launcher.png
similarity index 100%
copy from ui/actionbar/DoneBar/DoneBar/src/main/res/drawable-xhdpi/ic_launcher.png
copy to ui/window/BasicImmersiveMode/BasicImmersiveModeSample/src/main/res/drawable-xhdpi/ic_launcher.png
Binary files differ
diff --git a/ui/actionbar/DoneBar/DoneBar/src/main/res/drawable-xxhdpi/ic_launcher.png b/ui/window/BasicImmersiveMode/BasicImmersiveModeSample/src/main/res/drawable-xxhdpi/ic_launcher.png
similarity index 100%
copy from ui/actionbar/DoneBar/DoneBar/src/main/res/drawable-xxhdpi/ic_launcher.png
copy to ui/window/BasicImmersiveMode/BasicImmersiveModeSample/src/main/res/drawable-xxhdpi/ic_launcher.png
Binary files differ
diff --git a/ui/window/BasicImmersiveMode/BasicImmersiveModeSample/tests/AndroidManifest.xml b/ui/window/BasicImmersiveMode/BasicImmersiveModeSample/tests/AndroidManifest.xml
new file mode 100644
index 0000000..070368c
--- /dev/null
+++ b/ui/window/BasicImmersiveMode/BasicImmersiveModeSample/tests/AndroidManifest.xml
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  Copyright (C) 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 name must be unique so suffix with "tests" so package loader doesn't ignore us -->
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+          package="com.example.android.basicimmersivemode.tests"
+          android:versionCode="1"
+          android:versionName="1.0">
+
+    <uses-sdk
+            android:minSdkVersion="19"
+            android:targetSdkVersion="19" />
+
+    <!-- We add an application tag here just so that we can indicate that
+         this package needs to link against the android.test library,
+         which is needed when building test cases. -->
+    <application>
+        <uses-library android:name="android.test.runner" />
+    </application>
+
+    <!--
+    Specifies the instrumentation test runner used to run the tests.
+    -->
+    <instrumentation
+            android:name="android.test.InstrumentationTestRunner"
+            android:targetPackage="com.example.android.basicimmersivemode"
+            android:label="Tests for com.example.android.basicimmersivemode" />
+
+</manifest>
\ No newline at end of file
diff --git a/ui/window/BasicImmersiveMode/BasicImmersiveModeSample/tests/src/com/example/android/basicimmersivemode/tests/SampleTests.java b/ui/window/BasicImmersiveMode/BasicImmersiveModeSample/tests/src/com/example/android/basicimmersivemode/tests/SampleTests.java
new file mode 100644
index 0000000..31c25bb
--- /dev/null
+++ b/ui/window/BasicImmersiveMode/BasicImmersiveModeSample/tests/src/com/example/android/basicimmersivemode/tests/SampleTests.java
@@ -0,0 +1,124 @@
+/*
+* 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.
+*/
+/*
+* Copyright (C) 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.basicimmersivemode.tests;
+
+import com.example.android.basicimmersivemode.*;
+
+import android.test.ActivityInstrumentationTestCase2;
+import android.test.UiThreadTest;
+
+/**
+* Tests for immersive mode sample.
+*/
+public class SampleTests extends ActivityInstrumentationTestCase2<MainActivity> {
+
+    private MainActivity mTestActivity;
+    private BasicImmersiveModeFragment mTestFragment;
+
+    public SampleTests() {
+        super(MainActivity.class);
+    }
+
+    @Override
+    protected void setUp() throws Exception {
+        super.setUp();
+
+        // Starts the activity under test using the default Intent with:
+        // action = {@link Intent#ACTION_MAIN}
+        // flags = {@link Intent#FLAG_ACTIVITY_NEW_TASK}
+        // All other fields are null or empty.
+        mTestActivity = getActivity();
+        mTestFragment = (BasicImmersiveModeFragment)
+        mTestActivity.getSupportFragmentManager().getFragments().get(1);
+    }
+
+    /**
+    * Test if the test fixture has been set up correctly.
+    */
+    public void testPreconditions() {
+        //Try to add a message to add context to your assertions. These messages will be shown if
+        //a tests fails and make it easy to understand why a test failed
+        assertNotNull("mTestActivity is null", mTestActivity);
+        assertNotNull("mTestFragment is null", mTestFragment);
+    }
+
+    /**
+     * Verify that the UI flags actually changed when the toggle method is called.
+     */
+    @UiThreadTest
+    public void testFlagsChanged() {
+        int uiFlags = getActivity().getWindow().getDecorView().getSystemUiVisibility();
+        mTestFragment.toggleHideyBar();
+        int newUiFlags = getActivity().getWindow().getDecorView().getSystemUiVisibility();
+        assertTrue("UI Flags didn't toggle.", uiFlags != newUiFlags);
+    }
+
+    /**
+     * Verify that the view's height actually changed when the toggle method is called.
+     * This should result in a change in height for the DecorView.
+     */
+    public void testDecorHeightExpanded() {
+        // Grab the initial height of the DecorWindow.
+        int startingHeight = getActivity().getWindow().getDecorView().getHeight();
+
+        // In order to test that this worked:  Need to toggle the immersive mode on the UI thread,
+        // wait a suitable amount of time (this test goes with 200 ms), then check to see if the
+        // height changed.
+        try {
+            Runnable testRunnable = (new Runnable() {
+                public void run() {
+                    // Toggle immersive mode
+                    mTestFragment.toggleHideyBar();
+                    synchronized(this) {
+                        // Notify any thread waiting on this runnable that it can continue
+                        this.notify();
+                    }
+                }
+            });
+            synchronized(testRunnable) {
+                // Since toggling immersive mode makes changes to the view heirarchy, it needs to run
+                // on the UI thread, or crashing will occur.
+                mTestActivity.runOnUiThread(testRunnable);
+                testRunnable.wait();
+
+            }
+            synchronized(this) {
+                //Wait about 200ms for the change to take place
+                wait(200L);
+            }
+        } catch (Throwable throwable) {
+            fail(throwable.getMessage());
+        }
+
+        int expandedHeight = getActivity().getWindow().getDecorView().getHeight();
+        assertTrue("Bars aren't hidden.", expandedHeight != startingHeight);
+    }
+}
\ No newline at end of file
diff --git a/ui/window/BasicImmersiveMode/build.gradle b/ui/window/BasicImmersiveMode/build.gradle
new file mode 100644
index 0000000..cca9ac3
--- /dev/null
+++ b/ui/window/BasicImmersiveMode/build.gradle
@@ -0,0 +1,10 @@
+// BEGIN_EXCLUDE
+import com.example.android.samples.build.SampleGenPlugin
+apply plugin: SampleGenPlugin
+
+samplegen {
+  pathToBuild "../../../../../build"
+  pathToSamplesCommon "../../../common"
+}
+apply from: "../../../../../build/build.gradle"
+// END_EXCLUDE
diff --git a/ui/window/BasicImmersiveMode/buildSrc/build.gradle b/ui/window/BasicImmersiveMode/buildSrc/build.gradle
new file mode 100644
index 0000000..e344a8c
--- /dev/null
+++ b/ui/window/BasicImmersiveMode/buildSrc/build.gradle
@@ -0,0 +1,18 @@
+
+
+
+repositories {
+    mavenCentral()
+}
+dependencies {
+    compile 'org.freemarker:freemarker:2.3.20'
+}
+
+sourceSets {
+    main {
+        groovy {
+            srcDir new File(rootDir, "../../../../../../build/buildSrc/src/main/groovy")
+        }
+    }
+}
+
diff --git a/connectivity/network/BasicNetworkDemo/gradle/wrapper/gradle-wrapper.jar b/ui/window/BasicImmersiveMode/gradle/wrapper/gradle-wrapper.jar
similarity index 100%
copy from connectivity/network/BasicNetworkDemo/gradle/wrapper/gradle-wrapper.jar
copy to ui/window/BasicImmersiveMode/gradle/wrapper/gradle-wrapper.jar
Binary files differ
diff --git a/connectivity/network/BasicNetworkDemo/gradle/wrapper/gradle-wrapper.properties b/ui/window/BasicImmersiveMode/gradle/wrapper/gradle-wrapper.properties
similarity index 80%
copy from connectivity/network/BasicNetworkDemo/gradle/wrapper/gradle-wrapper.properties
copy to ui/window/BasicImmersiveMode/gradle/wrapper/gradle-wrapper.properties
index 055ba6f..861eddc 100644
--- a/connectivity/network/BasicNetworkDemo/gradle/wrapper/gradle-wrapper.properties
+++ b/ui/window/BasicImmersiveMode/gradle/wrapper/gradle-wrapper.properties
@@ -1,7 +1,6 @@
-#
-#Mon Jul 22 11:40:20 PDT 2013
+#Wed Apr 10 15:27:10 PDT 2013
 distributionBase=GRADLE_USER_HOME
 distributionPath=wrapper/dists
 zipStoreBase=GRADLE_USER_HOME
 zipStorePath=wrapper/dists
-distributionUrl=http\://services.gradle.org/distributions/gradle-1.6-bin.zip
+distributionUrl=http\://services.gradle.org/distributions/gradle-1.8-bin.zip
diff --git a/connectivity/network/BasicNetworkDemo/gradlew b/ui/window/BasicImmersiveMode/gradlew
similarity index 100%
copy from connectivity/network/BasicNetworkDemo/gradlew
copy to ui/window/BasicImmersiveMode/gradlew
diff --git a/connectivity/network/BasicNetworkDemo/gradlew.bat b/ui/window/BasicImmersiveMode/gradlew.bat
similarity index 100%
copy from connectivity/network/BasicNetworkDemo/gradlew.bat
copy to ui/window/BasicImmersiveMode/gradlew.bat
diff --git a/ui/window/BasicImmersiveMode/settings.gradle b/ui/window/BasicImmersiveMode/settings.gradle
new file mode 100644
index 0000000..8dda383
--- /dev/null
+++ b/ui/window/BasicImmersiveMode/settings.gradle
@@ -0,0 +1,4 @@
+
+
+
+include 'BasicImmersiveModeSample'
diff --git a/ui/window/BasicImmersiveMode/template-params.xml b/ui/window/BasicImmersiveMode/template-params.xml
new file mode 100644
index 0000000..1335908
--- /dev/null
+++ b/ui/window/BasicImmersiveMode/template-params.xml
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ 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.
+-->
+<sample>
+    <name>BasicImmersiveMode</name>
+    <group>UI</group>
+    <package>com.example.android.basicimmersivemode</package>
+    
+
+
+    <!-- change minSdk if needed-->
+    <minSdk>19</minSdk>
+    <compileSdkVersion>19</compileSdkVersion>
+
+    <strings>
+        <intro>
+            <![CDATA[
+            \"Immersive Mode\" is a new UI mode which improves \"hide full screen\" and
+            \"hide nav bar\" modes, by letting users swipe the bars in and out.  This sample
+            demonstrates how to enable and disable immersive mode programmatically.
+            ]]>
+        </intro>
+        <sample_action>Toggle Immersive Mode!</sample_action>
+    </strings>
+
+    <template src="base"/>
+    <template src="SingleView"/>
+    <common src="logger"/>
+    <common src="activities"/>
+
+</sample>
diff --git a/ui/window/ImmersiveMode/ImmersiveModeSample/.gitignore b/ui/window/ImmersiveMode/ImmersiveModeSample/.gitignore
new file mode 100644
index 0000000..6eb878d
--- /dev/null
+++ b/ui/window/ImmersiveMode/ImmersiveModeSample/.gitignore
@@ -0,0 +1,16 @@
+# 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.
+src/template/
+src/common/
+build.gradle
diff --git a/ui/window/ImmersiveMode/ImmersiveModeSample/README-singleview.txt b/ui/window/ImmersiveMode/ImmersiveModeSample/README-singleview.txt
new file mode 100644
index 0000000..0cacd46
--- /dev/null
+++ b/ui/window/ImmersiveMode/ImmersiveModeSample/README-singleview.txt
@@ -0,0 +1,47 @@
+<#--
+        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.
+-->
+
+Steps to implement SingleView template:
+-in template-params.xml.ftl:
+    -add the following line to common imports
+        <common src="activities"/>
+
+    -add a string for the action button's text using the element name "sample_action".
+    This element should be a child of <strings>:
+        <strings>
+        ...
+        <sample_action>ButtonText</sample_action>
+        ...
+        </strings>
+
+
+
+-Add a Fragment to handle behavior.  In your MainActivity.java class, it will reference a Fragment
+ called (yourProjectName)Fragment.java.  Create that file in your project, using the "main" source
+ folder instead of "common" or "templates".
+   For instance, if your package name is com.example.foo, create the file
+   src/main/java/com/example/foo/FooFragment.java
+
+
+-Within this fragment, make sure that the onCreate method has the line
+ "setHasOptionsMenu(true);", to enable the fragment to handle menu events.
+
+-In order to override menu events, override onOptionsItemSelected.
+
+-refer to sampleSamples/singleViewSample for a reference implementation of a
+project built on this template.
+
+
diff --git a/connectivity/sync/BasicSyncAdapter/BasicSyncAdapterTests/proguard-project.txt b/ui/window/ImmersiveMode/ImmersiveModeSample/proguard-project.txt
similarity index 91%
copy from connectivity/sync/BasicSyncAdapter/BasicSyncAdapterTests/proguard-project.txt
copy to ui/window/ImmersiveMode/ImmersiveModeSample/proguard-project.txt
index f2fe155..0d8f171 100644
--- a/connectivity/sync/BasicSyncAdapter/BasicSyncAdapterTests/proguard-project.txt
+++ b/ui/window/ImmersiveMode/ImmersiveModeSample/proguard-project.txt
@@ -1,4 +1,4 @@
-# To enable ProGuard in your project, edit project.properties
+ To enable ProGuard in your project, edit project.properties
 # to define the proguard.config property as described in that file.
 #
 # Add project specific ProGuard rules here.
diff --git a/ui/actionbarcompat/ListPopupMenu/ListPopupMenu/src/main/AndroidManifest.xml b/ui/window/ImmersiveMode/ImmersiveModeSample/src/main/AndroidManifest.xml
similarity index 62%
copy from ui/actionbarcompat/ListPopupMenu/ListPopupMenu/src/main/AndroidManifest.xml
copy to ui/window/ImmersiveMode/ImmersiveModeSample/src/main/AndroidManifest.xml
index 7e9a861..72a60ce 100644
--- a/ui/actionbarcompat/ListPopupMenu/ListPopupMenu/src/main/AndroidManifest.xml
+++ b/ui/window/ImmersiveMode/ImmersiveModeSample/src/main/AndroidManifest.xml
@@ -1,11 +1,12 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2013 The Android Open Source Project
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ 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
+     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,
@@ -14,23 +15,20 @@
  limitations under the License.
 -->
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
-    package="com.example.android.actionbarcompat.listpopupmenu"
+    package="com.example.android.immersivemode"
     android:versionCode="1"
     android:versionName="1.0">
 
-    <!-- ActionBarCompat provides an implementation of Popup Menu from API v7 onwards -->
-    <uses-sdk
-        android:minSdkVersion="7"
-        android:targetSdkVersion="17" />
+    <uses-sdk android:minSdkVersion="11" android:targetSdkVersion="19" />
 
-    <application
-        android:icon="@drawable/ic_launcher"
+    <application android:allowBackup="true"
         android:label="@string/app_name"
-        android:theme="@style/Theme.AppCompat"
-        android:allowBackup="true">
+        android:icon="@drawable/ic_launcher"
+        android:theme="@style/AppTheme">
 
-        <activity android:name=".MainActivity">
-            <!-- Launcher Intent filter -->
+        <activity android:name=".MainActivity"
+                  android:label="@string/app_name"
+                  android:uiOptions="splitActionBarWhenNarrow">
             <intent-filter>
                 <action android:name="android.intent.action.MAIN" />
                 <category android:name="android.intent.category.LAUNCHER" />
@@ -38,4 +36,5 @@
         </activity>
     </application>
 
-</manifest>
\ No newline at end of file
+
+</manifest>
diff --git a/ui/window/ImmersiveMode/ImmersiveModeSample/src/main/java/com/example/android/immersivemode/ImmersiveModeFragment.java b/ui/window/ImmersiveMode/ImmersiveModeSample/src/main/java/com/example/android/immersivemode/ImmersiveModeFragment.java
new file mode 100644
index 0000000..8a7255c
--- /dev/null
+++ b/ui/window/ImmersiveMode/ImmersiveModeSample/src/main/java/com/example/android/immersivemode/ImmersiveModeFragment.java
@@ -0,0 +1,103 @@
+/*
+* Copyright (C) 2012 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.immersivemode;
+
+import android.os.Build;
+import android.os.Bundle;
+import android.support.v4.app.Fragment;
+import android.view.MenuItem;
+import android.view.View;
+
+import com.example.android.common.logger.Log;
+
+public class ImmersiveModeFragment extends Fragment {
+
+    public static final String TAG = "ImmersiveModeFragment";
+
+    @Override
+    public void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        setHasOptionsMenu(true);
+    }
+
+    @Override
+    public void onActivityCreated(Bundle savedInstanceState) {
+        super.onActivityCreated(savedInstanceState);
+        final View decorView = getActivity().getWindow().getDecorView();
+        decorView.setOnSystemUiVisibilityChangeListener(
+                new View.OnSystemUiVisibilityChangeListener() {
+                    @Override
+                    public void onSystemUiVisibilityChange(int i) {
+                        int height = decorView.getHeight();
+                        Log.i(TAG, "Current height: " + height);
+                    }
+                });
+    }
+
+    @Override
+    public boolean onOptionsItemSelected(MenuItem item) {
+        if (item.getItemId() == R.id.sample_action) {
+            toggleHideyBar();
+        }
+        return true;
+    }
+
+    /**
+     * Detects and toggles immersive mode (also known as "hidey bar" mode).
+     */
+    public void toggleHideyBar() {
+
+        // BEGIN_INCLUDE (get_current_ui_flags)
+        // The UI options currently enabled are represented by a bitfield.
+        // getSystemUiVisibility() gives us that bitfield.
+        int uiOptions = getActivity().getWindow().getDecorView().getSystemUiVisibility();
+        int newUiOptions = uiOptions;
+        // END_INCLUDE (get_current_ui_flags)
+        // BEGIN_INCLUDE (toggle_ui_flags)
+        boolean isImmersiveModeEnabled =
+                ((uiOptions | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY) == uiOptions);
+        if (isImmersiveModeEnabled) {
+            Log.i(TAG, "Turning immersive mode mode off. ");
+        } else {
+            Log.i(TAG, "Turning immersive mode mode on.");
+        }
+
+        // Navigation bar hiding:  Backwards compatible to ICS.
+        if (Build.VERSION.SDK_INT >= 14) {
+            newUiOptions ^= View.SYSTEM_UI_FLAG_HIDE_NAVIGATION;
+        }
+
+        // Status bar hiding: Backwards compatible to Jellybean
+        if (Build.VERSION.SDK_INT >= 16) {
+            newUiOptions ^= View.SYSTEM_UI_FLAG_FULLSCREEN;
+        }
+
+        // Immersive mode: Backward compatible to KitKat.
+        // Note that this flag doesn't do anything by itself, it only augments the behavior
+        // of HIDE_NAVIGATION and FLAG_FULLSCREEN.  For the purposes of this sample
+        // all three flags are being toggled together.
+        // Note that there are two immersive mode UI flags, one of which is referred to as "sticky".
+        // Sticky immersive mode differs in that it makes the navigation and status bars
+        // semi-transparent, and the UI flag does not get cleared when the user interacts with
+        // the screen.
+        if (Build.VERSION.SDK_INT >= 18) {
+            newUiOptions ^= View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY;
+        }
+
+        getActivity().getWindow().getDecorView().setSystemUiVisibility(newUiOptions);
+        //END_INCLUDE (set_ui_flags)
+    }
+}
diff --git a/ui/actionbar/DoneBar/DoneBar/src/main/res/drawable-hdpi/ic_launcher.png b/ui/window/ImmersiveMode/ImmersiveModeSample/src/main/res/drawable-hdpi/ic_launcher.png
similarity index 100%
copy from ui/actionbar/DoneBar/DoneBar/src/main/res/drawable-hdpi/ic_launcher.png
copy to ui/window/ImmersiveMode/ImmersiveModeSample/src/main/res/drawable-hdpi/ic_launcher.png
Binary files differ
diff --git a/ui/actionbar/DoneBar/DoneBar/src/main/res/drawable-mdpi/ic_launcher.png b/ui/window/ImmersiveMode/ImmersiveModeSample/src/main/res/drawable-mdpi/ic_launcher.png
similarity index 100%
copy from ui/actionbar/DoneBar/DoneBar/src/main/res/drawable-mdpi/ic_launcher.png
copy to ui/window/ImmersiveMode/ImmersiveModeSample/src/main/res/drawable-mdpi/ic_launcher.png
Binary files differ
diff --git a/ui/actionbar/DoneBar/DoneBar/src/main/res/drawable-xhdpi/ic_launcher.png b/ui/window/ImmersiveMode/ImmersiveModeSample/src/main/res/drawable-xhdpi/ic_launcher.png
similarity index 100%
copy from ui/actionbar/DoneBar/DoneBar/src/main/res/drawable-xhdpi/ic_launcher.png
copy to ui/window/ImmersiveMode/ImmersiveModeSample/src/main/res/drawable-xhdpi/ic_launcher.png
Binary files differ
diff --git a/ui/actionbar/DoneBar/DoneBar/src/main/res/drawable-xxhdpi/ic_launcher.png b/ui/window/ImmersiveMode/ImmersiveModeSample/src/main/res/drawable-xxhdpi/ic_launcher.png
similarity index 100%
copy from ui/actionbar/DoneBar/DoneBar/src/main/res/drawable-xxhdpi/ic_launcher.png
copy to ui/window/ImmersiveMode/ImmersiveModeSample/src/main/res/drawable-xxhdpi/ic_launcher.png
Binary files differ
diff --git a/ui/window/ImmersiveMode/ImmersiveModeSample/tests/AndroidManifest.xml b/ui/window/ImmersiveMode/ImmersiveModeSample/tests/AndroidManifest.xml
new file mode 100644
index 0000000..b090189
--- /dev/null
+++ b/ui/window/ImmersiveMode/ImmersiveModeSample/tests/AndroidManifest.xml
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  Copyright (C) 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 name must be unique so suffix with "tests" so package loader doesn't ignore us -->
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+          package="com.example.android.immersivemode.tests"
+          android:versionCode="1"
+          android:versionName="1.0">
+
+    <uses-sdk
+            android:minSdkVersion="18"
+            android:targetSdkVersion="19" />
+
+    <!-- We add an application tag here just so that we can indicate that
+         this package needs to link against the android.test library,
+         which is needed when building test cases. -->
+    <application>
+        <uses-library android:name="android.test.runner" />
+    </application>
+
+    <!--
+    Specifies the instrumentation test runner used to run the tests.
+    -->
+    <instrumentation
+            android:name="android.test.InstrumentationTestRunner"
+            android:targetPackage="com.example.android.immersivemode"
+            android:label="Tests for com.example.android.immersivemode" />
+
+</manifest>
\ No newline at end of file
diff --git a/ui/window/ImmersiveMode/ImmersiveModeSample/tests/src/com/example/android/immersivemode/tests/ImmersiveModeSampleTests.java b/ui/window/ImmersiveMode/ImmersiveModeSample/tests/src/com/example/android/immersivemode/tests/ImmersiveModeSampleTests.java
new file mode 100644
index 0000000..eb80375
--- /dev/null
+++ b/ui/window/ImmersiveMode/ImmersiveModeSample/tests/src/com/example/android/immersivemode/tests/ImmersiveModeSampleTests.java
@@ -0,0 +1,109 @@
+/*
+ * Copyright (C) 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.immersivemode.tests;
+
+import com.example.android.immersivemode.*;
+
+import android.test.ActivityInstrumentationTestCase2;
+import android.test.UiThreadTest;
+
+/**
+ * Tests for immersive mode sample.
+ */
+public class ImmersiveModeSampleTests extends ActivityInstrumentationTestCase2<MainActivity> {
+
+    private MainActivity mTestActivity;
+    private ImmersiveModeFragment mTestFragment;
+
+    public ImmersiveModeSampleTests() {
+        super(MainActivity.class);
+    }
+
+    @Override
+    protected void setUp() throws Exception {
+        super.setUp();
+
+        // Starts the activity under test using the default Intent with:
+        // action = {@link Intent#ACTION_MAIN}
+        // flags = {@link Intent#FLAG_ACTIVITY_NEW_TASK}
+        // All other fields are null or empty.
+        mTestActivity = getActivity();
+        mTestFragment = (ImmersiveModeFragment)
+                mTestActivity.getSupportFragmentManager().getFragments().get(1);
+    }
+
+    /**
+     * Test if the test fixture has been set up correctly.
+     */
+    public void testPreconditions() {
+        //Try to add a message to add context to your assertions. These messages will be shown if
+        //a tests fails and make it easy to understand why a test failed
+        assertNotNull("mTestActivity is null", mTestActivity);
+        assertNotNull("mTestFragment is null", mTestFragment);
+    }
+
+    /**
+     * Verify that the UI flags actually changed when the toggle method is called.
+     */
+    @UiThreadTest
+    public void testFlagsChanged() {
+        int uiFlags = getActivity().getWindow().getDecorView().getSystemUiVisibility();
+        mTestFragment.toggleHideyBar();
+        int newUiFlags = getActivity().getWindow().getDecorView().getSystemUiVisibility();
+        assertTrue("UI Flags didn't toggle.", uiFlags != newUiFlags);
+    }
+
+    /**
+     * Verify that the view's height actually changed when the toggle method is called.
+     * This should result in a change in height for the DecorView.
+     */
+    public void testDecorHeightExpanded() {
+        // Grab the initial height of the DecorWindow.
+        int startingHeight = getActivity().getWindow().getDecorView().getHeight();
+
+        // In order to test that this worked:  Need to toggle the immersive mode on the UI thread,
+        // wait a suitable amount of time (this test goes with 200 ms), then check to see if the
+        // height changed.
+        try {
+            Runnable testRunnable = (new Runnable() {
+                public void run() {
+                    // Toggle immersive mode
+                    mTestFragment.toggleHideyBar();
+                    synchronized(this) {
+                        // Notify any thread waiting on this runnable that it can continue
+                        this.notify();
+                    }
+                }
+            });
+            synchronized(testRunnable) {
+                // Since toggling immersive mode makes changes to the view heirarchy, it needs to run
+                // on the UI thread, or crashing will occur.
+                mTestActivity.runOnUiThread(testRunnable);
+                testRunnable.wait();
+
+            }
+            synchronized(this) {
+                //Wait about 200ms for the change to take place
+                wait(200L);
+            }
+        } catch (Throwable throwable) {
+            fail(throwable.getMessage());
+        }
+
+        int expandedHeight = getActivity().getWindow().getDecorView().getHeight();
+        assertTrue("Bars aren't hidden.", expandedHeight != startingHeight);
+    }
+}
\ No newline at end of file
diff --git a/ui/window/ImmersiveMode/ImmersiveModeSample/tests/src/com/example/android/immersivemode/tests/SampleTests.java b/ui/window/ImmersiveMode/ImmersiveModeSample/tests/src/com/example/android/immersivemode/tests/SampleTests.java
new file mode 100644
index 0000000..162b3bd
--- /dev/null
+++ b/ui/window/ImmersiveMode/ImmersiveModeSample/tests/src/com/example/android/immersivemode/tests/SampleTests.java
@@ -0,0 +1,79 @@
+/*
+* 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.
+*/
+
+
+
+/*
+* Copyright (C) 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.immersivemode.tests;
+
+import com.example.android.immersivemode.*;
+
+import android.test.ActivityInstrumentationTestCase2;
+
+/**
+* Tests for ImmersiveMode sample.
+*/
+public class SampleTests extends ActivityInstrumentationTestCase2<MainActivity> {
+
+    private MainActivity mTestActivity;
+    private ImmersiveModeFragment mTestFragment;
+
+    public SampleTests() {
+        super(MainActivity.class);
+    }
+
+    @Override
+    protected void setUp() throws Exception {
+        super.setUp();
+
+        // Starts the activity under test using the default Intent with:
+        // action = {@link Intent#ACTION_MAIN}
+        // flags = {@link Intent#FLAG_ACTIVITY_NEW_TASK}
+        // All other fields are null or empty.
+        mTestActivity = getActivity();
+        mTestFragment = (ImmersiveModeFragment)
+            mTestActivity.getSupportFragmentManager().getFragments().get(1);
+    }
+
+    /**
+    * Test if the test fixture has been set up correctly.
+    */
+    public void testPreconditions() {
+        //Try to add a message to add context to your assertions. These messages will be shown if
+        //a tests fails and make it easy to understand why a test failed
+        assertNotNull("mTestActivity is null", mTestActivity);
+        assertNotNull("mTestFragment is null", mTestFragment);
+    }
+
+    /**
+    * Add more tests below.
+    */
+
+}
\ No newline at end of file
diff --git a/ui/window/ImmersiveMode/build.gradle b/ui/window/ImmersiveMode/build.gradle
new file mode 100644
index 0000000..cca9ac3
--- /dev/null
+++ b/ui/window/ImmersiveMode/build.gradle
@@ -0,0 +1,10 @@
+// BEGIN_EXCLUDE
+import com.example.android.samples.build.SampleGenPlugin
+apply plugin: SampleGenPlugin
+
+samplegen {
+  pathToBuild "../../../../../build"
+  pathToSamplesCommon "../../../common"
+}
+apply from: "../../../../../build/build.gradle"
+// END_EXCLUDE
diff --git a/ui/window/ImmersiveMode/buildSrc/build.gradle b/ui/window/ImmersiveMode/buildSrc/build.gradle
new file mode 100644
index 0000000..e344a8c
--- /dev/null
+++ b/ui/window/ImmersiveMode/buildSrc/build.gradle
@@ -0,0 +1,18 @@
+
+
+
+repositories {
+    mavenCentral()
+}
+dependencies {
+    compile 'org.freemarker:freemarker:2.3.20'
+}
+
+sourceSets {
+    main {
+        groovy {
+            srcDir new File(rootDir, "../../../../../../build/buildSrc/src/main/groovy")
+        }
+    }
+}
+
diff --git a/connectivity/network/BasicNetworkDemo/gradle/wrapper/gradle-wrapper.jar b/ui/window/ImmersiveMode/gradle/wrapper/gradle-wrapper.jar
similarity index 100%
copy from connectivity/network/BasicNetworkDemo/gradle/wrapper/gradle-wrapper.jar
copy to ui/window/ImmersiveMode/gradle/wrapper/gradle-wrapper.jar
Binary files differ
diff --git a/connectivity/network/BasicNetworkDemo/gradle/wrapper/gradle-wrapper.properties b/ui/window/ImmersiveMode/gradle/wrapper/gradle-wrapper.properties
similarity index 80%
copy from connectivity/network/BasicNetworkDemo/gradle/wrapper/gradle-wrapper.properties
copy to ui/window/ImmersiveMode/gradle/wrapper/gradle-wrapper.properties
index 055ba6f..861eddc 100644
--- a/connectivity/network/BasicNetworkDemo/gradle/wrapper/gradle-wrapper.properties
+++ b/ui/window/ImmersiveMode/gradle/wrapper/gradle-wrapper.properties
@@ -1,7 +1,6 @@
-#
-#Mon Jul 22 11:40:20 PDT 2013
+#Wed Apr 10 15:27:10 PDT 2013
 distributionBase=GRADLE_USER_HOME
 distributionPath=wrapper/dists
 zipStoreBase=GRADLE_USER_HOME
 zipStorePath=wrapper/dists
-distributionUrl=http\://services.gradle.org/distributions/gradle-1.6-bin.zip
+distributionUrl=http\://services.gradle.org/distributions/gradle-1.8-bin.zip
diff --git a/connectivity/network/BasicNetworkDemo/gradlew b/ui/window/ImmersiveMode/gradlew
similarity index 100%
copy from connectivity/network/BasicNetworkDemo/gradlew
copy to ui/window/ImmersiveMode/gradlew
diff --git a/connectivity/network/BasicNetworkDemo/gradlew.bat b/ui/window/ImmersiveMode/gradlew.bat
similarity index 100%
copy from connectivity/network/BasicNetworkDemo/gradlew.bat
copy to ui/window/ImmersiveMode/gradlew.bat
diff --git a/ui/window/ImmersiveMode/settings.gradle b/ui/window/ImmersiveMode/settings.gradle
new file mode 100644
index 0000000..d13a7a1
--- /dev/null
+++ b/ui/window/ImmersiveMode/settings.gradle
@@ -0,0 +1,4 @@
+
+
+
+include 'ImmersiveModeSample'
diff --git a/ui/window/ImmersiveMode/template-params.xml b/ui/window/ImmersiveMode/template-params.xml
new file mode 100644
index 0000000..e053d26
--- /dev/null
+++ b/ui/window/ImmersiveMode/template-params.xml
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ 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.
+-->
+<sample>
+    <name>ImmersiveMode</name>
+    <group>UI</group>
+    <package>com.example.android.immersivemode</package>
+    
+    <compileSdkVersion>19</compileSdkVersion>
+
+    <!--TODO: change minSdk if needed-->
+    <minSdk>4</minSdk>
+
+
+    <strings>
+        <intro>
+            <![CDATA[
+            One of the features introduced in KitKat is "immersive mode". Immersive mode gives the
+            user the ability to show/hide the status bar and navigation bar with a swipe.  To try,
+            click the "Toggle immersive mode" button, then try swiping the bar in and out!
+            ]]>
+        </intro>
+        <sample_action>Toggle immersive mode!</sample_action>
+    </strings>
+
+    <template src="base"/>
+    <template src="SingleView"/>
+    <common src="logger"/>
+    <common src="activities"/>
+
+</sample>
diff --git a/views/TextLinkify/AndroidManifest.xml b/views/TextLinkify/AndroidManifest.xml
deleted file mode 100644
index 0bf9b97..0000000
--- a/views/TextLinkify/AndroidManifest.xml
+++ /dev/null
@@ -1,43 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-  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.
--->
-
-<manifest xmlns:android="http://schemas.android.com/apk/res/android"
-    package="com.example.android.views.textlinkify"
-    android:versionCode="1"
-    android:versionName="1.0" >
-
-    <uses-sdk
-        android:minSdkVersion="4"
-        android:targetSdkVersion="17" />
-
-    <application
-        android:allowBackup="true"
-        android:icon="@drawable/ic_launcher"
-        android:label="@string/app_name"
-        android:theme="@style/AppTheme" >
-        <activity
-            android:name="com.example.android.views.textlinkify.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/views/TextLinkify/TextLinkify/build.gradle b/views/TextLinkify/TextLinkify/build.gradle
deleted file mode 100644
index 5bef5ee..0000000
--- a/views/TextLinkify/TextLinkify/build.gradle
+++ /dev/null
@@ -1,18 +0,0 @@
-buildscript {
-    repositories {
-        mavenCentral()
-    }
-    dependencies {
-        classpath 'com.android.tools.build:gradle:0.5.+'
-    }
-}
-apply plugin: 'android'
-
-dependencies {
-    compile "com.android.support:support-v4:18.0.+"
-}
-
-android {
-    compileSdkVersion 18
-    buildToolsVersion "18.0.0"
-}
diff --git a/views/TextLinkify/TextLinkify/src/main/AndroidManifest.xml b/views/TextLinkify/TextLinkify/src/main/AndroidManifest.xml
deleted file mode 100644
index 0bf9b97..0000000
--- a/views/TextLinkify/TextLinkify/src/main/AndroidManifest.xml
+++ /dev/null
@@ -1,43 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-  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.
--->
-
-<manifest xmlns:android="http://schemas.android.com/apk/res/android"
-    package="com.example.android.views.textlinkify"
-    android:versionCode="1"
-    android:versionName="1.0" >
-
-    <uses-sdk
-        android:minSdkVersion="4"
-        android:targetSdkVersion="17" />
-
-    <application
-        android:allowBackup="true"
-        android:icon="@drawable/ic_launcher"
-        android:label="@string/app_name"
-        android:theme="@style/AppTheme" >
-        <activity
-            android:name="com.example.android.views.textlinkify.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/views/TextLinkify/TextLinkify/src/main/res/values-v11/styles.xml b/views/TextLinkify/TextLinkify/src/main/res/values-v11/styles.xml
deleted file mode 100644
index 91f4523..0000000
--- a/views/TextLinkify/TextLinkify/src/main/res/values-v11/styles.xml
+++ /dev/null
@@ -1,27 +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.
--->
-
-<resources>
-
-    <!--
-        Base application theme for API 11+. This theme completely replaces
-        AppBaseTheme from res/values/styles.xml on API 11+ devices.
-    -->
-    <style name="AppBaseTheme" parent="android:Theme.Holo.Light">
-        <!-- API 11 theme customizations can go here. -->
-    </style>
-
-</resources>
diff --git a/views/TextLinkify/TextLinkify/src/main/res/values/styles.xml b/views/TextLinkify/TextLinkify/src/main/res/values/styles.xml
deleted file mode 100644
index 91da12c..0000000
--- a/views/TextLinkify/TextLinkify/src/main/res/values/styles.xml
+++ /dev/null
@@ -1,40 +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.
--->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android">
-
-    <!--
-        Base application theme, dependent on API level. This theme is replaced
-        by AppBaseTheme from res/values-vXX/styles.xml on newer devices.
-    -->
-    <style name="AppBaseTheme" parent="android:Theme.Light">
-        <!--
-            Theme customizations available in newer API levels can go in
-            res/values-vXX/styles.xml, while customizations related to
-            backward-compatibility can go here.
-        -->
-    </style>
-
-    <!-- Application theme. -->
-    <style name="AppTheme" parent="AppBaseTheme">
-        <!-- All customizations that are NOT specific to a particular API-level can go here. -->
-    </style>
-
-    <style name="LinkText">
-        <item name="android:paddingTop">9dp</item>
-        <item name="android:paddingBottom">9dp</item>
-    </style>
-</resources>
diff --git a/views/TextLinkify/TextLinkifySample/.gitignore b/views/TextLinkify/TextLinkifySample/.gitignore
new file mode 100644
index 0000000..6eb878d
--- /dev/null
+++ b/views/TextLinkify/TextLinkifySample/.gitignore
@@ -0,0 +1,16 @@
+# 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.
+src/template/
+src/common/
+build.gradle
diff --git a/connectivity/sync/BasicSyncAdapter/BasicSyncAdapterTests/proguard-project.txt b/views/TextLinkify/TextLinkifySample/proguard-project.txt
similarity index 91%
copy from connectivity/sync/BasicSyncAdapter/BasicSyncAdapterTests/proguard-project.txt
copy to views/TextLinkify/TextLinkifySample/proguard-project.txt
index f2fe155..0d8f171 100644
--- a/connectivity/sync/BasicSyncAdapter/BasicSyncAdapterTests/proguard-project.txt
+++ b/views/TextLinkify/TextLinkifySample/proguard-project.txt
@@ -1,4 +1,4 @@
-# To enable ProGuard in your project, edit project.properties
+ To enable ProGuard in your project, edit project.properties
 # to define the proguard.config property as described in that file.
 #
 # Add project specific ProGuard rules here.
diff --git a/ui/accessibility/BasicAccessibility/BasicAccessibility/src/main/AndroidManifest.xml b/views/TextLinkify/TextLinkifySample/src/main/AndroidManifest.xml
similarity index 72%
copy from ui/accessibility/BasicAccessibility/BasicAccessibility/src/main/AndroidManifest.xml
copy to views/TextLinkify/TextLinkifySample/src/main/AndroidManifest.xml
index 3c0e66a..49b4eae 100644
--- a/ui/accessibility/BasicAccessibility/BasicAccessibility/src/main/AndroidManifest.xml
+++ b/views/TextLinkify/TextLinkifySample/src/main/AndroidManifest.xml
@@ -1,12 +1,12 @@
-<?xml version="1.0" encoding="utf-8"?>
+<?xml version="1.0" encoding="UTF-8"?>
 <!--
- Copyright (C) 2013 The Android Open Source Project
+ 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
+     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,
@@ -15,14 +15,16 @@
  limitations under the License.
 -->
 
+
+
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
-    package="com.example.android.ui.accessibility.BasicAccessibility"
+    package="com.example.android.textlinkify"
     android:versionCode="1"
-    android:versionName="1.0" >
+    android:versionName="1.0">
 
     <uses-sdk
-        android:minSdkVersion="11"
-        android:targetSdkVersion="16" />
+        android:minSdkVersion="4"
+        android:targetSdkVersion="17" />
 
     <application
         android:allowBackup="true"
@@ -30,7 +32,7 @@
         android:label="@string/app_name"
         android:theme="@style/AppTheme" >
         <activity
-            android:name="com.example.android.ui.accessibility.BasicAccessibility.MainActivity"
+            android:name=".MainActivity"
             android:label="@string/app_name" >
             <intent-filter>
                 <action android:name="android.intent.action.MAIN" />
diff --git a/views/TextLinkify/TextLinkify/src/main/java/com/example/android/views/textlinkify/MainActivity.java b/views/TextLinkify/TextLinkifySample/src/main/java/com/example/android/textlinkify/MainActivity.java
similarity index 96%
rename from views/TextLinkify/TextLinkify/src/main/java/com/example/android/views/textlinkify/MainActivity.java
rename to views/TextLinkify/TextLinkifySample/src/main/java/com/example/android/textlinkify/MainActivity.java
index 9e5a7c9..c9325a9 100644
--- a/views/TextLinkify/TextLinkify/src/main/java/com/example/android/views/textlinkify/MainActivity.java
+++ b/views/TextLinkify/TextLinkifySample/src/main/java/com/example/android/textlinkify/MainActivity.java
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-package com.example.android.views.textlinkify;
+package com.example.android.textlinkify;
 
 import android.app.Activity;
 import android.graphics.Typeface;
@@ -29,7 +29,7 @@
 
 /**
  * This sample demonstrates how clickable links can be added to a
- * {@link TextView}.
+ * {@link android.widget.TextView}.
  *
  * <p>This can be done in three ways:
  * <ul>
@@ -38,7 +38,7 @@
  * {@link android.widget.TextView#setAutoLinkMask(int)} using an option from
  * {@link android.text.util.Linkify}</li>
  *
- * <li><b>Parsing a String as HTML:</b> See {@link Html#fromHtml(String)})</li>
+ * <li><b>Parsing a String as HTML:</b> See {@link android.text.Html#fromHtml(String)})</li>
  *
  * <li><b>Manually by constructing a {@link android.text.SpannableString}:</b> Consisting of
  * {@link android.text.style.StyleSpan} and {@link android.text.style.URLSpan} objects that
@@ -52,7 +52,7 @@
     protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
 
-        setContentView(R.layout.activity_main);
+        setContentView(R.layout.sample_main);
 
         // BEGIN_INCLUDE(text_auto_linkify)
         /*
diff --git a/views/TextLinkify/TextLinkify/src/main/res/drawable-hdpi/ic_launcher.png b/views/TextLinkify/TextLinkifySample/src/main/res/drawable-hdpi/ic_launcher.png
similarity index 100%
rename from views/TextLinkify/TextLinkify/src/main/res/drawable-hdpi/ic_launcher.png
rename to views/TextLinkify/TextLinkifySample/src/main/res/drawable-hdpi/ic_launcher.png
Binary files differ
diff --git a/views/TextLinkify/TextLinkify/src/main/res/drawable-mdpi/ic_launcher.png b/views/TextLinkify/TextLinkifySample/src/main/res/drawable-mdpi/ic_launcher.png
similarity index 100%
rename from views/TextLinkify/TextLinkify/src/main/res/drawable-mdpi/ic_launcher.png
rename to views/TextLinkify/TextLinkifySample/src/main/res/drawable-mdpi/ic_launcher.png
Binary files differ
diff --git a/views/TextLinkify/TextLinkify/src/main/res/drawable-xhdpi/ic_launcher.png b/views/TextLinkify/TextLinkifySample/src/main/res/drawable-xhdpi/ic_launcher.png
similarity index 100%
rename from views/TextLinkify/TextLinkify/src/main/res/drawable-xhdpi/ic_launcher.png
rename to views/TextLinkify/TextLinkifySample/src/main/res/drawable-xhdpi/ic_launcher.png
Binary files differ
diff --git a/views/TextLinkify/TextLinkify/src/main/res/drawable-xxhdpi/ic_launcher.png b/views/TextLinkify/TextLinkifySample/src/main/res/drawable-xxhdpi/ic_launcher.png
similarity index 100%
rename from views/TextLinkify/TextLinkify/src/main/res/drawable-xxhdpi/ic_launcher.png
rename to views/TextLinkify/TextLinkifySample/src/main/res/drawable-xxhdpi/ic_launcher.png
Binary files differ
diff --git a/views/TextLinkify/TextLinkify/src/main/res/layout/activity_main.xml b/views/TextLinkify/TextLinkifySample/src/main/res/layout/sample_main.xml
similarity index 100%
rename from views/TextLinkify/TextLinkify/src/main/res/layout/activity_main.xml
rename to views/TextLinkify/TextLinkifySample/src/main/res/layout/sample_main.xml
diff --git a/views/TextLinkify/TextLinkify/src/main/res/values-sw720dp-land/dimens.xml b/views/TextLinkify/TextLinkifySample/src/main/res/values-sw720dp-land/dimens.xml
similarity index 100%
rename from views/TextLinkify/TextLinkify/src/main/res/values-sw720dp-land/dimens.xml
rename to views/TextLinkify/TextLinkifySample/src/main/res/values-sw720dp-land/dimens.xml
diff --git a/views/TextLinkify/TextLinkify/src/main/res/values/dimens.xml b/views/TextLinkify/TextLinkifySample/src/main/res/values/dimens.xml
similarity index 100%
rename from views/TextLinkify/TextLinkify/src/main/res/values/dimens.xml
rename to views/TextLinkify/TextLinkifySample/src/main/res/values/dimens.xml
diff --git a/views/TextLinkify/TextLinkify/src/main/res/values/strings.xml b/views/TextLinkify/TextLinkifySample/src/main/res/values/strings.xml
similarity index 97%
rename from views/TextLinkify/TextLinkify/src/main/res/values/strings.xml
rename to views/TextLinkify/TextLinkifySample/src/main/res/values/strings.xml
index 371ee69..c50774e 100644
--- a/views/TextLinkify/TextLinkify/src/main/res/values/strings.xml
+++ b/views/TextLinkify/TextLinkifySample/src/main/res/values/strings.xml
@@ -17,7 +17,6 @@
 
 <resources>
 
-    <string name="app_name">TextLinkify Sample</string>
     <string name="intro">This sample illustrates how links can be added to a TextView.
     \nThis can be done either automatically by setting the <i>autoLink</i> property
     or explicitly.</string>
diff --git a/views/TextLinkify/TextLinkify/src/main/res/values-sw600dp/dimens.xml b/views/TextLinkify/TextLinkifySample/src/main/res/values/styles.xml
similarity index 73%
rename from views/TextLinkify/TextLinkify/src/main/res/values-sw600dp/dimens.xml
rename to views/TextLinkify/TextLinkifySample/src/main/res/values/styles.xml
index 686fe89..29c4230 100644
--- a/views/TextLinkify/TextLinkify/src/main/res/values-sw600dp/dimens.xml
+++ b/views/TextLinkify/TextLinkifySample/src/main/res/values/styles.xml
@@ -14,11 +14,9 @@
   limitations under the License.
 -->
 
-<resources>
-
-    <!--
-         Customize dimensions originally defined in res/values/dimens.xml (such as
-         screen margins) for sw600dp devices (e.g. 7" tablets) here.
-    -->
-
+<resources xmlns:android="http://schemas.android.com/apk/res/android">
+    <style name="LinkText">
+        <item name="android:paddingTop">9dp</item>
+        <item name="android:paddingBottom">9dp</item>
+    </style>
 </resources>
diff --git a/views/TextLinkify/TextLinkifySample/tests/AndroidManifest.xml b/views/TextLinkify/TextLinkifySample/tests/AndroidManifest.xml
new file mode 100644
index 0000000..e368f05
--- /dev/null
+++ b/views/TextLinkify/TextLinkifySample/tests/AndroidManifest.xml
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  Copyright (C) 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 name must be unique so suffix with "tests" so package loader doesn't ignore us -->
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+          package="com.example.android.textlinkify.tests"
+          android:versionCode="1"
+          android:versionName="1.0">
+
+    <uses-sdk
+            android:minSdkVersion="18"
+            android:targetSdkVersion="19" />
+
+    <!-- We add an application tag here just so that we can indicate that
+         this package needs to link against the android.test library,
+         which is needed when building test cases. -->
+    <application>
+        <uses-library android:name="android.test.runner" />
+    </application>
+
+    <!--
+    Specifies the instrumentation test runner used to run the tests.
+    -->
+    <instrumentation
+            android:name="android.test.InstrumentationTestRunner"
+            android:targetPackage="com.example.android.textlinkify"
+            android:label="Tests for com.example.android.textlinkify" />
+
+</manifest>
\ No newline at end of file
diff --git a/views/TextLinkify/TextLinkifySample/tests/src/com/example/android/textlinkify/tests/SampleTests.java b/views/TextLinkify/TextLinkifySample/tests/src/com/example/android/textlinkify/tests/SampleTests.java
new file mode 100644
index 0000000..90a91cc
--- /dev/null
+++ b/views/TextLinkify/TextLinkifySample/tests/src/com/example/android/textlinkify/tests/SampleTests.java
@@ -0,0 +1,79 @@
+/*
+* 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.
+*/
+
+
+
+/*
+* Copyright (C) 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.textlinkify.tests;
+
+import com.example.android.textlinkify.*;
+
+import android.test.ActivityInstrumentationTestCase2;
+
+/**
+* Tests for TextLinkify sample.
+*/
+public class SampleTests extends ActivityInstrumentationTestCase2<MainActivity> {
+
+    private MainActivity mTestActivity;
+    private TextLinkifyFragment mTestFragment;
+
+    public SampleTests() {
+        super(MainActivity.class);
+    }
+
+    @Override
+    protected void setUp() throws Exception {
+        super.setUp();
+
+        // Starts the activity under test using the default Intent with:
+        // action = {@link Intent#ACTION_MAIN}
+        // flags = {@link Intent#FLAG_ACTIVITY_NEW_TASK}
+        // All other fields are null or empty.
+        mTestActivity = getActivity();
+        mTestFragment = (TextLinkifyFragment)
+            mTestActivity.getSupportFragmentManager().getFragments().get(1);
+    }
+
+    /**
+    * Test if the test fixture has been set up correctly.
+    */
+    public void testPreconditions() {
+        //Try to add a message to add context to your assertions. These messages will be shown if
+        //a tests fails and make it easy to understand why a test failed
+        assertNotNull("mTestActivity is null", mTestActivity);
+        assertNotNull("mTestFragment is null", mTestFragment);
+    }
+
+    /**
+    * Add more tests below.
+    */
+
+}
\ No newline at end of file
diff --git a/views/TextLinkify/build.gradle b/views/TextLinkify/build.gradle
index 495c503..c7a137e 100644
--- a/views/TextLinkify/build.gradle
+++ b/views/TextLinkify/build.gradle
@@ -1 +1,10 @@
-// Top-level build file where you can add configuration options common to all sub-projects/modules.
+// BEGIN_EXCLUDE
+import com.example.android.samples.build.SampleGenPlugin
+apply plugin: SampleGenPlugin
+
+samplegen {
+  pathToBuild "../../../../build"
+  pathToSamplesCommon "../../common"
+}
+apply from: "../../../../build/build.gradle"
+// END_EXCLUDE
diff --git a/views/TextLinkify/buildSrc/build.gradle b/views/TextLinkify/buildSrc/build.gradle
new file mode 100644
index 0000000..29282af
--- /dev/null
+++ b/views/TextLinkify/buildSrc/build.gradle
@@ -0,0 +1,18 @@
+
+
+
+repositories {
+    mavenCentral()
+}
+dependencies {
+    compile 'org.freemarker:freemarker:2.3.20'
+}
+
+sourceSets {
+    main {
+        groovy {
+            srcDir new File(rootDir, "../../../../../build/buildSrc/src/main/groovy")
+        }
+    }
+}
+
diff --git a/connectivity/network/BasicNetworkDemo/gradle/wrapper/gradle-wrapper.jar b/views/TextLinkify/gradle/wrapper/gradle-wrapper.jar
similarity index 100%
copy from connectivity/network/BasicNetworkDemo/gradle/wrapper/gradle-wrapper.jar
copy to views/TextLinkify/gradle/wrapper/gradle-wrapper.jar
Binary files differ
diff --git a/connectivity/network/BasicNetworkDemo/gradle/wrapper/gradle-wrapper.properties b/views/TextLinkify/gradle/wrapper/gradle-wrapper.properties
similarity index 80%
copy from connectivity/network/BasicNetworkDemo/gradle/wrapper/gradle-wrapper.properties
copy to views/TextLinkify/gradle/wrapper/gradle-wrapper.properties
index 055ba6f..861eddc 100644
--- a/connectivity/network/BasicNetworkDemo/gradle/wrapper/gradle-wrapper.properties
+++ b/views/TextLinkify/gradle/wrapper/gradle-wrapper.properties
@@ -1,7 +1,6 @@
-#
-#Mon Jul 22 11:40:20 PDT 2013
+#Wed Apr 10 15:27:10 PDT 2013
 distributionBase=GRADLE_USER_HOME
 distributionPath=wrapper/dists
 zipStoreBase=GRADLE_USER_HOME
 zipStorePath=wrapper/dists
-distributionUrl=http\://services.gradle.org/distributions/gradle-1.6-bin.zip
+distributionUrl=http\://services.gradle.org/distributions/gradle-1.8-bin.zip
diff --git a/connectivity/network/BasicNetworkDemo/gradlew b/views/TextLinkify/gradlew
similarity index 100%
copy from connectivity/network/BasicNetworkDemo/gradlew
copy to views/TextLinkify/gradlew
diff --git a/connectivity/network/BasicNetworkDemo/gradlew.bat b/views/TextLinkify/gradlew.bat
similarity index 100%
copy from connectivity/network/BasicNetworkDemo/gradlew.bat
copy to views/TextLinkify/gradlew.bat
diff --git a/views/TextLinkify/settings.gradle b/views/TextLinkify/settings.gradle
index 2042982..38e7ddd 100644
--- a/views/TextLinkify/settings.gradle
+++ b/views/TextLinkify/settings.gradle
@@ -1,2 +1,4 @@
-include ':TextLinkify'
 
+
+
+include 'TextLinkifySample'
diff --git a/views/TextLinkify/template-params.xml b/views/TextLinkify/template-params.xml
new file mode 100644
index 0000000..c703b8b
--- /dev/null
+++ b/views/TextLinkify/template-params.xml
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ 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.
+-->
+
+<sample>
+    <name>TextLinkify</name>
+    <group>Views</group>
+    <package>com.example.android.textlinkify</package>
+
+    <!-- change minSdk if needed-->
+    <minSdk>4</minSdk>
+
+    <strings>
+        <intro>
+            <![CDATA[
+            This sample illustrates how links can be added to a TextView. This can be done either
+            automatically by setting the "autoLink" property or explicitly.
+            ]]>
+        </intro>
+    </strings>
+
+    <template src="base"/>
+    <common src="logger"/>
+
+</sample>
diff --git a/views/TextLinkify/textLinkify.jd b/views/TextLinkify/textLinkify.jd
deleted file mode 100644
index ca39b7b..0000000
--- a/views/TextLinkify/textLinkify.jd
+++ /dev/null
@@ -1,15 +0,0 @@
-page.title=Linkify Sample
-@jd:body
-<p>This sample demonstrates how clickable links can be added to a
- <a href="http://developer.android.com/reference/android/widget/TextView.html">TextView</a>.
-  This can be done automatically (see
- <a href="http://developer.android.com/reference/android/widget/TextView.html#setAutoLinkMask(int)">
-TextView#setAutoLinkMask(int)</a>), explicitly by parsing a String as
- HTML (see
- <a href="http://developer.android.com/reference/android/text/Html.html#fromHtml(java.lang.String)">
- Html#fromHtml(String)</a>) or using a
-  <a href="http://developer.android.com/reference/android/text/SpannableString.html">SpannableString
-</a> consisting of
- <a href="http://developer.android.com/reference/android/text/style/StyleSpan.html">StyleSpan</a>
-  and <a href="http://developer.android.com/reference/android/text/style/URLSpan.html">URLSpan</a>
- objects. </p>
\ No newline at end of file