diff --git a/content/documentsUi/DirectorySelection/gradle.properties b/content/documentsUi/DirectorySelection/gradle.properties
new file mode 100644
index 0000000..94f8472
--- /dev/null
+++ b/content/documentsUi/DirectorySelection/gradle.properties
@@ -0,0 +1,22 @@
+
+# Project-wide Gradle settings.
+
+# IDE (e.g. Android Studio) users:
+# Settings specified in this file will override any Gradle settings
+# configured through the IDE.
+
+# For more details on how to configure your build environment visit
+# http://www.gradle.org/docs/current/userguide/build_environment.html
+
+# Specifies the JVM arguments used for the daemon process.
+# The setting is particularly useful for tweaking memory settings.
+# Default value: -Xmx10248m -XX:MaxPermSize=256m
+# org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8
+
+# When configured, Gradle will run in incubating parallel mode.
+# This option should only be used with decoupled projects. More details, visit
+# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
+# org.gradle.parallel=true
+
+android.useAndroidX=true
+android.enableJetifier=true
diff --git a/wearable/wear/WearMessagingApp/.gitignore b/deprecated/wearable/wear/WearMessagingApp/.gitignore
similarity index 100%
rename from wearable/wear/WearMessagingApp/.gitignore
rename to deprecated/wearable/wear/WearMessagingApp/.gitignore
diff --git a/wearable/wear/WearMessagingApp/Wearable/build.gradle b/deprecated/wearable/wear/WearMessagingApp/Wearable/build.gradle
similarity index 100%
rename from wearable/wear/WearMessagingApp/Wearable/build.gradle
rename to deprecated/wearable/wear/WearMessagingApp/Wearable/build.gradle
diff --git a/wearable/wear/WearMessagingApp/Wearable/google-services.json b/deprecated/wearable/wear/WearMessagingApp/Wearable/google-services.json
similarity index 100%
rename from wearable/wear/WearMessagingApp/Wearable/google-services.json
rename to deprecated/wearable/wear/WearMessagingApp/Wearable/google-services.json
diff --git a/wearable/wear/WearMessagingApp/Wearable/src/main/AndroidManifest.xml b/deprecated/wearable/wear/WearMessagingApp/Wearable/src/main/AndroidManifest.xml
similarity index 100%
rename from wearable/wear/WearMessagingApp/Wearable/src/main/AndroidManifest.xml
rename to deprecated/wearable/wear/WearMessagingApp/Wearable/src/main/AndroidManifest.xml
diff --git a/wearable/wear/WearMessagingApp/Wearable/src/main/ic_launcher-web.png b/deprecated/wearable/wear/WearMessagingApp/Wearable/src/main/ic_launcher-web.png
similarity index 100%
rename from wearable/wear/WearMessagingApp/Wearable/src/main/ic_launcher-web.png
rename to deprecated/wearable/wear/WearMessagingApp/Wearable/src/main/ic_launcher-web.png
Binary files differ
diff --git a/wearable/wear/WearMessagingApp/Wearable/src/main/java/com/example/android/wearable/wear/messaging/GoogleSignedInActivity.java b/deprecated/wearable/wear/WearMessagingApp/Wearable/src/main/java/com/example/android/wearable/wear/messaging/GoogleSignedInActivity.java
similarity index 100%
rename from wearable/wear/WearMessagingApp/Wearable/src/main/java/com/example/android/wearable/wear/messaging/GoogleSignedInActivity.java
rename to deprecated/wearable/wear/WearMessagingApp/Wearable/src/main/java/com/example/android/wearable/wear/messaging/GoogleSignedInActivity.java
diff --git a/wearable/wear/WearMessagingApp/Wearable/src/main/java/com/example/android/wearable/wear/messaging/SignInActivity.java b/deprecated/wearable/wear/WearMessagingApp/Wearable/src/main/java/com/example/android/wearable/wear/messaging/SignInActivity.java
similarity index 100%
rename from wearable/wear/WearMessagingApp/Wearable/src/main/java/com/example/android/wearable/wear/messaging/SignInActivity.java
rename to deprecated/wearable/wear/WearMessagingApp/Wearable/src/main/java/com/example/android/wearable/wear/messaging/SignInActivity.java
diff --git a/wearable/wear/WearMessagingApp/Wearable/src/main/java/com/example/android/wearable/wear/messaging/chat/ChatActivity.java b/deprecated/wearable/wear/WearMessagingApp/Wearable/src/main/java/com/example/android/wearable/wear/messaging/chat/ChatActivity.java
similarity index 100%
rename from wearable/wear/WearMessagingApp/Wearable/src/main/java/com/example/android/wearable/wear/messaging/chat/ChatActivity.java
rename to deprecated/wearable/wear/WearMessagingApp/Wearable/src/main/java/com/example/android/wearable/wear/messaging/chat/ChatActivity.java
diff --git a/wearable/wear/WearMessagingApp/Wearable/src/main/java/com/example/android/wearable/wear/messaging/chat/ChatAdapter.java b/deprecated/wearable/wear/WearMessagingApp/Wearable/src/main/java/com/example/android/wearable/wear/messaging/chat/ChatAdapter.java
similarity index 100%
rename from wearable/wear/WearMessagingApp/Wearable/src/main/java/com/example/android/wearable/wear/messaging/chat/ChatAdapter.java
rename to deprecated/wearable/wear/WearMessagingApp/Wearable/src/main/java/com/example/android/wearable/wear/messaging/chat/ChatAdapter.java
diff --git a/wearable/wear/WearMessagingApp/Wearable/src/main/java/com/example/android/wearable/wear/messaging/chat/MockIncomingMessageReceiver.java b/deprecated/wearable/wear/WearMessagingApp/Wearable/src/main/java/com/example/android/wearable/wear/messaging/chat/MockIncomingMessageReceiver.java
similarity index 100%
rename from wearable/wear/WearMessagingApp/Wearable/src/main/java/com/example/android/wearable/wear/messaging/chat/MockIncomingMessageReceiver.java
rename to deprecated/wearable/wear/WearMessagingApp/Wearable/src/main/java/com/example/android/wearable/wear/messaging/chat/MockIncomingMessageReceiver.java
diff --git a/wearable/wear/WearMessagingApp/Wearable/src/main/java/com/example/android/wearable/wear/messaging/chat/ReplyToMessageIntentService.java b/deprecated/wearable/wear/WearMessagingApp/Wearable/src/main/java/com/example/android/wearable/wear/messaging/chat/ReplyToMessageIntentService.java
similarity index 100%
rename from wearable/wear/WearMessagingApp/Wearable/src/main/java/com/example/android/wearable/wear/messaging/chat/ReplyToMessageIntentService.java
rename to deprecated/wearable/wear/WearMessagingApp/Wearable/src/main/java/com/example/android/wearable/wear/messaging/chat/ReplyToMessageIntentService.java
diff --git a/wearable/wear/WearMessagingApp/Wearable/src/main/java/com/example/android/wearable/wear/messaging/chatlist/ChatListActivity.java b/deprecated/wearable/wear/WearMessagingApp/Wearable/src/main/java/com/example/android/wearable/wear/messaging/chatlist/ChatListActivity.java
similarity index 100%
rename from wearable/wear/WearMessagingApp/Wearable/src/main/java/com/example/android/wearable/wear/messaging/chatlist/ChatListActivity.java
rename to deprecated/wearable/wear/WearMessagingApp/Wearable/src/main/java/com/example/android/wearable/wear/messaging/chatlist/ChatListActivity.java
diff --git a/wearable/wear/WearMessagingApp/Wearable/src/main/java/com/example/android/wearable/wear/messaging/chatlist/ChatListAdapter.java b/deprecated/wearable/wear/WearMessagingApp/Wearable/src/main/java/com/example/android/wearable/wear/messaging/chatlist/ChatListAdapter.java
similarity index 100%
rename from wearable/wear/WearMessagingApp/Wearable/src/main/java/com/example/android/wearable/wear/messaging/chatlist/ChatListAdapter.java
rename to deprecated/wearable/wear/WearMessagingApp/Wearable/src/main/java/com/example/android/wearable/wear/messaging/chatlist/ChatListAdapter.java
diff --git a/wearable/wear/WearMessagingApp/Wearable/src/main/java/com/example/android/wearable/wear/messaging/contacts/ContactsListActivity.java b/deprecated/wearable/wear/WearMessagingApp/Wearable/src/main/java/com/example/android/wearable/wear/messaging/contacts/ContactsListActivity.java
similarity index 100%
rename from wearable/wear/WearMessagingApp/Wearable/src/main/java/com/example/android/wearable/wear/messaging/contacts/ContactsListActivity.java
rename to deprecated/wearable/wear/WearMessagingApp/Wearable/src/main/java/com/example/android/wearable/wear/messaging/contacts/ContactsListActivity.java
diff --git a/wearable/wear/WearMessagingApp/Wearable/src/main/java/com/example/android/wearable/wear/messaging/contacts/ContactsListAdapter.java b/deprecated/wearable/wear/WearMessagingApp/Wearable/src/main/java/com/example/android/wearable/wear/messaging/contacts/ContactsListAdapter.java
similarity index 100%
rename from wearable/wear/WearMessagingApp/Wearable/src/main/java/com/example/android/wearable/wear/messaging/contacts/ContactsListAdapter.java
rename to deprecated/wearable/wear/WearMessagingApp/Wearable/src/main/java/com/example/android/wearable/wear/messaging/contacts/ContactsListAdapter.java
diff --git a/wearable/wear/WearMessagingApp/Wearable/src/main/java/com/example/android/wearable/wear/messaging/mock/MockDatabase.java b/deprecated/wearable/wear/WearMessagingApp/Wearable/src/main/java/com/example/android/wearable/wear/messaging/mock/MockDatabase.java
similarity index 100%
rename from wearable/wear/WearMessagingApp/Wearable/src/main/java/com/example/android/wearable/wear/messaging/mock/MockDatabase.java
rename to deprecated/wearable/wear/WearMessagingApp/Wearable/src/main/java/com/example/android/wearable/wear/messaging/mock/MockDatabase.java
diff --git a/wearable/wear/WearMessagingApp/Wearable/src/main/java/com/example/android/wearable/wear/messaging/mock/MockObjectGenerator.java b/deprecated/wearable/wear/WearMessagingApp/Wearable/src/main/java/com/example/android/wearable/wear/messaging/mock/MockObjectGenerator.java
similarity index 100%
rename from wearable/wear/WearMessagingApp/Wearable/src/main/java/com/example/android/wearable/wear/messaging/mock/MockObjectGenerator.java
rename to deprecated/wearable/wear/WearMessagingApp/Wearable/src/main/java/com/example/android/wearable/wear/messaging/mock/MockObjectGenerator.java
diff --git a/wearable/wear/WearMessagingApp/Wearable/src/main/java/com/example/android/wearable/wear/messaging/model/Chat.java b/deprecated/wearable/wear/WearMessagingApp/Wearable/src/main/java/com/example/android/wearable/wear/messaging/model/Chat.java
similarity index 100%
rename from wearable/wear/WearMessagingApp/Wearable/src/main/java/com/example/android/wearable/wear/messaging/model/Chat.java
rename to deprecated/wearable/wear/WearMessagingApp/Wearable/src/main/java/com/example/android/wearable/wear/messaging/model/Chat.java
diff --git a/wearable/wear/WearMessagingApp/Wearable/src/main/java/com/example/android/wearable/wear/messaging/model/Message.java b/deprecated/wearable/wear/WearMessagingApp/Wearable/src/main/java/com/example/android/wearable/wear/messaging/model/Message.java
similarity index 100%
rename from wearable/wear/WearMessagingApp/Wearable/src/main/java/com/example/android/wearable/wear/messaging/model/Message.java
rename to deprecated/wearable/wear/WearMessagingApp/Wearable/src/main/java/com/example/android/wearable/wear/messaging/model/Message.java
diff --git a/wearable/wear/WearMessagingApp/Wearable/src/main/java/com/example/android/wearable/wear/messaging/model/Profile.java b/deprecated/wearable/wear/WearMessagingApp/Wearable/src/main/java/com/example/android/wearable/wear/messaging/model/Profile.java
similarity index 100%
rename from wearable/wear/WearMessagingApp/Wearable/src/main/java/com/example/android/wearable/wear/messaging/model/Profile.java
rename to deprecated/wearable/wear/WearMessagingApp/Wearable/src/main/java/com/example/android/wearable/wear/messaging/model/Profile.java
diff --git a/wearable/wear/WearMessagingApp/Wearable/src/main/java/com/example/android/wearable/wear/messaging/util/Constants.java b/deprecated/wearable/wear/WearMessagingApp/Wearable/src/main/java/com/example/android/wearable/wear/messaging/util/Constants.java
similarity index 100%
rename from wearable/wear/WearMessagingApp/Wearable/src/main/java/com/example/android/wearable/wear/messaging/util/Constants.java
rename to deprecated/wearable/wear/WearMessagingApp/Wearable/src/main/java/com/example/android/wearable/wear/messaging/util/Constants.java
diff --git a/wearable/wear/WearMessagingApp/Wearable/src/main/java/com/example/android/wearable/wear/messaging/util/DividerItemDecoration.java b/deprecated/wearable/wear/WearMessagingApp/Wearable/src/main/java/com/example/android/wearable/wear/messaging/util/DividerItemDecoration.java
similarity index 100%
rename from wearable/wear/WearMessagingApp/Wearable/src/main/java/com/example/android/wearable/wear/messaging/util/DividerItemDecoration.java
rename to deprecated/wearable/wear/WearMessagingApp/Wearable/src/main/java/com/example/android/wearable/wear/messaging/util/DividerItemDecoration.java
diff --git a/wearable/wear/WearMessagingApp/Wearable/src/main/java/com/example/android/wearable/wear/messaging/util/MenuTinter.java b/deprecated/wearable/wear/WearMessagingApp/Wearable/src/main/java/com/example/android/wearable/wear/messaging/util/MenuTinter.java
similarity index 100%
rename from wearable/wear/WearMessagingApp/Wearable/src/main/java/com/example/android/wearable/wear/messaging/util/MenuTinter.java
rename to deprecated/wearable/wear/WearMessagingApp/Wearable/src/main/java/com/example/android/wearable/wear/messaging/util/MenuTinter.java
diff --git a/wearable/wear/WearMessagingApp/Wearable/src/main/java/com/example/android/wearable/wear/messaging/util/PrescrollToBottom.java b/deprecated/wearable/wear/WearMessagingApp/Wearable/src/main/java/com/example/android/wearable/wear/messaging/util/PrescrollToBottom.java
similarity index 100%
rename from wearable/wear/WearMessagingApp/Wearable/src/main/java/com/example/android/wearable/wear/messaging/util/PrescrollToBottom.java
rename to deprecated/wearable/wear/WearMessagingApp/Wearable/src/main/java/com/example/android/wearable/wear/messaging/util/PrescrollToBottom.java
diff --git a/wearable/wear/WearMessagingApp/Wearable/src/main/java/com/example/android/wearable/wear/messaging/util/SchedulerHelper.java b/deprecated/wearable/wear/WearMessagingApp/Wearable/src/main/java/com/example/android/wearable/wear/messaging/util/SchedulerHelper.java
similarity index 100%
rename from wearable/wear/WearMessagingApp/Wearable/src/main/java/com/example/android/wearable/wear/messaging/util/SchedulerHelper.java
rename to deprecated/wearable/wear/WearMessagingApp/Wearable/src/main/java/com/example/android/wearable/wear/messaging/util/SchedulerHelper.java
diff --git a/wearable/wear/WearMessagingApp/Wearable/src/main/java/com/example/android/wearable/wear/messaging/util/SharedPreferencesHelper.java b/deprecated/wearable/wear/WearMessagingApp/Wearable/src/main/java/com/example/android/wearable/wear/messaging/util/SharedPreferencesHelper.java
similarity index 100%
rename from wearable/wear/WearMessagingApp/Wearable/src/main/java/com/example/android/wearable/wear/messaging/util/SharedPreferencesHelper.java
rename to deprecated/wearable/wear/WearMessagingApp/Wearable/src/main/java/com/example/android/wearable/wear/messaging/util/SharedPreferencesHelper.java
diff --git a/wearable/wear/WearMessagingApp/Wearable/src/main/res/drawable-hdpi/ic_launcher.png b/deprecated/wearable/wear/WearMessagingApp/Wearable/src/main/res/drawable-hdpi/ic_launcher.png
similarity index 100%
rename from wearable/wear/WearMessagingApp/Wearable/src/main/res/drawable-hdpi/ic_launcher.png
rename to deprecated/wearable/wear/WearMessagingApp/Wearable/src/main/res/drawable-hdpi/ic_launcher.png
Binary files differ
diff --git a/wearable/wear/WearMessagingApp/Wearable/src/main/res/drawable-mdpi/ic_launcher.png b/deprecated/wearable/wear/WearMessagingApp/Wearable/src/main/res/drawable-mdpi/ic_launcher.png
similarity index 100%
rename from wearable/wear/WearMessagingApp/Wearable/src/main/res/drawable-mdpi/ic_launcher.png
rename to deprecated/wearable/wear/WearMessagingApp/Wearable/src/main/res/drawable-mdpi/ic_launcher.png
Binary files differ
diff --git a/wearable/wear/WearMessagingApp/Wearable/src/main/res/drawable-xhdpi/ic_launcher.png b/deprecated/wearable/wear/WearMessagingApp/Wearable/src/main/res/drawable-xhdpi/ic_launcher.png
similarity index 100%
rename from wearable/wear/WearMessagingApp/Wearable/src/main/res/drawable-xhdpi/ic_launcher.png
rename to deprecated/wearable/wear/WearMessagingApp/Wearable/src/main/res/drawable-xhdpi/ic_launcher.png
Binary files differ
diff --git a/wearable/wear/WearMessagingApp/Wearable/src/main/res/drawable-xxhdpi/ic_launcher.png b/deprecated/wearable/wear/WearMessagingApp/Wearable/src/main/res/drawable-xxhdpi/ic_launcher.png
similarity index 100%
rename from wearable/wear/WearMessagingApp/Wearable/src/main/res/drawable-xxhdpi/ic_launcher.png
rename to deprecated/wearable/wear/WearMessagingApp/Wearable/src/main/res/drawable-xxhdpi/ic_launcher.png
Binary files differ
diff --git a/wearable/wear/WearMessagingApp/Wearable/src/main/res/drawable/android_logo.png b/deprecated/wearable/wear/WearMessagingApp/Wearable/src/main/res/drawable/android_logo.png
similarity index 100%
rename from wearable/wear/WearMessagingApp/Wearable/src/main/res/drawable/android_logo.png
rename to deprecated/wearable/wear/WearMessagingApp/Wearable/src/main/res/drawable/android_logo.png
Binary files differ
diff --git a/wearable/wear/WearMessagingApp/Wearable/src/main/res/drawable/ben.png b/deprecated/wearable/wear/WearMessagingApp/Wearable/src/main/res/drawable/ben.png
similarity index 100%
rename from wearable/wear/WearMessagingApp/Wearable/src/main/res/drawable/ben.png
rename to deprecated/wearable/wear/WearMessagingApp/Wearable/src/main/res/drawable/ben.png
Binary files differ
diff --git a/wearable/wear/WearMessagingApp/Wearable/src/main/res/drawable/circle_add.xml b/deprecated/wearable/wear/WearMessagingApp/Wearable/src/main/res/drawable/circle_add.xml
similarity index 100%
rename from wearable/wear/WearMessagingApp/Wearable/src/main/res/drawable/circle_add.xml
rename to deprecated/wearable/wear/WearMessagingApp/Wearable/src/main/res/drawable/circle_add.xml
diff --git a/wearable/wear/WearMessagingApp/Wearable/src/main/res/drawable/default_profile.png b/deprecated/wearable/wear/WearMessagingApp/Wearable/src/main/res/drawable/default_profile.png
similarity index 100%
rename from wearable/wear/WearMessagingApp/Wearable/src/main/res/drawable/default_profile.png
rename to deprecated/wearable/wear/WearMessagingApp/Wearable/src/main/res/drawable/default_profile.png
Binary files differ
diff --git a/wearable/wear/WearMessagingApp/Wearable/src/main/res/drawable/divider.xml b/deprecated/wearable/wear/WearMessagingApp/Wearable/src/main/res/drawable/divider.xml
similarity index 100%
rename from wearable/wear/WearMessagingApp/Wearable/src/main/res/drawable/divider.xml
rename to deprecated/wearable/wear/WearMessagingApp/Wearable/src/main/res/drawable/divider.xml
diff --git a/wearable/wear/WearMessagingApp/Wearable/src/main/res/drawable/ic_add_black_24dp.xml b/deprecated/wearable/wear/WearMessagingApp/Wearable/src/main/res/drawable/ic_add_black_24dp.xml
similarity index 100%
rename from wearable/wear/WearMessagingApp/Wearable/src/main/res/drawable/ic_add_black_24dp.xml
rename to deprecated/wearable/wear/WearMessagingApp/Wearable/src/main/res/drawable/ic_add_black_24dp.xml
diff --git a/wearable/wear/WearMessagingApp/Wearable/src/main/res/drawable/ic_check_white_24dp.xml b/deprecated/wearable/wear/WearMessagingApp/Wearable/src/main/res/drawable/ic_check_white_24dp.xml
similarity index 100%
rename from wearable/wear/WearMessagingApp/Wearable/src/main/res/drawable/ic_check_white_24dp.xml
rename to deprecated/wearable/wear/WearMessagingApp/Wearable/src/main/res/drawable/ic_check_white_24dp.xml
diff --git a/wearable/wear/WearMessagingApp/Wearable/src/main/res/drawable/ic_check_white_36dp.xml b/deprecated/wearable/wear/WearMessagingApp/Wearable/src/main/res/drawable/ic_check_white_36dp.xml
similarity index 100%
rename from wearable/wear/WearMessagingApp/Wearable/src/main/res/drawable/ic_check_white_36dp.xml
rename to deprecated/wearable/wear/WearMessagingApp/Wearable/src/main/res/drawable/ic_check_white_36dp.xml
diff --git a/wearable/wear/WearMessagingApp/Wearable/src/main/res/drawable/ic_close_white_24dp.xml b/deprecated/wearable/wear/WearMessagingApp/Wearable/src/main/res/drawable/ic_close_white_24dp.xml
similarity index 100%
rename from wearable/wear/WearMessagingApp/Wearable/src/main/res/drawable/ic_close_white_24dp.xml
rename to deprecated/wearable/wear/WearMessagingApp/Wearable/src/main/res/drawable/ic_close_white_24dp.xml
diff --git a/wearable/wear/WearMessagingApp/Wearable/src/main/res/drawable/ic_close_white_36dp.xml b/deprecated/wearable/wear/WearMessagingApp/Wearable/src/main/res/drawable/ic_close_white_36dp.xml
similarity index 100%
rename from wearable/wear/WearMessagingApp/Wearable/src/main/res/drawable/ic_close_white_36dp.xml
rename to deprecated/wearable/wear/WearMessagingApp/Wearable/src/main/res/drawable/ic_close_white_36dp.xml
diff --git a/wearable/wear/WearMessagingApp/Wearable/src/main/res/drawable/ic_face_white_24dp.xml b/deprecated/wearable/wear/WearMessagingApp/Wearable/src/main/res/drawable/ic_face_white_24dp.xml
similarity index 100%
rename from wearable/wear/WearMessagingApp/Wearable/src/main/res/drawable/ic_face_white_24dp.xml
rename to deprecated/wearable/wear/WearMessagingApp/Wearable/src/main/res/drawable/ic_face_white_24dp.xml
diff --git a/wearable/wear/WearMessagingApp/Wearable/src/main/res/drawable/ic_group_white_48dp.xml b/deprecated/wearable/wear/WearMessagingApp/Wearable/src/main/res/drawable/ic_group_white_48dp.xml
similarity index 100%
rename from wearable/wear/WearMessagingApp/Wearable/src/main/res/drawable/ic_group_white_48dp.xml
rename to deprecated/wearable/wear/WearMessagingApp/Wearable/src/main/res/drawable/ic_group_white_48dp.xml
diff --git a/wearable/wear/WearMessagingApp/Wearable/src/main/res/drawable/ic_keyboard_black_24dp.xml b/deprecated/wearable/wear/WearMessagingApp/Wearable/src/main/res/drawable/ic_keyboard_black_24dp.xml
similarity index 100%
rename from wearable/wear/WearMessagingApp/Wearable/src/main/res/drawable/ic_keyboard_black_24dp.xml
rename to deprecated/wearable/wear/WearMessagingApp/Wearable/src/main/res/drawable/ic_keyboard_black_24dp.xml
diff --git a/wearable/wear/WearMessagingApp/Wearable/src/main/res/drawable/ic_mic_black_24dp.xml b/deprecated/wearable/wear/WearMessagingApp/Wearable/src/main/res/drawable/ic_mic_black_24dp.xml
similarity index 100%
rename from wearable/wear/WearMessagingApp/Wearable/src/main/res/drawable/ic_mic_black_24dp.xml
rename to deprecated/wearable/wear/WearMessagingApp/Wearable/src/main/res/drawable/ic_mic_black_24dp.xml
diff --git a/wearable/wear/WearMessagingApp/Wearable/src/main/res/drawable/ic_person_blue_48dp.xml b/deprecated/wearable/wear/WearMessagingApp/Wearable/src/main/res/drawable/ic_person_blue_48dp.xml
similarity index 100%
rename from wearable/wear/WearMessagingApp/Wearable/src/main/res/drawable/ic_person_blue_48dp.xml
rename to deprecated/wearable/wear/WearMessagingApp/Wearable/src/main/res/drawable/ic_person_blue_48dp.xml
diff --git a/wearable/wear/WearMessagingApp/Wearable/src/main/res/drawable/ic_reply_white_18dp.xml b/deprecated/wearable/wear/WearMessagingApp/Wearable/src/main/res/drawable/ic_reply_white_18dp.xml
similarity index 100%
rename from wearable/wear/WearMessagingApp/Wearable/src/main/res/drawable/ic_reply_white_18dp.xml
rename to deprecated/wearable/wear/WearMessagingApp/Wearable/src/main/res/drawable/ic_reply_white_18dp.xml
diff --git a/wearable/wear/WearMessagingApp/Wearable/src/main/res/drawable/jane.png b/deprecated/wearable/wear/WearMessagingApp/Wearable/src/main/res/drawable/jane.png
similarity index 100%
rename from wearable/wear/WearMessagingApp/Wearable/src/main/res/drawable/jane.png
rename to deprecated/wearable/wear/WearMessagingApp/Wearable/src/main/res/drawable/jane.png
Binary files differ
diff --git a/wearable/wear/WearMessagingApp/Wearable/src/main/res/drawable/jennifer.png b/deprecated/wearable/wear/WearMessagingApp/Wearable/src/main/res/drawable/jennifer.png
similarity index 100%
rename from wearable/wear/WearMessagingApp/Wearable/src/main/res/drawable/jennifer.png
rename to deprecated/wearable/wear/WearMessagingApp/Wearable/src/main/res/drawable/jennifer.png
Binary files differ
diff --git a/wearable/wear/WearMessagingApp/Wearable/src/main/res/drawable/jeremy.png b/deprecated/wearable/wear/WearMessagingApp/Wearable/src/main/res/drawable/jeremy.png
similarity index 100%
rename from wearable/wear/WearMessagingApp/Wearable/src/main/res/drawable/jeremy.png
rename to deprecated/wearable/wear/WearMessagingApp/Wearable/src/main/res/drawable/jeremy.png
Binary files differ
diff --git a/wearable/wear/WearMessagingApp/Wearable/src/main/res/drawable/lisa.png b/deprecated/wearable/wear/WearMessagingApp/Wearable/src/main/res/drawable/lisa.png
similarity index 100%
rename from wearable/wear/WearMessagingApp/Wearable/src/main/res/drawable/lisa.png
rename to deprecated/wearable/wear/WearMessagingApp/Wearable/src/main/res/drawable/lisa.png
Binary files differ
diff --git a/wearable/wear/WearMessagingApp/Wearable/src/main/res/drawable/paul.png b/deprecated/wearable/wear/WearMessagingApp/Wearable/src/main/res/drawable/paul.png
similarity index 100%
rename from wearable/wear/WearMessagingApp/Wearable/src/main/res/drawable/paul.png
rename to deprecated/wearable/wear/WearMessagingApp/Wearable/src/main/res/drawable/paul.png
Binary files differ
diff --git a/wearable/wear/WearMessagingApp/Wearable/src/main/res/drawable/ripple_rect_40.xml b/deprecated/wearable/wear/WearMessagingApp/Wearable/src/main/res/drawable/ripple_rect_40.xml
similarity index 100%
rename from wearable/wear/WearMessagingApp/Wearable/src/main/res/drawable/ripple_rect_40.xml
rename to deprecated/wearable/wear/WearMessagingApp/Wearable/src/main/res/drawable/ripple_rect_40.xml
diff --git a/wearable/wear/WearMessagingApp/Wearable/src/main/res/drawable/ripple_select.xml b/deprecated/wearable/wear/WearMessagingApp/Wearable/src/main/res/drawable/ripple_select.xml
similarity index 100%
rename from wearable/wear/WearMessagingApp/Wearable/src/main/res/drawable/ripple_select.xml
rename to deprecated/wearable/wear/WearMessagingApp/Wearable/src/main/res/drawable/ripple_select.xml
diff --git a/wearable/wear/WearMessagingApp/Wearable/src/main/res/drawable/splash.xml b/deprecated/wearable/wear/WearMessagingApp/Wearable/src/main/res/drawable/splash.xml
similarity index 100%
rename from wearable/wear/WearMessagingApp/Wearable/src/main/res/drawable/splash.xml
rename to deprecated/wearable/wear/WearMessagingApp/Wearable/src/main/res/drawable/splash.xml
diff --git a/wearable/wear/WearMessagingApp/Wearable/src/main/res/layout/action_new_chat.xml b/deprecated/wearable/wear/WearMessagingApp/Wearable/src/main/res/layout/action_new_chat.xml
similarity index 100%
rename from wearable/wear/WearMessagingApp/Wearable/src/main/res/layout/action_new_chat.xml
rename to deprecated/wearable/wear/WearMessagingApp/Wearable/src/main/res/layout/action_new_chat.xml
diff --git a/wearable/wear/WearMessagingApp/Wearable/src/main/res/layout/activity_chat.xml b/deprecated/wearable/wear/WearMessagingApp/Wearable/src/main/res/layout/activity_chat.xml
similarity index 100%
rename from wearable/wear/WearMessagingApp/Wearable/src/main/res/layout/activity_chat.xml
rename to deprecated/wearable/wear/WearMessagingApp/Wearable/src/main/res/layout/activity_chat.xml
diff --git a/wearable/wear/WearMessagingApp/Wearable/src/main/res/layout/activity_chat_list.xml b/deprecated/wearable/wear/WearMessagingApp/Wearable/src/main/res/layout/activity_chat_list.xml
similarity index 100%
rename from wearable/wear/WearMessagingApp/Wearable/src/main/res/layout/activity_chat_list.xml
rename to deprecated/wearable/wear/WearMessagingApp/Wearable/src/main/res/layout/activity_chat_list.xml
diff --git a/wearable/wear/WearMessagingApp/Wearable/src/main/res/layout/activity_contacts_list.xml b/deprecated/wearable/wear/WearMessagingApp/Wearable/src/main/res/layout/activity_contacts_list.xml
similarity index 100%
rename from wearable/wear/WearMessagingApp/Wearable/src/main/res/layout/activity_contacts_list.xml
rename to deprecated/wearable/wear/WearMessagingApp/Wearable/src/main/res/layout/activity_contacts_list.xml
diff --git a/wearable/wear/WearMessagingApp/Wearable/src/main/res/layout/activity_signin.xml b/deprecated/wearable/wear/WearMessagingApp/Wearable/src/main/res/layout/activity_signin.xml
similarity index 100%
rename from wearable/wear/WearMessagingApp/Wearable/src/main/res/layout/activity_signin.xml
rename to deprecated/wearable/wear/WearMessagingApp/Wearable/src/main/res/layout/activity_signin.xml
diff --git a/wearable/wear/WearMessagingApp/Wearable/src/main/res/layout/chat_list_item.xml b/deprecated/wearable/wear/WearMessagingApp/Wearable/src/main/res/layout/chat_list_item.xml
similarity index 100%
rename from wearable/wear/WearMessagingApp/Wearable/src/main/res/layout/chat_list_item.xml
rename to deprecated/wearable/wear/WearMessagingApp/Wearable/src/main/res/layout/chat_list_item.xml
diff --git a/wearable/wear/WearMessagingApp/Wearable/src/main/res/layout/chat_message.xml b/deprecated/wearable/wear/WearMessagingApp/Wearable/src/main/res/layout/chat_message.xml
similarity index 100%
rename from wearable/wear/WearMessagingApp/Wearable/src/main/res/layout/chat_message.xml
rename to deprecated/wearable/wear/WearMessagingApp/Wearable/src/main/res/layout/chat_message.xml
diff --git a/wearable/wear/WearMessagingApp/Wearable/src/main/res/layout/contacts_list_item.xml b/deprecated/wearable/wear/WearMessagingApp/Wearable/src/main/res/layout/contacts_list_item.xml
similarity index 100%
rename from wearable/wear/WearMessagingApp/Wearable/src/main/res/layout/contacts_list_item.xml
rename to deprecated/wearable/wear/WearMessagingApp/Wearable/src/main/res/layout/contacts_list_item.xml
diff --git a/wearable/wear/WearMessagingApp/Wearable/src/main/res/layout/drawer_chat_action.xml b/deprecated/wearable/wear/WearMessagingApp/Wearable/src/main/res/layout/drawer_chat_action.xml
similarity index 100%
rename from wearable/wear/WearMessagingApp/Wearable/src/main/res/layout/drawer_chat_action.xml
rename to deprecated/wearable/wear/WearMessagingApp/Wearable/src/main/res/layout/drawer_chat_action.xml
diff --git a/wearable/wear/WearMessagingApp/Wearable/src/main/res/layout/drawer_check_confirmation.xml b/deprecated/wearable/wear/WearMessagingApp/Wearable/src/main/res/layout/drawer_check_confirmation.xml
similarity index 100%
rename from wearable/wear/WearMessagingApp/Wearable/src/main/res/layout/drawer_check_confirmation.xml
rename to deprecated/wearable/wear/WearMessagingApp/Wearable/src/main/res/layout/drawer_check_confirmation.xml
diff --git a/wearable/wear/WearMessagingApp/Wearable/src/main/res/layout/list_title.xml b/deprecated/wearable/wear/WearMessagingApp/Wearable/src/main/res/layout/list_title.xml
similarity index 100%
rename from wearable/wear/WearMessagingApp/Wearable/src/main/res/layout/list_title.xml
rename to deprecated/wearable/wear/WearMessagingApp/Wearable/src/main/res/layout/list_title.xml
diff --git a/wearable/wear/WearMessagingApp/Wearable/src/main/res/menu/chat.xml b/deprecated/wearable/wear/WearMessagingApp/Wearable/src/main/res/menu/chat.xml
similarity index 100%
rename from wearable/wear/WearMessagingApp/Wearable/src/main/res/menu/chat.xml
rename to deprecated/wearable/wear/WearMessagingApp/Wearable/src/main/res/menu/chat.xml
diff --git a/wearable/wear/WearMessagingApp/Wearable/src/main/res/menu/contacts_list.xml b/deprecated/wearable/wear/WearMessagingApp/Wearable/src/main/res/menu/contacts_list.xml
similarity index 100%
rename from wearable/wear/WearMessagingApp/Wearable/src/main/res/menu/contacts_list.xml
rename to deprecated/wearable/wear/WearMessagingApp/Wearable/src/main/res/menu/contacts_list.xml
diff --git a/wearable/wear/WearMessagingApp/Wearable/src/main/res/mipmap-hdpi/ic_launcher.png b/deprecated/wearable/wear/WearMessagingApp/Wearable/src/main/res/mipmap-hdpi/ic_launcher.png
similarity index 100%
rename from wearable/wear/WearMessagingApp/Wearable/src/main/res/mipmap-hdpi/ic_launcher.png
rename to deprecated/wearable/wear/WearMessagingApp/Wearable/src/main/res/mipmap-hdpi/ic_launcher.png
Binary files differ
diff --git a/wearable/wear/WearMessagingApp/Wearable/src/main/res/mipmap-mdpi/ic_launcher.png b/deprecated/wearable/wear/WearMessagingApp/Wearable/src/main/res/mipmap-mdpi/ic_launcher.png
similarity index 100%
rename from wearable/wear/WearMessagingApp/Wearable/src/main/res/mipmap-mdpi/ic_launcher.png
rename to deprecated/wearable/wear/WearMessagingApp/Wearable/src/main/res/mipmap-mdpi/ic_launcher.png
Binary files differ
diff --git a/wearable/wear/WearMessagingApp/Wearable/src/main/res/mipmap-xhdpi/ic_launcher.png b/deprecated/wearable/wear/WearMessagingApp/Wearable/src/main/res/mipmap-xhdpi/ic_launcher.png
similarity index 100%
rename from wearable/wear/WearMessagingApp/Wearable/src/main/res/mipmap-xhdpi/ic_launcher.png
rename to deprecated/wearable/wear/WearMessagingApp/Wearable/src/main/res/mipmap-xhdpi/ic_launcher.png
Binary files differ
diff --git a/wearable/wear/WearMessagingApp/Wearable/src/main/res/mipmap-xxhdpi/ic_launcher.png b/deprecated/wearable/wear/WearMessagingApp/Wearable/src/main/res/mipmap-xxhdpi/ic_launcher.png
similarity index 100%
rename from wearable/wear/WearMessagingApp/Wearable/src/main/res/mipmap-xxhdpi/ic_launcher.png
rename to deprecated/wearable/wear/WearMessagingApp/Wearable/src/main/res/mipmap-xxhdpi/ic_launcher.png
Binary files differ
diff --git a/wearable/wear/WearMessagingApp/Wearable/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/deprecated/wearable/wear/WearMessagingApp/Wearable/src/main/res/mipmap-xxxhdpi/ic_launcher.png
similarity index 100%
rename from wearable/wear/WearMessagingApp/Wearable/src/main/res/mipmap-xxxhdpi/ic_launcher.png
rename to deprecated/wearable/wear/WearMessagingApp/Wearable/src/main/res/mipmap-xxxhdpi/ic_launcher.png
Binary files differ
diff --git a/wearable/wear/WearMessagingApp/Wearable/src/main/res/values/colors.xml b/deprecated/wearable/wear/WearMessagingApp/Wearable/src/main/res/values/colors.xml
similarity index 100%
rename from wearable/wear/WearMessagingApp/Wearable/src/main/res/values/colors.xml
rename to deprecated/wearable/wear/WearMessagingApp/Wearable/src/main/res/values/colors.xml
diff --git a/wearable/wear/WearMessagingApp/Wearable/src/main/res/values/dimens.xml b/deprecated/wearable/wear/WearMessagingApp/Wearable/src/main/res/values/dimens.xml
similarity index 100%
rename from wearable/wear/WearMessagingApp/Wearable/src/main/res/values/dimens.xml
rename to deprecated/wearable/wear/WearMessagingApp/Wearable/src/main/res/values/dimens.xml
diff --git a/wearable/wear/WearMessagingApp/Wearable/src/main/res/values/strings.xml b/deprecated/wearable/wear/WearMessagingApp/Wearable/src/main/res/values/strings.xml
similarity index 100%
rename from wearable/wear/WearMessagingApp/Wearable/src/main/res/values/strings.xml
rename to deprecated/wearable/wear/WearMessagingApp/Wearable/src/main/res/values/strings.xml
diff --git a/wearable/wear/WearMessagingApp/Wearable/src/main/res/values/styles.xml b/deprecated/wearable/wear/WearMessagingApp/Wearable/src/main/res/values/styles.xml
similarity index 100%
rename from wearable/wear/WearMessagingApp/Wearable/src/main/res/values/styles.xml
rename to deprecated/wearable/wear/WearMessagingApp/Wearable/src/main/res/values/styles.xml
diff --git a/wearable/wear/WearMessagingApp/build.gradle b/deprecated/wearable/wear/WearMessagingApp/build.gradle
similarity index 100%
rename from wearable/wear/WearMessagingApp/build.gradle
rename to deprecated/wearable/wear/WearMessagingApp/build.gradle
diff --git a/wearable/wear/WearMessagingApp/buildSrc/build.gradle b/deprecated/wearable/wear/WearMessagingApp/buildSrc/build.gradle
similarity index 100%
rename from wearable/wear/WearMessagingApp/buildSrc/build.gradle
rename to deprecated/wearable/wear/WearMessagingApp/buildSrc/build.gradle
diff --git a/wearable/wear/WearMessagingApp/gradle/wrapper/gradle-wrapper.jar b/deprecated/wearable/wear/WearMessagingApp/gradle/wrapper/gradle-wrapper.jar
similarity index 100%
rename from wearable/wear/WearMessagingApp/gradle/wrapper/gradle-wrapper.jar
rename to deprecated/wearable/wear/WearMessagingApp/gradle/wrapper/gradle-wrapper.jar
Binary files differ
diff --git a/wearable/wear/WearMessagingApp/gradle/wrapper/gradle-wrapper.properties b/deprecated/wearable/wear/WearMessagingApp/gradle/wrapper/gradle-wrapper.properties
similarity index 100%
rename from wearable/wear/WearMessagingApp/gradle/wrapper/gradle-wrapper.properties
rename to deprecated/wearable/wear/WearMessagingApp/gradle/wrapper/gradle-wrapper.properties
diff --git a/wearable/wear/WearMessagingApp/gradlew b/deprecated/wearable/wear/WearMessagingApp/gradlew
similarity index 100%
rename from wearable/wear/WearMessagingApp/gradlew
rename to deprecated/wearable/wear/WearMessagingApp/gradlew
diff --git a/wearable/wear/WearMessagingApp/gradlew.bat b/deprecated/wearable/wear/WearMessagingApp/gradlew.bat
similarity index 100%
rename from wearable/wear/WearMessagingApp/gradlew.bat
rename to deprecated/wearable/wear/WearMessagingApp/gradlew.bat
diff --git a/wearable/wear/WearMessagingApp/screenshots/chat.png b/deprecated/wearable/wear/WearMessagingApp/screenshots/chat.png
similarity index 100%
rename from wearable/wear/WearMessagingApp/screenshots/chat.png
rename to deprecated/wearable/wear/WearMessagingApp/screenshots/chat.png
Binary files differ
diff --git a/wearable/wear/WearMessagingApp/screenshots/chat_list.png b/deprecated/wearable/wear/WearMessagingApp/screenshots/chat_list.png
similarity index 100%
rename from wearable/wear/WearMessagingApp/screenshots/chat_list.png
rename to deprecated/wearable/wear/WearMessagingApp/screenshots/chat_list.png
Binary files differ
diff --git a/wearable/wear/WearMessagingApp/screenshots/contacts.png b/deprecated/wearable/wear/WearMessagingApp/screenshots/contacts.png
similarity index 100%
rename from wearable/wear/WearMessagingApp/screenshots/contacts.png
rename to deprecated/wearable/wear/WearMessagingApp/screenshots/contacts.png
Binary files differ
diff --git a/wearable/wear/WearMessagingApp/settings.gradle b/deprecated/wearable/wear/WearMessagingApp/settings.gradle
similarity index 100%
rename from wearable/wear/WearMessagingApp/settings.gradle
rename to deprecated/wearable/wear/WearMessagingApp/settings.gradle
diff --git a/wearable/wear/WearMessagingApp/template-params.xml b/deprecated/wearable/wear/WearMessagingApp/template-params.xml
similarity index 100%
rename from wearable/wear/WearMessagingApp/template-params.xml
rename to deprecated/wearable/wear/WearMessagingApp/template-params.xml
diff --git a/wearable/wear/AlwaysOn/Wearable/build.gradle b/wearable/wear/AlwaysOn/Wearable/build.gradle
index 6faf2d1..40537eb 100644
--- a/wearable/wear/AlwaysOn/Wearable/build.gradle
+++ b/wearable/wear/AlwaysOn/Wearable/build.gradle
@@ -6,7 +6,7 @@
     }
 
     dependencies {
-        classpath 'com.android.tools.build:gradle:3.3.0'
+        classpath 'com.android.tools.build:gradle:3.3.2'
     }
 }
 
@@ -21,12 +21,12 @@
 
 dependencies {
 
-    implementation 'com.android.support:wear:27.1.1'
+    implementation 'androidx.wear:wear:1.0.0'
+    implementation 'androidx.legacy:legacy-support-v13:1.0.0'
 
 
-    implementation 'com.google.android.gms:play-services-wearable:15.0.1'
+    implementation 'com.google.android.gms:play-services-wearable:16.0.1'
 
-    implementation 'com.android.support:support-v13:28.0.0'
 
     compileOnly 'com.google.android.wearable:wearable:2.4.0'
 
@@ -52,9 +52,9 @@
         versionCode 1
         versionName "1.0"
 
-        minSdkVersion 23
+        minSdkVersion 24
 
-        targetSdkVersion 26
+        targetSdkVersion 28
 
         multiDexEnabled true
 
diff --git a/wearable/wear/AlwaysOn/Wearable/src/main/AndroidManifest.xml b/wearable/wear/AlwaysOn/Wearable/src/main/AndroidManifest.xml
index c105808..0acb7d3 100644
--- a/wearable/wear/AlwaysOn/Wearable/src/main/AndroidManifest.xml
+++ b/wearable/wear/AlwaysOn/Wearable/src/main/AndroidManifest.xml
@@ -16,8 +16,6 @@
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
           package="com.example.android.wearable.wear.alwayson">
 
-    <uses-sdk android:minSdkVersion="20" android:targetSdkVersion="22" />
-
     <uses-permission android:name="android.permission.WAKE_LOCK" />
     <uses-permission android:name="com.android.alarm.permission.SET_ALARM"/>
 
diff --git a/wearable/wear/AlwaysOn/Wearable/src/main/java/com/example/android/wearable/wear/alwayson/MainActivity.java b/wearable/wear/AlwaysOn/Wearable/src/main/java/com/example/android/wearable/wear/alwayson/MainActivity.java
index ab61c41..a17b570 100644
--- a/wearable/wear/AlwaysOn/Wearable/src/main/java/com/example/android/wearable/wear/alwayson/MainActivity.java
+++ b/wearable/wear/AlwaysOn/Wearable/src/main/java/com/example/android/wearable/wear/alwayson/MainActivity.java
@@ -25,12 +25,13 @@
 import android.os.Bundle;
 import android.os.Handler;
 import android.os.Message;
-import android.support.v4.app.FragmentActivity;
-import android.support.wear.ambient.AmbientModeSupport;
 import android.util.Log;
 import android.view.View;
 import android.widget.TextView;
 
+import androidx.fragment.app.FragmentActivity;
+import androidx.wear.ambient.AmbientModeSupport;
+
 import java.lang.ref.WeakReference;
 import java.text.SimpleDateFormat;
 import java.util.Date;
diff --git a/wearable/wear/AlwaysOn/Wearable/src/main/res/layout/activity_main.xml b/wearable/wear/AlwaysOn/Wearable/src/main/res/layout/activity_main.xml
index 662bbe8..487fe54 100644
--- a/wearable/wear/AlwaysOn/Wearable/src/main/res/layout/activity_main.xml
+++ b/wearable/wear/AlwaysOn/Wearable/src/main/res/layout/activity_main.xml
@@ -19,7 +19,7 @@
     which is applied as padding to the inner LinearLayout, doesn't obscure text by moving it off
     screen.
 -->
-<android.support.wear.widget.BoxInsetLayout
+<androidx.wear.widget.BoxInsetLayout
     xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:tools="http://schemas.android.com/tools"
     xmlns:app="http://schemas.android.com/apk/res-auto"
@@ -76,4 +76,4 @@
             android:text="Hello, draw count!"/>
 
     </LinearLayout>
-</android.support.wear.widget.BoxInsetLayout>
\ No newline at end of file
+</androidx.wear.widget.BoxInsetLayout>
\ No newline at end of file
diff --git a/wearable/wear/AlwaysOn/gradle.properties b/wearable/wear/AlwaysOn/gradle.properties
new file mode 100644
index 0000000..5465fec
--- /dev/null
+++ b/wearable/wear/AlwaysOn/gradle.properties
@@ -0,0 +1,2 @@
+android.enableJetifier=true
+android.useAndroidX=true
\ No newline at end of file
diff --git a/wearable/wear/AlwaysOn/template-params.xml b/wearable/wear/AlwaysOn/template-params.xml
index b7ad4e7..71afab0 100644
--- a/wearable/wear/AlwaysOn/template-params.xml
+++ b/wearable/wear/AlwaysOn/template-params.xml
@@ -19,11 +19,13 @@
     <group>Wearable</group>
     <package>com.example.android.wearable.wear.alwayson</package>
 
-    <minSdkVersionWear>23</minSdkVersionWear>
-    <targetSdkVersionWear>26</targetSdkVersionWear>
     <multiDexEnabled>true</multiDexEnabled>
 
-    <dependency_wearable>com.android.support:wear:27.1.1</dependency_wearable>
+    <androidX>true</androidX>
+
+    <dependency_wearable>androidx.wear:wear:1.0.0</dependency_wearable>
+
+    <dependency_wearable>androidx.legacy:legacy-support-v13:1.0.0</dependency_wearable>
 
     <strings>
         <intro>
diff --git a/wearable/wear/DataLayer/Application/src/main/AndroidManifest.xml b/wearable/wear/DataLayer/Application/src/main/AndroidManifest.xml
index ed1cec3..33e7bdb 100644
--- a/wearable/wear/DataLayer/Application/src/main/AndroidManifest.xml
+++ b/wearable/wear/DataLayer/Application/src/main/AndroidManifest.xml
@@ -17,9 +17,6 @@
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
         package="com.example.android.wearable.datalayer" >
 
-    <uses-sdk android:minSdkVersion="18"
-              android:targetSdkVersion="23" />
-
     <uses-feature android:name="android.hardware.camera" android:required="false" />
 
     <application
diff --git a/wearable/wear/DataLayer/Application/src/main/java/com/example/android/wearable/datalayer/MainActivity.java b/wearable/wear/DataLayer/Application/src/main/java/com/example/android/wearable/datalayer/MainActivity.java
index 7673d44..014a3b3 100644
--- a/wearable/wear/DataLayer/Application/src/main/java/com/example/android/wearable/datalayer/MainActivity.java
+++ b/wearable/wear/DataLayer/Application/src/main/java/com/example/android/wearable/datalayer/MainActivity.java
@@ -25,7 +25,6 @@
 import android.os.AsyncTask;
 import android.os.Bundle;
 import android.provider.MediaStore;
-import android.support.annotation.WorkerThread;
 import android.util.Log;
 import android.view.LayoutInflater;
 import android.view.View;
@@ -36,6 +35,8 @@
 import android.widget.ListView;
 import android.widget.TextView;
 
+import androidx.annotation.WorkerThread;
+
 import com.google.android.gms.tasks.OnSuccessListener;
 import com.google.android.gms.tasks.Task;
 import com.google.android.gms.tasks.Tasks;
diff --git a/wearable/wear/DataLayer/Wearable/src/main/AndroidManifest.xml b/wearable/wear/DataLayer/Wearable/src/main/AndroidManifest.xml
index 5e967aa..94afe42 100644
--- a/wearable/wear/DataLayer/Wearable/src/main/AndroidManifest.xml
+++ b/wearable/wear/DataLayer/Wearable/src/main/AndroidManifest.xml
@@ -17,8 +17,7 @@
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
         package="com.example.android.wearable.datalayer" >
 
-    <uses-sdk android:minSdkVersion="23"
-              android:targetSdkVersion="26" />
+    <uses-permission android:name="android.permission.WAKE_LOCK" />
 
     <uses-feature android:name="android.hardware.type.watch" />
 
diff --git a/wearable/wear/DataLayer/Wearable/src/main/java/com/example/android/wearable/datalayer/CustomRecyclerAdapter.java b/wearable/wear/DataLayer/Wearable/src/main/java/com/example/android/wearable/datalayer/CustomRecyclerAdapter.java
index 2e46eea..4672e07 100644
--- a/wearable/wear/DataLayer/Wearable/src/main/java/com/example/android/wearable/datalayer/CustomRecyclerAdapter.java
+++ b/wearable/wear/DataLayer/Wearable/src/main/java/com/example/android/wearable/datalayer/CustomRecyclerAdapter.java
@@ -20,10 +20,6 @@
 import static com.example.android.wearable.datalayer.DataLayerScreen.TYPE_IMAGE_ASSET;
 
 import android.graphics.Bitmap;
-import android.support.annotation.NonNull;
-import android.support.v7.widget.RecyclerView;
-import android.support.v7.widget.RecyclerView.ViewHolder;
-import android.support.wear.widget.WearableRecyclerView;
 import android.util.Log;
 import android.view.LayoutInflater;
 import android.view.View;
@@ -31,6 +27,11 @@
 import android.widget.ImageView;
 import android.widget.TextView;
 
+import androidx.annotation.NonNull;
+import androidx.recyclerview.widget.RecyclerView;
+import androidx.recyclerview.widget.RecyclerView.ViewHolder;
+import androidx.wear.widget.WearableRecyclerView;
+
 import com.example.android.wearable.datalayer.DataLayerScreen.DataLayerScreenData;
 import com.example.android.wearable.datalayer.DataLayerScreen.EventLoggingData;
 import com.example.android.wearable.datalayer.DataLayerScreen.ImageAssetData;
diff --git a/wearable/wear/DataLayer/Wearable/src/main/java/com/example/android/wearable/datalayer/DataLayerScreen.java b/wearable/wear/DataLayer/Wearable/src/main/java/com/example/android/wearable/datalayer/DataLayerScreen.java
index 23f444e..ed6388c 100644
--- a/wearable/wear/DataLayer/Wearable/src/main/java/com/example/android/wearable/datalayer/DataLayerScreen.java
+++ b/wearable/wear/DataLayer/Wearable/src/main/java/com/example/android/wearable/datalayer/DataLayerScreen.java
@@ -16,7 +16,8 @@
 package com.example.android.wearable.datalayer;
 
 import android.graphics.Bitmap;
-import android.support.v7.widget.RecyclerView.ViewHolder;
+
+import androidx.recyclerview.widget.RecyclerView.ViewHolder;
 
 /**
  * Classes representing data used for each custom {@link ViewHolder} in {@link
diff --git a/wearable/wear/DataLayer/Wearable/src/main/java/com/example/android/wearable/datalayer/MainActivity.java b/wearable/wear/DataLayer/Wearable/src/main/java/com/example/android/wearable/datalayer/MainActivity.java
index d212e51..e275f2b 100644
--- a/wearable/wear/DataLayer/Wearable/src/main/java/com/example/android/wearable/datalayer/MainActivity.java
+++ b/wearable/wear/DataLayer/Wearable/src/main/java/com/example/android/wearable/datalayer/MainActivity.java
@@ -22,17 +22,22 @@
 import android.net.Uri;
 import android.os.AsyncTask;
 import android.os.Bundle;
-import android.support.v4.app.FragmentActivity;
-import android.support.v4.content.res.ResourcesCompat;
-import android.support.v7.widget.LinearLayoutManager;
-import android.support.v7.widget.RecyclerView;
-import android.support.wear.ambient.AmbientModeSupport;
-import android.support.wear.widget.WearableRecyclerView;
 import android.text.TextUtils;
 import android.util.Log;
 import android.view.View;
 import android.widget.Toast;
 
+import androidx.core.content.res.ResourcesCompat;
+import androidx.fragment.app.FragmentActivity;
+import androidx.recyclerview.widget.LinearLayoutManager;
+import androidx.recyclerview.widget.RecyclerView;
+import androidx.wear.ambient.AmbientModeSupport;
+import androidx.wear.widget.WearableRecyclerView;
+
+import com.example.android.wearable.datalayer.DataLayerScreen.CapabilityDiscoveryData;
+import com.example.android.wearable.datalayer.DataLayerScreen.DataLayerScreenData;
+import com.example.android.wearable.datalayer.DataLayerScreen.EventLoggingData;
+import com.example.android.wearable.datalayer.DataLayerScreen.ImageAssetData;
 import com.google.android.gms.tasks.OnSuccessListener;
 import com.google.android.gms.tasks.Task;
 import com.google.android.gms.tasks.Tasks;
@@ -48,11 +53,6 @@
 import com.google.android.gms.wearable.Node;
 import com.google.android.gms.wearable.Wearable;
 
-import com.example.android.wearable.datalayer.DataLayerScreen.CapabilityDiscoveryData;
-import com.example.android.wearable.datalayer.DataLayerScreen.DataLayerScreenData;
-import com.example.android.wearable.datalayer.DataLayerScreen.EventLoggingData;
-import com.example.android.wearable.datalayer.DataLayerScreen.ImageAssetData;
-
 import java.io.InputStream;
 import java.util.ArrayList;
 import java.util.HashSet;
diff --git a/wearable/wear/DataLayer/Wearable/src/main/res/layout/main_activity.xml b/wearable/wear/DataLayer/Wearable/src/main/res/layout/main_activity.xml
index a7a3430..57f176f 100644
--- a/wearable/wear/DataLayer/Wearable/src/main/res/layout/main_activity.xml
+++ b/wearable/wear/DataLayer/Wearable/src/main/res/layout/main_activity.xml
@@ -19,10 +19,10 @@
                 android:background="@color/white">
 
 
-    <android.support.wear.widget.WearableRecyclerView
+    <androidx.wear.widget.WearableRecyclerView
         android:id="@+id/recycler_view"
         android:layout_width="match_parent"
         android:layout_height="match_parent">
 
-    </android.support.wear.widget.WearableRecyclerView>
+    </androidx.wear.widget.WearableRecyclerView>
 </RelativeLayout>
diff --git a/wearable/wear/DataLayer/Wearable/src/main/res/layout/recycler_row_event_logging.xml b/wearable/wear/DataLayer/Wearable/src/main/res/layout/recycler_row_event_logging.xml
index e010d96..7cf2fa1 100644
--- a/wearable/wear/DataLayer/Wearable/src/main/res/layout/recycler_row_event_logging.xml
+++ b/wearable/wear/DataLayer/Wearable/src/main/res/layout/recycler_row_event_logging.xml
@@ -14,7 +14,7 @@
      limitations under the License.
 -->
 
-<android.support.wear.widget.BoxInsetLayout
+<androidx.wear.widget.BoxInsetLayout
     xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:app="http://schemas.android.com/apk/res-auto"
     android:id="@+id/layout"
@@ -42,4 +42,4 @@
             android:layout_height="match_parent"
             android:transcriptMode="alwaysScroll"/>
     </FrameLayout>
-</android.support.wear.widget.BoxInsetLayout>
+</androidx.wear.widget.BoxInsetLayout>
diff --git a/wearable/wear/DataLayer/gradle.properties b/wearable/wear/DataLayer/gradle.properties
index 0bc4294..94f8472 100644
--- a/wearable/wear/DataLayer/gradle.properties
+++ b/wearable/wear/DataLayer/gradle.properties
@@ -18,3 +18,5 @@
 # http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
 # org.gradle.parallel=true
 
+android.useAndroidX=true
+android.enableJetifier=true
diff --git a/wearable/wear/DataLayer/template-params.xml b/wearable/wear/DataLayer/template-params.xml
index 8475001..9aee449 100644
--- a/wearable/wear/DataLayer/template-params.xml
+++ b/wearable/wear/DataLayer/template-params.xml
@@ -25,13 +25,21 @@
 
     <multiDexEnabled>true</multiDexEnabled>
 
-    <dependency>com.android.support:recyclerview-v7:27.1.1</dependency>
-    <dependency>com.android.support:percent:27.1.1</dependency>
+    <androidX>true</androidX>
 
-    <dependency_wearable>com.android.support:wear:27.1.1</dependency_wearable>
+    <dependency>androidx.legacy:legacy-support-v4:1.0.0</dependency>
+    <dependency>androidx.legacy:legacy-support-v13:1.0.0</dependency>
 
-    <dependency_wearable>com.android.support:recyclerview-v7:27.1.1</dependency_wearable>
-    <dependency_wearable>com.android.support:percent:27.1.1</dependency_wearable>
+    <dependency>androidx.cardview:cardview:1.0.0</dependency>
+    <dependency>androidx.appcompat:appcompat:1.0.2</dependency>
+    <dependency>androidx.recyclerview:recyclerview:1.0.0</dependency>
+    <dependency>androidx.percentlayout:percentlayout:1.0.0</dependency>
+
+    <dependency_wearable>androidx.wear:wear:1.0.0</dependency_wearable>
+    <dependency_wearable>androidx.recyclerview:recyclerview:1.0.0</dependency_wearable>
+    <dependency_wearable>androidx.percentlayout:percentlayout:1.0.0</dependency_wearable>
+    <dependency_wearable>androidx.legacy:legacy-support-v13:1.0.0</dependency_wearable>
+
 
     <wearable>
         <has_handheld_app>true</has_handheld_app>
diff --git a/wearable/wear/JumpingJack/Application/src/common/java/com/example/android/common/activities/SampleActivityBase.java b/wearable/wear/JumpingJack/Application/src/common/java/com/example/android/common/activities/SampleActivityBase.java
deleted file mode 100644
index 3228927..0000000
--- a/wearable/wear/JumpingJack/Application/src/common/java/com/example/android/common/activities/SampleActivityBase.java
+++ /dev/null
@@ -1,52 +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.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/wearable/wear/JumpingJack/Application/src/common/java/com/example/android/common/logger/Log.java b/wearable/wear/JumpingJack/Application/src/common/java/com/example/android/common/logger/Log.java
deleted file mode 100644
index 17503c5..0000000
--- a/wearable/wear/JumpingJack/Application/src/common/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);
-    }
-}
diff --git a/wearable/wear/JumpingJack/Application/src/common/java/com/example/android/common/logger/LogFragment.java b/wearable/wear/JumpingJack/Application/src/common/java/com/example/android/common/logger/LogFragment.java
deleted file mode 100644
index b302acd..0000000
--- a/wearable/wear/JumpingJack/Application/src/common/java/com/example/android/common/logger/LogFragment.java
+++ /dev/null
@@ -1,109 +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.
-*/
-/*
- * 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/wearable/wear/JumpingJack/Application/src/common/java/com/example/android/common/logger/LogNode.java b/wearable/wear/JumpingJack/Application/src/common/java/com/example/android/common/logger/LogNode.java
deleted file mode 100644
index bc37cab..0000000
--- a/wearable/wear/JumpingJack/Application/src/common/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/wearable/wear/JumpingJack/Application/src/common/java/com/example/android/common/logger/LogView.java b/wearable/wear/JumpingJack/Application/src/common/java/com/example/android/common/logger/LogView.java
deleted file mode 100644
index c01542b..0000000
--- a/wearable/wear/JumpingJack/Application/src/common/java/com/example/android/common/logger/LogView.java
+++ /dev/null
@@ -1,145 +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.app.Activity;
-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.
-        final StringBuilder outputBuilder = new StringBuilder();
-
-        String delimiter = "\t";
-        appendIfNotNull(outputBuilder, priorityStr, delimiter);
-        appendIfNotNull(outputBuilder, tag, delimiter);
-        appendIfNotNull(outputBuilder, msg, delimiter);
-        appendIfNotNull(outputBuilder, exceptionStr, delimiter);
-
-        // 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);
-        }
-    }
-
-    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/wearable/wear/JumpingJack/Application/src/common/java/com/example/android/common/logger/LogWrapper.java b/wearable/wear/JumpingJack/Application/src/common/java/com/example/android/common/logger/LogWrapper.java
deleted file mode 100644
index 16a9e7b..0000000
--- a/wearable/wear/JumpingJack/Application/src/common/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/wearable/wear/JumpingJack/Application/src/common/java/com/example/android/common/logger/MessageOnlyLogFilter.java b/wearable/wear/JumpingJack/Application/src/common/java/com/example/android/common/logger/MessageOnlyLogFilter.java
deleted file mode 100644
index 19967dc..0000000
--- a/wearable/wear/JumpingJack/Application/src/common/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 chain.
-     */
-    public LogNode getNext() {
-        return mNext;
-    }
-
-    /**
-     * Sets the LogNode data will be sent to..
-     */
-    public void setNext(LogNode node) {
-        mNext = node;
-    }
-
-}
diff --git a/wearable/wear/JumpingJack/Wearable/src/main/AndroidManifest.xml b/wearable/wear/JumpingJack/Wearable/src/main/AndroidManifest.xml
index 0e0475a..eff177c 100644
--- a/wearable/wear/JumpingJack/Wearable/src/main/AndroidManifest.xml
+++ b/wearable/wear/JumpingJack/Wearable/src/main/AndroidManifest.xml
@@ -17,13 +17,12 @@
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
           package="com.example.android.wearable.jumpingjack">
 
-   <uses-sdk android:minSdkVersion="20"
-             android:targetSdkVersion="25" />
-
     <uses-feature android:name="android.hardware.type.watch" />
 
     <uses-permission android:name="android.permission.VIBRATE"/>
 
+    <uses-permission android:name="android.permission.WAKE_LOCK" />
+
     <application
             android:allowBackup="true"
             android:icon="@drawable/ic_launcher"
diff --git a/wearable/wear/JumpingJack/Wearable/src/main/java/com/example/android/wearable/jumpingjack/MainActivity.java b/wearable/wear/JumpingJack/Wearable/src/main/java/com/example/android/wearable/jumpingjack/MainActivity.java
index 8618a9d..f344cfe 100644
--- a/wearable/wear/JumpingJack/Wearable/src/main/java/com/example/android/wearable/jumpingjack/MainActivity.java
+++ b/wearable/wear/JumpingJack/Wearable/src/main/java/com/example/android/wearable/jumpingjack/MainActivity.java
@@ -16,79 +16,78 @@
 
 package com.example.android.wearable.jumpingjack;
 
-import com.example.android.wearable.jumpingjack.fragments.CounterFragment;
-import com.example.android.wearable.jumpingjack.fragments.SettingsFragment;
-
-import android.app.Activity;
 import android.content.Context;
 import android.hardware.Sensor;
 import android.hardware.SensorEvent;
 import android.hardware.SensorEventListener;
 import android.hardware.SensorManager;
 import android.os.Bundle;
-import android.os.Handler;
-import android.support.v4.view.ViewPager;
 import android.util.Log;
-import android.view.WindowManager;
 import android.widget.ImageView;
 
-import java.util.Timer;
-import java.util.TimerTask;
+import androidx.fragment.app.FragmentActivity;
+import androidx.viewpager.widget.ViewPager;
+import androidx.wear.ambient.AmbientModeSupport;
+
+import com.example.android.wearable.jumpingjack.fragments.CounterFragment;
+import com.example.android.wearable.jumpingjack.fragments.SettingsFragment;
+
+import java.util.concurrent.TimeUnit;
 
 /**
  * The main activity for the Jumping Jack application. This activity registers itself to receive
- * sensor values. Since on wearable devices a full screen activity is very short-lived, we set the
- * FLAG_KEEP_SCREEN_ON to give user adequate time for taking actions but since we don't want to
- * keep screen on for an extended period of time, there is a SCREEN_ON_TIMEOUT_MS that is enforced
- * if no interaction is discovered.
+ * sensor values.
  *
- * This activity includes a {@link android.support.v4.view.ViewPager} with two pages, one that
+ * This activity includes a {@link ViewPager} with two pages, one that
  * shows the current count and one that allows user to reset the counter. the current value of the
  * counter is persisted so that upon re-launch, the counter picks up from the last value. At any
  * stage, user can set this counter to 0.
  */
-public class MainActivity extends Activity
-        implements SensorEventListener {
+public class MainActivity extends FragmentActivity
+        implements AmbientModeSupport.AmbientCallbackProvider, SensorEventListener {
 
     private static final String TAG = "MainActivity";
 
-    /** How long to keep the screen on when no activity is happening **/
-    private static final long SCREEN_ON_TIMEOUT_MS = 20000; // in milliseconds
-
-    /** an up-down movement that takes more than this will not be registered as such **/
-    private static final long TIME_THRESHOLD_NS = 2000000000; // in nanoseconds (= 2sec)
+    // An up-down movement that takes more than 2 seconds will not be registered (in nanoseconds).
+    private static final long TIME_THRESHOLD_NS = TimeUnit.SECONDS.toNanos(2);
 
     /**
      * Earth gravity is around 9.8 m/s^2 but user may not completely direct his/her hand vertical
-     * during the exercise so we leave some room. Basically if the x-component of gravity, as
-     * measured by the Gravity sensor, changes with a variation (delta) > GRAVITY_THRESHOLD,
-     * we consider that a successful count.
+     * during the exercise so we leave some room. Basically, if the x-component of gravity, as
+     * measured by the Gravity sensor, changes with a variation delta > 0.03 from the hand down
+     * and hand up threshold we define below, we consider that a successful count.
+     *
+     * This is a very rudimentary formula and is by no means production accurate. You will want to
+     * take into account Y and Z gravity changes to get a truly accurate jumping jack.
+     *
+     * This sample is just meant to show how to easily get sensor values and use them.
      */
-    private static final float GRAVITY_THRESHOLD = 7.0f;
+    private static final float HAND_DOWN_GRAVITY_X_THRESHOLD = -.040f;
+    private static final float HAND_UP_GRAVITY_X_THRESHOLD = -.010f;
 
     private SensorManager mSensorManager;
     private Sensor mSensor;
     private long mLastTime = 0;
-    private boolean mUp = false;
     private int mJumpCounter = 0;
+    private boolean mHandDown = true;
+
+
     private ViewPager mPager;
     private CounterFragment mCounterPage;
     private SettingsFragment mSettingPage;
     private ImageView mSecondIndicator;
     private ImageView mFirstIndicator;
-    private Timer mTimer;
-    private TimerTask mTimerTask;
-    private Handler mHandler;
 
     @Override
     protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
-        setContentView(R.layout.jj_layout);
+        setContentView(R.layout.jumping_jack_layout);
+
+        AmbientModeSupport.attach(this);
+
         setupViews();
-        mHandler = new Handler();
+
         mJumpCounter = Utils.getCounterFromPreference(this);
-        getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
-        renewTimer();
         mSensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
         mSensor = mSensorManager.getDefaultSensor(Sensor.TYPE_GRAVITY);
     }
@@ -97,9 +96,12 @@
         mPager = findViewById(R.id.pager);
         mFirstIndicator = findViewById(R.id.indicator_0);
         mSecondIndicator = findViewById(R.id.indicator_1);
+
         final PagerAdapter adapter = new PagerAdapter(getFragmentManager());
+
         mCounterPage = new CounterFragment();
         mSettingPage = new SettingsFragment();
+
         adapter.addFragment(mCounterPage);
         adapter.addFragment(mSettingPage);
         setIndicator(0);
@@ -111,7 +113,6 @@
             @Override
             public void onPageSelected(int i) {
                 setIndicator(i);
-                renewTimer();
             }
 
             @Override
@@ -149,23 +150,29 @@
 
     @Override
     public void onAccuracyChanged(Sensor sensor, int accuracy) {
+        // No op.
     }
 
     /**
-     * A simple algorithm to detect a successful up-down movement of hand(s). The algorithm is
-     * based on the assumption that when a person is wearing the watch, the x-component of gravity
-     * as measured by the Gravity Sensor is +9.8 when the hand is downward and -9.8 when the hand
-     * is upward (signs are reversed if the watch is worn on the right hand). Since the upward or
-     * downward may not be completely accurate, we leave some room and instead of 9.8, we use
-     * GRAVITY_THRESHOLD. We also consider the up <-> down movement successful if it takes less than
-     * TIME_THRESHOLD_NS.
+     * A very simple algorithm to detect a successful up-down movement of hand(s). The algorithm
+     * is based on a delta of the handing being up vs. down and taking less than TIME_THRESHOLD_NS
+     * to happen.
+     *
+     *
+     * This algorithm isn't intended to be used in production but just to show what's possible with
+     * sensors. You will want to take into account other components (y and z) and other sensors to
+     * get a more accurate reading.
      */
-    private void detectJump(float xValue, long timestamp) {
-        if ((Math.abs(xValue) > GRAVITY_THRESHOLD)) {
-            if(timestamp - mLastTime < TIME_THRESHOLD_NS && mUp != (xValue > 0)) {
-                onJumpDetected(!mUp);
+    private void detectJump(float xGravity, long timestamp) {
+
+        if ((xGravity <= HAND_DOWN_GRAVITY_X_THRESHOLD)
+                || (xGravity >= HAND_UP_GRAVITY_X_THRESHOLD)) {
+
+            if (timestamp - mLastTime < TIME_THRESHOLD_NS) {
+                // Hand is down when yValue is negative.
+                onJumpDetected(xGravity <= HAND_DOWN_GRAVITY_X_THRESHOLD);
             }
-            mUp = xValue > 0;
+
             mLastTime = timestamp;
         }
     }
@@ -173,14 +180,16 @@
     /**
      * Called on detection of a successful down -> up or up -> down movement of hand.
      */
-    private void onJumpDetected(boolean up) {
-        // we only count a pair of up and down as one successful movement
-        if (up) {
-            return;
+    private void onJumpDetected(boolean handDown) {
+        if (mHandDown != handDown) {
+            mHandDown = handDown;
+
+            // Only count when the hand is down (means the hand has gone up, then down).
+            if (mHandDown) {
+                mJumpCounter++;
+                setCounter(mJumpCounter);
+            }
         }
-        mJumpCounter++;
-        setCounter(mJumpCounter);
-        renewTimer();
     }
 
     /**
@@ -188,6 +197,7 @@
      * reaches a multiple of 10.
      */
     private void setCounter(int i) {
+        mJumpCounter = i;
         mCounterPage.setCounter(i);
         Utils.saveCounterToPreference(this, i);
         if (i > 0 && i % 10 == 0) {
@@ -197,44 +207,6 @@
 
     public void resetCounter() {
         setCounter(0);
-        renewTimer();
-    }
-
-    /**
-     * Starts a timer to clear the flag FLAG_KEEP_SCREEN_ON.
-     */
-    private void renewTimer() {
-        if (null != mTimer) {
-            mTimer.cancel();
-        }
-        mTimerTask = new TimerTask() {
-            @Override
-            public void run() {
-                if (Log.isLoggable(TAG, Log.DEBUG)) {
-                    Log.d(TAG,
-                            "Removing the FLAG_KEEP_SCREEN_ON flag to allow going to background");
-                }
-                resetFlag();
-            }
-        };
-        mTimer = new Timer();
-        mTimer.schedule(mTimerTask, SCREEN_ON_TIMEOUT_MS);
-    }
-
-    /**
-     * Resets the FLAG_KEEP_SCREEN_ON flag so activity can go into background.
-     */
-    private void resetFlag() {
-        mHandler.post(new Runnable() {
-            @Override
-            public void run() {
-                if (Log.isLoggable(TAG, Log.DEBUG)) {
-                    Log.d(TAG, "Resetting FLAG_KEEP_SCREEN_ON flag to allow going to background");
-                }
-                getWindow().clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
-                finish();
-            }
-        });
     }
 
     /**
@@ -254,4 +226,35 @@
     }
 
 
+    @Override
+    public AmbientModeSupport.AmbientCallback getAmbientCallback() {
+        return new MyAmbientCallback();
+    }
+
+    /** Customizes appearance for Ambient mode. (We don't do anything minus default.) */
+    private class MyAmbientCallback extends AmbientModeSupport.AmbientCallback {
+        /** Prepares the UI for ambient mode. */
+        @Override
+        public void onEnterAmbient(Bundle ambientDetails) {
+            super.onEnterAmbient(ambientDetails);
+        }
+
+        /**
+         * Updates the display in ambient mode on the standard interval. Since we're using a custom
+         * refresh cycle, this method does NOT update the data in the display. Rather, this method
+         * simply updates the positioning of the data in the screen to avoid burn-in, if the display
+         * requires it.
+         */
+        @Override
+        public void onUpdateAmbient() {
+            super.onUpdateAmbient();
+        }
+
+        /** Restores the UI to active (non-ambient) mode. */
+        @Override
+        public void onExitAmbient() {
+            super.onExitAmbient();
+        }
+    }
+
 }
diff --git a/wearable/wear/JumpingJack/Wearable/src/main/java/com/example/android/wearable/jumpingjack/PagerAdapter.java b/wearable/wear/JumpingJack/Wearable/src/main/java/com/example/android/wearable/jumpingjack/PagerAdapter.java
index f7ac2b0..d4532e7 100644
--- a/wearable/wear/JumpingJack/Wearable/src/main/java/com/example/android/wearable/jumpingjack/PagerAdapter.java
+++ b/wearable/wear/JumpingJack/Wearable/src/main/java/com/example/android/wearable/jumpingjack/PagerAdapter.java
@@ -18,13 +18,15 @@
 
 import android.app.Fragment;
 import android.app.FragmentManager;
-import android.support.v13.app.FragmentPagerAdapter;
+
+import androidx.legacy.app.FragmentPagerAdapter;
+import androidx.viewpager.widget.ViewPager;
 
 import java.util.ArrayList;
 import java.util.List;
 
 /**
- * A simple adapter for the {@link android.support.v4.view.ViewPager}
+ * A simple adapter for the {@link ViewPager}
  */
 public class PagerAdapter extends FragmentPagerAdapter {
 
diff --git a/wearable/wear/JumpingJack/Wearable/src/main/res/layout/jj_layout.xml b/wearable/wear/JumpingJack/Wearable/src/main/res/layout/jumping_jack_layout.xml
similarity index 97%
rename from wearable/wear/JumpingJack/Wearable/src/main/res/layout/jj_layout.xml
rename to wearable/wear/JumpingJack/Wearable/src/main/res/layout/jumping_jack_layout.xml
index 73af6e3..0d0a67b 100644
--- a/wearable/wear/JumpingJack/Wearable/src/main/res/layout/jj_layout.xml
+++ b/wearable/wear/JumpingJack/Wearable/src/main/res/layout/jumping_jack_layout.xml
@@ -19,7 +19,7 @@
     android:layout_height="match_parent"
     android:background="@color/white">
 
-    <android.support.v4.view.ViewPager
+    <androidx.viewpager.widget.ViewPager
         xmlns:android="http://schemas.android.com/apk/res/android"
         android:id="@+id/pager"
         android:layout_width="match_parent"
diff --git a/wearable/wear/JumpingJack/gradle.properties b/wearable/wear/JumpingJack/gradle.properties
new file mode 100644
index 0000000..5465fec
--- /dev/null
+++ b/wearable/wear/JumpingJack/gradle.properties
@@ -0,0 +1,2 @@
+android.enableJetifier=true
+android.useAndroidX=true
\ No newline at end of file
diff --git a/wearable/wear/JumpingJack/template-params.xml b/wearable/wear/JumpingJack/template-params.xml
index d746b2c..9d802f6 100644
--- a/wearable/wear/JumpingJack/template-params.xml
+++ b/wearable/wear/JumpingJack/template-params.xml
@@ -34,8 +34,6 @@
 
     <template src="base-build"/>
     <template src="Wear"/>
-    <common src="logger"/>
-    <common src="activities"/>
 
     <metadata>
         <status>PUBLISHED</status>
diff --git a/wearable/wear/RuntimePermissionsWear/Application/src/main/AndroidManifest.xml b/wearable/wear/RuntimePermissionsWear/Application/src/main/AndroidManifest.xml
index d8a6a28..b8edf30 100644
--- a/wearable/wear/RuntimePermissionsWear/Application/src/main/AndroidManifest.xml
+++ b/wearable/wear/RuntimePermissionsWear/Application/src/main/AndroidManifest.xml
@@ -20,10 +20,6 @@
     android:versionCode="1"
     android:versionName="1.0">
 
-    <uses-sdk
-        android:minSdkVersion="18"
-        android:targetSdkVersion="23" />
-
     <!-- Permissions for phone. -->
     <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
 
diff --git a/wearable/wear/RuntimePermissionsWear/Application/src/main/java/com/example/android/wearable/runtimepermissions/IncomingRequestPhoneService.java b/wearable/wear/RuntimePermissionsWear/Application/src/main/java/com/example/android/wearable/runtimepermissions/IncomingRequestPhoneService.java
index 2c036cd..023665e 100644
--- a/wearable/wear/RuntimePermissionsWear/Application/src/main/java/com/example/android/wearable/runtimepermissions/IncomingRequestPhoneService.java
+++ b/wearable/wear/RuntimePermissionsWear/Application/src/main/java/com/example/android/wearable/runtimepermissions/IncomingRequestPhoneService.java
@@ -20,11 +20,11 @@
 import android.content.Intent;
 import android.content.pm.PackageManager;
 import android.os.Environment;
-import android.support.v4.app.ActivityCompat;
 import android.util.Log;
 
-import com.example.android.wearable.runtimepermissions.common.Constants;
+import androidx.core.app.ActivityCompat;
 
+import com.example.android.wearable.runtimepermissions.common.Constants;
 import com.google.android.gms.tasks.OnCompleteListener;
 import com.google.android.gms.tasks.Task;
 import com.google.android.gms.wearable.DataMap;
diff --git a/wearable/wear/RuntimePermissionsWear/Application/src/main/java/com/example/android/wearable/runtimepermissions/MainPhoneActivity.java b/wearable/wear/RuntimePermissionsWear/Application/src/main/java/com/example/android/wearable/runtimepermissions/MainPhoneActivity.java
index d2c3ea1..c915d48 100644
--- a/wearable/wear/RuntimePermissionsWear/Application/src/main/java/com/example/android/wearable/runtimepermissions/MainPhoneActivity.java
+++ b/wearable/wear/RuntimePermissionsWear/Application/src/main/java/com/example/android/wearable/runtimepermissions/MainPhoneActivity.java
@@ -20,18 +20,18 @@
 import android.app.Activity;
 import android.content.Intent;
 import android.content.pm.PackageManager;
+import android.os.Bundle;
 import android.os.Environment;
 import android.os.Looper;
-import android.support.v4.app.ActivityCompat;
-import android.support.v7.app.AppCompatActivity;
-import android.os.Bundle;
 import android.util.Log;
 import android.view.View;
 import android.widget.Button;
 import android.widget.TextView;
 
-import com.example.android.wearable.runtimepermissions.common.Constants;
+import androidx.appcompat.app.AppCompatActivity;
+import androidx.core.app.ActivityCompat;
 
+import com.example.android.wearable.runtimepermissions.common.Constants;
 import com.google.android.gms.tasks.OnCompleteListener;
 import com.google.android.gms.tasks.Task;
 import com.google.android.gms.wearable.CapabilityClient;
diff --git a/wearable/wear/RuntimePermissionsWear/Application/src/main/java/com/example/android/wearable/runtimepermissions/PhonePermissionRequestActivity.java b/wearable/wear/RuntimePermissionsWear/Application/src/main/java/com/example/android/wearable/runtimepermissions/PhonePermissionRequestActivity.java
index 0b10e35..f27b3a9 100644
--- a/wearable/wear/RuntimePermissionsWear/Application/src/main/java/com/example/android/wearable/runtimepermissions/PhonePermissionRequestActivity.java
+++ b/wearable/wear/RuntimePermissionsWear/Application/src/main/java/com/example/android/wearable/runtimepermissions/PhonePermissionRequestActivity.java
@@ -20,12 +20,13 @@
 import android.content.Intent;
 import android.content.pm.PackageManager;
 import android.os.Bundle;
-import android.support.annotation.NonNull;
-import android.support.v4.app.ActivityCompat;
-import android.support.v7.app.AppCompatActivity;
 import android.util.Log;
 import android.view.View;
 
+import androidx.annotation.NonNull;
+import androidx.appcompat.app.AppCompatActivity;
+import androidx.core.app.ActivityCompat;
+
 /**
  * This is a simple splash screen (activity) for giving more details on why the user should approve
  * phone permissions for storage. If they choose to move forward, the permission screen
diff --git a/wearable/wear/RuntimePermissionsWear/Application/src/main/java/com/example/android/wearable/runtimepermissions/WearPermissionRequestActivity.java b/wearable/wear/RuntimePermissionsWear/Application/src/main/java/com/example/android/wearable/runtimepermissions/WearPermissionRequestActivity.java
index 3340ef6..0a63e9e 100644
--- a/wearable/wear/RuntimePermissionsWear/Application/src/main/java/com/example/android/wearable/runtimepermissions/WearPermissionRequestActivity.java
+++ b/wearable/wear/RuntimePermissionsWear/Application/src/main/java/com/example/android/wearable/runtimepermissions/WearPermissionRequestActivity.java
@@ -18,11 +18,12 @@
 
 import android.app.Activity;
 import android.os.Bundle;
-import android.support.v4.app.ActivityCompat;
-import android.support.v7.app.AppCompatActivity;
 import android.util.Log;
 import android.view.View;
 
+import androidx.appcompat.app.AppCompatActivity;
+import androidx.core.app.ActivityCompat;
+
 /**
  * This is a simple splash screen (activity) for giving more details on why the user should approve
  * phone permissions for storage. If they choose to move forward, the permission screen
diff --git a/wearable/wear/RuntimePermissionsWear/Shared/build.gradle b/wearable/wear/RuntimePermissionsWear/Shared/build.gradle
index c8b3782..d11e010 100644
--- a/wearable/wear/RuntimePermissionsWear/Shared/build.gradle
+++ b/wearable/wear/RuntimePermissionsWear/Shared/build.gradle
@@ -6,7 +6,7 @@
     }
 
     dependencies {
-        classpath 'com.android.tools.build:gradle:3.3.0'
+        classpath 'com.android.tools.build:gradle:3.3.2'
     }
 }
 
diff --git a/wearable/wear/RuntimePermissionsWear/Wearable/src/main/AndroidManifest.xml b/wearable/wear/RuntimePermissionsWear/Wearable/src/main/AndroidManifest.xml
index 385d3ce..e56ec85 100644
--- a/wearable/wear/RuntimePermissionsWear/Wearable/src/main/AndroidManifest.xml
+++ b/wearable/wear/RuntimePermissionsWear/Wearable/src/main/AndroidManifest.xml
@@ -20,10 +20,6 @@
     <uses-permission android:name="android.permission.WAKE_LOCK" />
     <uses-permission android:name="android.permission.BODY_SENSORS" />
 
-    <uses-sdk
-        android:minSdkVersion="21"
-        android:targetSdkVersion="23" />
-
     <application
         android:allowBackup="true"
         android:icon="@mipmap/ic_launcher"
diff --git a/wearable/wear/RuntimePermissionsWear/Wearable/src/main/java/com/example/android/wearable/runtimepermissions/IncomingRequestWearService.java b/wearable/wear/RuntimePermissionsWear/Wearable/src/main/java/com/example/android/wearable/runtimepermissions/IncomingRequestWearService.java
index 408b470..6c4c82e 100644
--- a/wearable/wear/RuntimePermissionsWear/Wearable/src/main/java/com/example/android/wearable/runtimepermissions/IncomingRequestWearService.java
+++ b/wearable/wear/RuntimePermissionsWear/Wearable/src/main/java/com/example/android/wearable/runtimepermissions/IncomingRequestWearService.java
@@ -21,11 +21,11 @@
 import android.content.pm.PackageManager;
 import android.hardware.Sensor;
 import android.hardware.SensorManager;
-import android.support.v4.app.ActivityCompat;
 import android.util.Log;
 
-import com.example.android.wearable.runtimepermissions.common.Constants;
+import androidx.core.app.ActivityCompat;
 
+import com.example.android.wearable.runtimepermissions.common.Constants;
 import com.google.android.gms.tasks.OnCompleteListener;
 import com.google.android.gms.tasks.Task;
 import com.google.android.gms.wearable.CapabilityClient;
diff --git a/wearable/wear/RuntimePermissionsWear/Wearable/src/main/java/com/example/android/wearable/runtimepermissions/MainWearActivity.java b/wearable/wear/RuntimePermissionsWear/Wearable/src/main/java/com/example/android/wearable/runtimepermissions/MainWearActivity.java
index 685f200..1f26f03 100644
--- a/wearable/wear/RuntimePermissionsWear/Wearable/src/main/java/com/example/android/wearable/runtimepermissions/MainWearActivity.java
+++ b/wearable/wear/RuntimePermissionsWear/Wearable/src/main/java/com/example/android/wearable/runtimepermissions/MainWearActivity.java
@@ -23,16 +23,16 @@
 import android.hardware.SensorManager;
 import android.os.Bundle;
 import android.os.Looper;
-import android.support.v4.app.ActivityCompat;
-import android.support.v4.app.FragmentActivity;
-import android.support.wear.ambient.AmbientModeSupport;
 import android.util.Log;
 import android.view.View;
 import android.widget.Button;
 import android.widget.TextView;
 
-import com.example.android.wearable.runtimepermissions.common.Constants;
+import androidx.core.app.ActivityCompat;
+import androidx.fragment.app.FragmentActivity;
+import androidx.wear.ambient.AmbientModeSupport;
 
+import com.example.android.wearable.runtimepermissions.common.Constants;
 import com.google.android.gms.tasks.OnCompleteListener;
 import com.google.android.gms.tasks.Task;
 import com.google.android.gms.wearable.CapabilityClient;
diff --git a/wearable/wear/RuntimePermissionsWear/Wearable/src/main/res/layout/activity_main.xml b/wearable/wear/RuntimePermissionsWear/Wearable/src/main/res/layout/activity_main.xml
index b0e9034..f6c4af7 100644
--- a/wearable/wear/RuntimePermissionsWear/Wearable/src/main/res/layout/activity_main.xml
+++ b/wearable/wear/RuntimePermissionsWear/Wearable/src/main/res/layout/activity_main.xml
@@ -12,7 +12,7 @@
   limitations under the License.
   -->
 
-<android.support.wear.widget.BoxInsetLayout
+<androidx.wear.widget.BoxInsetLayout
     xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:app="http://schemas.android.com/apk/res-auto"
     xmlns:tools="http://schemas.android.com/tools"
@@ -62,4 +62,4 @@
             android:text="@string/hello_wear_activity_main" />
     </LinearLayout>
 
-</android.support.wear.widget.BoxInsetLayout>
+</androidx.wear.widget.BoxInsetLayout>
diff --git a/wearable/wear/RuntimePermissionsWear/Wearable/src/main/res/layout/activity_request_permission_on_phone.xml b/wearable/wear/RuntimePermissionsWear/Wearable/src/main/res/layout/activity_request_permission_on_phone.xml
index f96d80b..7df1bb6 100644
--- a/wearable/wear/RuntimePermissionsWear/Wearable/src/main/res/layout/activity_request_permission_on_phone.xml
+++ b/wearable/wear/RuntimePermissionsWear/Wearable/src/main/res/layout/activity_request_permission_on_phone.xml
@@ -12,7 +12,7 @@
   limitations under the License.
   -->
 
-<android.support.wear.widget.BoxInsetLayout
+<androidx.wear.widget.BoxInsetLayout
     xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:app="http://schemas.android.com/apk/res-auto"
     xmlns:tools="http://schemas.android.com/tools"
@@ -40,7 +40,7 @@
             android:paddingRight="6dp"
             android:textColor="#000000"/>
 
-        <android.support.v4.widget.Space
+        <androidx.legacy.widget.Space
             android:layout_width="18dp"
             android:layout_height="18dp"/>
 
@@ -57,7 +57,7 @@
                 app:circle_color="#0086D4"
                 android:src="@drawable/ic_cc_open_on_phone"/>
 
-            <android.support.v4.widget.Space
+            <androidx.legacy.widget.Space
                 android:layout_width="8dp"
                 android:layout_height="8dp"/>
 
@@ -71,4 +71,4 @@
                 android:textColor="#0086D4"/>
         </LinearLayout>
     </LinearLayout>
-</android.support.wear.widget.BoxInsetLayout>
\ No newline at end of file
+</androidx.wear.widget.BoxInsetLayout>
\ No newline at end of file
diff --git a/wearable/wear/RuntimePermissionsWear/gradle.properties b/wearable/wear/RuntimePermissionsWear/gradle.properties
new file mode 100644
index 0000000..94f8472
--- /dev/null
+++ b/wearable/wear/RuntimePermissionsWear/gradle.properties
@@ -0,0 +1,22 @@
+
+# Project-wide Gradle settings.
+
+# IDE (e.g. Android Studio) users:
+# Settings specified in this file will override any Gradle settings
+# configured through the IDE.
+
+# For more details on how to configure your build environment visit
+# http://www.gradle.org/docs/current/userguide/build_environment.html
+
+# Specifies the JVM arguments used for the daemon process.
+# The setting is particularly useful for tweaking memory settings.
+# Default value: -Xmx10248m -XX:MaxPermSize=256m
+# org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8
+
+# When configured, Gradle will run in incubating parallel mode.
+# This option should only be used with decoupled projects. More details, visit
+# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
+# org.gradle.parallel=true
+
+android.useAndroidX=true
+android.enableJetifier=true
diff --git a/wearable/wear/RuntimePermissionsWear/template-params.xml b/wearable/wear/RuntimePermissionsWear/template-params.xml
index 420265f..0ea4c62 100644
--- a/wearable/wear/RuntimePermissionsWear/template-params.xml
+++ b/wearable/wear/RuntimePermissionsWear/template-params.xml
@@ -21,20 +21,25 @@
     <package>com.example.android.wearable.runtimepermissions</package>
 
     <minSdk>18</minSdk>
-    <targetSdkVersion>27</targetSdkVersion>
+    <targetSdkVersion>28</targetSdkVersion>
 
     <minSdkVersionWear>23</minSdkVersionWear>
-    <targetSdkVersionWear>26</targetSdkVersionWear>
+    <targetSdkVersionWear>28</targetSdkVersionWear>
     <multiDexEnabled>true</multiDexEnabled>
 
     <wearable>
         <has_handheld_app>true</has_handheld_app>
     </wearable>
 
-    <dependency>com.android.support:appcompat-v7:27.1.1</dependency>
-    <dependency>com.android.support:design:27.1.1</dependency>
+    <androidX>true</androidX>
 
-    <dependency_wearable>com.android.support:wear:27.1.1</dependency_wearable>
+    <dependency>androidx.appcompat:appcompat:1.0.2</dependency>
+    <dependency>com.google.android.material:material:1.0.0</dependency>
+    <dependency>androidx.legacy:legacy-support-v13:1.0.0</dependency>
+
+    <dependency_wearable>androidx.wear:wear:1.0.0</dependency_wearable>
+    <dependency_wearable>androidx.legacy:legacy-support-v13:1.0.0</dependency_wearable>
+
 
     <strings>
         <intro>
diff --git a/wearable/wear/SpeedTracker/Application/src/main/AndroidManifest.xml b/wearable/wear/SpeedTracker/Application/src/main/AndroidManifest.xml
index bf86a10..09bf9d1 100644
--- a/wearable/wear/SpeedTracker/Application/src/main/AndroidManifest.xml
+++ b/wearable/wear/SpeedTracker/Application/src/main/AndroidManifest.xml
@@ -3,10 +3,6 @@
     package="com.example.android.wearable.speedtracker" >
 
 
-    <uses-sdk
-        android:minSdkVersion="18"
-        android:targetSdkVersion="25" />
-
     <!-- BEGIN_INCLUDE(manifest) -->
 
     <!-- Note that all required permissions are declared here in the Android manifest.
diff --git a/wearable/wear/SpeedTracker/Application/src/main/java/com/example/android/wearable/speedtracker/PhoneMainActivity.java b/wearable/wear/SpeedTracker/Application/src/main/java/com/example/android/wearable/speedtracker/PhoneMainActivity.java
index b915d26..4f9ea72 100644
--- a/wearable/wear/SpeedTracker/Application/src/main/java/com/example/android/wearable/speedtracker/PhoneMainActivity.java
+++ b/wearable/wear/SpeedTracker/Application/src/main/java/com/example/android/wearable/speedtracker/PhoneMainActivity.java
@@ -16,25 +16,25 @@
 
 package com.example.android.wearable.speedtracker;
 
-import com.google.android.gms.maps.CameraUpdateFactory;
-import com.google.android.gms.maps.GoogleMap;
-import com.google.android.gms.maps.SupportMapFragment;
-import com.google.android.gms.maps.OnMapReadyCallback;
-import com.google.android.gms.maps.model.LatLng;
-import com.google.android.gms.maps.model.LatLngBounds;
-import com.google.android.gms.maps.model.PolylineOptions;
-
 import android.app.DatePickerDialog;
 import android.os.AsyncTask;
 import android.os.Bundle;
-import android.support.v7.app.AppCompatActivity;
 import android.text.format.DateUtils;
 import android.util.Log;
 import android.view.View;
 import android.widget.DatePicker;
 import android.widget.TextView;
 
+import androidx.appcompat.app.AppCompatActivity;
+
 import com.example.android.wearable.speedtracker.common.LocationEntry;
+import com.google.android.gms.maps.CameraUpdateFactory;
+import com.google.android.gms.maps.GoogleMap;
+import com.google.android.gms.maps.OnMapReadyCallback;
+import com.google.android.gms.maps.SupportMapFragment;
+import com.google.android.gms.maps.model.LatLng;
+import com.google.android.gms.maps.model.LatLngBounds;
+import com.google.android.gms.maps.model.PolylineOptions;
 
 import java.util.ArrayList;
 import java.util.Calendar;
diff --git a/wearable/wear/SpeedTracker/Wearable/src/main/AndroidManifest.xml b/wearable/wear/SpeedTracker/Wearable/src/main/AndroidManifest.xml
index feb2b81..9b16916 100644
--- a/wearable/wear/SpeedTracker/Wearable/src/main/AndroidManifest.xml
+++ b/wearable/wear/SpeedTracker/Wearable/src/main/AndroidManifest.xml
@@ -22,10 +22,6 @@
     <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
     <uses-permission android:name="android.permission.WAKE_LOCK" />
 
-    <uses-sdk
-        android:minSdkVersion="20"
-        android:targetSdkVersion="25" />
-
     <application
         android:allowBackup="true"
         android:icon="@drawable/ic_launcher"
diff --git a/wearable/wear/SpeedTracker/Wearable/src/main/java/com/example/android/wearable/speedtracker/WearableMainActivity.java b/wearable/wear/SpeedTracker/Wearable/src/main/java/com/example/android/wearable/speedtracker/WearableMainActivity.java
index c2e180c..1437549 100644
--- a/wearable/wear/SpeedTracker/Wearable/src/main/java/com/example/android/wearable/speedtracker/WearableMainActivity.java
+++ b/wearable/wear/SpeedTracker/Wearable/src/main/java/com/example/android/wearable/speedtracker/WearableMainActivity.java
@@ -16,18 +16,6 @@
 
 package com.example.android.wearable.speedtracker;
 
-import com.google.android.gms.common.ConnectionResult;
-import com.google.android.gms.common.api.GoogleApiClient;
-import com.google.android.gms.common.api.ResultCallback;
-import com.google.android.gms.common.api.Status;
-import com.google.android.gms.location.LocationListener;
-import com.google.android.gms.location.LocationRequest;
-import com.google.android.gms.location.LocationServices;
-import com.google.android.gms.wearable.DataApi;
-import com.google.android.gms.wearable.PutDataMapRequest;
-import com.google.android.gms.wearable.PutDataRequest;
-import com.google.android.gms.wearable.Wearable;
-
 import android.Manifest;
 import android.annotation.SuppressLint;
 import android.app.AlertDialog;
@@ -39,18 +27,30 @@
 import android.os.Bundle;
 import android.os.Handler;
 import android.preference.PreferenceManager;
-import android.support.annotation.NonNull;
-import android.support.v4.app.ActivityCompat;
-import android.support.v4.app.FragmentActivity;
-import android.support.v4.content.ContextCompat;
-import android.support.wear.ambient.AmbientModeSupport;
 import android.util.Log;
 import android.view.View;
 import android.widget.ImageView;
 import android.widget.TextView;
 
+import androidx.annotation.NonNull;
+import androidx.core.app.ActivityCompat;
+import androidx.core.content.ContextCompat;
+import androidx.fragment.app.FragmentActivity;
+import androidx.wear.ambient.AmbientModeSupport;
+
 import com.example.android.wearable.speedtracker.common.Constants;
 import com.example.android.wearable.speedtracker.common.LocationEntry;
+import com.google.android.gms.common.ConnectionResult;
+import com.google.android.gms.common.api.GoogleApiClient;
+import com.google.android.gms.common.api.ResultCallback;
+import com.google.android.gms.common.api.Status;
+import com.google.android.gms.location.LocationListener;
+import com.google.android.gms.location.LocationRequest;
+import com.google.android.gms.location.LocationServices;
+import com.google.android.gms.wearable.DataApi;
+import com.google.android.gms.wearable.PutDataMapRequest;
+import com.google.android.gms.wearable.PutDataRequest;
+import com.google.android.gms.wearable.Wearable;
 
 import java.util.Calendar;
 import java.util.concurrent.TimeUnit;
diff --git a/wearable/wear/SpeedTracker/Wearable/src/main/res/layout/speed_picker_activity.xml b/wearable/wear/SpeedTracker/Wearable/src/main/res/layout/speed_picker_activity.xml
index 2706211..8862db2 100644
--- a/wearable/wear/SpeedTracker/Wearable/src/main/res/layout/speed_picker_activity.xml
+++ b/wearable/wear/SpeedTracker/Wearable/src/main/res/layout/speed_picker_activity.xml
@@ -14,7 +14,7 @@
      limitations under the License.
 -->
 
-<android.support.wear.widget.BoxInsetLayout
+<androidx.wear.widget.BoxInsetLayout
     xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:app="http://schemas.android.com/apk/res-auto"
     android:background="@android:color/black"
@@ -44,4 +44,4 @@
             android:layout_alignParentTop="true"
             android:text="@string/speed_limit_header"/>
     </RelativeLayout>
-</android.support.wear.widget.BoxInsetLayout>
\ No newline at end of file
+</androidx.wear.widget.BoxInsetLayout>
\ No newline at end of file
diff --git a/wearable/wear/SpeedTracker/gradle.properties b/wearable/wear/SpeedTracker/gradle.properties
index 5d08ba7..94f8472 100644
--- a/wearable/wear/SpeedTracker/gradle.properties
+++ b/wearable/wear/SpeedTracker/gradle.properties
@@ -1,3 +1,4 @@
+
 # Project-wide Gradle settings.
 
 # IDE (e.g. Android Studio) users:
@@ -15,4 +16,7 @@
 # When configured, Gradle will run in incubating parallel mode.
 # This option should only be used with decoupled projects. More details, visit
 # http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
-# org.gradle.parallel=true
\ No newline at end of file
+# org.gradle.parallel=true
+
+android.useAndroidX=true
+android.enableJetifier=true
diff --git a/wearable/wear/SpeedTracker/template-params.xml b/wearable/wear/SpeedTracker/template-params.xml
index d4d05ca..85dabf9 100644
--- a/wearable/wear/SpeedTracker/template-params.xml
+++ b/wearable/wear/SpeedTracker/template-params.xml
@@ -29,12 +29,16 @@
         <has_handheld_app>true</has_handheld_app>
     </wearable>
 
-    <dependency>com.android.support:design:27.1.1</dependency>
-    <dependency_wearable>com.android.support:wear:27.1.1</dependency_wearable>
+    <androidX>true</androidX>
 
-    <dependency>com.google.android.gms:play-services-maps</dependency>
-    <dependency>com.google.android.gms:play-services-location</dependency>
-    <dependency_wearable>com.google.android.gms:play-services-location</dependency_wearable>
+    <dependency>com.google.android.material:material:1.0.0</dependency>
+    <dependency>androidx.legacy:legacy-support-v13:1.0.0</dependency>
+    <dependency>com.google.android.gms:play-services-maps:16.1.0</dependency>
+    <dependency>com.google.android.gms:play-services-location:16.0.0</dependency>
+
+    <dependency_wearable>androidx.wear:wear:1.0.0</dependency_wearable>
+    <dependency_wearable>androidx.legacy:legacy-support-v13:1.0.0</dependency_wearable>
+    <dependency_wearable>com.google.android.gms:play-services-location:16.0.0</dependency_wearable>
 
     <strings>
         <intro>
diff --git a/wearable/wear/WatchFace/Wearable/src/main/java/com/example/android/wearable/watchface/config/AnalogComplicationConfigActivity.java b/wearable/wear/WatchFace/Wearable/src/main/java/com/example/android/wearable/watchface/config/AnalogComplicationConfigActivity.java
index 19e469a..48c6751 100644
--- a/wearable/wear/WatchFace/Wearable/src/main/java/com/example/android/wearable/watchface/config/AnalogComplicationConfigActivity.java
+++ b/wearable/wear/WatchFace/Wearable/src/main/java/com/example/android/wearable/watchface/config/AnalogComplicationConfigActivity.java
@@ -18,12 +18,13 @@
 import android.app.Activity;
 import android.content.Intent;
 import android.os.Bundle;
-import android.support.v7.widget.LinearLayoutManager;
-import android.support.wear.widget.WearableRecyclerView;
 import android.support.wearable.complications.ComplicationProviderInfo;
 import android.support.wearable.complications.ProviderChooserIntent;
 import android.util.Log;
 
+import androidx.recyclerview.widget.LinearLayoutManager;
+import androidx.wear.widget.WearableRecyclerView;
+
 import com.example.android.wearable.watchface.R;
 import com.example.android.wearable.watchface.model.AnalogComplicationConfigData;
 import com.example.android.wearable.watchface.watchface.AnalogComplicationWatchFaceService;
diff --git a/wearable/wear/WatchFace/Wearable/src/main/java/com/example/android/wearable/watchface/config/AnalogComplicationConfigRecyclerViewAdapter.java b/wearable/wear/WatchFace/Wearable/src/main/java/com/example/android/wearable/watchface/config/AnalogComplicationConfigRecyclerViewAdapter.java
index 4ee10b5..cabaaca 100644
--- a/wearable/wear/WatchFace/Wearable/src/main/java/com/example/android/wearable/watchface/config/AnalogComplicationConfigRecyclerViewAdapter.java
+++ b/wearable/wear/WatchFace/Wearable/src/main/java/com/example/android/wearable/watchface/config/AnalogComplicationConfigRecyclerViewAdapter.java
@@ -27,8 +27,6 @@
 import android.graphics.PorterDuff;
 import android.graphics.PorterDuffColorFilter;
 import android.graphics.drawable.Drawable;
-import android.support.annotation.Nullable;
-import android.support.v7.widget.RecyclerView;
 import android.support.wearable.complications.ComplicationHelperActivity;
 import android.support.wearable.complications.ComplicationProviderInfo;
 import android.support.wearable.complications.ProviderInfoRetriever;
@@ -45,6 +43,9 @@
 import android.widget.Switch;
 import android.widget.Toast;
 
+import androidx.annotation.Nullable;
+import androidx.recyclerview.widget.RecyclerView;
+
 import com.example.android.wearable.watchface.R;
 import com.example.android.wearable.watchface.model.AnalogComplicationConfigData.BackgroundComplicationConfigItem;
 import com.example.android.wearable.watchface.model.AnalogComplicationConfigData.ColorConfigItem;
diff --git a/wearable/wear/WatchFace/Wearable/src/main/java/com/example/android/wearable/watchface/config/ColorSelectionActivity.java b/wearable/wear/WatchFace/Wearable/src/main/java/com/example/android/wearable/watchface/config/ColorSelectionActivity.java
index 3bbfeec..68cd088 100644
--- a/wearable/wear/WatchFace/Wearable/src/main/java/com/example/android/wearable/watchface/config/ColorSelectionActivity.java
+++ b/wearable/wear/WatchFace/Wearable/src/main/java/com/example/android/wearable/watchface/config/ColorSelectionActivity.java
@@ -17,16 +17,16 @@
 
 import android.app.Activity;
 import android.os.Bundle;
-import android.support.v7.widget.LinearLayoutManager;
-import android.support.wear.widget.WearableRecyclerView;
+
+import androidx.recyclerview.widget.LinearLayoutManager;
+import androidx.wear.widget.WearableRecyclerView;
 
 import com.example.android.wearable.watchface.R;
 import com.example.android.wearable.watchface.model.AnalogComplicationConfigData;
 
 /**
  * Allows user to select color for something on the watch face (background, highlight,etc.) and
- * saves it to {@link android.content.SharedPreferences} in
- * {@link android.support.v7.widget.RecyclerView.Adapter}.
+ * saves it to {@link android.content.SharedPreferences} in RecyclerView.Adapter.
  */
 public class ColorSelectionActivity extends Activity {
 
diff --git a/wearable/wear/WatchFace/Wearable/src/main/java/com/example/android/wearable/watchface/config/ColorSelectionRecyclerViewAdapter.java b/wearable/wear/WatchFace/Wearable/src/main/java/com/example/android/wearable/watchface/config/ColorSelectionRecyclerViewAdapter.java
index 0c7fa51..1aba859 100644
--- a/wearable/wear/WatchFace/Wearable/src/main/java/com/example/android/wearable/watchface/config/ColorSelectionRecyclerViewAdapter.java
+++ b/wearable/wear/WatchFace/Wearable/src/main/java/com/example/android/wearable/watchface/config/ColorSelectionRecyclerViewAdapter.java
@@ -18,13 +18,14 @@
 import android.app.Activity;
 import android.content.Context;
 import android.content.SharedPreferences;
-import android.support.v7.widget.RecyclerView;
 import android.support.wearable.view.CircledImageView;
 import android.util.Log;
 import android.view.LayoutInflater;
 import android.view.View;
 import android.view.ViewGroup;
 
+import androidx.recyclerview.widget.RecyclerView;
+
 import com.example.android.wearable.watchface.R;
 
 import java.util.ArrayList;
diff --git a/wearable/wear/WatchFace/Wearable/src/main/java/com/example/android/wearable/watchface/config/DigitalWatchFaceWearableConfigActivity.java b/wearable/wear/WatchFace/Wearable/src/main/java/com/example/android/wearable/watchface/config/DigitalWatchFaceWearableConfigActivity.java
index 274a826..23f795d 100644
--- a/wearable/wear/WatchFace/Wearable/src/main/java/com/example/android/wearable/watchface/config/DigitalWatchFaceWearableConfigActivity.java
+++ b/wearable/wear/WatchFace/Wearable/src/main/java/com/example/android/wearable/watchface/config/DigitalWatchFaceWearableConfigActivity.java
@@ -22,8 +22,6 @@
 import android.content.Context;
 import android.graphics.Color;
 import android.os.Bundle;
-import android.support.v7.widget.RecyclerView;
-import android.support.wear.widget.BoxInsetLayout;
 import android.support.wearable.view.CircledImageView;
 import android.support.wearable.view.WearableListView;
 import android.util.Log;
@@ -33,15 +31,17 @@
 import android.widget.LinearLayout;
 import android.widget.TextView;
 
+import androidx.recyclerview.widget.RecyclerView;
+import androidx.wear.widget.BoxInsetLayout;
+
+import com.example.android.wearable.watchface.R;
+import com.example.android.wearable.watchface.util.DigitalWatchFaceUtil;
+import com.example.android.wearable.watchface.watchface.DigitalWatchFaceService;
 import com.google.android.gms.common.ConnectionResult;
 import com.google.android.gms.common.api.GoogleApiClient;
 import com.google.android.gms.wearable.DataMap;
 import com.google.android.gms.wearable.Wearable;
 
-import com.example.android.wearable.watchface.watchface.DigitalWatchFaceService;
-import com.example.android.wearable.watchface.util.DigitalWatchFaceUtil;
-import com.example.android.wearable.watchface.R;
-
 /**
  * The watch-side config activity for {@link DigitalWatchFaceService}, which allows for setting the
  * background color.
diff --git a/wearable/wear/WatchFace/Wearable/src/main/java/com/example/android/wearable/watchface/model/AnalogComplicationConfigData.java b/wearable/wear/WatchFace/Wearable/src/main/java/com/example/android/wearable/watchface/model/AnalogComplicationConfigData.java
index 067a3cd..324fe82 100644
--- a/wearable/wear/WatchFace/Wearable/src/main/java/com/example/android/wearable/watchface/model/AnalogComplicationConfigData.java
+++ b/wearable/wear/WatchFace/Wearable/src/main/java/com/example/android/wearable/watchface/model/AnalogComplicationConfigData.java
@@ -17,13 +17,14 @@
 
 import android.content.Context;
 import android.graphics.Color;
-import android.support.v7.widget.RecyclerView.ViewHolder;
-import android.support.v7.widget.RecyclerView;
+
+import androidx.recyclerview.widget.RecyclerView;
+import androidx.recyclerview.widget.RecyclerView.ViewHolder;
 
 import com.example.android.wearable.watchface.R;
+import com.example.android.wearable.watchface.config.AnalogComplicationConfigActivity;
 import com.example.android.wearable.watchface.config.AnalogComplicationConfigRecyclerViewAdapter;
 import com.example.android.wearable.watchface.config.ColorSelectionActivity;
-import com.example.android.wearable.watchface.config.AnalogComplicationConfigActivity;
 import com.example.android.wearable.watchface.watchface.AnalogComplicationWatchFaceService;
 
 import java.util.ArrayList;
diff --git a/wearable/wear/WatchFace/Wearable/src/main/java/com/example/android/wearable/watchface/watchface/DigitalWatchFaceService.java b/wearable/wear/WatchFace/Wearable/src/main/java/com/example/android/wearable/watchface/watchface/DigitalWatchFaceService.java
index 6392b5a..5b9472f 100644
--- a/wearable/wear/WatchFace/Wearable/src/main/java/com/example/android/wearable/watchface/watchface/DigitalWatchFaceService.java
+++ b/wearable/wear/WatchFace/Wearable/src/main/java/com/example/android/wearable/watchface/watchface/DigitalWatchFaceService.java
@@ -28,7 +28,6 @@
 import android.os.Bundle;
 import android.os.Handler;
 import android.os.Message;
-import android.support.v4.content.ContextCompat;
 import android.support.wearable.watchface.CanvasWatchFaceService;
 import android.support.wearable.watchface.WatchFaceService;
 import android.support.wearable.watchface.WatchFaceStyle;
@@ -37,6 +36,10 @@
 import android.view.SurfaceHolder;
 import android.view.WindowInsets;
 
+import androidx.core.content.ContextCompat;
+
+import com.example.android.wearable.watchface.R;
+import com.example.android.wearable.watchface.util.DigitalWatchFaceUtil;
 import com.google.android.gms.common.ConnectionResult;
 import com.google.android.gms.common.api.GoogleApiClient;
 import com.google.android.gms.wearable.DataApi;
@@ -47,9 +50,6 @@
 import com.google.android.gms.wearable.DataMapItem;
 import com.google.android.gms.wearable.Wearable;
 
-import com.example.android.wearable.watchface.util.DigitalWatchFaceUtil;
-import com.example.android.wearable.watchface.R;
-
 import java.text.SimpleDateFormat;
 import java.util.Calendar;
 import java.util.Date;
diff --git a/wearable/wear/WatchFace/Wearable/src/main/res/layout/activity_analog_complication_config.xml b/wearable/wear/WatchFace/Wearable/src/main/res/layout/activity_analog_complication_config.xml
index dea517e..708af82 100644
--- a/wearable/wear/WatchFace/Wearable/src/main/res/layout/activity_analog_complication_config.xml
+++ b/wearable/wear/WatchFace/Wearable/src/main/res/layout/activity_analog_complication_config.xml
@@ -21,7 +21,7 @@
     android:background="@color/dark_grey"
     android:paddingStart="@dimen/activity_config_padding"
     android:paddingEnd="@dimen/activity_config_padding">
-    <android.support.wear.widget.WearableRecyclerView
+    <androidx.wear.widget.WearableRecyclerView
         android:id="@+id/wearable_recycler_view"
         android:layout_height="wrap_content"
         android:layout_width="match_parent" />
diff --git a/wearable/wear/WatchFace/Wearable/src/main/res/layout/activity_color_selection_config.xml b/wearable/wear/WatchFace/Wearable/src/main/res/layout/activity_color_selection_config.xml
index 8780ca3..0ec2406 100644
--- a/wearable/wear/WatchFace/Wearable/src/main/res/layout/activity_color_selection_config.xml
+++ b/wearable/wear/WatchFace/Wearable/src/main/res/layout/activity_color_selection_config.xml
@@ -23,7 +23,7 @@
     android:paddingLeft="@dimen/activity_horizontal_margin"
     android:paddingRight="@dimen/activity_horizontal_margin"
     tools:context="com.example.android.wearable.watchface.config.ColorSelectionActivity">
-    <android.support.wear.widget.WearableRecyclerView
+    <androidx.wear.widget.WearableRecyclerView
         android:id="@+id/wearable_recycler_view"
         android:layout_height="wrap_content"
         android:layout_width="match_parent" />
diff --git a/wearable/wear/WatchFace/Wearable/src/main/res/layout/activity_digital_config.xml b/wearable/wear/WatchFace/Wearable/src/main/res/layout/activity_digital_config.xml
index 9ec9949..e32839c 100644
--- a/wearable/wear/WatchFace/Wearable/src/main/res/layout/activity_digital_config.xml
+++ b/wearable/wear/WatchFace/Wearable/src/main/res/layout/activity_digital_config.xml
@@ -13,7 +13,7 @@
  See the License for the specific language governing permissions and
  limitations under the License.
 -->
-<android.support.wear.widget.BoxInsetLayout
+<androidx.wear.widget.BoxInsetLayout
     xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:app="http://schemas.android.com/apk/res-auto"
     android:id="@+id/content"
@@ -37,4 +37,4 @@
         android:layout_height="match_parent"
         android:background="@android:color/transparent"
         app:boxedEdges="left|right"/>
-</android.support.wear.widget.BoxInsetLayout>
+</androidx.wear.widget.BoxInsetLayout>
diff --git a/wearable/wear/WatchFace/gradle.properties b/wearable/wear/WatchFace/gradle.properties
index 0bc4294..94f8472 100644
--- a/wearable/wear/WatchFace/gradle.properties
+++ b/wearable/wear/WatchFace/gradle.properties
@@ -18,3 +18,5 @@
 # http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
 # org.gradle.parallel=true
 
+android.useAndroidX=true
+android.enableJetifier=true
diff --git a/wearable/wear/WatchFace/template-params.xml b/wearable/wear/WatchFace/template-params.xml
index 981bd16..8bf7761 100644
--- a/wearable/wear/WatchFace/template-params.xml
+++ b/wearable/wear/WatchFace/template-params.xml
@@ -31,11 +31,17 @@
 
     <multiDexEnabled>true</multiDexEnabled>
 
+    <androidX>true</androidX>
 
+    <dependency>androidx.legacy:legacy-support-v4:1.0.0</dependency>
+    <dependency>androidx.legacy:legacy-support-v13:1.0.0</dependency>
+    <dependency>androidx.cardview:cardview:1.0.0</dependency>
+    <dependency>androidx.appcompat:appcompat:1.0.2</dependency>
     <dependency>com.google.android.support:wearable:2.4.0</dependency>
-    <dependency_wearable>com.android.support:palette-v7:28.0.0</dependency_wearable>
-    <dependency_wearable>com.android.support:wear:28.0.0</dependency_wearable>
 
+    <dependency_wearable>androidx.palette:palette:1.0.0</dependency_wearable>
+    <dependency_wearable>androidx.wear:wear:1.0.0</dependency_wearable>
+    <dependency_wearable>androidx.legacy:legacy-support-v13:1.0.0</dependency_wearable>
 
     <wearable>
         <has_handheld_app>true</has_handheld_app>
diff --git a/wearable/wear/WearAccessibilityApp/Wearable/build.gradle b/wearable/wear/WearAccessibilityApp/Wearable/build.gradle
index e5ee2ff..c8e23bb 100644
--- a/wearable/wear/WearAccessibilityApp/Wearable/build.gradle
+++ b/wearable/wear/WearAccessibilityApp/Wearable/build.gradle
@@ -6,7 +6,7 @@
     }
 
     dependencies {
-        classpath 'com.android.tools.build:gradle:3.1.3'
+        classpath 'com.android.tools.build:gradle:3.3.2'
     }
 }
 
@@ -21,17 +21,19 @@
 
 dependencies {
 
-    implementation 'com.android.support:wear:27.1.0'
-    implementation 'com.android.support.constraint:constraint-layout:1.0.2'
-    implementation 'com.android.support:appcompat-v7:27.1.0'
+    implementation 'androidx.wear:wear:1.0.0'
+    implementation 'androidx.legacy:legacy-support-v4:1.0.0'
+    implementation 'androidx.legacy:legacy-support-v13:1.0.0'
+    implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
+    implementation 'androidx.appcompat:appcompat:1.0.2'
 
 
-    implementation 'com.google.android.gms:play-services-wearable:15.0.1'
-    implementation 'com.android.support:support-v13:27.1.1'
+    implementation 'com.google.android.gms:play-services-wearable:16.0.1'
 
-    compileOnly 'com.google.android.wearable:wearable:2.3.0'
 
-    implementation 'com.google.android.support:wearable:2.3.0'
+    compileOnly 'com.google.android.wearable:wearable:2.4.0'
+
+    implementation 'com.google.android.support:wearable:2.4.0'
 
 }
 
@@ -45,9 +47,9 @@
 
 android {
 
-    compileSdkVersion 26
+    compileSdkVersion 28
 
-    buildToolsVersion "27.0.3"
+    buildToolsVersion "28.0.3"
 
     defaultConfig {
         versionCode 1
@@ -55,7 +57,7 @@
 
         minSdkVersion 24
 
-        targetSdkVersion 26
+        targetSdkVersion 28
 
         multiDexEnabled true
 
diff --git a/wearable/wear/WearAccessibilityApp/Wearable/src/main/AndroidManifest.xml b/wearable/wear/WearAccessibilityApp/Wearable/src/main/AndroidManifest.xml
index 3c7fcaf..6e936d6 100644
--- a/wearable/wear/WearAccessibilityApp/Wearable/src/main/AndroidManifest.xml
+++ b/wearable/wear/WearAccessibilityApp/Wearable/src/main/AndroidManifest.xml
@@ -17,8 +17,6 @@
 <manifest package="com.example.android.wearable.wear.wearaccessibilityapp"
           xmlns:android="http://schemas.android.com/apk/res/android">
 
-    <uses-sdk android:minSdkVersion="14"/>
-
     <uses-feature android:name="android.hardware.type.watch"/>
 
     <!-- Required for Always-on. -->
diff --git a/wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/AccessibilityActivity.java b/wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/AccessibilityActivity.java
index d982d12..319fa34 100644
--- a/wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/AccessibilityActivity.java
+++ b/wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/AccessibilityActivity.java
@@ -19,12 +19,14 @@
 import android.content.Intent;
 import android.os.Bundle;
 import android.provider.Settings;
-import android.support.wear.ambient.AmbientMode;
 import android.view.View;
 import android.view.View.OnClickListener;
 import android.widget.ImageView;
 import android.widget.TextView;
 
+import androidx.wear.ambient.AmbientMode;
+
+
 public class AccessibilityActivity extends Activity implements AmbientMode.AmbientCallbackProvider {
     @Override
     protected void onCreate(Bundle savedInstanceState) {
diff --git a/wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/AppItem.java b/wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/AppItem.java
index ee1002b..7c713c0 100644
--- a/wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/AppItem.java
+++ b/wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/AppItem.java
@@ -52,6 +52,9 @@
     }
 
     public void launchActivity(Context context) {
-        context.startActivity(new Intent(context, mClass));
+        Intent intent = new Intent(context, mClass);
+        intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
+
+        context.startActivity(intent);
     }
 }
diff --git a/wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/AppItemListViewAdapter.java b/wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/AppItemListViewAdapter.java
index 372f995..e82cafe 100644
--- a/wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/AppItemListViewAdapter.java
+++ b/wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/AppItemListViewAdapter.java
@@ -16,8 +16,6 @@
 package com.example.android.wearable.wear.wearaccessibilityapp;
 
 import android.content.Context;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
 import android.view.LayoutInflater;
 import android.view.View;
 import android.view.ViewGroup;
@@ -25,6 +23,9 @@
 import android.widget.ImageView;
 import android.widget.TextView;
 
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+
 import java.util.List;
 
 public class AppItemListViewAdapter extends ArrayAdapter<AppItem> {
diff --git a/wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/ControlsActivity.java b/wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/ControlsActivity.java
index 5cb897e..91dd127 100644
--- a/wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/ControlsActivity.java
+++ b/wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/ControlsActivity.java
@@ -17,8 +17,9 @@
 
 import android.os.Bundle;
 import android.preference.PreferenceFragment;
-import android.support.v4.app.FragmentActivity;
-import android.support.wear.ambient.AmbientModeSupport;
+
+import androidx.fragment.app.FragmentActivity;
+import androidx.wear.ambient.AmbientModeSupport;
 
 public class ControlsActivity extends FragmentActivity implements
         AmbientModeSupport.AmbientCallbackProvider {
diff --git a/wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/DialogsActivity.java b/wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/DialogsActivity.java
index e17476c..41825dc 100644
--- a/wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/DialogsActivity.java
+++ b/wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/DialogsActivity.java
@@ -20,8 +20,6 @@
 import android.content.DialogInterface.OnClickListener;
 import android.content.Intent;
 import android.os.Bundle;
-import android.support.v4.app.FragmentActivity;
-import android.support.wear.ambient.AmbientModeSupport;
 import android.support.wearable.view.AcceptDenyDialog;
 import android.support.wearable.view.WearableDialogHelper.DialogBuilder;
 import android.view.LayoutInflater;
@@ -30,6 +28,9 @@
 import android.widget.ListView;
 import android.widget.TextView;
 
+import androidx.fragment.app.FragmentActivity;
+import androidx.wear.ambient.AmbientModeSupport;
+
 import java.util.ArrayList;
 import java.util.List;
 import java.util.function.Supplier;
diff --git a/wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/FullScreenActivity.java b/wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/FullScreenActivity.java
index f254e28..bee3277 100644
--- a/wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/FullScreenActivity.java
+++ b/wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/FullScreenActivity.java
@@ -16,8 +16,9 @@
 package com.example.android.wearable.wear.wearaccessibilityapp;
 
 import android.os.Bundle;
-import android.support.v4.app.FragmentActivity;
-import android.support.wear.ambient.AmbientModeSupport;
+
+import androidx.fragment.app.FragmentActivity;
+import androidx.wear.ambient.AmbientModeSupport;
 
 public class FullScreenActivity extends FragmentActivity implements
         AmbientModeSupport.AmbientCallbackProvider {
diff --git a/wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/GlobalNotificationBuilder.java b/wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/GlobalNotificationBuilder.java
index 812ed94..c77d623 100644
--- a/wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/GlobalNotificationBuilder.java
+++ b/wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/GlobalNotificationBuilder.java
@@ -15,7 +15,7 @@
  */
 package com.example.android.wearable.wear.wearaccessibilityapp;
 
-import android.support.v4.app.NotificationCompat;
+import androidx.core.app.NotificationCompat;
 
 /**
  * We use a Singleton for a global copy of the NotificationCompat.Builder to update active
diff --git a/wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/ImagesActivity.java b/wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/ImagesActivity.java
index dcb9504..f9334de 100644
--- a/wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/ImagesActivity.java
+++ b/wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/ImagesActivity.java
@@ -19,10 +19,11 @@
 import android.graphics.drawable.AnimatedVectorDrawable;
 import android.graphics.drawable.Drawable;
 import android.os.Bundle;
-import android.support.v4.app.FragmentActivity;
-import android.support.wear.ambient.AmbientModeSupport;
 import android.widget.ImageView;
 
+import androidx.fragment.app.FragmentActivity;
+import androidx.wear.ambient.AmbientModeSupport;
+
 public class ImagesActivity extends FragmentActivity implements
         AmbientModeSupport.AmbientCallbackProvider {
     private AnimatedVectorDrawable mAnimatedVectorDrawableSwipe;
diff --git a/wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/InLineActivity.java b/wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/InLineActivity.java
index 275f544..25a2011 100644
--- a/wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/InLineActivity.java
+++ b/wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/InLineActivity.java
@@ -21,8 +21,9 @@
 import android.preference.PreferenceFragment;
 import android.preference.PreferenceScreen;
 import android.preference.SwitchPreference;
-import android.support.v4.app.FragmentActivity;
-import android.support.wear.ambient.AmbientModeSupport;
+
+import androidx.fragment.app.FragmentActivity;
+import androidx.wear.ambient.AmbientModeSupport;
 
 public class InLineActivity extends FragmentActivity implements
         AmbientModeSupport.AmbientCallbackProvider {
diff --git a/wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/ListOfGraphicsActivity.java b/wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/ListOfGraphicsActivity.java
index 1d70066..e0aff85 100644
--- a/wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/ListOfGraphicsActivity.java
+++ b/wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/ListOfGraphicsActivity.java
@@ -16,14 +16,15 @@
 package com.example.android.wearable.wear.wearaccessibilityapp;
 
 import android.os.Bundle;
-import android.support.v4.app.FragmentActivity;
-import android.support.wear.ambient.AmbientModeSupport;
 import android.view.LayoutInflater;
 import android.view.View;
 import android.widget.AdapterView;
 import android.widget.ListView;
 import android.widget.TextView;
 
+import androidx.fragment.app.FragmentActivity;
+import androidx.wear.ambient.AmbientModeSupport;
+
 import java.util.ArrayList;
 import java.util.List;
 
diff --git a/wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/ListViewAdapter.java b/wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/ListViewAdapter.java
index 41b18d8..8899b4e 100644
--- a/wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/ListViewAdapter.java
+++ b/wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/ListViewAdapter.java
@@ -16,8 +16,6 @@
 package com.example.android.wearable.wear.wearaccessibilityapp;
 
 import android.content.Context;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
 import android.view.LayoutInflater;
 import android.view.View;
 import android.view.ViewGroup;
@@ -25,6 +23,9 @@
 import android.widget.ImageView;
 import android.widget.TextView;
 
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+
 import java.util.List;
 
 public class ListViewAdapter<T extends Item> extends ArrayAdapter<T> {
diff --git a/wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/ListsActivity.java b/wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/ListsActivity.java
index bd9d773..6680900 100644
--- a/wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/ListsActivity.java
+++ b/wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/ListsActivity.java
@@ -16,14 +16,15 @@
 package com.example.android.wearable.wear.wearaccessibilityapp;
 
 import android.os.Bundle;
-import android.support.v4.app.FragmentActivity;
-import android.support.wear.ambient.AmbientModeSupport;
 import android.view.LayoutInflater;
 import android.view.View;
 import android.widget.AdapterView;
 import android.widget.ListView;
 import android.widget.TextView;
 
+import androidx.fragment.app.FragmentActivity;
+import androidx.wear.ambient.AmbientModeSupport;
+
 import java.util.ArrayList;
 import java.util.List;
 
diff --git a/wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/ListsItem.java b/wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/ListsItem.java
index 42e8464..57be950 100644
--- a/wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/ListsItem.java
+++ b/wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/ListsItem.java
@@ -33,6 +33,9 @@
     }
 
     public void launchActivity(Context context) {
-        context.startActivity(new Intent(context, mClass));
+        Intent intent = new Intent(context, mClass);
+        intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
+
+        context.startActivity(intent);
     }
 }
diff --git a/wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/LongListActivity.java b/wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/LongListActivity.java
index 4240397..c1255e6 100644
--- a/wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/LongListActivity.java
+++ b/wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/LongListActivity.java
@@ -17,14 +17,15 @@
 
 import android.os.Bundle;
 import android.os.Handler;
-import android.support.v4.app.FragmentActivity;
-import android.support.v7.widget.LinearLayoutManager;
-import android.support.v7.widget.RecyclerView;
-import android.support.wear.ambient.AmbientModeSupport;
-import android.support.wear.widget.WearableRecyclerView;
-import android.support.wear.widget.drawer.WearableActionDrawerView;
 import android.view.View;
 
+import androidx.fragment.app.FragmentActivity;
+import androidx.recyclerview.widget.LinearLayoutManager;
+import androidx.recyclerview.widget.RecyclerView;
+import androidx.wear.ambient.AmbientModeSupport;
+import androidx.wear.widget.WearableRecyclerView;
+import androidx.wear.widget.drawer.WearableActionDrawerView;
+
 import com.example.android.wearable.wear.wearaccessibilityapp.LongListRecyclerViewAdapter.SwitchChangeListener;
 
 import java.util.ArrayList;
diff --git a/wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/LongListRecyclerViewAdapter.java b/wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/LongListRecyclerViewAdapter.java
index 96b273a..27681b3 100644
--- a/wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/LongListRecyclerViewAdapter.java
+++ b/wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/LongListRecyclerViewAdapter.java
@@ -16,8 +16,6 @@
 package com.example.android.wearable.wear.wearaccessibilityapp;
 
 import android.content.Context;
-import android.support.v7.widget.RecyclerView;
-import android.support.v7.widget.RecyclerView.ViewHolder;
 import android.view.LayoutInflater;
 import android.view.View;
 import android.view.View.OnClickListener;
@@ -26,6 +24,9 @@
 import android.widget.Switch;
 import android.widget.TextView;
 
+import androidx.recyclerview.widget.RecyclerView;
+import androidx.recyclerview.widget.RecyclerView.ViewHolder;
+
 import java.util.List;
 
 public class LongListRecyclerViewAdapter
diff --git a/wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/MainActivity.java b/wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/MainActivity.java
index 4bbfacd..370c0e5 100644
--- a/wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/MainActivity.java
+++ b/wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/MainActivity.java
@@ -16,10 +16,11 @@
 package com.example.android.wearable.wear.wearaccessibilityapp;
 
 import android.os.Bundle;
-import android.support.v4.app.FragmentActivity;
-import android.support.wear.ambient.AmbientModeSupport;
-import android.support.wear.widget.WearableLinearLayoutManager;
-import android.support.wear.widget.WearableRecyclerView;
+
+import androidx.fragment.app.FragmentActivity;
+import androidx.wear.ambient.AmbientModeSupport;
+import androidx.wear.widget.WearableLinearLayoutManager;
+import androidx.wear.widget.WearableRecyclerView;
 
 import java.util.ArrayList;
 import java.util.List;
diff --git a/wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/MenuRecyclerViewAdapter.java b/wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/MenuRecyclerViewAdapter.java
index e536762..3e57c00 100644
--- a/wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/MenuRecyclerViewAdapter.java
+++ b/wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/MenuRecyclerViewAdapter.java
@@ -16,14 +16,15 @@
 package com.example.android.wearable.wear.wearaccessibilityapp;
 
 import android.content.Context;
-import android.support.v7.widget.RecyclerView;
-import android.support.v7.widget.RecyclerView.ViewHolder;
 import android.view.LayoutInflater;
 import android.view.View;
 import android.view.ViewGroup;
 import android.widget.ImageView;
 import android.widget.TextView;
 
+import androidx.recyclerview.widget.RecyclerView;
+import androidx.recyclerview.widget.RecyclerView.ViewHolder;
+
 import java.util.List;
 
 public class MenuRecyclerViewAdapter extends RecyclerView.Adapter<MenuRecyclerViewAdapter.Holder> {
diff --git a/wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/MessagingIntentService.java b/wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/MessagingIntentService.java
index b8e998f..980dcbc 100644
--- a/wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/MessagingIntentService.java
+++ b/wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/MessagingIntentService.java
@@ -21,12 +21,15 @@
 import android.content.Intent;
 import android.graphics.BitmapFactory;
 import android.os.Bundle;
-import android.support.v4.app.NotificationCompat;
-import android.support.v4.app.NotificationCompat.MessagingStyle;
-import android.support.v4.app.NotificationManagerCompat;
-import android.support.v4.app.RemoteInput;
 import android.util.Log;
 
+import androidx.core.app.NotificationCompat;
+import androidx.core.app.NotificationCompat.MessagingStyle;
+import androidx.core.app.NotificationManagerCompat;
+import androidx.core.app.Person;
+import androidx.core.app.RemoteInput;
+import androidx.core.content.ContextCompat;
+
 /**
  * Asynchronously handles updating messaging app posts (and active Notification) with replies from
  * user in a conversation. Notification for social app use MessagingStyle.
@@ -100,8 +103,9 @@
                     NotificationCompat.MessagingStyle.extractMessagingStyleFromNotification(
                             notification);
 
-            // Add new message to the MessagingStyle
-            messagingStyle.addMessage(replyCharSequence, System.currentTimeMillis(), null);
+            // Add new message to the MessagingStyle. Set last parameter to null for responses
+            // from user.
+            messagingStyle.addMessage(replyCharSequence, System.currentTimeMillis(), (Person) null);
 
             // Updates the Notification
             notification = notificationCompatBuilder.setStyle(messagingStyle).build();
@@ -130,51 +134,52 @@
      */
     private NotificationCompat.Builder recreateBuilderWithMessagingStyle() {
 
-        // Main steps for building a MESSAGING_STYLE notification (for more detailed comments on
-        // building this notification, check StandaloneMainActivity.java)::
+        // Main steps for building a MESSAGING_STYLE notification:
         //      0. Get your data
-        //      1. Build the MESSAGING_STYLE
-        //      2. Add support for Wear 1.+
+        //      1. Create Notification Channel for O and beyond devices (26+)
+        //      2. Build the MESSAGING_STYLE
         //      3. Set up main Intent for notification
         //      4. Set up RemoteInput (users can input directly from notification)
         //      5. Build and issue the notification
 
-        // 0. Get your data (everything unique per Notification)
+        // 0. Get your data (everything unique per Notification).
         MockDatabase.MessagingStyleCommsAppData messagingStyleCommsAppData =
-                MockDatabase.getMessagingStyleData();
+                MockDatabase.getMessagingStyleData(getApplicationContext());
 
-        // 1. Build the Notification.Style (MESSAGING_STYLE)
+        // 1. Retrieve Notification Channel for O and beyond devices (26+). We don't need to create
+        //    the NotificationChannel, since it was created the first time this Notification was
+        //    created.
+        String notificationChannelId = messagingStyleCommsAppData.getChannelId();
+
+        // 2. Build the Notification.Style (MESSAGING_STYLE).
         String contentTitle = messagingStyleCommsAppData.getContentTitle();
 
         MessagingStyle messagingStyle =
-                new NotificationCompat.MessagingStyle(messagingStyleCommsAppData.getReplayName())
+                new NotificationCompat.MessagingStyle(messagingStyleCommsAppData.getMe())
+                        /*
+                         * <p>This API's behavior was changed in SDK version
+                         * {@link Build.VERSION_CODES#P}. If your application's target version is
+                         * less than {@link Build.VERSION_CODES#P}, setting a conversation title to
+                         * a non-null value will make {@link #isGroupConversation()} return
+                         * {@code true} and passing {@code null} will make it return {@code false}.
+                         * This behavior can be overridden by calling
+                         * {@link #setGroupConversation(boolean)} regardless of SDK version.
+                         * In {@code P} and above, this method does not affect group conversation
+                         * settings.
+                         *
+                         * In our case, we use the same title.
+                         */
                         .setConversationTitle(contentTitle);
 
-        // Adds all Messages
+        // Adds all Messages.
+        // Note: Messages include the text, timestamp, and sender.
         for (MessagingStyle.Message message : messagingStyleCommsAppData.getMessages()) {
             messagingStyle.addMessage(message);
         }
 
-        // 2. Add support for Wear 1.+.
-        String fullMessageForWearVersion1 = messagingStyleCommsAppData.getFullConversation();
+        messagingStyle.setGroupConversation(messagingStyleCommsAppData.isGroupConversation());
 
-        Notification chatHistoryForWearV1 =
-                new NotificationCompat.Builder(getApplicationContext())
-                        .setStyle(
-                                new NotificationCompat.BigTextStyle()
-                                        .bigText(fullMessageForWearVersion1))
-                        .setContentTitle(contentTitle)
-                        .setSmallIcon(R.drawable.watch)
-                        .setContentText(fullMessageForWearVersion1)
-                        .build();
-
-        // Adds page with all text to support Wear 1.+.
-        NotificationCompat.WearableExtender wearableExtenderForWearVersion1 =
-                new NotificationCompat.WearableExtender()
-                        .setHintContentIntentLaunchesActivity(true)
-                        .addPage(chatHistoryForWearV1);
-
-        // 3. Set up main Intent for notification
+        // 3. Set up main Intent for notification.
         Intent notifyIntent = new Intent(this, MessagingMainActivity.class);
 
         PendingIntent mainPendingIntent =
@@ -182,58 +187,83 @@
 
         // 4. Set up a RemoteInput Action, so users can input (keyboard, drawing, voice) directly
         // from the notification without entering the app.
+
+        // Create the RemoteInput specifying this key.
         String replyLabel = getString(R.string.reply_label);
         RemoteInput remoteInput =
                 new RemoteInput.Builder(MessagingIntentService.EXTRA_REPLY)
                         .setLabel(replyLabel)
+                        // Use machine learning to create responses based on previous messages.
+                        .setChoices(messagingStyleCommsAppData.getReplyChoicesBasedOnLastMessage())
                         .build();
 
+        // Create PendingIntent for service that handles input.
         Intent replyIntent = new Intent(this, MessagingIntentService.class);
         replyIntent.setAction(MessagingIntentService.ACTION_REPLY);
         PendingIntent replyActionPendingIntent = PendingIntent.getService(this, 0, replyIntent, 0);
 
         // Enable action to appear inline on Wear 2.0 (24+). This means it will appear over the
         // lower portion of the Notification for easy action (only possible for one action).
-        final NotificationCompat.Action.WearableExtender inlineActionForWear2_0 =
+        final NotificationCompat.Action.WearableExtender inlineActionForWear2 =
                 new NotificationCompat.Action.WearableExtender()
                         .setHintDisplayActionInline(true)
                         .setHintLaunchesActivity(false);
 
         NotificationCompat.Action replyAction =
                 new NotificationCompat.Action.Builder(
-                                R.drawable.reply, replyLabel, replyActionPendingIntent)
+                        R.drawable.reply,
+                        replyLabel,
+                        replyActionPendingIntent)
                         .addRemoteInput(remoteInput)
-                        // Allows system to generate replies by context of conversation
+                        // Informs system we aren't bringing up our own custom UI for a reply
+                        // action.
+                        .setShowsUserInterface(false)
+                        // Allows system to generate replies by context of conversation.
                         .setAllowGeneratedReplies(true)
-                        // Add WearableExtender to enable inline actions
-                        .extend(inlineActionForWear2_0)
+                        // Add WearableExtender to enable inline actions.
+                        .setSemanticAction(NotificationCompat.Action.SEMANTIC_ACTION_REPLY)
+                        .extend(inlineActionForWear2)
                         .build();
 
-        // 5. Build and issue the notification
+        // 5. Build and issue the notification.
+
+        // Notification Channel Id is ignored for Android pre O (26).
         NotificationCompat.Builder notificationCompatBuilder =
-                new NotificationCompat.Builder(getApplicationContext());
+                new NotificationCompat.Builder(getApplicationContext(), notificationChannelId);
 
         GlobalNotificationBuilder.setNotificationCompatBuilderInstance(notificationCompatBuilder);
 
-        // Builds and issues notification
         notificationCompatBuilder
+                // MESSAGING_STYLE sets title and content for Wear 1.+ and Wear 2.0 devices.
                 .setStyle(messagingStyle)
                 .setContentTitle(contentTitle)
                 .setContentText(messagingStyleCommsAppData.getContentText())
                 .setSmallIcon(R.drawable.watch)
                 .setLargeIcon(BitmapFactory.decodeResource(getResources(), R.drawable.avatar))
                 .setContentIntent(mainPendingIntent)
+                .setDefaults(NotificationCompat.DEFAULT_ALL)
+                // Set primary color (important for Wear 2.0 Notifications).
+                .setColor(ContextCompat.getColor(getApplicationContext(), R.color.background))
+
+                // Number of new notifications for API <24 (Wear 1.+) devices.
                 .setSubText(Integer.toString(messagingStyleCommsAppData.getNumberOfNewMessages()))
                 .addAction(replyAction)
                 .setCategory(Notification.CATEGORY_MESSAGE)
-                .setPriority(Notification.PRIORITY_HIGH)
-                .setVisibility(Notification.VISIBILITY_PRIVATE)
-                .extend(wearableExtenderForWearVersion1);
 
-        for (String name : messagingStyleCommsAppData.getParticipants()) {
-            notificationCompatBuilder.addPerson(name);
+                // Sets priority for 25 and below. For 26 and above, 'priority' is deprecated for
+                // 'importance' which is set in the NotificationChannel. The integers representing
+                // 'priority' are different from 'importance', so make sure you don't mix them.
+                .setPriority(messagingStyleCommsAppData.getPriority())
+
+                // Sets lock-screen visibility for 25 and below. For 26 and above, lock screen
+                // visibility is set in the NotificationChannel.
+                .setVisibility(messagingStyleCommsAppData.getChannelLockscreenVisibility());
+
+        // If the phone is in "Do not disturb" mode, the user may still be notified if the
+        // sender(s) are in a group allowed through "Do not disturb" by the user.
+        for (Person person : messagingStyleCommsAppData.getParticipants()) {
+            notificationCompatBuilder.addPerson(person.getUri());
         }
-
         return notificationCompatBuilder;
     }
 }
diff --git a/wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/MessagingMainActivity.java b/wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/MessagingMainActivity.java
index b3d6464..81fed8f 100644
--- a/wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/MessagingMainActivity.java
+++ b/wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/MessagingMainActivity.java
@@ -19,7 +19,8 @@
 import android.app.NotificationManager;
 import android.content.Context;
 import android.os.Bundle;
-import android.support.wear.ambient.AmbientMode;
+
+import androidx.wear.ambient.AmbientMode;
 
 /**
  * Template class meant to include functionality for your Messaging App. (This project's main focus
diff --git a/wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/MockDatabase.java b/wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/MockDatabase.java
index 421a719..1b70e03 100644
--- a/wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/MockDatabase.java
+++ b/wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/MockDatabase.java
@@ -16,105 +16,135 @@
 package com.example.android.wearable.wear.wearaccessibilityapp;
 
 import android.app.NotificationManager;
-import android.support.v4.app.NotificationCompat;
-import android.support.v4.app.NotificationCompat.MessagingStyle;
+import android.content.ContentResolver;
+import android.content.Context;
+import android.net.Uri;
+
+import androidx.core.app.NotificationCompat;
+import androidx.core.app.NotificationCompat.MessagingStyle;
+import androidx.core.app.Person;
+import androidx.core.graphics.drawable.IconCompat;
 
 import java.util.ArrayList;
 
 /** Mock data for each of the Notification Style Demos. */
 public final class MockDatabase {
 
-    public static MessagingStyleCommsAppData getMessagingStyleData() {
-        return MessagingStyleCommsAppData.getInstance();
+    /**
+     * Returns object containing all information to create a Messaging.Style Notification.
+     * @param context
+     * @return
+     */
+    public static MessagingStyleCommsAppData getMessagingStyleData(Context context) {
+        return MessagingStyleCommsAppData.getInstance(context);
     }
 
     /** Represents data needed for MessagingStyle Notification. */
-    public static class MessagingStyleCommsAppData {
+    public static class MessagingStyleCommsAppData extends MockNotificationData {
 
         private static MessagingStyleCommsAppData sInstance = null;
 
-        // Standard notification values
-        protected String mContentTitle;
-        protected String mContentText;
-        protected int mPriority;
+        // Unique data for this Notification.Style:
+        private ArrayList<MessagingStyle.Message> mMessages;
+        // String of all mMessages.
+        private String mFullConversation;
+        // Name preferred when replying to chat.
+        private Person mMe;
+        private ArrayList<Person> mParticipants;
 
-        // Style notification values
-        protected ArrayList<MessagingStyle.Message> mMessages;
-        // Basically, String of all mMessages
-        protected String mFullConversation;
-        // Name preferred when replying to chat
-        protected String mReplayName;
-        protected int mNumberOfNewMessages;
-        protected ArrayList<String> mParticipants;
+        private CharSequence[] mReplyChoicesBasedOnLastMessages;
 
-        // Notification channel values (O and above):
-        protected String mChannelId;
-        protected CharSequence mChannelName;
-        protected String mChannelDescription;
-        protected int mChannelImportance;
-        protected boolean mChannelEnableVibrate;
-        protected int mChannelLockscreenVisibility;
-
-        public static MessagingStyleCommsAppData getInstance() {
+        /**
+         * Returns singleton version of Messaging.Style data.
+         */
+        public static MessagingStyleCommsAppData getInstance(Context context) {
             if (sInstance == null) {
-                sInstance = getSync();
+                sInstance = getSync(context);
             }
             return sInstance;
         }
 
-        private static synchronized MessagingStyleCommsAppData getSync() {
+        private static synchronized MessagingStyleCommsAppData getSync(Context context) {
             if (sInstance == null) {
-                sInstance = new MessagingStyleCommsAppData();
+                sInstance = new MessagingStyleCommsAppData(context);
             }
 
             return sInstance;
         }
 
-        private MessagingStyleCommsAppData() {
-            // Standard notification values
-            // Content for API <24 (M and below) devices
-            mContentTitle = "2 Messages w/ Famous McFamously";
-            mContentText = "Dude! ... You know I am a Pesce-pescetarian. :P";
+        private MessagingStyleCommsAppData(Context context) {
+            // Standard notification values:
+            // Content for API <24 (M and below) devices.
+            // Note: I am actually hardcoding these Strings based on info below. You would be
+            // pulling these values from the same source in your database. I leave this up here, so
+            // you can see the standard parts of a Notification first.
+            mContentTitle = "3 Messages w/ Famous, Wendy";
+            mContentText = "HEY, I see my house! :)";
             mPriority = NotificationCompat.PRIORITY_HIGH;
 
-            // Style notification values
+            // Create the users for the conversation.
+            // Name preferred when replying to chat.
+            mMe =
+                    new Person.Builder()
+                            .setName("Me MacDonald")
+                            .setKey("1234567890")
+                            .setUri("tel:1234567890")
+                            .setIcon(
+                                    IconCompat.createWithResource(context, R.drawable.me_macdonald))
+                            .build();
 
-            // For each message, you need the timestamp, in this case, we are using arbitrary ones.
-            long currentTime = System.currentTimeMillis();
+            Person participant1 =
+                    new Person.Builder()
+                            .setName("Famous Fryer")
+                            .setKey("9876543210")
+                            .setUri("tel:9876543210")
+                            .setIcon(
+                                    IconCompat.createWithResource(context, R.drawable.famous_fryer))
+                            .build();
 
-            mMessages = new ArrayList<>();
-            mMessages.add(
-                    new MessagingStyle.Message(
-                            "What are you doing tonight?", currentTime - 4000, "Famous"));
-            mMessages.add(
-                    new MessagingStyle.Message(
-                            "I don't know, dinner maybe?", currentTime - 3000, null));
-            mMessages.add(new MessagingStyle.Message("Sounds good.", currentTime - 2000, "Famous"));
-            mMessages.add(new MessagingStyle.Message("How about BBQ?", currentTime - 1000, null));
-            // Last two are the newest message (2) from friend
-            mMessages.add(new MessagingStyle.Message("Hey!", currentTime, "Famous"));
-            mMessages.add(
-                    new MessagingStyle.Message(
-                            "You know I am a Pesce-pescetarian. :P", currentTime, "Famous"));
-
-            // String version of the mMessages above
-            mFullConversation =
-                    "Famous: What are you doing tonight?\n\n"
-                            + "Me: I don't know, dinner maybe?\n\n"
-                            + "Famous: Sounds good.\n\n"
-                            + "Me: How about BBQ?\n\n"
-                            + "Famous: Hey!\n\n"
-                            + "Famous: You know I am a Pesce-pescetarian. :P\n\n";
-
-            mNumberOfNewMessages = 2;
-
-            // Name preferred when replying to chat
-            mReplayName = "Me";
+            Person participant2 =
+                    new Person.Builder()
+                            .setName("Wendy Wonda")
+                            .setKey("2233221122")
+                            .setUri("tel:2233221122")
+                            .setIcon(IconCompat.createWithResource(context, R.drawable.wendy_wonda))
+                            .build();
 
             // If the phone is in "Do not disturb mode, the user will still be notified if
             // the user(s) is starred as a favorite.
+            // Note: You don't need to add yourself, aka 'me', as a participant.
             mParticipants = new ArrayList<>();
-            mParticipants.add("Famous McFamously");
+            mParticipants.add(participant1);
+            mParticipants.add(participant2);
+
+            mMessages = new ArrayList<>();
+
+            // For each message, you need the timestamp. In this case, we are using arbitrary longs
+            // representing time in milliseconds.
+            mMessages.add(
+                    // When you are setting an image for a message, text does not display.
+                    new MessagingStyle.Message("", 1528490641998L, participant1)
+                            .setData(
+                                    "image/png", resourceToUri(context, R.drawable.earth)));
+
+            mMessages.add(
+                    new MessagingStyle.Message(
+                            "Visiting the moon again? :P", 1528490643998L, mMe));
+
+            mMessages.add(
+                    new MessagingStyle.Message(
+                            "HEY, I see my house!", 1528490645998L, participant2));
+
+            // String version of the mMessages above.
+            mFullConversation =
+                    "Famous: [Picture of Moon]\n\n"
+                            + "Me: Visiting the moon again? :P\n\n"
+                            + "Wendy: HEY, I see my house! :)\n\n";
+
+            // Responses based on the last messages of the conversation. You would use
+            // Machine Learning to get these (https://developers.google.com/ml-kit/).
+            mReplyChoicesBasedOnLastMessages =
+                    new CharSequence[] {"Me too!", "How's the weather?", "You have good eyesight."};
 
             // Notification channel values (for devices targeting 26 and above):
             mChannelId = "channel_messaging_1";
@@ -127,14 +157,6 @@
             mChannelLockscreenVisibility = NotificationCompat.VISIBILITY_PRIVATE;
         }
 
-        public String getContentTitle() {
-            return mContentTitle;
-        }
-
-        public String getContentText() {
-            return mContentText;
-        }
-
         public ArrayList<MessagingStyle.Message> getMessages() {
             return mMessages;
         }
@@ -143,18 +165,57 @@
             return mFullConversation;
         }
 
-        public String getReplayName() {
-            return mReplayName;
+        public Person getMe() {
+            return mMe;
         }
 
         public int getNumberOfNewMessages() {
-            return mNumberOfNewMessages;
+            return mMessages.size();
         }
 
-        public ArrayList<String> getParticipants() {
+        public ArrayList<Person> getParticipants() {
             return mParticipants;
         }
 
+        public CharSequence[] getReplyChoicesBasedOnLastMessage() {
+            return mReplyChoicesBasedOnLastMessages;
+        }
+
+        @Override
+        public String toString() {
+            return getFullConversation();
+        }
+
+        public boolean isGroupConversation() {
+            return mParticipants.size() > 1;
+        }
+    }
+
+    /** Represents standard data needed for a Notification. */
+    public abstract static class MockNotificationData {
+
+        // Standard notification values:
+        protected String mContentTitle;
+        protected String mContentText;
+        protected int mPriority;
+
+        // Notification channel values (O and above):
+        protected String mChannelId;
+        protected CharSequence mChannelName;
+        protected String mChannelDescription;
+        protected int mChannelImportance;
+        protected boolean mChannelEnableVibrate;
+        protected int mChannelLockscreenVisibility;
+
+        // Notification Standard notification get methods:
+        public String getContentTitle() {
+            return mContentTitle;
+        }
+
+        public String getContentText() {
+            return mContentText;
+        }
+
         public int getPriority() {
             return mPriority;
         }
@@ -183,10 +244,22 @@
         public int getChannelLockscreenVisibility() {
             return mChannelLockscreenVisibility;
         }
+    }
 
-        @Override
-        public String toString() {
-            return getFullConversation();
-        }
+    /**
+     * Returns URI from a resource.
+     * @param context
+     * @param resId
+     * @return
+     */
+    public static Uri resourceToUri(Context context, int resId) {
+        return Uri.parse(
+                ContentResolver.SCHEME_ANDROID_RESOURCE
+                        + "://"
+                        + context.getResources().getResourcePackageName(resId)
+                        + "/"
+                        + context.getResources().getResourceTypeName(resId)
+                        + "/"
+                        + context.getResources().getResourceEntryName(resId));
     }
 }
diff --git a/wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/NotificationsActivity.java b/wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/NotificationsActivity.java
index fd0bfeb..d573948 100644
--- a/wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/NotificationsActivity.java
+++ b/wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/NotificationsActivity.java
@@ -29,15 +29,19 @@
 import android.preference.Preference.OnPreferenceClickListener;
 import android.preference.PreferenceFragment;
 import android.preference.SwitchPreference;
-import android.support.v4.app.FragmentActivity;
-import android.support.v4.app.NotificationCompat;
-import android.support.v4.app.NotificationCompat.MessagingStyle;
-import android.support.v4.app.NotificationManagerCompat;
-import android.support.v4.app.RemoteInput;
-import android.support.v4.content.ContextCompat;
-import android.support.wear.ambient.AmbientModeSupport;
 import android.util.Log;
 
+import androidx.core.app.NotificationCompat;
+import androidx.core.app.NotificationCompat.MessagingStyle;
+import androidx.core.app.NotificationManagerCompat;
+import androidx.core.app.Person;
+import androidx.core.app.RemoteInput;
+import androidx.core.content.ContextCompat;
+import androidx.fragment.app.FragmentActivity;
+import androidx.wear.ambient.AmbientModeSupport;
+
+import com.example.android.wearable.wear.wearaccessibilityapp.util.NotificationUtil;
+
 public class NotificationsActivity extends FragmentActivity implements
         AmbientModeSupport.AmbientCallbackProvider {
 
@@ -145,7 +149,7 @@
 
             // Main steps for building a MESSAGING_STYLE notification:
             //      0. Get your data
-            //      1. Retrieve Notification Channel for O and beyond devices (26+)
+            //      1. Create/Retrieve Notification Channel for O and beyond devices (26+)
             //      2. Build the MESSAGING_STYLE
             //      3. Set up main Intent for notification
             //      4. Set up RemoteInput (users can input directly from notification)
@@ -153,46 +157,64 @@
 
             // 0. Get your data (everything unique per Notification).
             MockDatabase.MessagingStyleCommsAppData messagingStyleCommsAppData =
-                    MockDatabase.getMessagingStyleData();
+                    MockDatabase.getMessagingStyleData(getContext());
 
             // 1. Create/Retrieve Notification Channel for O and beyond devices (26+).
-            String notificationChannelId =
-                    createNotificationChannel(context, messagingStyleCommsAppData);
+            String notificationChannelId = NotificationUtil.createNotificationChannel(
+                    getContext(),
+                    messagingStyleCommsAppData);
 
-            // 2. Build the Notification.Style (MESSAGING_STYLE)
+
+            // 2. Build the Notification.Style (MESSAGING_STYLE).
             String contentTitle = messagingStyleCommsAppData.getContentTitle();
 
             MessagingStyle messagingStyle =
-                    new NotificationCompat.MessagingStyle(
-                                    messagingStyleCommsAppData.getReplayName())
-                            // You could set a different title to appear when the messaging style
-                            // is supported on device (24+) if you wish. In our case, we use the
-                            // same
-                            // title.
+                    new NotificationCompat.MessagingStyle(messagingStyleCommsAppData.getMe())
+                            /*
+                             * <p>This API's behavior was changed in SDK version
+                             * {@link Build.VERSION_CODES#P}. If your application's target version
+                             * is less than {@link Build.VERSION_CODES#P}, setting a conversation
+                             * title to a non-null value will make {@link #isGroupConversation()}
+                             * return {@code true} and passing {@code null} will make it return
+                             * {@code false}.
+                             * This behavior can be overridden by calling
+                             * {@link #setGroupConversation(boolean)} regardless of SDK version.
+                             * In {@code P} and above, this method does not affect group
+                             * conversation settings.
+                             *
+                             * In our case, we use the same title.
+                             */
                             .setConversationTitle(contentTitle);
 
-            // Adds all Messages
-            // Note: Messages include the text, timestamp, and sender
+            // Adds all Messages.
+            // Note: Messages include the text, timestamp, and sender.
             for (MessagingStyle.Message message : messagingStyleCommsAppData.getMessages()) {
                 messagingStyle.addMessage(message);
             }
 
-            // 3. Set up main Intent for notification
+            messagingStyle.setGroupConversation(messagingStyleCommsAppData.isGroupConversation());
+
+            // 3. Set up main Intent for notification.
             Intent notifyIntent = new Intent(getActivity(), MessagingMainActivity.class);
 
             PendingIntent mainPendingIntent =
                     PendingIntent.getActivity(
-                            getActivity(), 0, notifyIntent, PendingIntent.FLAG_UPDATE_CURRENT);
+                            getActivity(),
+                            0,
+                            notifyIntent,
+                            PendingIntent.FLAG_UPDATE_CURRENT
+                    );
 
             // 4. Set up a RemoteInput Action, so users can input (keyboard, drawing, voice)
             // directly from the notification without entering the app.
 
             // Create the RemoteInput specifying this key.
             String replyLabel = getString(R.string.reply_label);
-            RemoteInput remoteInput =
-                    new RemoteInput.Builder(MessagingIntentService.EXTRA_REPLY)
-                            .setLabel(replyLabel)
-                            .build();
+            RemoteInput remoteInput = new RemoteInput.Builder(MessagingIntentService.EXTRA_REPLY)
+                    .setLabel(replyLabel)
+                    // Use machine learning to create responses based on previous messages.
+                    .setChoices(messagingStyleCommsAppData.getReplyChoicesBasedOnLastMessage())
+                    .build();
 
             // Create PendingIntent for service that handles input.
             Intent replyIntent = new Intent(getActivity(), MessagingIntentService.class);
@@ -204,44 +226,55 @@
             // lower portion of the Notification for easy action (only possible for one action).
             final NotificationCompat.Action.WearableExtender inlineActionForWear2 =
                     new NotificationCompat.Action.WearableExtender()
-                            .setHintDisplayActionInline(mActionOn)
+                            .setHintDisplayActionInline(true)
                             .setHintLaunchesActivity(false);
 
             NotificationCompat.Action replyAction =
                     new NotificationCompat.Action.Builder(
-                                    R.drawable.reply, replyLabel, replyActionPendingIntent)
+                            R.drawable.reply,
+                            replyLabel,
+                            replyActionPendingIntent)
                             .addRemoteInput(remoteInput)
-                            // Allows system to generate replies by context of conversation
+                            // Informs system we aren't bringing up our own custom UI for a reply
+                            // action.
+                            .setShowsUserInterface(false)
+                            // Allows system to generate replies by context of conversation.
                             .setAllowGeneratedReplies(true)
-                            // Add WearableExtender to enable inline actions
+                            // Add WearableExtender to enable inline actions.
+                            .setSemanticAction(NotificationCompat.Action.SEMANTIC_ACTION_REPLY)
                             .extend(inlineActionForWear2)
                             .build();
 
-            // 5. Build and issue the notification
 
-            // Because we want this to be a new notification (not updating current notification),
-            // we create a new Builder. Later, we update this same notification, so we need to save
+            // 5. Build and issue the notification.
+
+            // Because we want this to be a new notification (not updating current notification), we
+            // create a new Builder. Later, we update this same notification, so we need to save
             // this Builder globally (as outlined earlier).
 
             // Notification Channel Id is ignored for Android pre O (26).
             NotificationCompat.Builder notificationCompatBuilder =
-                    new NotificationCompat.Builder(context, notificationChannelId);
+                    new NotificationCompat.Builder(
+                            context, notificationChannelId);
 
             GlobalNotificationBuilder.setNotificationCompatBuilderInstance(
                     notificationCompatBuilder);
 
-            // Builds and issues notification
             notificationCompatBuilder
                     // MESSAGING_STYLE sets title and content for Wear 1.+ and Wear 2.0 devices.
                     .setStyle(messagingStyle)
                     .setContentTitle(contentTitle)
                     .setContentText(messagingStyleCommsAppData.getContentText())
                     .setSmallIcon(R.drawable.watch)
+                    .setLargeIcon(BitmapFactory.decodeResource(
+                            getResources(),
+                            mAvatarOn ? R.drawable.avatar : R.drawable.watch))
                     .setContentIntent(mainPendingIntent)
-                    .setColor(ContextCompat.getColor(context, R.color.background))
                     .setDefaults(NotificationCompat.DEFAULT_ALL)
+                    // Set primary color (important for Wear 2.0 Notifications).
+                    .setColor(ContextCompat.getColor(context, R.color.background))
 
-                    // Number of new notifications for API <24 (Wear 1.+) devices
+                    // Number of new notifications for API <24 (Wear 1.+) devices.
                     .setSubText(
                             Integer.toString(messagingStyleCommsAppData.getNumberOfNewMessages()))
                     .addAction(replyAction)
@@ -257,14 +290,10 @@
                     // visibility is set in the NotificationChannel.
                     .setVisibility(messagingStyleCommsAppData.getChannelLockscreenVisibility());
 
-            notificationCompatBuilder.setLargeIcon(
-                    BitmapFactory.decodeResource(
-                            getResources(), mAvatarOn ? R.drawable.avatar : R.drawable.watch));
-
-            // If the phone is in "Do not disturb mode, the user will still be notified if
-            // the sender(s) is starred as a favorite.
-            for (String name : messagingStyleCommsAppData.getParticipants()) {
-                notificationCompatBuilder.addPerson(name);
+            // If the phone is in "Do not disturb" mode, the user may still be notified if the
+            // sender(s) are in a group allowed through "Do not disturb" by the user.
+            for (Person person : messagingStyleCommsAppData.getParticipants()) {
+                notificationCompatBuilder.addPerson(person.getUri());
             }
 
             Notification notification = notificationCompatBuilder.build();
diff --git a/wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/OpenOnPhoneAnimationActivity.java b/wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/OpenOnPhoneAnimationActivity.java
index acc3c53..606c3d1 100644
--- a/wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/OpenOnPhoneAnimationActivity.java
+++ b/wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/OpenOnPhoneAnimationActivity.java
@@ -19,10 +19,11 @@
 import android.graphics.drawable.AnimatedVectorDrawable;
 import android.graphics.drawable.Drawable;
 import android.os.Bundle;
-import android.support.v4.app.FragmentActivity;
-import android.support.wear.ambient.AmbientModeSupport;
 import android.widget.ImageView;
 
+import androidx.fragment.app.FragmentActivity;
+import androidx.wear.ambient.AmbientModeSupport;
+
 public class OpenOnPhoneAnimationActivity extends FragmentActivity
         implements AmbientModeSupport.AmbientCallbackProvider {
     private AnimationCallback mAnimationCallback;
diff --git a/wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/PhotoCarouselActivity.java b/wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/PhotoCarouselActivity.java
index 5fa1f8b..8828fc8 100644
--- a/wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/PhotoCarouselActivity.java
+++ b/wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/PhotoCarouselActivity.java
@@ -17,12 +17,13 @@
 
 import android.content.Intent;
 import android.os.Bundle;
-import android.support.v4.app.FragmentActivity;
-import android.support.wear.ambient.AmbientModeSupport;
 import android.view.View;
 import android.view.View.OnClickListener;
 import android.widget.ImageView;
 
+import androidx.fragment.app.FragmentActivity;
+import androidx.wear.ambient.AmbientModeSupport;
+
 public class PhotoCarouselActivity extends FragmentActivity implements
         AmbientModeSupport.AmbientCallbackProvider, OnClickListener {
 
diff --git a/wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/ProgressActivity.java b/wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/ProgressActivity.java
index 38add02..22602fe 100644
--- a/wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/ProgressActivity.java
+++ b/wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/ProgressActivity.java
@@ -16,14 +16,15 @@
 package com.example.android.wearable.wear.wearaccessibilityapp;
 
 import android.os.Bundle;
-import android.support.v4.app.FragmentActivity;
-import android.support.wear.ambient.AmbientModeSupport;
 import android.view.LayoutInflater;
 import android.view.View;
 import android.widget.AdapterView;
 import android.widget.ListView;
 import android.widget.TextView;
 
+import androidx.fragment.app.FragmentActivity;
+import androidx.wear.ambient.AmbientModeSupport;
+
 import java.util.ArrayList;
 import java.util.List;
 
diff --git a/wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/RadioListActivity.java b/wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/RadioListActivity.java
index d5bcc8b..dcd675f 100644
--- a/wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/RadioListActivity.java
+++ b/wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/RadioListActivity.java
@@ -16,10 +16,11 @@
 package com.example.android.wearable.wear.wearaccessibilityapp;
 
 import android.os.Bundle;
-import android.support.v4.app.FragmentActivity;
-import android.support.wear.ambient.AmbientModeSupport;
 import android.widget.TextView;
 
+import androidx.fragment.app.FragmentActivity;
+import androidx.wear.ambient.AmbientModeSupport;
+
 public class RadioListActivity extends FragmentActivity implements
         AmbientModeSupport.AmbientCallbackProvider {
 
diff --git a/wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/ScalingScrollLayoutCallback.java b/wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/ScalingScrollLayoutCallback.java
index 00b4226..6b3f7ca 100644
--- a/wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/ScalingScrollLayoutCallback.java
+++ b/wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/ScalingScrollLayoutCallback.java
@@ -15,10 +15,11 @@
  */
 package com.example.android.wearable.wear.wearaccessibilityapp;
 
-import android.support.v7.widget.RecyclerView;
-import android.support.wear.widget.WearableLinearLayoutManager;
 import android.view.View;
 
+import androidx.recyclerview.widget.RecyclerView;
+import androidx.wear.widget.WearableLinearLayoutManager;
+
 public class ScalingScrollLayoutCallback extends WearableLinearLayoutManager.LayoutCallback {
 
     /** How much should we scale the icon at most. */
diff --git a/wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/ZoomImageActivity.java b/wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/ZoomImageActivity.java
index cde17b5..5bed977 100644
--- a/wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/ZoomImageActivity.java
+++ b/wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/ZoomImageActivity.java
@@ -17,10 +17,11 @@
 
 import android.content.res.Resources.NotFoundException;
 import android.os.Bundle;
-import android.support.v4.app.FragmentActivity;
-import android.support.wear.ambient.AmbientModeSupport;
 import android.widget.ImageView;
 
+import androidx.fragment.app.FragmentActivity;
+import androidx.wear.ambient.AmbientModeSupport;
+
 public class ZoomImageActivity extends FragmentActivity implements
         AmbientModeSupport.AmbientCallbackProvider {
 
diff --git a/wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/util/NotificationUtil.java b/wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/util/NotificationUtil.java
new file mode 100644
index 0000000..bbdcbdc
--- /dev/null
+++ b/wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/util/NotificationUtil.java
@@ -0,0 +1,77 @@
+/*
+ * Copyright 2018 The Android Open Source Project. All Rights Reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.example.android.wearable.wear.wearaccessibilityapp.util;
+
+import android.app.Notification;
+import android.app.NotificationChannel;
+import android.app.NotificationManager;
+import android.content.Context;
+import android.os.Build;
+
+import com.example.android.wearable.wear.wearaccessibilityapp.MockDatabase;
+
+/**
+ * Simplifies common {@link Notification} tasks.
+ */
+public class NotificationUtil {
+
+    /**
+     * Creates Notification Channel used for Notifications on O (26) and higher.
+     *
+     * @param context
+     * @param mockNotificationData
+     * @return
+     */
+    public static String createNotificationChannel(
+            Context context,
+            MockDatabase.MessagingStyleCommsAppData mockNotificationData) {
+
+        // NotificationChannels are required for Notifications on O (API 26) and above.
+        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
+
+            // The id of the channel.
+            String channelId = mockNotificationData.getChannelId();
+
+            // The user-visible name of the channel.
+            CharSequence channelName = mockNotificationData.getChannelName();
+            // The user-visible description of the channel.
+            String channelDescription = mockNotificationData.getChannelDescription();
+            int channelImportance = mockNotificationData.getChannelImportance();
+            boolean channelEnableVibrate = mockNotificationData.isChannelEnableVibrate();
+            int channelLockscreenVisibility =
+                    mockNotificationData.getChannelLockscreenVisibility();
+
+            // Initializes NotificationChannel.
+            NotificationChannel notificationChannel =
+                    new NotificationChannel(channelId, channelName, channelImportance);
+            notificationChannel.setDescription(channelDescription);
+            notificationChannel.enableVibration(channelEnableVibrate);
+            notificationChannel.setLockscreenVisibility(channelLockscreenVisibility);
+
+            // Adds NotificationChannel to system. Attempting to create an existing notification
+            // channel with its original values performs no operation, so it's safe to perform the
+            // below sequence.
+            NotificationManager notificationManager =
+                    (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
+            notificationManager.createNotificationChannel(notificationChannel);
+
+            return channelId;
+        } else {
+            // Returns null for pre-O (26) devices.
+            return null;
+        }
+    }
+}
diff --git a/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/drawable-hdpi/earth.png b/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/drawable-hdpi/earth.png
new file mode 100644
index 0000000..13abd77
--- /dev/null
+++ b/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/drawable-hdpi/earth.png
Binary files differ
diff --git a/wearable/wear/WearMessagingApp/Wearable/src/main/res/drawable/jeremy.png b/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/drawable-hdpi/famous_fryer.png
similarity index 100%
copy from wearable/wear/WearMessagingApp/Wearable/src/main/res/drawable/jeremy.png
copy to wearable/wear/WearAccessibilityApp/Wearable/src/main/res/drawable-hdpi/famous_fryer.png
Binary files differ
diff --git a/wearable/wear/WearMessagingApp/Wearable/src/main/res/drawable/jane.png b/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/drawable-hdpi/me_macdonald.png
similarity index 100%
copy from wearable/wear/WearMessagingApp/Wearable/src/main/res/drawable/jane.png
copy to wearable/wear/WearAccessibilityApp/Wearable/src/main/res/drawable-hdpi/me_macdonald.png
Binary files differ
diff --git a/wearable/wear/WearMessagingApp/Wearable/src/main/res/drawable/jennifer.png b/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/drawable-hdpi/wendy_wonda.png
similarity index 100%
copy from wearable/wear/WearMessagingApp/Wearable/src/main/res/drawable/jennifer.png
copy to wearable/wear/WearAccessibilityApp/Wearable/src/main/res/drawable-hdpi/wendy_wonda.png
Binary files differ
diff --git a/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/layout/activity_long_list.xml b/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/layout/activity_long_list.xml
index e133f15..addc66c 100644
--- a/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/layout/activity_long_list.xml
+++ b/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/layout/activity_long_list.xml
@@ -14,7 +14,7 @@
  See the License for the specific language governing permissions and
  limitations under the License.
 -->
-<android.support.wear.widget.drawer.WearableDrawerLayout
+<androidx.wear.widget.drawer.WearableDrawerLayout
     xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:app="http://schemas.android.com/apk/res-auto"
     xmlns:tools="http://schemas.android.com/tools"
@@ -22,7 +22,7 @@
     android:layout_width="match_parent"
     android:layout_height="match_parent"
     tools:deviceIds="wear">
-    <android.support.wear.widget.WearableRecyclerView
+    <androidx.wear.widget.WearableRecyclerView
         android:id="@+id/recycler_view_long_list"
         android:layout_width="match_parent"
         android:layout_height="match_parent"
@@ -30,12 +30,12 @@
         android:paddingBottom="?android:dialogPreferredPadding"
         android:clipToPadding="false"
         android:scrollbars="vertical"/>
-    <android.support.wear.widget.drawer.WearableActionDrawerView
+    <androidx.wear.widget.drawer.WearableActionDrawerView
         android:id="@+id/action_drawer_long_list"
         android:layout_width="match_parent"
         android:layout_height="match_parent"
         android:visibility="invisible"
         app:actionMenu="@menu/action_drawer_menu"
         app:show_overflow_in_peek="true">
-    </android.support.wear.widget.drawer.WearableActionDrawerView>
-</android.support.wear.widget.drawer.WearableDrawerLayout>
+    </androidx.wear.widget.drawer.WearableActionDrawerView>
+</androidx.wear.widget.drawer.WearableDrawerLayout>
diff --git a/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/layout/activity_main.xml b/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/layout/activity_main.xml
index 2144647..6013519 100644
--- a/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/layout/activity_main.xml
+++ b/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/layout/activity_main.xml
@@ -14,7 +14,7 @@
  See the License for the specific language governing permissions and
  limitations under the License.
 -->
-<android.support.wear.widget.WearableRecyclerView
+<androidx.wear.widget.WearableRecyclerView
     xmlns:android="http://schemas.android.com/apk/res/android"
     android:id="@+id/main_recycler_view"
     android:layout_width="match_parent"
diff --git a/wearable/wear/WearAccessibilityApp/gradle.properties b/wearable/wear/WearAccessibilityApp/gradle.properties
new file mode 100644
index 0000000..5465fec
--- /dev/null
+++ b/wearable/wear/WearAccessibilityApp/gradle.properties
@@ -0,0 +1,2 @@
+android.enableJetifier=true
+android.useAndroidX=true
\ No newline at end of file
diff --git a/wearable/wear/WearAccessibilityApp/gradle/wrapper/gradle-wrapper.properties b/wearable/wear/WearAccessibilityApp/gradle/wrapper/gradle-wrapper.properties
index 9470ad8..c68d61e 100644
--- a/wearable/wear/WearAccessibilityApp/gradle/wrapper/gradle-wrapper.properties
+++ b/wearable/wear/WearAccessibilityApp/gradle/wrapper/gradle-wrapper.properties
@@ -1,7 +1,6 @@
-#Wed Apr 10 15:27:10 PDT 2013
+#Sun Mar 31 15:27:57 PDT 2019
 distributionBase=GRADLE_USER_HOME
 distributionPath=wrapper/dists
 zipStoreBase=GRADLE_USER_HOME
 zipStorePath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-4.4-all.zip
-
+distributionUrl=https\://services.gradle.org/distributions/gradle-4.10.1-all.zip
diff --git a/wearable/wear/WearAccessibilityApp/template-params.xml b/wearable/wear/WearAccessibilityApp/template-params.xml
index 7e32902..1148f07 100644
--- a/wearable/wear/WearAccessibilityApp/template-params.xml
+++ b/wearable/wear/WearAccessibilityApp/template-params.xml
@@ -21,14 +21,18 @@
     <package>com.example.android.wearable.wear.wearaccessibilityapp</package>
 
     <minSdkVersionWear>24</minSdkVersionWear>
-    <compileSdkVersionWear>26</compileSdkVersionWear>
-    <targetSdkVersionWear>26</targetSdkVersionWear>
+    <compileSdkVersionWear>28</compileSdkVersionWear>
+    <targetSdkVersionWear>28</targetSdkVersionWear>
 
     <multiDexEnabled>true</multiDexEnabled>
 
-    <dependency_wearable>com.android.support:wear:27.1.1</dependency_wearable>
-    <dependency_wearable>com.android.support.constraint:constraint-layout:1.0.2</dependency_wearable>
-    <dependency_wearable>com.android.support:appcompat-v7:27.1.1</dependency_wearable>
+    <androidX>true</androidX>
+
+    <dependency_wearable>androidx.wear:wear:1.0.0</dependency_wearable>
+    <dependency_wearable>androidx.legacy:legacy-support-v4:1.0.0</dependency_wearable>
+    <dependency_wearable>androidx.legacy:legacy-support-v13:1.0.0</dependency_wearable>
+    <dependency_wearable>androidx.constraintlayout:constraintlayout:1.1.3</dependency_wearable>
+    <dependency_wearable>androidx.appcompat:appcompat:1.0.2</dependency_wearable>
 
 
     <strings>
diff --git a/wearable/wear/WearComplicationProvidersTestSuite/Wearable/build.gradle b/wearable/wear/WearComplicationProvidersTestSuite/Wearable/build.gradle
index ad67745..22b0c59 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.3.0'
+        classpath 'com.android.tools.build:gradle:3.3.2'
     }
 }
 
@@ -21,12 +21,12 @@
 
 dependencies {
 
-    implementation 'com.android.support:appcompat-v7:27.1.1'
+    implementation 'androidx.appcompat:appcompat:1.0.2'
+    implementation 'androidx.legacy:legacy-support-v13:1.0.0'
 
 
-    implementation 'com.google.android.gms:play-services-wearable:15.0.1'
+    implementation 'com.google.android.gms:play-services-wearable:16.0.1'
 
-    implementation 'com.android.support:support-v13:28.0.0'
 
     compileOnly 'com.google.android.wearable:wearable:2.4.0'
 
@@ -54,7 +54,7 @@
 
         minSdkVersion 23
 
-        targetSdkVersion 26
+        targetSdkVersion 28
 
 
     }
diff --git a/wearable/wear/WearComplicationProvidersTestSuite/gradle.properties b/wearable/wear/WearComplicationProvidersTestSuite/gradle.properties
new file mode 100644
index 0000000..5465fec
--- /dev/null
+++ b/wearable/wear/WearComplicationProvidersTestSuite/gradle.properties
@@ -0,0 +1,2 @@
+android.enableJetifier=true
+android.useAndroidX=true
\ No newline at end of file
diff --git a/wearable/wear/WearComplicationProvidersTestSuite/template-params.xml b/wearable/wear/WearComplicationProvidersTestSuite/template-params.xml
index 1e39f80..d7a1a0e 100644
--- a/wearable/wear/WearComplicationProvidersTestSuite/template-params.xml
+++ b/wearable/wear/WearComplicationProvidersTestSuite/template-params.xml
@@ -20,16 +20,19 @@
     <package>com.example.android.wearable.wear.wearcomplicationproviderstestsuite</package>
 
     <minSdk>18</minSdk>
-    <targetSdkVersion>27</targetSdkVersion>
+    <targetSdkVersion>28</targetSdkVersion>
 
     <minSdkVersionWear>23</minSdkVersionWear>
-    <targetSdkVersionWear>26</targetSdkVersionWear>
+    <targetSdkVersionWear>28</targetSdkVersionWear>
 
     <wearable>
         <has_handheld_app>false</has_handheld_app>
     </wearable>
 
-    <dependency_wearable>com.android.support:appcompat-v7:27.1.1</dependency_wearable>
+    <androidX>true</androidX>
+
+    <dependency_wearable>androidx.appcompat:appcompat:1.0.2</dependency_wearable>
+    <dependency_wearable>androidx.legacy:legacy-support-v13:1.0.0</dependency_wearable>
 
     <strings>
         <intro>
diff --git a/wearable/wear/WearDrawers/Wearable/build.gradle b/wearable/wear/WearDrawers/Wearable/build.gradle
index 6faf2d1..e116096 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.3.0'
+        classpath 'com.android.tools.build:gradle:3.3.2'
     }
 }
 
@@ -21,12 +21,12 @@
 
 dependencies {
 
-    implementation 'com.android.support:wear:27.1.1'
+    implementation 'androidx.wear:wear:1.0.0'
+    implementation 'androidx.legacy:legacy-support-v13:1.0.0'
 
 
-    implementation 'com.google.android.gms:play-services-wearable:15.0.1'
+    implementation 'com.google.android.gms:play-services-wearable:16.0.1'
 
-    implementation 'com.android.support:support-v13:28.0.0'
 
     compileOnly 'com.google.android.wearable:wearable:2.4.0'
 
@@ -54,7 +54,7 @@
 
         minSdkVersion 23
 
-        targetSdkVersion 26
+        targetSdkVersion 28
 
         multiDexEnabled true
 
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 88d71f5..55ce198 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
@@ -23,10 +23,6 @@
 import android.graphics.ColorMatrixColorFilter;
 import android.graphics.drawable.Drawable;
 import android.os.Bundle;
-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;
 import android.view.LayoutInflater;
 import android.view.MenuItem;
@@ -35,6 +31,11 @@
 import android.widget.ImageView;
 import android.widget.Toast;
 
+import androidx.fragment.app.FragmentActivity;
+import androidx.wear.ambient.AmbientModeSupport;
+import androidx.wear.widget.drawer.WearableActionDrawerView;
+import androidx.wear.widget.drawer.WearableNavigationDrawerView;
+
 import java.util.ArrayList;
 
 /**
diff --git a/wearable/wear/WearDrawers/Wearable/src/main/res/layout/activity_main.xml b/wearable/wear/WearDrawers/Wearable/src/main/res/layout/activity_main.xml
index 02b1397..607b059 100644
--- a/wearable/wear/WearDrawers/Wearable/src/main/res/layout/activity_main.xml
+++ b/wearable/wear/WearDrawers/Wearable/src/main/res/layout/activity_main.xml
@@ -14,7 +14,7 @@
   See the License for the specific language governing permissions and
   limitations under the License.
 -->
-<android.support.wear.widget.drawer.WearableDrawerLayout
+<androidx.wear.widget.drawer.WearableDrawerLayout
     xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:app="http://schemas.android.com/apk/res-auto"
     xmlns:tools="http://schemas.android.com/tools"
@@ -24,7 +24,7 @@
     android:background="@color/black"
     tools:context="com.example.android.wearable.wear.weardrawers.MainActivity">
 
-    <android.support.v4.widget.NestedScrollView
+    <androidx.core.widget.NestedScrollView
         android:id="@+id/content"
         android:layout_width="match_parent"
         android:layout_height="match_parent"
@@ -35,20 +35,20 @@
             android:layout_width="match_parent"
             android:layout_height="match_parent" />
 
-    </android.support.v4.widget.NestedScrollView>
+    </androidx.core.widget.NestedScrollView>
 
-    <android.support.wear.widget.drawer.WearableNavigationDrawerView
+    <androidx.wear.widget.drawer.WearableNavigationDrawerView
         android:id="@+id/top_navigation_drawer"
         android:layout_width="match_parent"
         android:layout_height="match_parent"
         android:background="@color/grey"
         app:navigationStyle="multiPage" />
 
-    <android.support.wear.widget.drawer.WearableActionDrawerView
+    <androidx.wear.widget.drawer.WearableActionDrawerView
         android:id="@+id/bottom_action_drawer"
         android:layout_width="match_parent"
         android:layout_height="match_parent"
         android:background="@color/grey"
         app:actionMenu="@menu/action_drawer_menu" />
 
-</android.support.wear.widget.drawer.WearableDrawerLayout>
\ No newline at end of file
+</androidx.wear.widget.drawer.WearableDrawerLayout>
\ No newline at end of file
diff --git a/wearable/wear/WearDrawers/gradle.properties b/wearable/wear/WearDrawers/gradle.properties
new file mode 100644
index 0000000..5465fec
--- /dev/null
+++ b/wearable/wear/WearDrawers/gradle.properties
@@ -0,0 +1,2 @@
+android.enableJetifier=true
+android.useAndroidX=true
\ No newline at end of file
diff --git a/wearable/wear/WearDrawers/template-params.xml b/wearable/wear/WearDrawers/template-params.xml
index 190f780..8884098 100644
--- a/wearable/wear/WearDrawers/template-params.xml
+++ b/wearable/wear/WearDrawers/template-params.xml
@@ -21,11 +21,15 @@
     <package>com.example.android.wearable.wear.weardrawers</package>
 
     <minSdkVersionWear>23</minSdkVersionWear>
-    <targetSdkVersionWear>26</targetSdkVersionWear>
+    <targetSdkVersionWear>28</targetSdkVersionWear>
 
     <multiDexEnabled>true</multiDexEnabled>
 
-    <dependency_wearable>com.android.support:wear:27.1.1</dependency_wearable>
+    <androidX>true</androidX>
+
+    <dependency_wearable>androidx.wear:wear:1.0.0</dependency_wearable>
+
+    <dependency_wearable>androidx.legacy:legacy-support-v13:1.0.0</dependency_wearable>
 
     <strings>
         <intro>
diff --git a/wearable/wear/WearHighBandwidthNetworking/Wearable/build.gradle b/wearable/wear/WearHighBandwidthNetworking/Wearable/build.gradle
index e278157..40537eb 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.3.0'
+        classpath 'com.android.tools.build:gradle:3.3.2'
     }
 }
 
@@ -21,12 +21,12 @@
 
 dependencies {
 
-    implementation 'com.android.support:wear:27.1.1'
+    implementation 'androidx.wear:wear:1.0.0'
+    implementation 'androidx.legacy:legacy-support-v13:1.0.0'
 
 
-    implementation 'com.google.android.gms:play-services-wearable:15.0.1'
+    implementation 'com.google.android.gms:play-services-wearable:16.0.1'
 
-    implementation 'com.android.support:support-v13:28.0.0'
 
     compileOnly 'com.google.android.wearable:wearable:2.4.0'
 
@@ -54,7 +54,7 @@
 
         minSdkVersion 24
 
-        targetSdkVersion 26
+        targetSdkVersion 28
 
         multiDexEnabled true
 
diff --git a/wearable/wear/WearHighBandwidthNetworking/Wearable/src/main/res/layout/activity_main.xml b/wearable/wear/WearHighBandwidthNetworking/Wearable/src/main/res/layout/activity_main.xml
index 6bbf514..99a9d20 100644
--- a/wearable/wear/WearHighBandwidthNetworking/Wearable/src/main/res/layout/activity_main.xml
+++ b/wearable/wear/WearHighBandwidthNetworking/Wearable/src/main/res/layout/activity_main.xml
@@ -46,7 +46,7 @@
 
     </RelativeLayout>
 
-    <android.support.wear.widget.BoxInsetLayout
+    <androidx.wear.widget.BoxInsetLayout
         android:layout_width="match_parent"
         android:layout_height="match_parent">
 
@@ -97,5 +97,5 @@
                 android:visibility="gone" />
 
         </RelativeLayout>
-    </android.support.wear.widget.BoxInsetLayout>
+    </androidx.wear.widget.BoxInsetLayout>
 </LinearLayout>
\ No newline at end of file
diff --git a/wearable/wear/WearHighBandwidthNetworking/gradle.properties b/wearable/wear/WearHighBandwidthNetworking/gradle.properties
new file mode 100644
index 0000000..5465fec
--- /dev/null
+++ b/wearable/wear/WearHighBandwidthNetworking/gradle.properties
@@ -0,0 +1,2 @@
+android.enableJetifier=true
+android.useAndroidX=true
\ No newline at end of file
diff --git a/wearable/wear/WearHighBandwidthNetworking/template-params.xml b/wearable/wear/WearHighBandwidthNetworking/template-params.xml
index 2437325..cd65f4c 100644
--- a/wearable/wear/WearHighBandwidthNetworking/template-params.xml
+++ b/wearable/wear/WearHighBandwidthNetworking/template-params.xml
@@ -17,21 +17,20 @@
 
 <sample>
     <name>WearHighBandwidthNetworking</name>
-    <group>Wearable</group>  <!-- This field will be deprecated in the future
-                            and replaced with the "categories" tags below. -->
+    <group>Wearable</group>
     <package>com.example.android.wearable.wear.wearhighbandwidthnetworking</package>
 
     <!-- change minSdk if needed-->
     <minSdk>24</minSdk>
     <minSdkVersionWear>24</minSdkVersionWear>
-    <targetSdkVersion>26</targetSdkVersion>
-    <targetSdkVersionWear>26</targetSdkVersionWear>
+    <targetSdkVersion>28</targetSdkVersion>
+    <targetSdkVersionWear>28</targetSdkVersionWear>
     <multiDexEnabled>true</multiDexEnabled>
 
-    <!-- Include additional dependencies here.-->
-    <!-- dependency>com.google.android.gms:play-services:5.0.+</dependency -->
-    <dependency_wearable>com.android.support:wear:27.1.1</dependency_wearable>
+    <androidX>true</androidX>
 
+    <dependency_wearable>androidx.wear:wear:1.0.0</dependency_wearable>
+    <dependency_wearable>androidx.legacy:legacy-support-v13:1.0.0</dependency_wearable>
 
     <strings>
         <intro>
diff --git a/wearable/wear/WearSpeakerSample/build.gradle b/wearable/wear/WearSpeakerSample/build.gradle
index 6c94f10..011fd35 100644
--- a/wearable/wear/WearSpeakerSample/build.gradle
+++ b/wearable/wear/WearSpeakerSample/build.gradle
@@ -22,7 +22,7 @@
         jcenter()
     }
     dependencies {
-        classpath 'com.android.tools.build:gradle:3.3.0'
+        classpath 'com.android.tools.build:gradle:3.3.2'
 
         // NOTE: Do not place your application dependencies here; they belong
         // in the individual module build.gradle files
diff --git a/wearable/wear/WearSpeakerSample/gradle.properties b/wearable/wear/WearSpeakerSample/gradle.properties
index 1d3591c..915f0e6 100644
--- a/wearable/wear/WearSpeakerSample/gradle.properties
+++ b/wearable/wear/WearSpeakerSample/gradle.properties
@@ -15,4 +15,6 @@
 # When configured, Gradle will run in incubating parallel mode.
 # This option should only be used with decoupled projects. More details, visit
 # http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
-# org.gradle.parallel=true
\ No newline at end of file
+# org.gradle.parallel=true
+android.enableJetifier=true
+android.useAndroidX=true
\ No newline at end of file
diff --git a/wearable/wear/WearSpeakerSample/wear/build.gradle b/wearable/wear/WearSpeakerSample/wear/build.gradle
index 08c92f4..b1557a8 100644
--- a/wearable/wear/WearSpeakerSample/wear/build.gradle
+++ b/wearable/wear/WearSpeakerSample/wear/build.gradle
@@ -18,13 +18,12 @@
 
 
 android {
-    compileSdkVersion 26
-    buildToolsVersion '27.0.3'
+    compileSdkVersion 28
 
     defaultConfig {
         applicationId "com.example.android.wearable.speaker"
         minSdkVersion 23
-        targetSdkVersion 26
+        targetSdkVersion 28
         versionCode 1
         versionName "1.0"
     }
@@ -38,16 +37,16 @@
 
 dependencies {
 
-    implementation 'com.android.support:wear:27.1.1'
-    implementation 'com.android.support:animated-vector-drawable:27.1.1'
-    implementation 'com.android.support:support-media-compat:27.1.1'
+    implementation 'androidx.wear:wear:1.0.0'
+    implementation 'androidx.vectordrawable:vectordrawable-animated:1.0.0'
+    implementation 'androidx.media:media:1.0.1'
 
-    implementation 'com.android.support:percent:27.1.1'
+    implementation 'androidx.percentlayout:percentlayout:1.0.0'
 
-    implementation 'com.google.android.gms:play-services-wearable:15.0.1'
-    implementation 'com.android.support:appcompat-v7:27.1.1'
-    implementation 'com.android.support:support-v4:27.1.1'
+    implementation 'com.google.android.gms:play-services-wearable:16.0.1'
+    implementation 'androidx.appcompat:appcompat:1.0.2'
+    implementation 'androidx.legacy:legacy-support-v4:1.0.0'
 
-    compileOnly 'com.google.android.wearable:wearable:2.3.0'
-    implementation 'com.google.android.support:wearable:2.3.0'
+    compileOnly 'com.google.android.wearable:wearable:2.4.0'
+    implementation 'com.google.android.support:wearable:2.4.0'
 }
diff --git a/wearable/wear/WearSpeakerSample/wear/src/main/java/com/example/android/wearable/speaker/MainActivity.java b/wearable/wear/WearSpeakerSample/wear/src/main/java/com/example/android/wearable/speaker/MainActivity.java
index 72813b4..defe9d1 100644
--- a/wearable/wear/WearSpeakerSample/wear/src/main/java/com/example/android/wearable/speaker/MainActivity.java
+++ b/wearable/wear/WearSpeakerSample/wear/src/main/java/com/example/android/wearable/speaker/MainActivity.java
@@ -26,10 +26,6 @@
 import android.os.Build;
 import android.os.Bundle;
 import android.os.CountDownTimer;
-import android.support.v4.app.ActivityCompat;
-import android.support.v4.app.FragmentActivity;
-import android.support.v4.content.ContextCompat;
-import android.support.wear.ambient.AmbientModeSupport;
 import android.util.Log;
 import android.view.View;
 import android.widget.ImageView;
@@ -37,6 +33,11 @@
 import android.widget.RelativeLayout;
 import android.widget.Toast;
 
+import androidx.core.app.ActivityCompat;
+import androidx.core.content.ContextCompat;
+import androidx.fragment.app.FragmentActivity;
+import androidx.wear.ambient.AmbientModeSupport;
+
 import java.util.concurrent.TimeUnit;
 
 /**
diff --git a/wearable/wear/WearVerifyRemoteApp/Application/src/main/java/com/example/android/wearable/wear/wearverifyremoteapp/MainMobileActivity.java b/wearable/wear/WearVerifyRemoteApp/Application/src/main/java/com/example/android/wearable/wear/wearverifyremoteapp/MainMobileActivity.java
index e9e9a49..7e81582 100644
--- a/wearable/wear/WearVerifyRemoteApp/Application/src/main/java/com/example/android/wearable/wear/wearverifyremoteapp/MainMobileActivity.java
+++ b/wearable/wear/WearVerifyRemoteApp/Application/src/main/java/com/example/android/wearable/wear/wearverifyremoteapp/MainMobileActivity.java
@@ -20,13 +20,14 @@
 import android.os.Bundle;
 import android.os.Handler;
 import android.os.ResultReceiver;
-import android.support.v7.app.AppCompatActivity;
 import android.util.Log;
 import android.view.View;
 import android.widget.Button;
 import android.widget.TextView;
 import android.widget.Toast;
 
+import androidx.appcompat.app.AppCompatActivity;
+
 import com.google.android.gms.tasks.OnCompleteListener;
 import com.google.android.gms.tasks.Task;
 import com.google.android.gms.wearable.CapabilityClient;
diff --git a/wearable/wear/WearVerifyRemoteApp/Wearable/build.gradle b/wearable/wear/WearVerifyRemoteApp/Wearable/build.gradle
index 7833099..9723e86 100644
--- a/wearable/wear/WearVerifyRemoteApp/Wearable/build.gradle
+++ b/wearable/wear/WearVerifyRemoteApp/Wearable/build.gradle
@@ -6,7 +6,7 @@
     }
 
     dependencies {
-        classpath 'com.android.tools.build:gradle:3.3.0'
+        classpath 'com.android.tools.build:gradle:3.3.2'
     }
 }
 
@@ -21,12 +21,12 @@
 
 dependencies {
 
-    implementation 'com.android.support:wear:28.0.0'
+    implementation 'androidx.wear:wear:1.0.0'
+    implementation 'androidx.legacy:legacy-support-v13:1.0.0'
 
 
-    implementation 'com.google.android.gms:play-services-wearable:15.0.1'
+    implementation 'com.google.android.gms:play-services-wearable:16.0.1'
 
-    implementation 'com.android.support:support-v13:28.0.0'
 
     compileOnly 'com.google.android.wearable:wearable:2.4.0'
 
diff --git a/wearable/wear/WearVerifyRemoteApp/Wearable/src/main/java/com/example/android/wearable/wear/wearverifyremoteapp/MainWearActivity.java b/wearable/wear/WearVerifyRemoteApp/Wearable/src/main/java/com/example/android/wearable/wear/wearverifyremoteapp/MainWearActivity.java
index 6521b09..3a6318d 100644
--- a/wearable/wear/WearVerifyRemoteApp/Wearable/src/main/java/com/example/android/wearable/wear/wearverifyremoteapp/MainWearActivity.java
+++ b/wearable/wear/WearVerifyRemoteApp/Wearable/src/main/java/com/example/android/wearable/wear/wearverifyremoteapp/MainWearActivity.java
@@ -20,8 +20,6 @@
 import android.os.Bundle;
 import android.os.Handler;
 import android.os.ResultReceiver;
-import android.support.v4.app.FragmentActivity;
-import android.support.wear.ambient.AmbientModeSupport;
 import android.support.wearable.phone.PhoneDeviceType;
 import android.support.wearable.view.ConfirmationOverlay;
 import android.util.Log;
@@ -29,6 +27,9 @@
 import android.widget.Button;
 import android.widget.TextView;
 
+import androidx.fragment.app.FragmentActivity;
+import androidx.wear.ambient.AmbientModeSupport;
+
 import com.google.android.gms.tasks.OnCompleteListener;
 import com.google.android.gms.tasks.Task;
 import com.google.android.gms.wearable.CapabilityClient;
diff --git a/wearable/wear/WearVerifyRemoteApp/gradle.properties b/wearable/wear/WearVerifyRemoteApp/gradle.properties
index 0bc4294..94f8472 100644
--- a/wearable/wear/WearVerifyRemoteApp/gradle.properties
+++ b/wearable/wear/WearVerifyRemoteApp/gradle.properties
@@ -18,3 +18,5 @@
 # http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
 # org.gradle.parallel=true
 
+android.useAndroidX=true
+android.enableJetifier=true
diff --git a/wearable/wear/WearVerifyRemoteApp/template-params.xml b/wearable/wear/WearVerifyRemoteApp/template-params.xml
index c1a8420..f5b8273 100644
--- a/wearable/wear/WearVerifyRemoteApp/template-params.xml
+++ b/wearable/wear/WearVerifyRemoteApp/template-params.xml
@@ -30,13 +30,17 @@
         <has_handheld_app>true</has_handheld_app>
     </wearable>
 
+
+    <androidX>true</androidX>
+
+    <dependency>androidx.legacy:legacy-support-v4:1.0.0</dependency>
+    <dependency>androidx.legacy:legacy-support-v13:1.0.0</dependency>
+    <dependency>androidx.cardview:cardview:1.0.0</dependency>
+    <dependency>androidx.appcompat:appcompat:1.0.2</dependency>
     <dependency>com.google.android.support:wearable:2.4.0</dependency>
 
-
-    <dependency_wearable>com.android.support:wear:28.0.0</dependency_wearable>
-
-    <!-- Include additional dependencies here.-->
-    <!-- dependency>com.google.android.gms:play-services:5.0.+</dependency -->
+    <dependency_wearable>androidx.wear:wear:1.0.0</dependency_wearable>
+    <dependency_wearable>androidx.legacy:legacy-support-v13:1.0.0</dependency_wearable>
 
     <strings>
         <intro>
diff --git a/wearable/wear/XYZTouristAttractions/Application/src/main/java/com/example/android/xyztouristattractions/service/ListenerService.java b/wearable/wear/XYZTouristAttractions/Application/src/main/java/com/example/android/xyztouristattractions/service/ListenerService.java
index c8a5790..5ca339d 100644
--- a/wearable/wear/XYZTouristAttractions/Application/src/main/java/com/example/android/xyztouristattractions/service/ListenerService.java
+++ b/wearable/wear/XYZTouristAttractions/Application/src/main/java/com/example/android/xyztouristattractions/service/ListenerService.java
@@ -20,10 +20,10 @@
 import android.net.Uri;
 import android.util.Log;
 
+import com.example.android.xyztouristattractions.common.Constants;
 import com.example.android.xyztouristattractions.ui.DetailActivity;
 import com.google.android.gms.wearable.MessageEvent;
 import com.google.android.gms.wearable.WearableListenerService;
-import com.example.android.xyztouristattractions.common.Constants;
 
 /**
  * A Wear listener service, used to receive inbound messages from
diff --git a/wearable/wear/XYZTouristAttractions/Application/src/main/java/com/example/android/xyztouristattractions/service/UtilityReceiver.java b/wearable/wear/XYZTouristAttractions/Application/src/main/java/com/example/android/xyztouristattractions/service/UtilityReceiver.java
index 0a10ba2..ca673a9 100644
--- a/wearable/wear/XYZTouristAttractions/Application/src/main/java/com/example/android/xyztouristattractions/service/UtilityReceiver.java
+++ b/wearable/wear/XYZTouristAttractions/Application/src/main/java/com/example/android/xyztouristattractions/service/UtilityReceiver.java
@@ -18,7 +18,8 @@
 
 import android.content.Context;
 import android.content.Intent;
-import android.support.v4.content.WakefulBroadcastReceiver;
+
+import androidx.legacy.content.WakefulBroadcastReceiver;
 
 /**
  * A simply utility receiver used to ensure the device stays awake for the
diff --git a/wearable/wear/XYZTouristAttractions/Application/src/main/java/com/example/android/xyztouristattractions/service/UtilityService.java b/wearable/wear/XYZTouristAttractions/Application/src/main/java/com/example/android/xyztouristattractions/service/UtilityService.java
index 07e36f7..05337e9 100644
--- a/wearable/wear/XYZTouristAttractions/Application/src/main/java/com/example/android/xyztouristattractions/service/UtilityService.java
+++ b/wearable/wear/XYZTouristAttractions/Application/src/main/java/com/example/android/xyztouristattractions/service/UtilityService.java
@@ -24,12 +24,17 @@
 import android.content.IntentFilter;
 import android.graphics.Bitmap;
 import android.location.Location;
-import android.support.v4.app.NotificationCompat;
-import android.support.v4.app.NotificationManagerCompat;
-import android.support.v4.content.ContextCompat;
-import android.support.v4.content.LocalBroadcastManager;
 import android.util.Log;
 
+import androidx.core.app.NotificationCompat;
+import androidx.core.app.NotificationManagerCompat;
+import androidx.core.content.ContextCompat;
+import androidx.localbroadcastmanager.content.LocalBroadcastManager;
+
+import static com.example.android.xyztouristattractions.provider.TouristAttractions.ATTRACTIONS;
+import static com.google.android.gms.location.LocationServices.FusedLocationApi;
+import static com.google.android.gms.location.LocationServices.GeofencingApi;
+
 import com.bumptech.glide.Glide;
 import com.bumptech.glide.load.engine.DiskCacheStrategy;
 import com.example.android.xyztouristattractions.R;
@@ -60,10 +65,6 @@
 import java.util.concurrent.ExecutionException;
 import java.util.concurrent.TimeUnit;
 
-import static com.example.android.xyztouristattractions.provider.TouristAttractions.ATTRACTIONS;
-import static com.google.android.gms.location.LocationServices.FusedLocationApi;
-import static com.google.android.gms.location.LocationServices.GeofencingApi;
-
 /**
  * A utility IntentService, used for a variety of asynchronous background
  * operations that do not necessarily need to be tied to a UI.
diff --git a/wearable/wear/XYZTouristAttractions/Application/src/main/java/com/example/android/xyztouristattractions/ui/AttractionListActivity.java b/wearable/wear/XYZTouristAttractions/Application/src/main/java/com/example/android/xyztouristattractions/ui/AttractionListActivity.java
index 8c23f3d..5a9df8f 100644
--- a/wearable/wear/XYZTouristAttractions/Application/src/main/java/com/example/android/xyztouristattractions/ui/AttractionListActivity.java
+++ b/wearable/wear/XYZTouristAttractions/Application/src/main/java/com/example/android/xyztouristattractions/ui/AttractionListActivity.java
@@ -19,18 +19,19 @@
 import android.Manifest;
 import android.content.pm.PackageManager;
 import android.os.Bundle;
-import android.support.design.widget.Snackbar;
-import android.support.v4.app.ActivityCompat;
-import android.support.v7.app.AlertDialog;
-import android.support.v7.app.AppCompatActivity;
 import android.view.Menu;
 import android.view.MenuItem;
 import android.view.View;
 import android.widget.Toast;
 
+import androidx.appcompat.app.AlertDialog;
+import androidx.appcompat.app.AppCompatActivity;
+import androidx.core.app.ActivityCompat;
+
 import com.example.android.xyztouristattractions.R;
 import com.example.android.xyztouristattractions.common.Utils;
 import com.example.android.xyztouristattractions.service.UtilityService;
+import com.google.android.material.snackbar.Snackbar;
 
 /**
  * The main tourist attraction activity screen which contains a list of
diff --git a/wearable/wear/XYZTouristAttractions/Application/src/main/java/com/example/android/xyztouristattractions/ui/AttractionListFragment.java b/wearable/wear/XYZTouristAttractions/Application/src/main/java/com/example/android/xyztouristattractions/ui/AttractionListFragment.java
index 71439b1..240bab2 100644
--- a/wearable/wear/XYZTouristAttractions/Application/src/main/java/com/example/android/xyztouristattractions/ui/AttractionListFragment.java
+++ b/wearable/wear/XYZTouristAttractions/Application/src/main/java/com/example/android/xyztouristattractions/ui/AttractionListFragment.java
@@ -21,9 +21,6 @@
 import android.content.Intent;
 import android.location.Location;
 import android.os.Bundle;
-import android.support.v4.app.Fragment;
-import android.support.v4.content.LocalBroadcastManager;
-import android.support.v7.widget.RecyclerView;
 import android.text.TextUtils;
 import android.view.LayoutInflater;
 import android.view.View;
@@ -31,6 +28,12 @@
 import android.widget.ImageView;
 import android.widget.TextView;
 
+import androidx.fragment.app.Fragment;
+import androidx.localbroadcastmanager.content.LocalBroadcastManager;
+import androidx.recyclerview.widget.RecyclerView;
+
+import static com.example.android.xyztouristattractions.provider.TouristAttractions.ATTRACTIONS;
+
 import com.bumptech.glide.Glide;
 import com.bumptech.glide.load.engine.DiskCacheStrategy;
 import com.example.android.xyztouristattractions.R;
@@ -47,8 +50,6 @@
 import java.util.Comparator;
 import java.util.List;
 
-import static com.example.android.xyztouristattractions.provider.TouristAttractions.ATTRACTIONS;
-
 /**
  * The main tourist attraction fragment which contains a list of attractions
  * sorted by distance (contained inside
diff --git a/wearable/wear/XYZTouristAttractions/Application/src/main/java/com/example/android/xyztouristattractions/ui/AttractionsRecyclerView.java b/wearable/wear/XYZTouristAttractions/Application/src/main/java/com/example/android/xyztouristattractions/ui/AttractionsRecyclerView.java
index cca3bf1..67516f3 100644
--- a/wearable/wear/XYZTouristAttractions/Application/src/main/java/com/example/android/xyztouristattractions/ui/AttractionsRecyclerView.java
+++ b/wearable/wear/XYZTouristAttractions/Application/src/main/java/com/example/android/xyztouristattractions/ui/AttractionsRecyclerView.java
@@ -17,10 +17,11 @@
 package com.example.android.xyztouristattractions.ui;
 
 import android.content.Context;
-import android.support.v7.widget.RecyclerView;
 import android.util.AttributeSet;
 import android.view.View;
 
+import androidx.recyclerview.widget.RecyclerView;
+
 /**
  * Simple RecyclerView subclass that supports providing an empty view (which
  * is displayed when the adapter has no data and hidden otherwise).
diff --git a/wearable/wear/XYZTouristAttractions/Application/src/main/java/com/example/android/xyztouristattractions/ui/DetailActivity.java b/wearable/wear/XYZTouristAttractions/Application/src/main/java/com/example/android/xyztouristattractions/ui/DetailActivity.java
index 3950785..612002a 100644
--- a/wearable/wear/XYZTouristAttractions/Application/src/main/java/com/example/android/xyztouristattractions/ui/DetailActivity.java
+++ b/wearable/wear/XYZTouristAttractions/Application/src/main/java/com/example/android/xyztouristattractions/ui/DetailActivity.java
@@ -22,11 +22,12 @@
 import android.content.Intent;
 import android.os.Build;
 import android.os.Bundle;
-import android.support.v4.app.ActivityCompat;
-import android.support.v4.app.ActivityOptionsCompat;
-import android.support.v7.app.AppCompatActivity;
 import android.view.View;
 
+import androidx.appcompat.app.AppCompatActivity;
+import androidx.core.app.ActivityCompat;
+import androidx.core.app.ActivityOptionsCompat;
+
 import com.example.android.xyztouristattractions.R;
 
 /**
diff --git a/wearable/wear/XYZTouristAttractions/Application/src/main/java/com/example/android/xyztouristattractions/ui/DetailFragment.java b/wearable/wear/XYZTouristAttractions/Application/src/main/java/com/example/android/xyztouristattractions/ui/DetailFragment.java
index 1ab7326..d5adb20 100644
--- a/wearable/wear/XYZTouristAttractions/Application/src/main/java/com/example/android/xyztouristattractions/ui/DetailFragment.java
+++ b/wearable/wear/XYZTouristAttractions/Application/src/main/java/com/example/android/xyztouristattractions/ui/DetailFragment.java
@@ -21,9 +21,6 @@
 import android.net.Uri;
 import android.os.Build;
 import android.os.Bundle;
-import android.support.design.widget.FloatingActionButton;
-import android.support.v4.app.Fragment;
-import android.support.v4.app.NavUtils;
 import android.text.TextUtils;
 import android.view.LayoutInflater;
 import android.view.MenuItem;
@@ -32,6 +29,11 @@
 import android.widget.ImageView;
 import android.widget.TextView;
 
+import androidx.core.app.NavUtils;
+import androidx.fragment.app.Fragment;
+
+import static com.example.android.xyztouristattractions.provider.TouristAttractions.ATTRACTIONS;
+
 import com.bumptech.glide.Glide;
 import com.bumptech.glide.load.engine.DiskCacheStrategy;
 import com.example.android.xyztouristattractions.R;
@@ -39,12 +41,11 @@
 import com.example.android.xyztouristattractions.common.Constants;
 import com.example.android.xyztouristattractions.common.Utils;
 import com.google.android.gms.maps.model.LatLng;
+import com.google.android.material.floatingactionbutton.FloatingActionButton;
 
 import java.util.List;
 import java.util.Map;
 
-import static com.example.android.xyztouristattractions.provider.TouristAttractions.ATTRACTIONS;
-
 /**
  * The tourist attraction detail fragment which contains the details of a
  * a single attraction (contained inside
diff --git a/wearable/wear/XYZTouristAttractions/Application/src/main/res/layout/activity_main.xml b/wearable/wear/XYZTouristAttractions/Application/src/main/res/layout/activity_main.xml
index 17c9f66..0406eeb 100644
--- a/wearable/wear/XYZTouristAttractions/Application/src/main/res/layout/activity_main.xml
+++ b/wearable/wear/XYZTouristAttractions/Application/src/main/res/layout/activity_main.xml
@@ -14,7 +14,7 @@
   limitations under the License.
   -->
 
-<android.support.design.widget.CoordinatorLayout
+<androidx.coordinatorlayout.widget.CoordinatorLayout
 
     xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:tools="http://schemas.android.com/tools"
@@ -23,4 +23,4 @@
     android:layout_height="match_parent"
     tools:context=".MainActivity">
 
-</android.support.design.widget.CoordinatorLayout>
\ No newline at end of file
+</androidx.coordinatorlayout.widget.CoordinatorLayout>
\ No newline at end of file
diff --git a/wearable/wear/XYZTouristAttractions/Application/src/main/res/layout/fragment_detail.xml b/wearable/wear/XYZTouristAttractions/Application/src/main/res/layout/fragment_detail.xml
index 6e280fd..0cbc1fd 100644
--- a/wearable/wear/XYZTouristAttractions/Application/src/main/res/layout/fragment_detail.xml
+++ b/wearable/wear/XYZTouristAttractions/Application/src/main/res/layout/fragment_detail.xml
@@ -16,7 +16,7 @@
   limitations under the License.
   -->
 
-<android.support.design.widget.CoordinatorLayout
+<androidx.coordinatorlayout.widget.CoordinatorLayout
     xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:app="http://schemas.android.com/apk/res-auto"
     android:layout_width="match_parent"
@@ -87,7 +87,7 @@
 
     </LinearLayout>
 
-    <android.support.design.widget.FloatingActionButton
+    <com.google.android.material.floatingactionbutton.FloatingActionButton
         android:id="@+id/mapFab"
         android:layout_height="wrap_content"
         android:layout_width="wrap_content"
@@ -98,4 +98,4 @@
         android:layout_marginStart="@dimen/fab_margin"
         android:clickable="true" />
 
-</android.support.design.widget.CoordinatorLayout>
\ No newline at end of file
+</androidx.coordinatorlayout.widget.CoordinatorLayout>
\ No newline at end of file
diff --git a/wearable/wear/XYZTouristAttractions/Shared/src/main/java/com/example/android/xyztouristattractions/common/Utils.java b/wearable/wear/XYZTouristAttractions/Shared/src/main/java/com/example/android/xyztouristattractions/common/Utils.java
index 6fa5129..f11abec 100644
--- a/wearable/wear/XYZTouristAttractions/Shared/src/main/java/com/example/android/xyztouristattractions/common/Utils.java
+++ b/wearable/wear/XYZTouristAttractions/Shared/src/main/java/com/example/android/xyztouristattractions/common/Utils.java
@@ -25,10 +25,11 @@
 import android.graphics.Point;
 import android.graphics.Rect;
 import android.preference.PreferenceManager;
-import android.support.v4.content.ContextCompat;
 import android.util.Log;
 import android.view.Display;
 
+import androidx.core.content.ContextCompat;
+
 import com.google.android.gms.common.api.GoogleApiClient;
 import com.google.android.gms.maps.model.LatLng;
 import com.google.android.gms.wearable.Asset;
diff --git a/wearable/wear/XYZTouristAttractions/Wearable/src/main/java/com/example/android/xyztouristattractions/service/ListenerService.java b/wearable/wear/XYZTouristAttractions/Wearable/src/main/java/com/example/android/xyztouristattractions/service/ListenerService.java
index ea071f0..f629781 100644
--- a/wearable/wear/XYZTouristAttractions/Wearable/src/main/java/com/example/android/xyztouristattractions/service/ListenerService.java
+++ b/wearable/wear/XYZTouristAttractions/Wearable/src/main/java/com/example/android/xyztouristattractions/service/ListenerService.java
@@ -21,10 +21,11 @@
 import android.content.Intent;
 import android.graphics.Bitmap;
 import android.net.Uri;
-import android.support.v4.app.NotificationCompat;
-import android.support.v4.app.NotificationManagerCompat;
 import android.util.Log;
 
+import androidx.core.app.NotificationCompat;
+import androidx.core.app.NotificationManagerCompat;
+
 import com.example.android.xyztouristattractions.R;
 import com.example.android.xyztouristattractions.common.Constants;
 import com.example.android.xyztouristattractions.common.Utils;
diff --git a/wearable/wear/XYZTouristAttractions/Wearable/src/main/java/com/example/android/xyztouristattractions/ui/AttractionsActivity.java b/wearable/wear/XYZTouristAttractions/Wearable/src/main/java/com/example/android/xyztouristattractions/ui/AttractionsActivity.java
index 64d28bc..8642226 100644
--- a/wearable/wear/XYZTouristAttractions/Wearable/src/main/java/com/example/android/xyztouristattractions/ui/AttractionsActivity.java
+++ b/wearable/wear/XYZTouristAttractions/Wearable/src/main/java/com/example/android/xyztouristattractions/ui/AttractionsActivity.java
@@ -22,7 +22,6 @@
 import android.net.Uri;
 import android.os.AsyncTask;
 import android.os.Bundle;
-import android.support.v4.view.GestureDetectorCompat;
 import android.support.wearable.view.DismissOverlayView;
 import android.support.wearable.view.DotsPageIndicator;
 import android.support.wearable.view.GridViewPager;
@@ -34,6 +33,8 @@
 import android.widget.FrameLayout;
 import android.widget.ProgressBar;
 
+import androidx.core.view.GestureDetectorCompat;
+
 import com.example.android.xyztouristattractions.R;
 import com.example.android.xyztouristattractions.common.Attraction;
 import com.example.android.xyztouristattractions.common.Constants;
diff --git a/wearable/wear/XYZTouristAttractions/gradle.properties b/wearable/wear/XYZTouristAttractions/gradle.properties
index 0bc4294..94f8472 100644
--- a/wearable/wear/XYZTouristAttractions/gradle.properties
+++ b/wearable/wear/XYZTouristAttractions/gradle.properties
@@ -18,3 +18,5 @@
 # http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
 # org.gradle.parallel=true
 
+android.useAndroidX=true
+android.enableJetifier=true
diff --git a/wearable/wear/XYZTouristAttractions/template-params.xml b/wearable/wear/XYZTouristAttractions/template-params.xml
index d505fe8..801b839 100644
--- a/wearable/wear/XYZTouristAttractions/template-params.xml
+++ b/wearable/wear/XYZTouristAttractions/template-params.xml
@@ -28,21 +28,28 @@
         <has_handheld_app>true</has_handheld_app>
     </wearable>
 
+    <androidX>true</androidX>
 
     <dependency>com.google.maps.android:android-maps-utils:0.5</dependency>
     <dependency>com.github.bumptech.glide:glide:3.7.0</dependency>
-    <dependency>com.android.support:appcompat-v7:28.0.0</dependency>
-    <dependency>com.android.support:recyclerview-v7:28.0.0</dependency>
-    <dependency>com.android.support:design:28.0.0</dependency>
-    <dependency>com.google.android.gms:play-services-maps:16.0.0</dependency>
+    <dependency>androidx.appcompat:appcompat:1.0.2</dependency>
+    <dependency>androidx.legacy:legacy-support-v13:1.0.0</dependency>
+    <dependency>androidx.recyclerview:recyclerview:1.0.0</dependency>
+    <dependency>com.google.android.material:material:1.0.0</dependency>
+
+    <dependency>com.google.android.gms:play-services-maps:16.1.0</dependency>
     <dependency>com.google.android.gms:play-services-location:16.0.0</dependency>
 
-    <dependency_shared>com.android.support:support-v13:28.0.0</dependency_shared>
-    <dependency_shared>com.google.android.gms:play-services-wearable:15.0.1</dependency_shared>
-    <dependency_shared>com.google.android.gms:play-services-maps:16.0.0</dependency_shared>
+
+    <dependency_shared>androidx.legacy:legacy-support-v13:1.0.0</dependency_shared>
+    <dependency_shared>com.google.android.gms:play-services-wearable:16.0.1</dependency_shared>
+    <dependency_shared>com.google.android.gms:play-services-maps:16.1.0</dependency_shared>
     <dependency_shared>com.google.maps.android:android-maps-utils:0.5</dependency_shared>
 
-    <dependency_wearable>com.google.android.gms:play-services-maps:16.0.0</dependency_wearable>
+
+    <dependency_wearable>androidx.wear:wear:1.0.0</dependency_wearable>
+    <dependency_wearable>androidx.legacy:legacy-support-v13:1.0.0</dependency_wearable>
+    <dependency_wearable>com.google.android.gms:play-services-maps:16.1.0</dependency_wearable>
 
 
     <strings>
