Updates Drawers, Bandwidth, and test suite w/ latest lib changes.

Bug: 4368433
Test: Manual tests.
Change-Id: I05390331730648371eb3caa5f1e21fbd11831319
diff --git a/wearable/wear/WearComplicationProvidersTestSuite/Wearable/build.gradle b/wearable/wear/WearComplicationProvidersTestSuite/Wearable/build.gradle
index 84288bb..39ddaf8 100644
--- a/wearable/wear/WearComplicationProvidersTestSuite/Wearable/build.gradle
+++ b/wearable/wear/WearComplicationProvidersTestSuite/Wearable/build.gradle
@@ -6,7 +6,7 @@
     }
 
     dependencies {
-        classpath 'com.android.tools.build:gradle:3.0.1'
+        classpath 'com.android.tools.build:gradle:3.1.3'
     }
 }
 
@@ -21,15 +21,15 @@
 
 dependencies {
 
-    compile 'com.android.support:appcompat-v7:27.1.0'
+    implementation 'com.android.support:appcompat-v7:27.1.1'
 
 
-    compile 'com.google.android.gms:play-services-wearable:11.8.0'
-    compile 'com.android.support:support-v13:27.1.0'
+    implementation 'com.google.android.gms:play-services-wearable:15.0.1'
+    implementation 'com.android.support:support-v13:27.1.1'
 
-    provided 'com.google.android.wearable:wearable:2.3.0'
+    compileOnly 'com.google.android.wearable:wearable:2.3.0'
 
-    compile 'com.google.android.support:wearable:2.3.0'
+    implementation 'com.google.android.support:wearable:2.3.0'
 
 }
 
diff --git a/wearable/wear/WearComplicationProvidersTestSuite/template-params.xml b/wearable/wear/WearComplicationProvidersTestSuite/template-params.xml
index 9270990..8cb8692 100644
--- a/wearable/wear/WearComplicationProvidersTestSuite/template-params.xml
+++ b/wearable/wear/WearComplicationProvidersTestSuite/template-params.xml
@@ -30,7 +30,7 @@
         <has_handheld_app>false</has_handheld_app>
     </wearable>
 
-    <dependency_wearable>com.android.support:appcompat-v7:27.1.0</dependency_wearable>
+    <dependency_wearable>com.android.support:appcompat-v7:27.1.1</dependency_wearable>
 
     <strings>
         <intro>
diff --git a/wearable/wear/WearDrawers/Wearable/build.gradle b/wearable/wear/WearDrawers/Wearable/build.gradle
index 6a22d1c..d52e606 100644
--- a/wearable/wear/WearDrawers/Wearable/build.gradle
+++ b/wearable/wear/WearDrawers/Wearable/build.gradle
@@ -6,7 +6,7 @@
     }
 
     dependencies {
-        classpath 'com.android.tools.build:gradle:3.0.1'
+        classpath 'com.android.tools.build:gradle:3.1.3'
     }
 }
 
@@ -21,15 +21,15 @@
 
 dependencies {
 
-    compile 'com.android.support:wear:27.1.0'
+    implementation 'com.android.support:wear:27.1.1'
 
 
-    compile 'com.google.android.gms:play-services-wearable:11.8.0'
-    compile 'com.android.support:support-v13:27.1.0'
+    implementation 'com.google.android.gms:play-services-wearable:15.0.1'
+    implementation 'com.android.support:support-v13:27.1.1'
 
-    provided 'com.google.android.wearable:wearable:2.3.0'
+    compileOnly 'com.google.android.wearable:wearable:2.3.0'
 
-    compile 'com.google.android.support:wearable:2.3.0'
+    implementation 'com.google.android.support:wearable:2.3.0'
 
 }
 
diff --git a/wearable/wear/WearDrawers/Wearable/src/main/java/com/example/android/wearable/wear/weardrawers/MainActivity.java b/wearable/wear/WearDrawers/Wearable/src/main/java/com/example/android/wearable/wear/weardrawers/MainActivity.java
index c90583b..88d71f5 100644
--- a/wearable/wear/WearDrawers/Wearable/src/main/java/com/example/android/wearable/wear/weardrawers/MainActivity.java
+++ b/wearable/wear/WearDrawers/Wearable/src/main/java/com/example/android/wearable/wear/weardrawers/MainActivity.java
@@ -15,7 +15,6 @@
  */
 package com.example.android.wearable.wear.weardrawers;
 
-import android.app.Activity;
 import android.app.Fragment;
 import android.app.FragmentManager;
 import android.content.Context;
@@ -24,7 +23,8 @@
 import android.graphics.ColorMatrixColorFilter;
 import android.graphics.drawable.Drawable;
 import android.os.Bundle;
-import android.support.wear.ambient.AmbientMode;
+import android.support.v4.app.FragmentActivity;
+import android.support.wear.ambient.AmbientModeSupport;
 import android.support.wear.widget.drawer.WearableActionDrawerView;
 import android.support.wear.widget.drawer.WearableNavigationDrawerView;
 import android.util.Log;
@@ -40,8 +40,8 @@
 /**
  * Demonstrates use of Navigation and Action Drawers on Wear.
  */
-public class MainActivity extends Activity implements
-        AmbientMode.AmbientCallbackProvider,
+public class MainActivity extends FragmentActivity implements
+        AmbientModeSupport.AmbientCallbackProvider,
         MenuItem.OnMenuItemClickListener,
         WearableNavigationDrawerView.OnItemSelectedListener {
 
@@ -63,7 +63,7 @@
         setContentView(R.layout.activity_main);
 
         // Enables Ambient mode.
-        AmbientMode.attachAmbientSupport(this);
+        AmbientModeSupport.attach(this);
 
         mSolarSystem = initializeSolarSystem();
         mSelectedPlanet = 0;
@@ -223,7 +223,7 @@
                 LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
             View rootView = inflater.inflate(R.layout.fragment_planet, container, false);
 
-            mImageView = ((ImageView) rootView.findViewById(R.id.image));
+            mImageView = rootView.findViewById(R.id.image);
 
             int imageIdToLoad = getArguments().getInt(ARG_PLANET_IMAGE_ID);
             mImageView.setImageResource(imageIdToLoad);
@@ -257,11 +257,11 @@
     }
 
     @Override
-    public AmbientMode.AmbientCallback getAmbientCallback() {
+    public AmbientModeSupport.AmbientCallback getAmbientCallback() {
         return new MyAmbientCallback();
     }
 
-    private class MyAmbientCallback extends AmbientMode.AmbientCallback {
+    private class MyAmbientCallback extends AmbientModeSupport.AmbientCallback {
         /** Prepares the UI for ambient mode. */
         @Override
         public void onEnterAmbient(Bundle ambientDetails) {
@@ -283,4 +283,4 @@
             mWearableActionDrawer.getController().peekDrawer();
         }
     }
-}
\ No newline at end of file
+}
diff --git a/wearable/wear/WearDrawers/template-params.xml b/wearable/wear/WearDrawers/template-params.xml
index 4b8ccdf..23b3271 100644
--- a/wearable/wear/WearDrawers/template-params.xml
+++ b/wearable/wear/WearDrawers/template-params.xml
@@ -26,7 +26,7 @@
 
     <multiDexEnabled>true</multiDexEnabled>
 
-    <dependency_wearable>com.android.support:wear:27.1.0</dependency_wearable>
+    <dependency_wearable>com.android.support:wear:27.1.1</dependency_wearable>
 
     <strings>
         <intro>
diff --git a/wearable/wear/WearHighBandwidthNetworking/Wearable/build.gradle b/wearable/wear/WearHighBandwidthNetworking/Wearable/build.gradle
index c56f3a1..6b309ec 100644
--- a/wearable/wear/WearHighBandwidthNetworking/Wearable/build.gradle
+++ b/wearable/wear/WearHighBandwidthNetworking/Wearable/build.gradle
@@ -6,7 +6,7 @@
     }
 
     dependencies {
-        classpath 'com.android.tools.build:gradle:3.0.1'
+        classpath 'com.android.tools.build:gradle:3.1.3'
     }
 }
 
@@ -21,15 +21,15 @@
 
 dependencies {
 
-    compile 'com.android.support:wear:27.1.0'
+    implementation 'com.android.support:wear:27.1.1'
 
 
-    compile 'com.google.android.gms:play-services-wearable:11.8.0'
-    compile 'com.android.support:support-v13:27.1.0'
+    implementation 'com.google.android.gms:play-services-wearable:15.0.1'
+    implementation 'com.android.support:support-v13:27.1.1'
 
-    provided 'com.google.android.wearable:wearable:2.3.0'
+    compileOnly 'com.google.android.wearable:wearable:2.3.0'
 
-    compile 'com.google.android.support:wearable:2.3.0'
+    implementation 'com.google.android.support:wearable:2.3.0'
 
 }
 
diff --git a/wearable/wear/WearHighBandwidthNetworking/Wearable/src/main/java/com/example/android/wearable/wear/wearhighbandwidthnetworking/MainActivity.java b/wearable/wear/WearHighBandwidthNetworking/Wearable/src/main/java/com/example/android/wearable/wear/wearhighbandwidthnetworking/MainActivity.java
index b2161ed..726d3e3 100644
--- a/wearable/wear/WearHighBandwidthNetworking/Wearable/src/main/java/com/example/android/wearable/wear/wearhighbandwidthnetworking/MainActivity.java
+++ b/wearable/wear/WearHighBandwidthNetworking/Wearable/src/main/java/com/example/android/wearable/wear/wearhighbandwidthnetworking/MainActivity.java
@@ -31,6 +31,7 @@
 import android.widget.ImageView;
 import android.widget.TextView;
 
+import java.lang.ref.WeakReference;
 import java.util.concurrent.TimeUnit;
 
 /**
@@ -60,7 +61,7 @@
     private ConnectivityManager.NetworkCallback mNetworkCallback;
 
     // Handler for dealing with network connection timeouts.
-    private Handler mHandler;
+    private final TimeOutHandler mTimeOutHandler = new TimeOutHandler(this);
 
     private ImageView mConnectivityIcon;
     private TextView mConnectivityText;
@@ -93,32 +94,19 @@
 
         getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
 
-        mConnectivityIcon = (ImageView) findViewById(R.id.connectivity_icon);
-        mConnectivityText = (TextView) findViewById(R.id.connectivity_text);
+        mConnectivityIcon = findViewById(R.id.connectivity_icon);
+        mConnectivityText = findViewById(R.id.connectivity_text);
 
         mProgressBar = findViewById(R.id.progress_bar);
 
         mButton = findViewById(R.id.button);
         mButton.setTag(TAG_REQUEST_NETWORK);
-        mButtonIcon = (ImageView) findViewById(R.id.button_icon);
-        mButtonText = (TextView) findViewById(R.id.button_label);
+        mButtonIcon = findViewById(R.id.button_icon);
+        mButtonText = findViewById(R.id.button_label);
 
-        mInfoText = (TextView) findViewById(R.id.info_text);
+        mInfoText = findViewById(R.id.info_text);
 
         mConnectivityManager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
-
-        mHandler = new Handler() {
-            @Override
-            public void handleMessage(Message msg) {
-                switch (msg.what) {
-                    case MESSAGE_CONNECTIVITY_TIMEOUT:
-                        Log.d(LOG_TAG, "Network connection timeout");
-                        setUiState(UI_STATE_CONNECTION_TIMEOUT);
-                        unregisterNetworkCallback();
-                        break;
-                }
-            }
-        };
     }
 
     @Override
@@ -159,11 +147,8 @@
         int bandwidth = mConnectivityManager
                 .getNetworkCapabilities(network).getLinkDownstreamBandwidthKbps();
 
-        if (bandwidth >= MIN_NETWORK_BANDWIDTH_KBPS) {
-            return true;
-        }
+        return bandwidth >= MIN_NETWORK_BANDWIDTH_KBPS;
 
-        return false;
     }
 
     private void requestHighBandwidthNetwork() {
@@ -185,7 +170,7 @@
         mNetworkCallback = new ConnectivityManager.NetworkCallback() {
             @Override
             public void onAvailable(final Network network) {
-                mHandler.removeMessages(MESSAGE_CONNECTIVITY_TIMEOUT);
+                mTimeOutHandler.removeMessages(MESSAGE_CONNECTIVITY_TIMEOUT);
 
                 runOnUiThread(new Runnable() {
                     @Override
@@ -230,8 +215,8 @@
         // requires android.permission.CHANGE_NETWORK_STATE
         mConnectivityManager.requestNetwork(request, mNetworkCallback);
 
-        mHandler.sendMessageDelayed(
-                mHandler.obtainMessage(MESSAGE_CONNECTIVITY_TIMEOUT),
+        mTimeOutHandler.sendMessageDelayed(
+                mTimeOutHandler.obtainMessage(MESSAGE_CONNECTIVITY_TIMEOUT),
                 NETWORK_CONNECTIVITY_TIMEOUT_MS);
     }
 
@@ -337,4 +322,26 @@
                 break;
         }
     }
-}
\ No newline at end of file
+
+    private static class TimeOutHandler extends Handler {
+        private final WeakReference<MainActivity> mMainActivityWeakReference;
+
+        TimeOutHandler(MainActivity mainActivity) {
+            mMainActivityWeakReference = new WeakReference<>(mainActivity);
+        }
+        @Override
+        public void handleMessage(Message msg) {
+            MainActivity mainActivity = mMainActivityWeakReference.get();
+
+            if (mainActivity != null) {
+                switch (msg.what) {
+                    case MESSAGE_CONNECTIVITY_TIMEOUT:
+                        Log.d(LOG_TAG, "Network connection timeout");
+                        mainActivity.setUiState(UI_STATE_CONNECTION_TIMEOUT);
+                        mainActivity.unregisterNetworkCallback();
+                        break;
+                }
+            }
+        }
+    }
+}
diff --git a/wearable/wear/WearHighBandwidthNetworking/template-params.xml b/wearable/wear/WearHighBandwidthNetworking/template-params.xml
index 5648a3e..9e463a0 100644
--- a/wearable/wear/WearHighBandwidthNetworking/template-params.xml
+++ b/wearable/wear/WearHighBandwidthNetworking/template-params.xml
@@ -31,7 +31,7 @@
 
     <!-- Include additional dependencies here.-->
     <!-- dependency>com.google.android.gms:play-services:5.0.+</dependency -->
-    <dependency_wearable>com.android.support:wear:27.1.0</dependency_wearable>
+    <dependency_wearable>com.android.support:wear:27.1.1</dependency_wearable>
 
 
     <strings>
@@ -142,4 +142,4 @@
 ]]>
         </intro>
     </metadata>
-</sample>
\ No newline at end of file
+</sample>