aboutsummaryrefslogtreecommitdiff
path: root/wearable
diff options
context:
space:
mode:
authorJeremy Walker <jewalker@google.com>2017-11-08 16:21:38 -0800
committerJeremy Walker <jewalker@google.com>2017-11-08 16:26:11 -0800
commitc1d620737e1f807e119e82734e89de8dc4f435e2 (patch)
treeadedcbc6bfb59292e28e6a5ca80e813b49ea2a9a /wearable
parented0f1ed2a42cd5f86e3d8cf199b0aa47dc7fc17b (diff)
downloadandroid-c1d620737e1f807e119e82734e89de8dc4f435e2.tar.gz
Initial commit of a11y sample from interns.
Bug: 65458565 Test: Manually tested with Wear device. Change-Id: I1418b0544a22158005ba1ad79601d8b17305aa95
Diffstat (limited to 'wearable')
-rw-r--r--wearable/wear/WearAccessibilityApp/.gitignore33
-rw-r--r--wearable/wear/WearAccessibilityApp/Wearable/build.gradle84
-rw-r--r--wearable/wear/WearAccessibilityApp/Wearable/src/main/AndroidManifest.xml93
-rw-r--r--wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/AccessibilityActivity.java31
-rw-r--r--wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/AppItem.java43
-rw-r--r--wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/AppItemListViewAdapter.java49
-rw-r--r--wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/CircledImageViewPreference.java90
-rw-r--r--wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/ControlsActivity.java27
-rw-r--r--wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/DialogsActivity.java144
-rw-r--r--wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/DialogsItem.java23
-rw-r--r--wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/FullScreenActivity.java14
-rw-r--r--wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/GlobalNotificationBuilder.java45
-rw-r--r--wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/ImagesActivity.java48
-rw-r--r--wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/InLineActivity.java65
-rw-r--r--wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/Item.java5
-rw-r--r--wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/ListOfGraphicsActivity.java51
-rw-r--r--wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/ListViewAdapter.java46
-rw-r--r--wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/ListsActivity.java51
-rw-r--r--wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/ListsItem.java23
-rw-r--r--wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/LongListActivity.java149
-rw-r--r--wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/LongListRecyclerViewAdapter.java149
-rw-r--r--wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/MainActivity.java40
-rw-r--r--wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/MenuRecyclerViewAdapter.java87
-rw-r--r--wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/MessagingIntentService.java238
-rw-r--r--wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/MessagingMainActivity.java25
-rw-r--r--wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/MockDatabase.java131
-rw-r--r--wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/MyLauncherChildLayoutManager.java36
-rw-r--r--wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/NotificationsActivity.java239
-rw-r--r--wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/OpenOnPhoneAnimationActivity.java41
-rw-r--r--wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/PhotoCarouselActivity.java42
-rw-r--r--wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/ProgressActivity.java51
-rw-r--r--wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/ProgressBarPreference.java28
-rw-r--r--wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/RadioListActivity.java17
-rw-r--r--wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/SampleAppConstants.java35
-rw-r--r--wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/ZoomImageActivity.java25
-rw-r--r--wearable/wear/WearAccessibilityApp/Wearable/src/main/res/anim/oobe_swipe_left_long_g_animation_interpolator_0.xml4
-rw-r--r--wearable/wear/WearAccessibilityApp/Wearable/src/main/res/anim/oobe_swipe_left_long_g_animation_interpolator_1.xml4
-rw-r--r--wearable/wear/WearAccessibilityApp/Wearable/src/main/res/anim/oobe_swipe_left_long_g_animation_interpolator_10.xml4
-rw-r--r--wearable/wear/WearAccessibilityApp/Wearable/src/main/res/anim/oobe_swipe_left_long_g_animation_interpolator_11.xml4
-rw-r--r--wearable/wear/WearAccessibilityApp/Wearable/src/main/res/anim/oobe_swipe_left_long_g_animation_interpolator_12.xml4
-rw-r--r--wearable/wear/WearAccessibilityApp/Wearable/src/main/res/anim/oobe_swipe_left_long_g_animation_interpolator_2.xml4
-rw-r--r--wearable/wear/WearAccessibilityApp/Wearable/src/main/res/anim/oobe_swipe_left_long_g_animation_interpolator_3.xml4
-rw-r--r--wearable/wear/WearAccessibilityApp/Wearable/src/main/res/anim/oobe_swipe_left_long_g_animation_interpolator_4.xml4
-rw-r--r--wearable/wear/WearAccessibilityApp/Wearable/src/main/res/anim/oobe_swipe_left_long_g_animation_interpolator_5.xml4
-rw-r--r--wearable/wear/WearAccessibilityApp/Wearable/src/main/res/anim/oobe_swipe_left_long_g_animation_interpolator_6.xml4
-rw-r--r--wearable/wear/WearAccessibilityApp/Wearable/src/main/res/anim/oobe_swipe_left_long_g_animation_interpolator_7.xml4
-rw-r--r--wearable/wear/WearAccessibilityApp/Wearable/src/main/res/anim/oobe_swipe_left_long_g_animation_interpolator_8.xml4
-rw-r--r--wearable/wear/WearAccessibilityApp/Wearable/src/main/res/anim/oobe_swipe_left_long_g_animation_interpolator_9.xml4
-rw-r--r--wearable/wear/WearAccessibilityApp/Wearable/src/main/res/anim/oobe_swipe_left_long_g_ellipse_7_animation.xml52
-rw-r--r--wearable/wear/WearAccessibilityApp/Wearable/src/main/res/anim/oobe_swipe_left_long_g_ellipse_8_animation.xml52
-rw-r--r--wearable/wear/WearAccessibilityApp/Wearable/src/main/res/anim/oobe_swipe_left_long_g_path_7_animation.xml66
-rw-r--r--wearable/wear/WearAccessibilityApp/Wearable/src/main/res/anim/oobe_swipe_left_long_g_path_8_animation.xml73
-rw-r--r--wearable/wear/WearAccessibilityApp/Wearable/src/main/res/anim/oobe_swipe_left_long_g_swipeupbluecircle_2_animation.xml21
-rw-r--r--wearable/wear/WearAccessibilityApp/Wearable/src/main/res/anim/oobe_swipe_left_long_g_swipeuptrace_2_animation.xml21
-rw-r--r--wearable/wear/WearAccessibilityApp/Wearable/src/main/res/anim/oobe_tap_animation_interpolator_0.xml4
-rw-r--r--wearable/wear/WearAccessibilityApp/Wearable/src/main/res/anim/oobe_tap_animation_interpolator_1.xml4
-rw-r--r--wearable/wear/WearAccessibilityApp/Wearable/src/main/res/anim/oobe_tap_animation_interpolator_2.xml4
-rw-r--r--wearable/wear/WearAccessibilityApp/Wearable/src/main/res/anim/oobe_tap_animation_interpolator_3.xml4
-rw-r--r--wearable/wear/WearAccessibilityApp/Wearable/src/main/res/anim/oobe_tap_animation_interpolator_4.xml4
-rw-r--r--wearable/wear/WearAccessibilityApp/Wearable/src/main/res/anim/oobe_tap_animation_interpolator_5.xml4
-rw-r--r--wearable/wear/WearAccessibilityApp/Wearable/src/main/res/anim/oobe_tap_animation_interpolator_6.xml4
-rw-r--r--wearable/wear/WearAccessibilityApp/Wearable/src/main/res/anim/oobe_tap_ellipse_21_animation.xml52
-rw-r--r--wearable/wear/WearAccessibilityApp/Wearable/src/main/res/anim/oobe_tap_ellipse_22_animation.xml52
-rw-r--r--wearable/wear/WearAccessibilityApp/Wearable/src/main/res/anim/oobe_tap_path_23_animation.xml28
-rw-r--r--wearable/wear/WearAccessibilityApp/Wearable/src/main/res/anim/oobe_tap_path_24_animation.xml28
-rw-r--r--wearable/wear/WearAccessibilityApp/Wearable/src/main/res/anim/oobe_tap_rectangle_path_3_animation.xml45
-rw-r--r--wearable/wear/WearAccessibilityApp/Wearable/src/main/res/drawable/accept_circle.xml23
-rw-r--r--wearable/wear/WearAccessibilityApp/Wearable/src/main/res/drawable/accessibility_circle.xml25
-rw-r--r--wearable/wear/WearAccessibilityApp/Wearable/src/main/res/drawable/arrow.xml9
-rw-r--r--wearable/wear/WearAccessibilityApp/Wearable/src/main/res/drawable/arrow_circle.xml23
-rw-r--r--wearable/wear/WearAccessibilityApp/Wearable/src/main/res/drawable/avatar.pngbin0 -> 65340 bytes
-rw-r--r--wearable/wear/WearAccessibilityApp/Wearable/src/main/res/drawable/birds.pngbin0 -> 121238 bytes
-rw-r--r--wearable/wear/WearAccessibilityApp/Wearable/src/main/res/drawable/bow.pngbin0 -> 128450 bytes
-rw-r--r--wearable/wear/WearAccessibilityApp/Wearable/src/main/res/drawable/cats.pngbin0 -> 119730 bytes
-rw-r--r--wearable/wear/WearAccessibilityApp/Wearable/src/main/res/drawable/circle.xml9
-rw-r--r--wearable/wear/WearAccessibilityApp/Wearable/src/main/res/drawable/controls_circle.xml24
-rw-r--r--wearable/wear/WearAccessibilityApp/Wearable/src/main/res/drawable/deny_circle.xml24
-rw-r--r--wearable/wear/WearAccessibilityApp/Wearable/src/main/res/drawable/dialogs_circle.xml24
-rw-r--r--wearable/wear/WearAccessibilityApp/Wearable/src/main/res/drawable/dog.pngbin0 -> 95637 bytes
-rw-r--r--wearable/wear/WearAccessibilityApp/Wearable/src/main/res/drawable/hamster.pngbin0 -> 99954 bytes
-rw-r--r--wearable/wear/WearAccessibilityApp/Wearable/src/main/res/drawable/heart.xml11
-rw-r--r--wearable/wear/WearAccessibilityApp/Wearable/src/main/res/drawable/heart_circle.xml15
-rw-r--r--wearable/wear/WearAccessibilityApp/Wearable/src/main/res/drawable/ic_view_list_white_1x_web_48dp.pngbin0 -> 94 bytes
-rw-r--r--wearable/wear/WearAccessibilityApp/Wearable/src/main/res/drawable/launcher_image.xml26
-rw-r--r--wearable/wear/WearAccessibilityApp/Wearable/src/main/res/drawable/list_arrow.xml9
-rw-r--r--wearable/wear/WearAccessibilityApp/Wearable/src/main/res/drawable/lists_circle.xml41
-rw-r--r--wearable/wear/WearAccessibilityApp/Wearable/src/main/res/drawable/notifications_circle.xml26
-rw-r--r--wearable/wear/WearAccessibilityApp/Wearable/src/main/res/drawable/oobe_swipe_left_long.xml57
-rw-r--r--wearable/wear/WearAccessibilityApp/Wearable/src/main/res/drawable/oobe_swipe_left_long_animation.xml23
-rw-r--r--wearable/wear/WearAccessibilityApp/Wearable/src/main/res/drawable/oobe_tap.xml90
-rw-r--r--wearable/wear/WearAccessibilityApp/Wearable/src/main/res/drawable/oobe_tap_animation.xml20
-rw-r--r--wearable/wear/WearAccessibilityApp/Wearable/src/main/res/drawable/open_in_phone_circle.xml28
-rw-r--r--wearable/wear/WearAccessibilityApp/Wearable/src/main/res/drawable/open_on_phone.xml62
-rw-r--r--wearable/wear/WearAccessibilityApp/Wearable/src/main/res/drawable/progress_circle.xml24
-rw-r--r--wearable/wear/WearAccessibilityApp/Wearable/src/main/res/drawable/reply.xml10
-rw-r--r--wearable/wear/WearAccessibilityApp/Wearable/src/main/res/drawable/settings_circle.xml35
-rw-r--r--wearable/wear/WearAccessibilityApp/Wearable/src/main/res/drawable/start.xml9
-rw-r--r--wearable/wear/WearAccessibilityApp/Wearable/src/main/res/drawable/stop.xml10
-rw-r--r--wearable/wear/WearAccessibilityApp/Wearable/src/main/res/drawable/watch.pngbin0 -> 781 bytes
-rw-r--r--wearable/wear/WearAccessibilityApp/Wearable/src/main/res/layout/activity_accessibility.xml45
-rw-r--r--wearable/wear/WearAccessibilityApp/Wearable/src/main/res/layout/activity_dialogs.xml9
-rw-r--r--wearable/wear/WearAccessibilityApp/Wearable/src/main/res/layout/activity_fullscreen_progress.xml21
-rw-r--r--wearable/wear/WearAccessibilityApp/Wearable/src/main/res/layout/activity_images.xml93
-rw-r--r--wearable/wear/WearAccessibilityApp/Wearable/src/main/res/layout/activity_list_of_graphics.xml12
-rw-r--r--wearable/wear/WearAccessibilityApp/Wearable/src/main/res/layout/activity_lists.xml9
-rw-r--r--wearable/wear/WearAccessibilityApp/Wearable/src/main/res/layout/activity_long_list.xml26
-rw-r--r--wearable/wear/WearAccessibilityApp/Wearable/src/main/res/layout/activity_main.xml9
-rw-r--r--wearable/wear/WearAccessibilityApp/Wearable/src/main/res/layout/activity_messaging_main.xml11
-rw-r--r--wearable/wear/WearAccessibilityApp/Wearable/src/main/res/layout/activity_notifications.xml38
-rw-r--r--wearable/wear/WearAccessibilityApp/Wearable/src/main/res/layout/activity_open_on_phone_animation.xml28
-rw-r--r--wearable/wear/WearAccessibilityApp/Wearable/src/main/res/layout/activity_photo_carousel.xml60
-rw-r--r--wearable/wear/WearAccessibilityApp/Wearable/src/main/res/layout/activity_radio_list.xml47
-rw-r--r--wearable/wear/WearAccessibilityApp/Wearable/src/main/res/layout/activity_zoom_image.xml9
-rw-r--r--wearable/wear/WearAccessibilityApp/Wearable/src/main/res/layout/app_item_layout.xml21
-rw-r--r--wearable/wear/WearAccessibilityApp/Wearable/src/main/res/layout/circled_image_layout.xml24
-rw-r--r--wearable/wear/WearAccessibilityApp/Wearable/src/main/res/layout/header_footer_layout.xml4
-rw-r--r--wearable/wear/WearAccessibilityApp/Wearable/src/main/res/layout/list_item_layout.xml22
-rw-r--r--wearable/wear/WearAccessibilityApp/Wearable/src/main/res/layout/long_list_switch_widget_layout.xml28
-rw-r--r--wearable/wear/WearAccessibilityApp/Wearable/src/main/res/layout/progress_bar_layout.xml8
-rw-r--r--wearable/wear/WearAccessibilityApp/Wearable/src/main/res/layout/progress_bar_with_text_layout.xml21
-rw-r--r--wearable/wear/WearAccessibilityApp/Wearable/src/main/res/layout/shifted_app_item_layout.xml22
-rw-r--r--wearable/wear/WearAccessibilityApp/Wearable/src/main/res/layout/switch_layout.xml25
-rw-r--r--wearable/wear/WearAccessibilityApp/Wearable/src/main/res/layout/title_layout.xml10
-rw-r--r--wearable/wear/WearAccessibilityApp/Wearable/src/main/res/menu/action_drawer_menu.xml17
-rw-r--r--wearable/wear/WearAccessibilityApp/Wearable/src/main/res/values/colors.xml7
-rw-r--r--wearable/wear/WearAccessibilityApp/Wearable/src/main/res/values/strings.xml117
-rw-r--r--wearable/wear/WearAccessibilityApp/Wearable/src/main/res/values/styles.xml20
-rw-r--r--wearable/wear/WearAccessibilityApp/Wearable/src/main/res/xml/prefs_controls.xml19
-rw-r--r--wearable/wear/WearAccessibilityApp/Wearable/src/main/res/xml/prefs_in_line_progress.xml12
-rw-r--r--wearable/wear/WearAccessibilityApp/Wearable/src/main/res/xml/prefs_notifications.xml15
-rw-r--r--wearable/wear/WearAccessibilityApp/build.gradle12
-rw-r--r--wearable/wear/WearAccessibilityApp/buildSrc/build.gradle16
-rw-r--r--wearable/wear/WearAccessibilityApp/gradle/wrapper/gradle-wrapper.jarbin0 -> 49896 bytes
-rw-r--r--wearable/wear/WearAccessibilityApp/gradle/wrapper/gradle-wrapper.properties7
-rwxr-xr-xwearable/wear/WearAccessibilityApp/gradlew164
-rw-r--r--wearable/wear/WearAccessibilityApp/gradlew.bat90
-rw-r--r--wearable/wear/WearAccessibilityApp/settings.gradle2
-rw-r--r--wearable/wear/WearAccessibilityApp/template-params.xml111
138 files changed, 4736 insertions, 0 deletions
diff --git a/wearable/wear/WearAccessibilityApp/.gitignore b/wearable/wear/WearAccessibilityApp/.gitignore
new file mode 100644
index 00000000..b90e7562
--- /dev/null
+++ b/wearable/wear/WearAccessibilityApp/.gitignore
@@ -0,0 +1,33 @@
+# built application files
+*.apk
+*.ap_
+
+# files for the dex VM
+*.dex
+
+# Java class files
+*.class
+
+# generated files
+bin/
+gen/
+
+# Ignore gradle files
+.gradle/
+build/
+
+# Local configuration file (sdk path, etc)
+local.properties
+
+# Proguard folder generated by Eclipse
+proguard/
+proguard-project.txt
+
+# Eclipse files
+.project
+.classpath
+.settings/
+
+# Android Studio/IDEA
+*.iml
+.idea
diff --git a/wearable/wear/WearAccessibilityApp/Wearable/build.gradle b/wearable/wear/WearAccessibilityApp/Wearable/build.gradle
new file mode 100644
index 00000000..c1f3a89c
--- /dev/null
+++ b/wearable/wear/WearAccessibilityApp/Wearable/build.gradle
@@ -0,0 +1,84 @@
+
+buildscript {
+ repositories {
+ maven {
+ url 'https://maven.google.com'
+ }
+ jcenter()
+ }
+
+ dependencies {
+ classpath 'com.android.tools.build:gradle:3.0.0'
+ }
+}
+
+apply plugin: 'com.android.application'
+
+repositories {
+ jcenter()
+ maven {
+ url 'https://maven.google.com'
+ }
+}
+
+
+
+dependencies {
+
+ compile 'com.android.support:wear:27.0.0'
+ compile 'com.android.support.constraint:constraint-layout:1.0.2'
+ compile 'com.android.support:appcompat-v7:27.0.0'
+
+
+ compile 'com.google.android.gms:play-services-wearable:11.6.0'
+ compile 'com.android.support:support-v13:27.0.0'
+
+ provided 'com.google.android.wearable:wearable:2.1.0'
+
+ compile 'com.google.android.support:wearable:2.1.0'
+
+}
+
+// The sample build uses multiple directories to
+// keep boilerplate and common code separate from
+// the main sample code.
+List<String> dirs = [
+ 'main', // main sample code; look here for the interesting stuff.
+ 'common', // components that are reused by multiple samples
+ 'template'] // boilerplate code that is generated by the sample template process
+
+android {
+
+ compileSdkVersion 26
+
+ buildToolsVersion "26.0.2"
+
+ defaultConfig {
+ versionCode 1
+ versionName "1.0"
+
+ minSdkVersion 23
+
+ targetSdkVersion 26
+
+ multiDexEnabled true
+
+ }
+
+ compileOptions {
+ sourceCompatibility JavaVersion.VERSION_1_7
+ targetCompatibility JavaVersion.VERSION_1_7
+ }
+
+ sourceSets {
+ main {
+ dirs.each { dir ->
+ java.srcDirs "src/${dir}/java"
+ res.srcDirs "src/${dir}/res"
+ }
+ }
+ androidTest.setRoot('tests')
+ androidTest.java.srcDirs = ['tests/src']
+
+ }
+}
diff --git a/wearable/wear/WearAccessibilityApp/Wearable/src/main/AndroidManifest.xml b/wearable/wear/WearAccessibilityApp/Wearable/src/main/AndroidManifest.xml
new file mode 100644
index 00000000..7c335947
--- /dev/null
+++ b/wearable/wear/WearAccessibilityApp/Wearable/src/main/AndroidManifest.xml
@@ -0,0 +1,93 @@
+<?xml version="1.0" encoding="utf-8"?>
+<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. -->
+ <uses-permission android:name="android.permission.WAKE_LOCK" />
+
+ <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
+ <uses-permission android:name="android.permission.READ_PHONE_STATE"/>
+ <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
+
+ <application
+ android:allowBackup="true"
+ android:icon="@drawable/launcher_image"
+ android:label="@string/app_name"
+ android:supportsRtl="true"
+ android:theme="@style/SampleAppTheme">
+
+ <activity
+ android:label="@string/app_name"
+ android:name=".MainActivity">
+ <intent-filter>
+ <action android:name="android.intent.action.MAIN"/>
+ <category android:name="android.intent.category.LAUNCHER"/>
+ </intent-filter>
+ </activity>
+ <activity
+ android:label="@string/lists"
+ android:name=".ListsActivity">
+ </activity>
+ <activity
+ android:label="@string/dialogs"
+ android:name=".DialogsActivity">
+ </activity>
+ <activity
+ android:label="@string/progress"
+ android:name=".ProgressActivity">
+ </activity>
+ <activity
+ android:label="@string/controls"
+ android:name=".ControlsActivity">
+ </activity>
+ <activity
+ android:label="@string/notifications"
+ android:name=".NotificationsActivity">
+ </activity>
+ <activity
+ android:label="@string/accessibility"
+ android:name=".AccessibilityActivity">
+ </activity>
+ <activity
+ android:label="@string/a_long_list"
+ android:name=".LongListActivity">
+ </activity>
+ <activity
+ android:label="@string/list_of_graphics"
+ android:name=".ListOfGraphicsActivity">
+ </activity>
+ <activity
+ android:label="@string/photo_carousel"
+ android:name=".PhotoCarouselActivity">
+ </activity>
+ <activity
+ android:label="@string/images"
+ android:name=".ImagesActivity">
+ </activity>
+ <activity
+ android:label="@string/zoom_image"
+ android:name=".ZoomImageActivity">
+ </activity>
+ <activity
+ android:label="@string/open_on_phone_animation"
+ android:name=".OpenOnPhoneAnimationActivity"
+ android:theme="@style/OpenOnPhoneAnimationTheme">
+ </activity>
+ <activity
+ android:label="@string/radio_list"
+ android:name=".RadioListActivity">
+ </activity>
+ <activity
+ android:label="@string/full_screen"
+ android:name=".FullScreenActivity">
+ </activity>
+ <activity
+ android:label="@string/in_line"
+ android:name=".InLineActivity">
+ </activity>
+ </application>
+</manifest>
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
new file mode 100644
index 00000000..8bc8c950
--- /dev/null
+++ b/wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/AccessibilityActivity.java
@@ -0,0 +1,31 @@
+package com.example.android.wearable.wear.wearaccessibilityapp;
+
+import android.content.Intent;
+import android.os.Bundle;
+import android.provider.Settings;
+import android.support.wearable.activity.WearableActivity;
+import android.view.View;
+import android.view.View.OnClickListener;
+import android.widget.ImageView;
+import android.widget.TextView;
+
+public class AccessibilityActivity extends WearableActivity {
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ setContentView(R.layout.activity_accessibility);
+
+ ImageView accessibilityImage = findViewById(R.id.icon_image_view);
+ accessibilityImage.setImageDrawable(getDrawable(R.drawable.settings_circle));
+
+ TextView accessibilityText = findViewById(R.id.icon_text_view);
+ accessibilityText.setText(R.string.accessibility_settings);
+
+ findViewById(R.id.accessibility_button_include).setOnClickListener(new OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ startActivityForResult(new Intent(Settings.ACTION_ACCESSIBILITY_SETTINGS), 0);
+ }
+ });
+ }
+} \ No newline at end of file
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
new file mode 100644
index 00000000..d398819e
--- /dev/null
+++ b/wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/AppItem.java
@@ -0,0 +1,43 @@
+package com.example.android.wearable.wear.wearaccessibilityapp;
+
+import android.content.Context;
+import android.content.Intent;
+import android.support.wearable.activity.WearableActivity;
+
+public class AppItem {
+ private final String mItemName;
+ private final int mImageId;
+ private final int mViewType;
+ private final Class mClass;
+
+ public AppItem(String itemName, int imageId, int viewType, Class<?
+ extends WearableActivity> clazz) {
+ mItemName = itemName;
+ mImageId = imageId;
+ mViewType = viewType;
+ mClass = clazz;
+ }
+
+ public AppItem(String itemName, int imageId, Class<? extends WearableActivity> clazz) {
+ mItemName = itemName;
+ mImageId = imageId;
+ mViewType = SampleAppConstants.NORMAL;
+ mClass = clazz;
+ }
+
+ public String getItemName() {
+ return mItemName;
+ }
+
+ public int getImageId() {
+ return mImageId;
+ }
+
+ public int getViewType() {
+ return mViewType;
+ }
+
+ public void launchActivity(Context context) {
+ context.startActivity(new Intent(context, mClass));
+ }
+} \ No newline at end of file
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
new file mode 100644
index 00000000..eae4d7a3
--- /dev/null
+++ b/wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/AppItemListViewAdapter.java
@@ -0,0 +1,49 @@
+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;
+import android.widget.ArrayAdapter;
+import android.widget.ImageView;
+import android.widget.TextView;
+
+import java.util.List;
+
+public class AppItemListViewAdapter extends ArrayAdapter<AppItem> {
+ private final LayoutInflater mInflater;
+ private List<AppItem> mItems;
+
+ public AppItemListViewAdapter(@NonNull Context context, @NonNull List<AppItem> items) {
+ super(context, R.layout.app_item_layout, items);
+ mInflater = LayoutInflater.from(context);
+ mItems = items;
+ }
+
+ @NonNull
+ @Override
+ public View getView(int position, @Nullable View convertView, @NonNull ViewGroup parent) {
+ Holder holder;
+ if (convertView == null) {
+ convertView = mInflater.inflate(R.layout.shifted_app_item_layout, parent, false);
+ holder = new Holder();
+ holder.mTextView = convertView.findViewById(R.id.shifted_icon_text_view);
+ holder.mImageView = convertView.findViewById(R.id.shifted_icon_image_view);
+ convertView.setTag(holder); // Cache holder for future use.
+ } else {
+ holder = (Holder) convertView.getTag();
+ }
+
+ holder.mTextView.setText(mItems.get(position).getItemName());
+ holder.mImageView.setImageResource(mItems.get(position).getImageId());
+
+ return convertView;
+ }
+
+ private static class Holder {
+ TextView mTextView;
+ ImageView mImageView;
+ }
+} \ No newline at end of file
diff --git a/wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/CircledImageViewPreference.java b/wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/CircledImageViewPreference.java
new file mode 100644
index 00000000..c8a1a92e
--- /dev/null
+++ b/wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/CircledImageViewPreference.java
@@ -0,0 +1,90 @@
+package com.example.android.wearable.wear.wearaccessibilityapp;
+
+import android.content.Context;
+import android.os.CountDownTimer;
+import android.preference.Preference;
+import android.support.wearable.view.CircledImageView;
+import android.util.AttributeSet;
+import android.util.TypedValue;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.TextView;
+
+public class CircledImageViewPreference extends Preference {
+
+ private CircledImageView mCircledImage;
+ private TextView mCircledImageText;
+ private CountDownTimer mCountDownTimer;
+ private int mColorPrimaryDark;
+ private int mColorAccent;
+ private boolean mIsLoading;
+ private Context mContext;
+
+ public CircledImageViewPreference(Context context, AttributeSet attrs) {
+ super(context, attrs);
+ mContext = context;
+
+ TypedValue typedValue = new TypedValue();
+ mContext.getTheme().resolveAttribute(android.R.attr.colorPrimaryDark, typedValue, true);
+ mColorPrimaryDark = typedValue.data;
+ mContext.getTheme().resolveAttribute(android.R.attr.colorAccent, typedValue, true);
+ mColorAccent = typedValue.data;
+ }
+
+ @Override
+ protected View onCreateView(ViewGroup parent) {
+ super.onCreateView(parent);
+ LayoutInflater inflater = LayoutInflater.from(getContext());
+ View circledImageViewLayout = inflater.inflate(R.layout.circled_image_layout, null);
+
+ mCircledImage = circledImageViewLayout.findViewById(R.id.circled_image_view);
+ mCircledImageText = circledImageViewLayout.findViewById(R.id.circled_image_text);
+
+ setStartCircledImageView();
+ return circledImageViewLayout;
+ }
+
+ @Override
+ protected void onClick() {
+ mIsLoading = !mIsLoading;
+ if (mIsLoading) {
+ setLoadingCircledImageView();
+ } else {
+ setStartCircledImageView();
+ cancelCountDownTimer();
+ }
+ }
+
+ public void setStartCircledImageView() {
+ mCircledImageText.setText(R.string.start);
+ mCircledImage.setImageResource(R.drawable.start);
+ mCircledImage.setCircleBorderColor(mColorPrimaryDark);
+ mCircledImage.setProgress(1);
+ mIsLoading = false;
+ }
+
+ public void setLoadingCircledImageView() {
+ mCircledImageText.setText(R.string.loading);
+ mCircledImage.setImageResource(R.drawable.stop);
+ mCircledImage.setCircleBorderColor(mColorAccent);
+ mCountDownTimer = new CountDownTimer(10000, 10) {
+ @Override
+ public void onTick(long millisUntilFinished) {
+ float timeElapsed = (10000.0f - millisUntilFinished) / 10000.0f;
+ mCircledImage.setProgress(timeElapsed);
+ }
+
+ @Override
+ public void onFinish() {
+ setStartCircledImageView();
+ }
+ }.start();
+ }
+
+ public void cancelCountDownTimer() {
+ if (mCountDownTimer != null) {
+ mCountDownTimer.cancel();
+ }
+ }
+} \ No newline at end of file
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
new file mode 100644
index 00000000..0b6bddae
--- /dev/null
+++ b/wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/ControlsActivity.java
@@ -0,0 +1,27 @@
+package com.example.android.wearable.wear.wearaccessibilityapp;
+
+import android.os.Bundle;
+import android.preference.PreferenceFragment;
+import android.support.wearable.activity.WearableActivity;
+
+public class ControlsActivity extends WearableActivity {
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ // Display the fragment as the main content.
+ getFragmentManager().beginTransaction()
+ .replace(android.R.id.content, new ControlsPrefFragment())
+ .commit();
+ }
+
+ public static class ControlsPrefFragment extends PreferenceFragment {
+
+ @Override
+ public void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ // Load the preferences from an XML resource
+ addPreferencesFromResource(R.xml.prefs_controls);
+ }
+ }
+} \ No newline at end of file
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
new file mode 100644
index 00000000..2d2100b7
--- /dev/null
+++ b/wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/DialogsActivity.java
@@ -0,0 +1,144 @@
+package com.example.android.wearable.wear.wearaccessibilityapp;
+
+import android.app.Dialog;
+import android.content.DialogInterface;
+import android.content.DialogInterface.OnClickListener;
+import android.content.Intent;
+import android.os.Bundle;
+import android.support.wearable.activity.WearableActivity;
+import android.support.wearable.view.AcceptDenyDialog;
+import android.support.wearable.view.WearableDialogHelper.DialogBuilder;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.widget.AdapterView;
+import android.widget.ListView;
+import android.widget.TextView;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.function.Supplier;
+
+public class DialogsActivity extends WearableActivity {
+
+ private List<DialogsItem> mItems;
+ public View mView;
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ setContentView(R.layout.activity_dialogs);
+
+ // Supplier objects
+ Supplier<Dialog> twoActionDialog = new Supplier<Dialog>() {
+ @Override
+ public Dialog get() {
+ AcceptDenyDialog twoActionDialog = new AcceptDenyDialog(DialogsActivity.this);
+ twoActionDialog.setTitle(R.string.yes_no_dialog);
+ twoActionDialog.setMessage(getString(R.string.yes_no_dialog_description));
+ twoActionDialog.setPositiveButton(new OnClickListener() {
+ @Override
+ public void onClick(DialogInterface dialog, int which) {
+ // Add code here for onClick functionality.
+ }
+ });
+ twoActionDialog.setNegativeButton(new OnClickListener() {
+ @Override
+ public void onClick(DialogInterface dialog, int which) {
+ // Add code here for onClick functionality.
+ }
+ });
+ return twoActionDialog;
+ }
+ };
+
+ Supplier<Dialog> oneActionDialog = new Supplier<Dialog>() {
+ @Override
+ public Dialog get() {
+ AcceptDenyDialog oneActionDialog = new AcceptDenyDialog(DialogsActivity.this);
+ oneActionDialog.setTitle(R.string.one_action_dialog);
+ oneActionDialog.setMessage(getString(R.string.one_action_dialog_description));
+ oneActionDialog.setPositiveButton(new OnClickListener() {
+ @Override
+ public void onClick(DialogInterface dialog, int which) {
+ // Add code here for onClick functionality.
+ }
+ });
+ return oneActionDialog;
+ }
+ };
+
+ Supplier<Dialog> multipleActionDialog = new Supplier<Dialog>() {
+ @Override
+ public Dialog get() {
+ DialogBuilder multipleActionBuilder = new DialogBuilder(DialogsActivity.this);
+ multipleActionBuilder.setTitle(R.string.multiple_action_dialog);
+ multipleActionBuilder.setMessage(R.string.multiple_action_dialog_description);
+
+ // OK option.
+ multipleActionBuilder.setPositiveIcon(R.drawable.accept_circle);
+ multipleActionBuilder.setPositiveButton(R.string.ok, new OnClickListener() {
+ @Override
+ public void onClick(DialogInterface dialog, int which) {
+ // Add code here for onClick functionality.
+ }
+ });
+
+ // Close option.
+ multipleActionBuilder.setNeutralIcon(R.drawable.deny_circle);
+ multipleActionBuilder.setNeutralButton(R.string.close, new OnClickListener() {
+ @Override
+ public void onClick(DialogInterface dialog, int which) {
+ // Add code here for onClick functionality.
+ }
+ });
+
+ // Open in phone option.
+ multipleActionBuilder.setNegativeIcon(R.drawable.open_in_phone_circle);
+ multipleActionBuilder
+ .setNegativeButton(R.string.open_on_phone, new OnClickListener() {
+ @Override
+ public void onClick(DialogInterface dialog, int which) {
+ Intent intent = new Intent(DialogsActivity.this,
+ OpenOnPhoneAnimationActivity.class);
+ startActivity(intent);
+ }
+ });
+ return multipleActionBuilder.create();
+ }
+ };
+
+ // Create a list of items for adapter to display.
+ mItems = new ArrayList<>();
+ mItems.add(new DialogsItem(R.string.yes_no_action, twoActionDialog));
+ mItems.add(new DialogsItem(R.string.one_action, oneActionDialog));
+ mItems.add(new DialogsItem(R.string.multiple_actions, multipleActionDialog));
+
+ // Initialize an adapter and set it to ListView mListView.
+ ListViewAdapter adapter = new ListViewAdapter(this, mItems);
+ final ListView listView = findViewById(R.id.list_view_dialogs);
+ listView.setAdapter(adapter);
+
+ // Set header of mListView to be the title from title_layout.
+ LayoutInflater inflater = LayoutInflater.from(this);
+ View titleLayout = inflater.inflate(R.layout.title_layout, null);
+ TextView titleView = titleLayout.findViewById(R.id.title_text);
+ titleView.setText(R.string.dialogs);
+ titleView.setOnClickListener(null); // make title non-clickable (will not turn grey)
+
+ listView.addHeaderView(titleView);
+
+ // Goes to a dialog when you click on one of the list items.
+ // Dependent upon position of click.
+ // Note: Keep in mind that icons will not appear on dialog unless you
+ // set an onClickListener.
+ listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
+ @Override
+ public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
+ mView = view;
+ Dialog dialog = mItems.get(position - listView.getHeaderViewsCount())
+ .getSupplier().get();
+ dialog.show();
+ }
+ });
+ }
+} \ No newline at end of file
diff --git a/wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/DialogsItem.java b/wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/DialogsItem.java
new file mode 100644
index 00000000..d5567091
--- /dev/null
+++ b/wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/DialogsItem.java
@@ -0,0 +1,23 @@
+package com.example.android.wearable.wear.wearaccessibilityapp;
+
+import android.app.Dialog;
+
+import java.util.function.Supplier;
+
+public class DialogsItem implements Item {
+ private final int mItemId;
+ private final Supplier<Dialog> mSupplier;
+
+ public DialogsItem(int itemId, Supplier<Dialog> supplier) {
+ mItemId = itemId;
+ mSupplier = supplier;
+ }
+
+ public int getItemId() {
+ return mItemId;
+ }
+
+ public Supplier<Dialog> getSupplier() {
+ return mSupplier;
+ }
+} \ No newline at end of file
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
new file mode 100644
index 00000000..48ed0a0c
--- /dev/null
+++ b/wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/FullScreenActivity.java
@@ -0,0 +1,14 @@
+package com.example.android.wearable.wear.wearaccessibilityapp;
+
+import android.os.Bundle;
+import android.support.wearable.activity.WearableActivity;
+
+public class FullScreenActivity extends WearableActivity {
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ setContentView(R.layout.activity_fullscreen_progress);
+ }
+
+} \ No newline at end of file
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
new file mode 100644
index 00000000..ea7f7968
--- /dev/null
+++ b/wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/GlobalNotificationBuilder.java
@@ -0,0 +1,45 @@
+package com.example.android.wearable.wear.wearaccessibilityapp;
+
+import android.support.v4.app.NotificationCompat;
+
+/**
+ * We use a Singleton for a global copy of the NotificationCompat.Builder to update active
+ * Notifications from other Services/Activities.
+ *
+ * You have two options for updating your notifications:
+ *
+ * 1. Use a new NotificationCompatBuilder to create the Notification. This approach requires you
+ * to get *ALL* the information and pass it to the builder. We get all the information from a Mock
+ * Database and this is the approach used in the MainActivity.
+ *
+ * 2. Use an existing NotificationCompatBuilder to create a Notification. This approach requires
+ * you to store a reference to the original builder. The benefit is you only need the new/updated
+ * information for an existing notification. We use this approach in the IntentService handlers to
+ * update existing notifications.
+ *
+ * IMPORTANT NOTE 1: You shouldn't save/modify the resulting Notification object using
+ * its member variables and/or legacy APIs. If you want to retain anything from update
+ * to update, retain the Builder as option 2 outlines.
+ *
+ * IMPORTANT NOTE 2: If the global Notification Builder is lost because the process is killed, you
+ * should have a way to recreate the Notification Builder from a persistent state. (We do this as
+ * well in the sample, check the IntentServices.)
+ */
+public final class GlobalNotificationBuilder {
+
+ private static NotificationCompat.Builder sGlobalNotificationCompatBuilder = null;
+
+ /*
+ * Empty constructor - We don't initialize builder because we rely on a null state to let us
+ * know the Application's process was killed.
+ */
+ private GlobalNotificationBuilder() { }
+
+ public static void setNotificationCompatBuilderInstance (NotificationCompat.Builder builder) {
+ sGlobalNotificationCompatBuilder = builder;
+ }
+
+ public static NotificationCompat.Builder getNotificationCompatBuilderInstance(){
+ return sGlobalNotificationCompatBuilder;
+ }
+} \ No newline at end of file
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
new file mode 100644
index 00000000..b91bec1c
--- /dev/null
+++ b/wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/ImagesActivity.java
@@ -0,0 +1,48 @@
+package com.example.android.wearable.wear.wearaccessibilityapp;
+
+import android.graphics.drawable.Animatable2.AnimationCallback;
+import android.graphics.drawable.AnimatedVectorDrawable;
+import android.graphics.drawable.Drawable;
+import android.os.Bundle;
+import android.support.wearable.activity.WearableActivity;
+import android.widget.ImageView;
+
+public class ImagesActivity extends WearableActivity {
+ private AnimatedVectorDrawable mAnimatedVectorDrawableSwipe;
+ private AnimatedVectorDrawable mAnimatedVectorDrawableTap;
+ private AnimationCallback mAnimationCallback;
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ setContentView(R.layout.activity_images);
+
+ // Used to repeat animation from the beginning.
+ mAnimationCallback = new AnimationCallback() {
+ @Override
+ public void onAnimationEnd(Drawable drawable) {
+ super.onAnimationEnd(drawable);
+ ((AnimatedVectorDrawable) drawable).start();
+ }
+ };
+
+ // Play 'swipe left' animation on loop.
+ ImageView mSwipeLeftImage = findViewById(R.id.swipe_left_image);
+ mAnimatedVectorDrawableSwipe = (AnimatedVectorDrawable) mSwipeLeftImage.getDrawable();
+ mAnimatedVectorDrawableSwipe.start();
+ mAnimatedVectorDrawableSwipe.registerAnimationCallback(mAnimationCallback);
+
+ // Play 'tap' animation on loop.
+ ImageView mTapImage = findViewById(R.id.tap_image);
+ mAnimatedVectorDrawableTap = (AnimatedVectorDrawable) mTapImage.getDrawable();
+ mAnimatedVectorDrawableTap.start();
+ mAnimatedVectorDrawableTap.registerAnimationCallback(mAnimationCallback);
+ }
+
+ @Override
+ protected void onDestroy() {
+ super.onDestroy();
+ mAnimatedVectorDrawableSwipe.unregisterAnimationCallback(mAnimationCallback);
+ mAnimatedVectorDrawableTap.unregisterAnimationCallback(mAnimationCallback);
+ }
+} \ No newline at end of file
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
new file mode 100644
index 00000000..5d82957d
--- /dev/null
+++ b/wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/InLineActivity.java
@@ -0,0 +1,65 @@
+package com.example.android.wearable.wear.wearaccessibilityapp;
+
+import android.os.Bundle;
+import android.preference.Preference;
+import android.preference.Preference.OnPreferenceChangeListener;
+import android.preference.PreferenceFragment;
+import android.preference.PreferenceScreen;
+import android.preference.SwitchPreference;
+import android.support.wearable.activity.WearableActivity;
+
+public class InLineActivity extends WearableActivity {
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ getFragmentManager().beginTransaction()
+ .replace(android.R.id.content, new InLinePrefFragment())
+ .commit();
+ }
+
+ public static class InLinePrefFragment extends PreferenceFragment {
+
+ private SwitchPreference mDeterminantSwitchPref;
+ private CircledImageViewPreference mCircledImageViewPref;
+ private ProgressBarPreference mProgressBarPreference;
+ private PreferenceScreen mPreferenceScreen;
+
+ @Override
+ public void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ // Load the preferences from an XML resource
+ addPreferencesFromResource(R.xml.prefs_in_line_progress);
+
+ mDeterminantSwitchPref = (SwitchPreference) findPreference(
+ getString(R.string.key_pref_determinant_switch));
+ mDeterminantSwitchPref.setChecked(true);
+
+ mCircledImageViewPref = (CircledImageViewPreference)
+ findPreference(getString(R.string.key_pref_circled_image_view));
+
+ mPreferenceScreen = (PreferenceScreen) findPreference(
+ getString(R.string.key_pref_progress_screen));
+
+ mProgressBarPreference = new ProgressBarPreference(getContext());
+ mProgressBarPreference.setTitle("@string/indeterminant_progress");
+
+ mDeterminantSwitchPref.setOnPreferenceChangeListener(new OnPreferenceChangeListener() {
+ @Override
+ public boolean onPreferenceChange(Preference preference, Object newValue) {
+ mDeterminantSwitchPref.setChecked(!mDeterminantSwitchPref.isChecked());
+ if (mDeterminantSwitchPref.isChecked()) {
+ mCircledImageViewPref.cancelCountDownTimer();
+ mCircledImageViewPref.setStartCircledImageView();
+ mPreferenceScreen.removePreference(mProgressBarPreference);
+ mPreferenceScreen.addPreference(mCircledImageViewPref);
+ } else {
+ mPreferenceScreen.removePreference(mCircledImageViewPref);
+ mPreferenceScreen.addPreference(mProgressBarPreference);
+ }
+ return true;
+ }
+ });
+ }
+ }
+} \ No newline at end of file
diff --git a/wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/Item.java b/wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/Item.java
new file mode 100644
index 00000000..50e48c03
--- /dev/null
+++ b/wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/Item.java
@@ -0,0 +1,5 @@
+package com.example.android.wearable.wear.wearaccessibilityapp;
+
+public interface Item {
+ int getItemId();
+} \ No newline at end of file
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
new file mode 100644
index 00000000..f41b7c1d
--- /dev/null
+++ b/wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/ListOfGraphicsActivity.java
@@ -0,0 +1,51 @@
+package com.example.android.wearable.wear.wearaccessibilityapp;
+
+import android.os.Bundle;
+import android.support.wearable.activity.WearableActivity;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.widget.AdapterView;
+import android.widget.ListView;
+import android.widget.TextView;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class ListOfGraphicsActivity extends WearableActivity {
+ private List<AppItem> mItems;
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ setContentView(R.layout.activity_list_of_graphics);
+
+ // Store all data in a list for adapter to use.
+ mItems = new ArrayList<AppItem>();
+ mItems.add(new AppItem(getString(R.string.photo_carousel), R.drawable.heart_circle,
+ SampleAppConstants.NORMAL, PhotoCarouselActivity.class));
+ mItems.add(new AppItem(getString(R.string.images), R.drawable.heart_circle,
+ SampleAppConstants.NORMAL, ImagesActivity.class));
+
+ // Set up an adapter and pass in all the items you initialized above.
+ AppItemListViewAdapter adapter = new AppItemListViewAdapter(this, mItems);
+ final ListView listView = findViewById(R.id.list_view_graphics);
+ listView.setAdapter(adapter);
+
+ // Set header of list view to be a title.
+ LayoutInflater inflater = LayoutInflater.from(this);
+ View titleLayout = inflater.inflate(R.layout.title_layout, null);
+ TextView titleView = titleLayout.findViewById(R.id.title_text);
+ titleView.setText(R.string.list_of_graphics); // Set the text of the title.
+ listView.addHeaderView(titleView, getString(R.string.title), false); // Set header.
+
+ // Goes to a new screen when you click on one of the list items.
+ // Dependent upon position of click.
+ listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
+ @Override
+ public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
+ mItems.get(position - listView.getHeaderViewsCount())
+ .launchActivity(getApplicationContext());
+ }
+ });
+ }
+} \ No newline at end of file
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
new file mode 100644
index 00000000..4fbadf2e
--- /dev/null
+++ b/wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/ListViewAdapter.java
@@ -0,0 +1,46 @@
+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;
+import android.widget.ArrayAdapter;
+import android.widget.ImageView;
+import android.widget.TextView;
+
+import java.util.List;
+
+public class ListViewAdapter<T extends Item> extends ArrayAdapter<T> {
+ private final LayoutInflater mInflater;
+ private List<T> mItems;
+
+ public ListViewAdapter(@NonNull Context context, @NonNull List<T> items) {
+ super(context, R.layout.list_item_layout, items);
+ mInflater = LayoutInflater.from(context);
+ mItems = items;
+ }
+
+ @NonNull
+ @Override
+ public View getView(int position, @Nullable View convertView, @NonNull ViewGroup parent) {
+ Holder holder;
+ if (convertView == null) {
+ convertView = mInflater.inflate(R.layout.list_item_layout, parent, false);
+ holder = new Holder();
+ holder.mTextView = convertView.findViewById(R.id.item_text);
+ holder.mImageView = convertView.findViewById(R.id.item_image);
+ convertView.setTag(holder); // Cache the holder for future use.
+ } else {
+ holder = (Holder) convertView.getTag();
+ }
+ holder.mTextView.setText(mItems.get(position).getItemId());
+ return convertView;
+ }
+
+ private static class Holder {
+ TextView mTextView;
+ ImageView mImageView;
+ }
+} \ No newline at end of file
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
new file mode 100644
index 00000000..59b270c6
--- /dev/null
+++ b/wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/ListsActivity.java
@@ -0,0 +1,51 @@
+package com.example.android.wearable.wear.wearaccessibilityapp;
+
+import android.os.Bundle;
+import android.support.wearable.activity.WearableActivity;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.widget.AdapterView;
+import android.widget.ListView;
+import android.widget.TextView;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class ListsActivity extends WearableActivity {
+ private List<ListsItem> mItems;
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ setContentView(R.layout.activity_lists);
+
+ // Create a list of items for adapter to display.
+ mItems = new ArrayList<>();
+ mItems.add(new ListsItem(R.string.a_long_list, LongListActivity.class));
+ mItems.add(new ListsItem(R.string.list_of_graphics, ListOfGraphicsActivity.class));
+
+ // Initialize an adapter and set it to ListView listView.
+ ListViewAdapter adapter = new ListViewAdapter(this, mItems);
+ final ListView listView = findViewById(R.id.list_view_lists);
+ listView.setAdapter(adapter);
+
+ // Set header of listView to be the title from title_layout.
+ LayoutInflater inflater = LayoutInflater.from(this);
+ View titleLayout = inflater.inflate(R.layout.title_layout, null);
+ TextView titleView = titleLayout.findViewById(R.id.title_text);
+ titleView.setText(R.string.lists);
+ titleView.setOnClickListener(null); // make title non-clickable.
+
+ listView.addHeaderView(titleView);
+
+ // Goes to a new screen when you click on one of the list items.
+ // Dependent upon position of click.
+ listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
+ @Override
+ public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
+ mItems.get(position - listView.getHeaderViewsCount())
+ .launchActivity(getApplicationContext());
+ }
+ });
+ }
+} \ No newline at end of file
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
new file mode 100644
index 00000000..0f00720b
--- /dev/null
+++ b/wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/ListsItem.java
@@ -0,0 +1,23 @@
+package com.example.android.wearable.wear.wearaccessibilityapp;
+
+import android.content.Context;
+import android.content.Intent;
+import android.support.wearable.activity.WearableActivity;
+
+public class ListsItem implements Item {
+ private final int mItemId;
+ private final Class mClass;
+
+ public ListsItem(int itemId, Class<? extends WearableActivity> clazz) {
+ mItemId = itemId;
+ mClass = clazz;
+ }
+
+ public int getItemId() {
+ return mItemId;
+ }
+
+ public void launchActivity(Context context) {
+ context.startActivity(new Intent(context, mClass));
+ }
+} \ No newline at end of file
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
new file mode 100644
index 00000000..6a0fa212
--- /dev/null
+++ b/wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/LongListActivity.java
@@ -0,0 +1,149 @@
+package com.example.android.wearable.wear.wearaccessibilityapp;
+
+import android.os.Bundle;
+import android.os.Handler;
+import android.support.v7.widget.LinearLayoutManager;
+import android.support.v7.widget.RecyclerView;
+import android.support.wearable.activity.WearableActivity;
+import android.support.wearable.view.WearableRecyclerView;
+import android.support.wearable.view.drawer.WearableActionDrawer;
+import android.view.View;
+
+import com.example.android.wearable.wear.wearaccessibilityapp.LongListRecyclerViewAdapter.SwitchChangeListener;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class LongListActivity extends WearableActivity {
+ private List<AppItem> mItems;
+ private LongListRecyclerViewAdapter mAdapter;
+ private Handler mHandler;
+ private int mPreviousLastVisibleItem;
+ private int mLastVisibleItem;
+ private boolean mFinishLoad;
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ setContentView(R.layout.activity_long_list);
+
+ mHandler = new Handler();
+
+ // List of items to display within recyclerView (used by adapter).
+ mItems = new ArrayList<AppItem>();
+ mItems.add(new AppItem(null, 0, SampleAppConstants.TITLE, null)); // for title
+ mItems.add(new AppItem(null, 0, SampleAppConstants.SWITCH, null)); // for switch widget
+ for (int i = 1; i <= 10; i++) {
+ mItems.add(new AppItem(getResources().getString(R.string.item_text, i),
+ R.drawable.heart_circle, SampleAppConstants.NORMAL, null));
+ }
+
+ // Custom adapter used so we can use custom layout for the rows within the list.
+ mAdapter = new LongListRecyclerViewAdapter(this, mItems, new SwitchChangeListener() {
+ @Override
+ public void onChange(boolean switchOn) {
+ WearableActionDrawer wearableActionDrawer =
+ findViewById(R.id.action_drawer_long_list);
+
+ if(switchOn) {
+ wearableActionDrawer.setVisibility(View.VISIBLE); // Hide drawer.
+ } else {
+ wearableActionDrawer.setVisibility(View.INVISIBLE); // Hide drawer.
+ }
+ }
+ });
+ WearableRecyclerView recyclerView = findViewById(R.id.recycler_view_long_list);
+
+ recyclerView.setAdapter(mAdapter); // Set adapter to the recyclerView.
+
+ // Uncomment if you want the action drawer to show while scrolling down.
+ // WearableActionDrawer mWearableActionDrawer=
+ // (WearableActionDrawer) findViewById(R.id.action_drawer_long_list);
+ // mWearableActionDrawer.setShouldPeekOnScrollDown(true);
+
+ mPreviousLastVisibleItem = 0; // default
+ mLastVisibleItem = 0;
+ mFinishLoad = false;
+
+ if (!(recyclerView.getLayoutManager() instanceof LinearLayoutManager)) {
+ return; // invalid layout manager
+ }
+
+ final LinearLayoutManager layoutManager = (LinearLayoutManager) recyclerView
+ .getLayoutManager();
+
+ recyclerView.addOnScrollListener(new WearableRecyclerView.OnScrollListener() {
+ @Override
+ public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
+ super.onScrolled(recyclerView, dx, dy);
+ mLastVisibleItem = layoutManager.findLastVisibleItemPosition();
+ if (!mFinishLoad) {
+ int count = layoutManager.getItemCount(); // total items in the recycler view
+
+ // Do not notify LongListActivity if no NEW items have been displayed.
+ if (mLastVisibleItem <= mPreviousLastVisibleItem) {
+ return;
+ }
+
+ // Do not notify LongListActivity if not yet scrolled to threshold.
+ if (mLastVisibleItem < count - 1) {
+ return;
+ }
+
+ if (mLastVisibleItem % 10 == 2 && mLastVisibleItem != 2) {
+ return;
+ }
+
+ // End of list, no more loading.
+ if (mLastVisibleItem >= SampleAppConstants.END_OF_LONG_LIST) {
+ mFinishLoad = true; // we are done loading more items.
+ addFooter();
+ return;
+ }
+
+ // Load more items
+ addData();
+
+ // To check if new items should be displayed or not.
+ mPreviousLastVisibleItem = mLastVisibleItem;
+ }
+ }
+ });
+ }
+
+ /**
+ * Add items to List<AppItem> items.
+ * More items requested by adapter (used to load list in batches of 10).
+ */
+ public void addData() {
+ // Add progress bar to list.
+ mItems.add(new AppItem(null, 0, SampleAppConstants.PROGRESS_BAR, null));
+ mAdapter.notifyItemInserted(mItems.size() - 1);
+
+ // Delay for 1000 milliseconds and then execute below code.
+ mHandler.postDelayed(new Runnable() {
+ @Override
+ public void run() {
+ // Remove progress after the delay.
+ mItems.remove(mItems.size() - 1);
+
+ // Add ten items to List<AppItem> items.
+ int listSize = mItems.size();
+ for (int i = listSize - 1; i <= listSize + 8; i++) {
+ mItems.add(new AppItem(getResources().getString(R.string.item_text, i),
+ R.drawable.heart_circle, SampleAppConstants.NORMAL, null));
+ }
+ mAdapter.notifyDataSetChanged();
+ }
+ }, 1000);
+ }
+
+ /**
+ * Add footer to List<AppItem> items.
+ * Requested by adapter (called at the end of the list).
+ */
+ public void addFooter() {
+ mItems.add(new AppItem(null, 0, SampleAppConstants.HEADER_FOOTER, null)); // add footer
+ mAdapter.notifyItemInserted(mItems.size() - 1);
+ }
+} \ No newline at end of file
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
new file mode 100644
index 00000000..8eea8490
--- /dev/null
+++ b/wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/LongListRecyclerViewAdapter.java
@@ -0,0 +1,149 @@
+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;
+import android.view.ViewGroup;
+import android.widget.ImageView;
+import android.widget.Switch;
+import android.widget.TextView;
+
+import java.util.List;
+
+public class LongListRecyclerViewAdapter extends
+ RecyclerView.Adapter<LongListRecyclerViewAdapter.Holder> {
+
+ // For custom listener.
+ public interface SwitchChangeListener {
+
+ void onChange(boolean switchOn);
+ }
+
+ private final LayoutInflater mInflater;
+ private List<AppItem> mItems;
+ private SwitchChangeListener mSwitchChangeListener;
+ private Switch mSwitchWidget;
+ private Context mContext;
+
+ public LongListRecyclerViewAdapter(Context context, List<AppItem> items,
+ SwitchChangeListener switchChangeListener) {
+ mContext = context;
+ mItems = items;
+ mInflater = LayoutInflater.from(context);
+
+ // Forces activity to implement a SwitchChangeListener
+ mSwitchChangeListener = switchChangeListener;
+ }
+
+ @Override
+ public Holder onCreateViewHolder(ViewGroup parent, int viewType) {
+ final View view;
+ switch (viewType) {
+ case SampleAppConstants.TITLE:
+ // Programmatically set the text of the title here.
+ view = mInflater.inflate(R.layout.title_layout, parent, false);
+ TextView titleView = view.findViewById(R.id.title_text);
+ titleView.setText(R.string.a_long_list);
+ break;
+ case SampleAppConstants.SWITCH:
+ // Reference the switch widget's text and view.
+ view = mInflater.inflate(R.layout.long_list_switch_widget_layout, parent, false);
+ TextView switchText = view.findViewById(R.id.switch_text);
+ switchText.setText(R.string.bottom_action_drawer);
+
+ mSwitchWidget = view.findViewById(R.id.switch_widget);
+
+ view.setContentDescription(mContext.getResources().
+ getString(R.string.switch_bottom_action_drawer,
+ getSwitchToggleString(mSwitchWidget.isChecked())));
+
+ // Set the OnClickListener (Observer pattern used here).
+ view.setOnClickListener(new OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ mSwitchWidget.setChecked(!(mSwitchWidget.isChecked()));
+ if (mSwitchChangeListener != null) {
+ mSwitchChangeListener.onChange(mSwitchWidget.isChecked());
+ }
+ view.setContentDescription(mContext.getResources().
+ getString(R.string.switch_bottom_action_drawer,
+ getSwitchToggleString(mSwitchWidget.isChecked())));
+ }
+ });
+ break;
+ case SampleAppConstants.HEADER_FOOTER:
+ view = mInflater.inflate(R.layout.header_footer_layout, parent, false);
+ break;
+ case SampleAppConstants.PROGRESS_BAR:
+ view = mInflater.inflate(R.layout.progress_bar_layout, parent, false);
+ break;
+ case SampleAppConstants.NORMAL:
+ view = mInflater.inflate(R.layout.shifted_app_item_layout, parent, false);
+ break;
+ default:
+ view = mInflater.inflate(R.layout.shifted_app_item_layout, parent, false);
+ break;
+ }
+ return new Holder(view);
+ }
+
+ @Override
+ public void onBindViewHolder(Holder holder, int position) {
+ if (mItems.isEmpty()) {
+ return;
+ }
+
+ AppItem item = mItems.get(position);
+ int itemViewType = item.getViewType();
+
+ // Return - Don't want to bind AppItem item info because item is null.
+ if (itemViewType != SampleAppConstants.NORMAL) {
+ return;
+ }
+
+ holder.bind(item);
+ }
+
+ @Override
+ public int getItemCount() {
+ return mItems.size();
+ }
+
+ @Override
+ public int getItemViewType(int position) {
+ return mItems.get(position).getViewType();
+ }
+
+ /**
+ * Used to set Switch widget's content description dynamically.
+ *
+ * @param isChecked
+ * @return "on" if true, "off" otherwise
+ */
+ public String getSwitchToggleString(boolean isChecked) {
+ return isChecked ? mContext.getString(R.string.on) : mContext.getString(R.string.off);
+ }
+
+ // class-specific ViewHolder
+ static class Holder extends ViewHolder {
+ TextView mTextView;
+ ImageView mImageView;
+
+ public Holder(final View itemView) {
+ super(itemView);
+ mTextView = itemView.findViewById(R.id.shifted_icon_text_view);
+ mImageView = itemView.findViewById(R.id.shifted_icon_image_view);
+ }
+
+ /**
+ * Bind appItem info to main screen (displays the item).
+ */
+ public void bind(AppItem item) {
+ mTextView.setText(item.getItemName());
+ mImageView.setImageResource(item.getImageId());
+ }
+ }
+} \ No newline at end of file
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
new file mode 100644
index 00000000..b8b7d023
--- /dev/null
+++ b/wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/MainActivity.java
@@ -0,0 +1,40 @@
+package com.example.android.wearable.wear.wearaccessibilityapp;
+
+import android.os.Bundle;
+import android.support.wearable.activity.WearableActivity;
+import android.support.wearable.view.WearableRecyclerView;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class MainActivity extends WearableActivity {
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ setContentView(R.layout.activity_main);
+
+ //Menu items
+ List<AppItem> items = new ArrayList<AppItem>();
+ items.add(new AppItem(getString(R.string.lists),
+ R.drawable.lists_circle, ListsActivity.class));
+ items.add(new AppItem(getString(R.string.dialogs),
+ R.drawable.dialogs_circle, DialogsActivity.class));
+ items.add(new AppItem(getString(R.string.progress),
+ R.drawable.progress_circle, ProgressActivity.class));
+ items.add(new AppItem(getString(R.string.controls),
+ R.drawable.controls_circle, ControlsActivity.class));
+ items.add(new AppItem(getString(R.string.notifications),
+ R.drawable.notifications_circle, NotificationsActivity.class));
+ items.add(new AppItem(getString(R.string.accessibility),
+ R.drawable.accessibility_circle, AccessibilityActivity.class));
+
+ MenuRecyclerViewAdapter appListAdapter = new MenuRecyclerViewAdapter(this, items);
+
+ WearableRecyclerView recyclerView = findViewById(R.id.main_recycler_view);
+ recyclerView.setAdapter(appListAdapter);
+ recyclerView
+ .setLayoutManager(new MyLauncherChildLayoutManager(this)); // For curved layout.
+ recyclerView.setCenterEdgeItems(true);
+ }
+} \ No newline at end of file
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
new file mode 100644
index 00000000..68df9f68
--- /dev/null
+++ b/wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/MenuRecyclerViewAdapter.java
@@ -0,0 +1,87 @@
+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 java.util.List;
+
+public class MenuRecyclerViewAdapter extends
+ RecyclerView.Adapter<MenuRecyclerViewAdapter.Holder> {
+
+ private final Context mContext;
+ private final LayoutInflater mInflater;
+ private List<AppItem> mItems;
+
+ public MenuRecyclerViewAdapter(Context context, List<AppItem> items) {
+ this.mContext = context;
+ this.mItems = items;
+ mInflater = LayoutInflater.from(context);
+ }
+
+ @Override
+ public Holder onCreateViewHolder(ViewGroup parent, int viewType) {
+ /* Add check for viewType here if used.
+ See LongListRecyclerViewAdapter for an example. */
+
+ return new Holder(mInflater.inflate(R.layout.app_item_layout, parent, false));
+ }
+
+ @Override
+ public void onBindViewHolder(Holder holder, int position) {
+ if (mItems.isEmpty()) {
+ return;
+ }
+ final AppItem item = mItems.get(position);
+
+ if (item.getViewType() == SampleAppConstants.HEADER_FOOTER) {
+ return;
+ }
+
+ holder.bind(item);
+
+ // Start new activity on click of specific item.
+ final int pos = position;
+ holder.itemView.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ mItems.get(pos).launchActivity(mContext);
+ }
+ });
+ }
+
+ @Override
+ public int getItemCount() {
+ return mItems.size();
+ }
+
+ @Override
+ public int getItemViewType(int position) {
+ return mItems.get(position).getViewType();
+ }
+
+
+ static class Holder extends ViewHolder {
+ TextView mTextView;
+ ImageView mImageView;
+
+ public Holder(final View itemView) {
+ super(itemView);
+ mTextView = itemView.findViewById(R.id.icon_text_view);
+ mImageView = itemView.findViewById(R.id.icon_image_view);
+ }
+
+ /**
+ * Bind appItem info to main screen (displays the item).
+ */
+ public void bind(AppItem item) {
+ mTextView.setText(item.getItemName());
+ mImageView.setImageResource(item.getImageId());
+ }
+ }
+} \ No newline at end of file
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
new file mode 100644
index 00000000..394c5d1b
--- /dev/null
+++ b/wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/MessagingIntentService.java
@@ -0,0 +1,238 @@
+package com.example.android.wearable.wear.wearaccessibilityapp;
+
+import android.app.IntentService;
+import android.app.Notification;
+import android.app.PendingIntent;
+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;
+
+/**
+ * Asynchronously handles updating messaging app posts (and active Notification) with replies from
+ * user in a conversation. Notification for social app use MessagingStyle.
+ */
+public class MessagingIntentService extends IntentService {
+
+ private static final String TAG = "MessagingIntentService";
+
+ public static final String ACTION_REPLY =
+ "com.example.android.wearable.wear.wearnotifications.handlers.action.REPLY";
+
+ public static final String EXTRA_REPLY =
+ "com.example.android.wearable.wear.wearnotifications.handlers.extra.REPLY";
+
+
+ public MessagingIntentService() {
+ super("MessagingIntentService");
+ }
+
+ @Override
+ protected void onHandleIntent(Intent intent) {
+ Log.d(TAG, "onHandleIntent(): " + intent);
+
+ if (intent != null) {
+ final String action = intent.getAction();
+ if (ACTION_REPLY.equals(action)) {
+ handleActionReply(getMessage(intent));
+ }
+ }
+ }
+
+ /**
+ * Handles action for replying to messages from the notification.
+ */
+ private void handleActionReply(CharSequence replyCharSequence) {
+ Log.d(TAG, "handleActionReply(): " + replyCharSequence);
+
+ if (replyCharSequence != null) {
+
+ // TODO: Asynchronously save your message to Database and servers.
+
+ /*
+ * You have two options for updating your notification (this class uses approach #2):
+ *
+ * 1. Use a new NotificationCompatBuilder to create the Notification. This approach
+ * requires you to get *ALL* the information that existed in the previous
+ * Notification (and updates) and pass it to the builder. This is the approach used in
+ * the MainActivity.
+ *
+ * 2. Use the original NotificationCompatBuilder to create the Notification. This
+ * approach requires you to store a reference to the original builder. The benefit is
+ * you only need the new/updated information. In our case, the reply from the user
+ * which we already have here.
+ *
+ * IMPORTANT NOTE: You shouldn't save/modify the resulting Notification object using
+ * its member variables and/or legacy APIs. If you want to retain anything from update
+ * to update, retain the Builder as option 2 outlines.
+ */
+
+ // Retrieves NotificationCompat.Builder used to create initial Notification
+ NotificationCompat.Builder notificationCompatBuilder =
+ GlobalNotificationBuilder.getNotificationCompatBuilderInstance();
+
+ // Recreate builder from persistent state if app process is killed
+ if (notificationCompatBuilder == null) {
+ // Note: New builder set globally in the method
+ notificationCompatBuilder = recreateBuilderWithMessagingStyle();
+ }
+
+
+ // Since we are adding to the MessagingStyle, we need to first retrieve the
+ // current MessagingStyle from the Notification itself.
+ Notification notification = notificationCompatBuilder.build();
+ MessagingStyle messagingStyle =
+ NotificationCompat.MessagingStyle
+ .extractMessagingStyleFromNotification(notification);
+
+ // Add new message to the MessagingStyle
+ messagingStyle.addMessage(replyCharSequence, System.currentTimeMillis(), null);
+
+ // Updates the Notification
+ notification = notificationCompatBuilder
+ .setStyle(messagingStyle)
+ .build();
+
+ // Pushes out the updated Notification
+ NotificationManagerCompat notificationManagerCompat =
+ NotificationManagerCompat.from(getApplicationContext());
+ notificationManagerCompat.notify(NotificationsActivity.NOTIFICATION_ID, notification);
+ }
+ }
+
+ /*
+ * Extracts CharSequence created from the RemoteInput associated with the Notification.
+ */
+ private CharSequence getMessage(Intent intent) {
+ Bundle remoteInput = RemoteInput.getResultsFromIntent(intent);
+ if (remoteInput != null) {
+ return remoteInput.getCharSequence(EXTRA_REPLY);
+ }
+ return null;
+ }
+
+ /*
+ * This recreates the notification from the persistent state in case the app process was killed.
+ * It is basically the same code for creating the Notification from MainActivity.
+ */
+ private NotificationCompat.Builder recreateBuilderWithMessagingStyle() {
+
+ // Main steps for building a MESSAGING_STYLE notification (for more detailed comments on
+ // building this notification, check StandaloneMainActivity.java)::
+ // 0. Get your data
+ // 1. Build the MESSAGING_STYLE
+ // 2. Add support for Wear 1.+
+ // 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)
+ MockDatabase.MessagingStyleCommsAppData messagingStyleCommsAppData =
+ MockDatabase.getMessagingStyleData();
+
+ // 1. Build the Notification.Style (MESSAGING_STYLE)
+ String contentTitle = messagingStyleCommsAppData.getContentTitle();
+
+ MessagingStyle messagingStyle =
+ new NotificationCompat.MessagingStyle(messagingStyleCommsAppData.getReplayName())
+ .setConversationTitle(contentTitle);
+
+ // Adds all Messages
+ for (MessagingStyle.Message message : messagingStyleCommsAppData.getMessages()) {
+ messagingStyle.addMessage(message);
+ }
+
+
+ // 2. Add support for Wear 1.+.
+ String fullMessageForWearVersion1 = messagingStyleCommsAppData.getFullConversation();
+
+ 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
+ Intent notifyIntent = new Intent(this, MessagingMainActivity.class);
+
+ PendingIntent mainPendingIntent =
+ PendingIntent.getActivity(
+ this,
+ 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.
+ String replyLabel = getString(R.string.reply_label);
+ RemoteInput remoteInput = new RemoteInput.Builder(MessagingIntentService.EXTRA_REPLY)
+ .setLabel(replyLabel)
+ .build();
+
+ 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 =
+ new NotificationCompat.Action.WearableExtender()
+ .setHintDisplayActionInline(true)
+ .setHintLaunchesActivity(false);
+
+ NotificationCompat.Action replyAction =
+ new NotificationCompat.Action.Builder(
+ R.drawable.reply,
+ replyLabel,
+ replyActionPendingIntent)
+ .addRemoteInput(remoteInput)
+ // Allows system to generate replies by context of conversation
+ .setAllowGeneratedReplies(true)
+ // Add WearableExtender to enable inline actions
+ .extend(inlineActionForWear2_0)
+ .build();
+
+
+ // 5. Build and issue the notification
+ NotificationCompat.Builder notificationCompatBuilder =
+ new NotificationCompat.Builder(getApplicationContext());
+
+ GlobalNotificationBuilder.setNotificationCompatBuilderInstance(notificationCompatBuilder);
+
+ // Builds and issues notification
+ notificationCompatBuilder
+ .setStyle(messagingStyle)
+ .setContentTitle(contentTitle)
+ .setContentText(messagingStyleCommsAppData.getContentText())
+ .setSmallIcon(R.drawable.watch)
+ .setLargeIcon(BitmapFactory.decodeResource(
+ getResources(),
+ R.drawable.avatar))
+ .setContentIntent(mainPendingIntent)
+ .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);
+ }
+
+ return notificationCompatBuilder;
+ }
+} \ No newline at end of file
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
new file mode 100644
index 00000000..6f8b9672
--- /dev/null
+++ b/wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/MessagingMainActivity.java
@@ -0,0 +1,25 @@
+package com.example.android.wearable.wear.wearaccessibilityapp;
+
+import android.app.Activity;
+import android.app.NotificationManager;
+import android.content.Context;
+import android.os.Bundle;
+
+/**
+ * Template class meant to include functionality for your Messaging App. (This project's main focus
+ * is on Notification Styles.)
+ */
+public class MessagingMainActivity extends Activity {
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ setContentView(R.layout.activity_messaging_main);
+
+ // Cancel Notification
+ NotificationManager notificationManager =
+ (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
+
+ notificationManager.cancel(NotificationsActivity.NOTIFICATION_ID);
+ }
+} \ No newline at end of file
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
new file mode 100644
index 00000000..1b43c345
--- /dev/null
+++ b/wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/MockDatabase.java
@@ -0,0 +1,131 @@
+package com.example.android.wearable.wear.wearaccessibilityapp;
+
+import android.support.v4.app.NotificationCompat.MessagingStyle;
+
+import java.util.ArrayList;
+
+/**
+ * Mock data for each of the Notification Style Demos.
+ */
+public final class MockDatabase {
+
+ public static MessagingStyleCommsAppData getMessagingStyleData() {
+ return MessagingStyleCommsAppData.getInstance();
+ }
+
+ /**
+ * Represents data needed for MessagingStyle Notification.
+ */
+ public static class MessagingStyleCommsAppData {
+
+ private static MessagingStyleCommsAppData sInstance = null;
+
+ // Standard notification values
+ private String mContentTitle;
+ private String mContentText;
+
+ // Style notification values
+ private ArrayList<MessagingStyle.Message> mMessages;
+ // Basically, String of all mMessages
+ private String mFullConversation;
+ // Name preferred when replying to chat
+ private String mReplayName;
+ private int mNumberOfNewMessages;
+ private ArrayList<String> mParticipants;
+
+ public static MessagingStyleCommsAppData getInstance() {
+ if (sInstance == null) {
+ sInstance = getSync();
+ }
+ return sInstance;
+ }
+
+ private static synchronized MessagingStyleCommsAppData getSync() {
+ if (sInstance == null) {
+ sInstance = new MessagingStyleCommsAppData();
+ }
+
+ 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";
+
+ // Style notification values
+
+ // For each message, you need the timestamp, in this case, we are using arbitrary ones.
+ long currentTime = System.currentTimeMillis();
+
+ 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(
+ "Dude!", 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: Dude!\n\n"
+ + "Famous: You know I am a Pesce-pescetarian. :P\n\n";
+
+ mNumberOfNewMessages = 2;
+
+ // Name preferred when replying to chat
+ mReplayName = "Me";
+
+ // If the phone is in "Do not disturb mode, the user will still be notified if
+ // the user(s) is starred as a favorite.
+ mParticipants = new ArrayList<>();
+ mParticipants.add("Famous McFamously");
+
+ }
+
+ public String getContentTitle() {
+ return mContentTitle;
+ }
+
+ public String getContentText() {
+ return mContentText;
+ }
+
+ public ArrayList<MessagingStyle.Message> getMessages() {
+ return mMessages;
+ }
+
+ public String getFullConversation() {
+ return mFullConversation;
+ }
+
+ public String getReplayName() {
+ return mReplayName;
+ }
+
+ public int getNumberOfNewMessages() {
+ return mNumberOfNewMessages;
+ }
+
+ public ArrayList<String> getParticipants() {
+ return mParticipants;
+ }
+
+ @Override
+ public String toString() {
+ return getFullConversation();
+ }
+ }
+} \ No newline at end of file
diff --git a/wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/MyLauncherChildLayoutManager.java b/wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/MyLauncherChildLayoutManager.java
new file mode 100644
index 00000000..5c45af2b
--- /dev/null
+++ b/wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/MyLauncherChildLayoutManager.java
@@ -0,0 +1,36 @@
+package com.example.android.wearable.wear.wearaccessibilityapp;
+
+import android.content.Context;
+import android.support.wearable.view.CurvedChildLayoutManager;
+import android.support.wearable.view.WearableRecyclerView;
+import android.view.View;
+
+public class MyLauncherChildLayoutManager extends CurvedChildLayoutManager {
+
+ /**
+ * How much should we scale the icon at most.
+ */
+ private static final float MAX_ICON_PROGRESS = 0.65f;
+
+ public MyLauncherChildLayoutManager(Context context) {
+ super(context);
+ }
+
+ @Override
+ public void updateChild(View child, WearableRecyclerView parent) {
+ super.updateChild(child, parent);
+
+ // Figure out % progress from top to bottom.
+ float centerOffset = (child.getHeight() / 2.0f) / parent.getHeight();
+
+ float yRelativeToCenterOffset = (child.getY() / parent.getHeight()) + centerOffset;
+
+ // Normalize for center.
+ float progressToCenter = Math.abs(0.5f - yRelativeToCenterOffset);
+ // Adjust to the maximum scale.
+ progressToCenter = Math.min(progressToCenter, MAX_ICON_PROGRESS);
+
+ child.setScaleX(1 - progressToCenter);
+ child.setScaleY(1 - progressToCenter);
+ }
+} \ No newline at end of file
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
new file mode 100644
index 00000000..7b857475
--- /dev/null
+++ b/wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/NotificationsActivity.java
@@ -0,0 +1,239 @@
+package com.example.android.wearable.wear.wearaccessibilityapp;
+
+import android.app.Notification;
+import android.app.PendingIntent;
+import android.content.Intent;
+import android.graphics.BitmapFactory;
+import android.os.Bundle;
+import android.preference.Preference;
+import android.preference.Preference.OnPreferenceChangeListener;
+import android.preference.Preference.OnPreferenceClickListener;
+import android.preference.PreferenceFragment;
+import android.preference.SwitchPreference;
+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.wearable.activity.WearableActivity;
+import android.util.Log;
+
+public class NotificationsActivity extends WearableActivity {
+
+ public static final int NOTIFICATION_ID = 888;
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ // Display the fragment as the main content.
+ getFragmentManager().beginTransaction()
+ .replace(android.R.id.content, new NotificationsPrefsFragment())
+ .commit();
+ }
+
+ public static class NotificationsPrefsFragment extends PreferenceFragment {
+
+ private static final String TAG = "NotificationsActivity";
+ private NotificationManagerCompat mNotificationManagerCompat;
+ private boolean mActionOn; //if true, displays in-line action
+ private boolean mAvatarOn; //if true, displays avatar of messenger
+
+ @Override
+ public void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+
+ // Load the preferences from an XML resource
+ addPreferencesFromResource(R.xml.prefs_notifications);
+
+ mNotificationManagerCompat = NotificationManagerCompat.from(getActivity());
+
+ final SwitchPreference mActionSwitchPref = (SwitchPreference) findPreference(
+ getString(R.string.key_pref_action));
+ final SwitchPreference mAvatarSwitchPref = (SwitchPreference) findPreference(
+ getString(R.string.key_pref_avatar));
+ Preference mPushNotificationPref = findPreference(
+ getString(R.string.key_pref_push_notification));
+
+ initInLineAction(mActionSwitchPref);
+ initAvatar(mAvatarSwitchPref);
+ initPushNotification(mPushNotificationPref);
+ }
+
+ public void initInLineAction(SwitchPreference switchPref) {
+ switchPref.setChecked(true);
+ mActionOn = switchPref.isChecked();
+ switchPref.setOnPreferenceChangeListener(new OnPreferenceChangeListener() {
+ @Override
+ public boolean onPreferenceChange(Preference preference, Object newValue) {
+ mActionOn = (Boolean) newValue;
+ return true;
+ }
+ });
+ }
+
+ public void initAvatar(SwitchPreference switchPref) {
+ switchPref.setChecked(true);
+ mAvatarOn = switchPref.isChecked();
+ switchPref.setOnPreferenceChangeListener(new OnPreferenceChangeListener() {
+ @Override
+ public boolean onPreferenceChange(Preference preference, Object newValue) {
+ mAvatarOn = (Boolean) newValue;
+ return true;
+ }
+ });
+ }
+
+ public void initPushNotification(Preference pref) {
+ pref.setOnPreferenceClickListener(new OnPreferenceClickListener() {
+ @Override
+ public boolean onPreferenceClick(Preference preference) {
+ generateMessagingStyleNotification();
+ return true;
+ }
+ });
+ }
+
+ /*
+ * Generates a MESSAGING_STYLE Notification that supports both Wear 1.+ and Wear 2.0. For
+ * devices on API level 24 (Wear 2.0) and after, displays MESSAGING_STYLE. Otherwise,
+ * displays a basic BIG_TEXT_STYLE.
+ *
+ * IMPORTANT NOTE:
+ * Notification Styles behave slightly different on Wear 2.0 when they are launched by a
+ * native/local Wear app, i.e., they will NOT expand when the user taps them but will
+ * instead take the user directly into the local app for the richest experience. In
+ * contrast, a bridged Notification launched from the phone will expand with the style
+ * details (whether there is a local app or not).
+ *
+ * If you want to enable an action on your Notification without launching the app, you can
+ * do so with the setHintDisplayActionInline() feature (shown below), but this only allows
+ * one action.
+ *
+ * If you wish to replicate the original experience of a bridged notification, please
+ * review the generateBigTextStyleNotification() method above to see how.
+ */
+ private void generateMessagingStyleNotification() {
+ Log.d(TAG, "generateMessagingStyleNotification()");
+
+ // Main steps for building a MESSAGING_STYLE notification:
+ // 0. Get your data
+ // 1. Build the MESSAGING_STYLE
+ // 2. Set up main Intent for notification
+ // 3. Set up RemoteInput (users can input directly from notification)
+ // 4. Build and issue the notification
+
+ // 0. Get your data (everything unique per Notification)
+ MockDatabase.MessagingStyleCommsAppData messagingStyleCommsAppData =
+ MockDatabase.getMessagingStyleData();
+
+ // 1. 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.
+ .setConversationTitle(contentTitle);
+
+ // Adds all Messages
+ // Note: Messages include the text, timestamp, and sender
+ for (MessagingStyle.Message message : messagingStyleCommsAppData.getMessages()) {
+ messagingStyle.addMessage(message);
+ }
+
+ // 2. Set up main Intent for notification
+ Intent notifyIntent = new Intent(getActivity(), MessagingMainActivity.class);
+
+ PendingIntent mainPendingIntent =
+ PendingIntent.getActivity(
+ getActivity(),
+ 0,
+ notifyIntent,
+ PendingIntent.FLAG_UPDATE_CURRENT
+ );
+
+
+ // 3. 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();
+
+ // Create PendingIntent for service that handles input.
+ Intent replyIntent = new Intent(getActivity(), MessagingIntentService.class);
+ replyIntent.setAction(MessagingIntentService.ACTION_REPLY);
+ PendingIntent replyActionPendingIntent =
+ PendingIntent.getService(getActivity(), 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 =
+ new NotificationCompat.Action.WearableExtender()
+ .setHintDisplayActionInline(mActionOn)
+ .setHintLaunchesActivity(false);
+
+ NotificationCompat.Action replyAction = new NotificationCompat.Action.Builder(
+ R.drawable.reply,
+ replyLabel,
+ replyActionPendingIntent)
+ .addRemoteInput(remoteInput)
+ // Allows system to generate replies by context of conversation
+ .setAllowGeneratedReplies(true)
+ // Add WearableExtender to enable inline actions
+ .extend(inlineActionForWear2)
+ .build();
+
+
+ // 4. 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).
+
+ NotificationCompat.Builder notificationCompatBuilder =
+ new NotificationCompat.Builder(getActivity());
+
+ 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)
+ .setContentIntent(mainPendingIntent)
+
+ // 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)
+
+ // Hides content on the lock-screen
+ .setVisibility(Notification.VISIBILITY_PRIVATE);
+
+ 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);
+ }
+
+ Notification notification = notificationCompatBuilder.build();
+ mNotificationManagerCompat.notify(NOTIFICATION_ID, notification);
+
+ // Close app to demonstrate notification in steam.
+ getActivity().finish();
+ }
+ }
+} \ No newline at end of file
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
new file mode 100644
index 00000000..152735a4
--- /dev/null
+++ b/wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/OpenOnPhoneAnimationActivity.java
@@ -0,0 +1,41 @@
+package com.example.android.wearable.wear.wearaccessibilityapp;
+
+import android.graphics.drawable.Animatable2.AnimationCallback;
+import android.graphics.drawable.AnimatedVectorDrawable;
+import android.graphics.drawable.Drawable;
+import android.os.Bundle;
+import android.support.wearable.activity.WearableActivity;
+import android.widget.ImageView;
+
+public class OpenOnPhoneAnimationActivity extends WearableActivity {
+ private AnimationCallback mAnimationCallback;
+ private AnimatedVectorDrawable mAnimatedVectorDrawablePhone;
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ setContentView(R.layout.activity_open_on_phone_animation);
+
+ mAnimationCallback = new AnimationCallback() {
+ @Override
+ public void onAnimationEnd(Drawable drawable) {
+ super.onAnimationEnd(drawable);
+ // Go back to main Dialogs screen after animation.
+ finish();
+ }
+ };
+
+ // Play 'swipe left' animation only once.
+ ImageView phoneImage = findViewById(R.id.open_on_phone_animation_image);
+ mAnimatedVectorDrawablePhone =
+ (AnimatedVectorDrawable) phoneImage.getDrawable();
+ mAnimatedVectorDrawablePhone.registerAnimationCallback(mAnimationCallback);
+ mAnimatedVectorDrawablePhone.start();
+ }
+
+ @Override
+ protected void onDestroy() {
+ super.onDestroy();
+ mAnimatedVectorDrawablePhone.unregisterAnimationCallback(mAnimationCallback);
+ }
+} \ No newline at end of file
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
new file mode 100644
index 00000000..538a039b
--- /dev/null
+++ b/wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/PhotoCarouselActivity.java
@@ -0,0 +1,42 @@
+package com.example.android.wearable.wear.wearaccessibilityapp;
+
+import android.content.Intent;
+import android.os.Bundle;
+import android.support.wearable.activity.WearableActivity;
+import android.view.View;
+import android.view.View.OnClickListener;
+import android.widget.ImageView;
+
+public class PhotoCarouselActivity extends WearableActivity implements OnClickListener {
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ setContentView(R.layout.activity_photo_carousel);
+
+ // Grab reference to each image in activity_photo_carousel.
+ ImageView catImage = findViewById(R.id.cat_image);
+ catImage.setTag(R.drawable.cats);
+ catImage.setOnClickListener(this);
+
+ ImageView dogImage = findViewById(R.id.dog_image);
+ dogImage.setTag(R.drawable.dog);
+ dogImage.setOnClickListener(this);
+
+ ImageView hamsterImage = findViewById(R.id.hamster_image);
+ hamsterImage.setTag(R.drawable.hamster);
+ hamsterImage.setOnClickListener(this);
+
+ ImageView birdImage = findViewById(R.id.bird_image);
+ birdImage.setTag(R.drawable.birds);
+ birdImage.setOnClickListener(this);
+ }
+
+ @Override
+ public void onClick(View v) {
+ Intent intent = new Intent(getApplicationContext(), ZoomImageActivity.class);
+ intent.putExtra(getString(R.string.intent_extra_image),
+ (int) v.getTag());
+ startActivity(intent);
+ }
+} \ No newline at end of file
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
new file mode 100644
index 00000000..03e4c024
--- /dev/null
+++ b/wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/ProgressActivity.java
@@ -0,0 +1,51 @@
+package com.example.android.wearable.wear.wearaccessibilityapp;
+
+import android.os.Bundle;
+import android.support.wearable.activity.WearableActivity;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.widget.AdapterView;
+import android.widget.ListView;
+import android.widget.TextView;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class ProgressActivity extends WearableActivity {
+ private List<ListsItem> mItems;
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ setContentView(R.layout.activity_lists);
+
+ // Create a list of items for adapter to display.
+ mItems = new ArrayList<>();
+ mItems.add(new ListsItem(R.string.full_screen, FullScreenActivity.class));
+ mItems.add(new ListsItem(R.string.in_line, InLineActivity.class));
+
+ // Initialize an adapter and set it to ListView listView.
+ ListViewAdapter adapter = new ListViewAdapter(this, mItems);
+ final ListView listView = findViewById(R.id.list_view_lists);
+ listView.setAdapter(adapter);
+
+ // Set header of listView to be the title from title_layout.
+ LayoutInflater inflater = LayoutInflater.from(this);
+ View titleLayout = inflater.inflate(R.layout.title_layout, null);
+ TextView titleView = titleLayout.findViewById(R.id.title_text);
+ titleView.setText(R.string.progress);
+ titleView.setOnClickListener(null); // make title non-clickable.
+
+ listView.addHeaderView(titleView);
+
+ // Goes to a new screen when you click on one of the list items.
+ // Dependent upon position of click.
+ listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
+ @Override
+ public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
+ mItems.get(position - listView.getHeaderViewsCount())
+ .launchActivity(getApplicationContext());
+ }
+ });
+ }
+}
diff --git a/wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/ProgressBarPreference.java b/wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/ProgressBarPreference.java
new file mode 100644
index 00000000..4c14fd3d
--- /dev/null
+++ b/wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/ProgressBarPreference.java
@@ -0,0 +1,28 @@
+package com.example.android.wearable.wear.wearaccessibilityapp;
+
+import android.content.Context;
+import android.preference.Preference;
+import android.util.AttributeSet;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+
+public class ProgressBarPreference extends Preference {
+
+ public ProgressBarPreference(Context context, AttributeSet attrs) {
+ super(context, attrs);
+ }
+
+ public ProgressBarPreference(Context context) {
+ super(context);
+ }
+
+
+ @Override
+ protected View onCreateView(ViewGroup parent) {
+ super.onCreateView(parent);
+ LayoutInflater inflater = (LayoutInflater) getContext()
+ .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
+ return inflater.inflate(R.layout.progress_bar_with_text_layout, parent, false);
+ }
+}
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
new file mode 100644
index 00000000..88db7d69
--- /dev/null
+++ b/wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/RadioListActivity.java
@@ -0,0 +1,17 @@
+package com.example.android.wearable.wear.wearaccessibilityapp;
+
+import android.os.Bundle;
+import android.support.wearable.activity.WearableActivity;
+import android.widget.TextView;
+
+public class RadioListActivity extends WearableActivity {
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ setContentView(R.layout.activity_radio_list);
+
+ TextView titleView = findViewById(R.id.radio_list_title);
+ titleView.setText(R.string.radio_list);
+ }
+} \ No newline at end of file
diff --git a/wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/SampleAppConstants.java b/wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/SampleAppConstants.java
new file mode 100644
index 00000000..0b86bb25
--- /dev/null
+++ b/wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/SampleAppConstants.java
@@ -0,0 +1,35 @@
+package com.example.android.wearable.wear.wearaccessibilityapp;
+
+public class SampleAppConstants {
+ /**
+ * {@value #NORMAL} Used when sending information to an Adapter class
+ */
+ public static final int NORMAL = 1;
+
+ /**
+ * {@value #HEADER_FOOTER} Used when sending information to an Adapter class
+ */
+ public static final int HEADER_FOOTER = 2;
+
+ /**
+ * {@value #PROGRESS_BAR} Used when sending information to an Adapter class
+ */
+ public static final int PROGRESS_BAR = 3;
+
+ /**
+ * {@value #SWITCH} Used when sending information to an Adapter class
+ */
+ public static final int SWITCH = 4;
+
+ /**
+ * {@value #TITLE} Used when sending information to an Adapter class
+ */
+ public static final int TITLE = 5;
+
+ /**
+ * {@value #END_OF_LONG_LIST}
+ * Used to check if at the end of long list
+ * Used in LongListRecyclerviewAdapter
+ */
+ public static final int END_OF_LONG_LIST = 45;
+} \ No newline at end of file
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
new file mode 100644
index 00000000..2e586cdf
--- /dev/null
+++ b/wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/ZoomImageActivity.java
@@ -0,0 +1,25 @@
+package com.example.android.wearable.wear.wearaccessibilityapp;
+
+import android.content.res.Resources.NotFoundException;
+import android.os.Bundle;
+import android.support.wearable.activity.WearableActivity;
+import android.widget.ImageView;
+
+public class ZoomImageActivity extends WearableActivity {
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ setContentView(R.layout.activity_zoom_image);
+
+ // Check if integer was actually given.
+ if(!(getIntent().hasExtra(getString(R.string.intent_extra_image)))) {
+ throw new NotFoundException("Expecting extras");
+ }
+
+ // Grab the resource id from extras and set the image resource.
+ int value = getIntent().getIntExtra(getString(R.string.intent_extra_image), 0);
+ ImageView expandedImage = findViewById(R.id.expanded_image);
+ expandedImage.setImageResource(value);
+ }
+} \ No newline at end of file
diff --git a/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/anim/oobe_swipe_left_long_g_animation_interpolator_0.xml b/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/anim/oobe_swipe_left_long_g_animation_interpolator_0.xml
new file mode 100644
index 00000000..4a5fde9f
--- /dev/null
+++ b/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/anim/oobe_swipe_left_long_g_animation_interpolator_0.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<pathInterpolator
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ android:pathData="M 0.0,0.0 c 0.33333333,0.0 0.83333333333,1.0 1.0,1.0" />
diff --git a/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/anim/oobe_swipe_left_long_g_animation_interpolator_1.xml b/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/anim/oobe_swipe_left_long_g_animation_interpolator_1.xml
new file mode 100644
index 00000000..c421f9e9
--- /dev/null
+++ b/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/anim/oobe_swipe_left_long_g_animation_interpolator_1.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<pathInterpolator
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ android:pathData="M 0.0,0.0 c 0.16666666667,0.0 0.83333333333,1.0 1.0,1.0" />
diff --git a/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/anim/oobe_swipe_left_long_g_animation_interpolator_10.xml b/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/anim/oobe_swipe_left_long_g_animation_interpolator_10.xml
new file mode 100644
index 00000000..dc7ff8c4
--- /dev/null
+++ b/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/anim/oobe_swipe_left_long_g_animation_interpolator_10.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<pathInterpolator
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ android:pathData="M 0.0,0.0 c 0.16666666667,0.16666666667 0.2,1.0 1.0,1.0" />
diff --git a/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/anim/oobe_swipe_left_long_g_animation_interpolator_11.xml b/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/anim/oobe_swipe_left_long_g_animation_interpolator_11.xml
new file mode 100644
index 00000000..21527c53
--- /dev/null
+++ b/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/anim/oobe_swipe_left_long_g_animation_interpolator_11.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<pathInterpolator
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ android:pathData="M 0.0,0.0 c 0.00099999999999,0.0 0.66666667,1.0 1.0,1.0" />
diff --git a/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/anim/oobe_swipe_left_long_g_animation_interpolator_12.xml b/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/anim/oobe_swipe_left_long_g_animation_interpolator_12.xml
new file mode 100644
index 00000000..70897c8c
--- /dev/null
+++ b/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/anim/oobe_swipe_left_long_g_animation_interpolator_12.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<pathInterpolator
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ android:pathData="M 0.0,0.0 c 0.000999999999998,0.0 0.83333333333,1.0 1.0,1.0" />
diff --git a/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/anim/oobe_swipe_left_long_g_animation_interpolator_2.xml b/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/anim/oobe_swipe_left_long_g_animation_interpolator_2.xml
new file mode 100644
index 00000000..d2a75703
--- /dev/null
+++ b/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/anim/oobe_swipe_left_long_g_animation_interpolator_2.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<pathInterpolator
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ android:pathData="M 0.0,0.0 c 0.001,0.0 0.9999,1.0 1.0,1.0" />
diff --git a/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/anim/oobe_swipe_left_long_g_animation_interpolator_3.xml b/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/anim/oobe_swipe_left_long_g_animation_interpolator_3.xml
new file mode 100644
index 00000000..8885a60d
--- /dev/null
+++ b/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/anim/oobe_swipe_left_long_g_animation_interpolator_3.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<pathInterpolator
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ android:pathData="M 0.0,0.0 c 0.0001,0.0 0.9999,1.0 1.0,1.0" />
diff --git a/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/anim/oobe_swipe_left_long_g_animation_interpolator_4.xml b/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/anim/oobe_swipe_left_long_g_animation_interpolator_4.xml
new file mode 100644
index 00000000..aae2dd06
--- /dev/null
+++ b/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/anim/oobe_swipe_left_long_g_animation_interpolator_4.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<pathInterpolator
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ android:pathData="M 0.0,0.0 c 0.16666666667,0.16666666667 0.83333333333,0.83333333333 1.0,1.0" />
diff --git a/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/anim/oobe_swipe_left_long_g_animation_interpolator_5.xml b/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/anim/oobe_swipe_left_long_g_animation_interpolator_5.xml
new file mode 100644
index 00000000..21f31ee6
--- /dev/null
+++ b/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/anim/oobe_swipe_left_long_g_animation_interpolator_5.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<pathInterpolator
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ android:pathData="M 0.0,0.0 c 0.4,0.0 0.83333333333,0.83333333333 1.0,1.0" />
diff --git a/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/anim/oobe_swipe_left_long_g_animation_interpolator_6.xml b/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/anim/oobe_swipe_left_long_g_animation_interpolator_6.xml
new file mode 100644
index 00000000..83735dbd
--- /dev/null
+++ b/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/anim/oobe_swipe_left_long_g_animation_interpolator_6.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<pathInterpolator
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ android:pathData="M 0.0,0.0 c 0.16666666667,0.16666666667 0.66666667,1.0 1.0,1.0" />
diff --git a/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/anim/oobe_swipe_left_long_g_animation_interpolator_7.xml b/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/anim/oobe_swipe_left_long_g_animation_interpolator_7.xml
new file mode 100644
index 00000000..3210d4a1
--- /dev/null
+++ b/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/anim/oobe_swipe_left_long_g_animation_interpolator_7.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<pathInterpolator
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ android:pathData="M 0.0,0.0 c 0.2,0.1 0.2,1.0 1.0,1.0" />
diff --git a/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/anim/oobe_swipe_left_long_g_animation_interpolator_8.xml b/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/anim/oobe_swipe_left_long_g_animation_interpolator_8.xml
new file mode 100644
index 00000000..3b3d5307
--- /dev/null
+++ b/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/anim/oobe_swipe_left_long_g_animation_interpolator_8.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<pathInterpolator
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ android:pathData="M 0.0,0.0 c 0.4,0.4 0.2,1.0 1.0,1.0" />
diff --git a/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/anim/oobe_swipe_left_long_g_animation_interpolator_9.xml b/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/anim/oobe_swipe_left_long_g_animation_interpolator_9.xml
new file mode 100644
index 00000000..71b3644b
--- /dev/null
+++ b/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/anim/oobe_swipe_left_long_g_animation_interpolator_9.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<pathInterpolator
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ android:pathData="M 0.0,0.0 c 0.8,0.0 0.83333333333,0.955555555555 1.0,1.0" />
diff --git a/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/anim/oobe_swipe_left_long_g_ellipse_7_animation.xml b/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/anim/oobe_swipe_left_long_g_ellipse_7_animation.xml
new file mode 100644
index 00000000..2b320323
--- /dev/null
+++ b/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/anim/oobe_swipe_left_long_g_ellipse_7_animation.xml
@@ -0,0 +1,52 @@
+<?xml version="1.0" encoding="utf-8"?>
+<set
+ xmlns:android="http://schemas.android.com/apk/res/android" >
+ <set
+ android:ordering="sequentially" >
+ <objectAnimator
+ android:duration="166"
+ android:propertyName="scaleX"
+ android:valueFrom="0.75"
+ android:valueTo="1.0"
+ android:valueType="floatType"
+ android:interpolator="@android:interpolator/fast_out_slow_in" />
+ <objectAnimator
+ android:duration="500"
+ android:propertyName="scaleX"
+ android:valueFrom="1.0"
+ android:valueTo="1.0"
+ android:valueType="floatType"
+ android:interpolator="@anim/oobe_swipe_left_long_g_animation_interpolator_2" />
+ <objectAnimator
+ android:duration="1833"
+ android:propertyName="scaleX"
+ android:valueFrom="1.0"
+ android:valueTo="1.0"
+ android:valueType="floatType"
+ android:interpolator="@anim/oobe_swipe_left_long_g_animation_interpolator_1" />
+ </set>
+ <set
+ android:ordering="sequentially" >
+ <objectAnimator
+ android:duration="166"
+ android:propertyName="scaleY"
+ android:valueFrom="0.75"
+ android:valueTo="1.0"
+ android:valueType="floatType"
+ android:interpolator="@android:interpolator/fast_out_slow_in" />
+ <objectAnimator
+ android:duration="500"
+ android:propertyName="scaleY"
+ android:valueFrom="1.0"
+ android:valueTo="1.0"
+ android:valueType="floatType"
+ android:interpolator="@anim/oobe_swipe_left_long_g_animation_interpolator_2" />
+ <objectAnimator
+ android:duration="1833"
+ android:propertyName="scaleY"
+ android:valueFrom="1.0"
+ android:valueTo="1.0"
+ android:valueType="floatType"
+ android:interpolator="@anim/oobe_swipe_left_long_g_animation_interpolator_1" />
+ </set>
+</set>
diff --git a/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/anim/oobe_swipe_left_long_g_ellipse_8_animation.xml b/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/anim/oobe_swipe_left_long_g_ellipse_8_animation.xml
new file mode 100644
index 00000000..dde7cf35
--- /dev/null
+++ b/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/anim/oobe_swipe_left_long_g_ellipse_8_animation.xml
@@ -0,0 +1,52 @@
+<?xml version="1.0" encoding="utf-8"?>
+<set
+ xmlns:android="http://schemas.android.com/apk/res/android" >
+ <set
+ android:ordering="sequentially" >
+ <objectAnimator
+ android:duration="166"
+ android:propertyName="scaleX"
+ android:valueFrom="0.2"
+ android:valueTo="1.0"
+ android:valueType="floatType"
+ android:interpolator="@anim/oobe_swipe_left_long_g_animation_interpolator_8" />
+ <objectAnimator
+ android:duration="500"
+ android:propertyName="scaleX"
+ android:valueFrom="1.0"
+ android:valueTo="1.0"
+ android:valueType="floatType"
+ android:interpolator="@anim/oobe_swipe_left_long_g_animation_interpolator_3" />
+ <objectAnimator
+ android:duration="1833"
+ android:propertyName="scaleX"
+ android:valueFrom="1.0"
+ android:valueTo="1.0"
+ android:valueType="floatType"
+ android:interpolator="@anim/oobe_swipe_left_long_g_animation_interpolator_12" />
+ </set>
+ <set
+ android:ordering="sequentially" >
+ <objectAnimator
+ android:duration="166"
+ android:propertyName="scaleY"
+ android:valueFrom="0.2"
+ android:valueTo="1.0"
+ android:valueType="floatType"
+ android:interpolator="@anim/oobe_swipe_left_long_g_animation_interpolator_8" />
+ <objectAnimator
+ android:duration="500"
+ android:propertyName="scaleY"
+ android:valueFrom="1.0"
+ android:valueTo="1.0"
+ android:valueType="floatType"
+ android:interpolator="@anim/oobe_swipe_left_long_g_animation_interpolator_3" />
+ <objectAnimator
+ android:duration="1833"
+ android:propertyName="scaleY"
+ android:valueFrom="1.0"
+ android:valueTo="1.0"
+ android:valueType="floatType"
+ android:interpolator="@anim/oobe_swipe_left_long_g_animation_interpolator_12" />
+ </set>
+</set>
diff --git a/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/anim/oobe_swipe_left_long_g_path_7_animation.xml b/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/anim/oobe_swipe_left_long_g_path_7_animation.xml
new file mode 100644
index 00000000..632d1efe
--- /dev/null
+++ b/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/anim/oobe_swipe_left_long_g_path_7_animation.xml
@@ -0,0 +1,66 @@
+<?xml version="1.0" encoding="utf-8"?>
+<set
+ xmlns:android="http://schemas.android.com/apk/res/android" >
+ <set
+ android:ordering="sequentially" >
+ <objectAnimator
+ android:duration="166"
+ android:propertyName="pathData"
+ android:valueFrom="M 0.0,-20.5 c 11.3218383789,0.0 20.5,9.17816162109 20.5,20.5 c 0.0,11.3218383789 -9.17816162109,20.5 -20.5,20.5 c -11.3218383789,0.0 -20.5,-9.17816162109 -20.5,-20.5 c 0.0,-11.3218383789 9.17816162109,-20.5 20.5,-20.5 Z"
+ android:valueTo="M 0.0,-20.5 c 11.3218383789,0.0 20.5,9.17816162109 20.5,20.5 c 0.0,11.3218383789 -9.17816162109,20.5 -20.5,20.5 c -11.3218383789,0.0 -20.5,-9.17816162109 -20.5,-20.5 c 0.0,-11.3218383789 9.17816162109,-20.5 20.5,-20.5 Z"
+ android:valueType="pathType"
+ android:interpolator="@android:interpolator/linear" />
+ <objectAnimator
+ android:duration="500"
+ android:propertyName="pathData"
+ android:valueFrom="M 0.0,-20.5 c 11.3218383789,0.0 20.5,9.17816162109 20.5,20.5 c 0.0,11.3218383789 -9.17816162109,20.5 -20.5,20.5 c -11.3218383789,0.0 -20.5,-9.17816162109 -20.5,-20.5 c 0.0,-11.3218383789 9.17816162109,-20.5 20.5,-20.5 Z"
+ android:valueTo="M 0.0,-54.5659637451 c 11.3218383789,0.0 20.5,9.17816162109 20.5,20.5 c 0.0,11.3218536377 -4.5699005127,76.4127655029 -20.6393432617,76.4451141357 c -16.069442749,0.0323486328125 -20.3606567383,-65.123260498 -20.3606567383,-76.4451141357 c 0.0,-11.3218383789 9.17816162109,-20.5 20.5,-20.5 Z"
+ android:valueType="pathType"
+ android:interpolator="@anim/oobe_swipe_left_long_g_animation_interpolator_5" />
+ <objectAnimator
+ android:duration="333"
+ android:propertyName="pathData"
+ android:valueFrom="M 0.0,-54.5659637451 c 11.3218383789,0.0 20.5,9.17816162109 20.5,20.5 c 0.0,11.3218536377 -4.5699005127,76.4127655029 -20.6393432617,76.4451141357 c -16.069442749,0.0323486328125 -20.3606567383,-65.123260498 -20.3606567383,-76.4451141357 c 0.0,-11.3218383789 9.17816162109,-20.5 20.5,-20.5 Z"
+ android:valueTo="M 0.0,-54.5659179688 c 11.3218383789,0.0 20.5,9.17816162109 20.5,20.5 c 0.0,11.3218383789 -9.17816162109,20.5 -20.5,20.5 c -11.3218383789,0.0 -20.5,-9.17816162109 -20.5,-20.5 c 0.0,-11.3218383789 9.17816162109,-20.5 20.5,-20.5 Z"
+ android:valueType="pathType"
+ android:interpolator="@anim/oobe_swipe_left_long_g_animation_interpolator_10" />
+ <objectAnimator
+ android:duration="1500"
+ android:propertyName="pathData"
+ android:valueFrom="M 0.0,-54.5659179688 c 11.3218383789,0.0 20.5,9.17816162109 20.5,20.5 c 0.0,11.3218383789 -9.17816162109,20.5 -20.5,20.5 c -11.3218383789,0.0 -20.5,-9.17816162109 -20.5,-20.5 c 0.0,-11.3218383789 9.17816162109,-20.5 20.5,-20.5 Z"
+ android:valueTo="M 0.0,-54.5659179688 c 11.3218383789,0.0 20.5,9.17816162109 20.5,20.5 c 0.0,11.3218383789 -9.17816162109,20.5 -20.5,20.5 c -11.3218383789,0.0 -20.5,-9.17816162109 -20.5,-20.5 c 0.0,-11.3218383789 9.17816162109,-20.5 20.5,-20.5 Z"
+ android:valueType="pathType"
+ android:interpolator="@anim/oobe_swipe_left_long_g_animation_interpolator_1" />
+ </set>
+ <set
+ android:ordering="sequentially" >
+ <objectAnimator
+ android:duration="166"
+ android:propertyName="fillAlpha"
+ android:valueFrom="0.0"
+ android:valueTo="0.7"
+ android:valueType="floatType"
+ android:interpolator="@android:interpolator/fast_out_slow_in" />
+ <objectAnimator
+ android:duration="500"
+ android:propertyName="fillAlpha"
+ android:valueFrom="0.7"
+ android:valueTo="0.7"
+ android:valueType="floatType"
+ android:interpolator="@anim/oobe_swipe_left_long_g_animation_interpolator_2" />
+ <objectAnimator
+ android:duration="333"
+ android:propertyName="fillAlpha"
+ android:valueFrom="0.7"
+ android:valueTo="0.0"
+ android:valueType="floatType"
+ android:interpolator="@anim/oobe_swipe_left_long_g_animation_interpolator_11" />
+ <objectAnimator
+ android:duration="1500"
+ android:propertyName="fillAlpha"
+ android:valueFrom="0.0"
+ android:valueTo="0.0"
+ android:valueType="floatType"
+ android:interpolator="@anim/oobe_swipe_left_long_g_animation_interpolator_0" />
+ </set>
+</set>
diff --git a/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/anim/oobe_swipe_left_long_g_path_8_animation.xml b/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/anim/oobe_swipe_left_long_g_path_8_animation.xml
new file mode 100644
index 00000000..ec482a0c
--- /dev/null
+++ b/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/anim/oobe_swipe_left_long_g_path_8_animation.xml
@@ -0,0 +1,73 @@
+<?xml version="1.0" encoding="utf-8"?>
+<set
+ xmlns:android="http://schemas.android.com/apk/res/android" >
+ <set
+ android:ordering="sequentially" >
+ <objectAnimator
+ android:duration="166"
+ android:propertyName="pathData"
+ android:valueFrom="M 0.0,-20.5 c 11.3218383789,0.0 20.5,9.17816162109 20.5,20.5 c 0.0,11.3218383789 -9.17816162109,20.5 -20.5,20.5 c -11.3218383789,0.0 -20.5,-9.17816162109 -20.5,-20.5 c 0.0,-11.3218383789 9.17816162109,-20.5 20.5,-20.5 Z"
+ android:valueTo="M 0.0,-20.5 c 11.3218383789,0.0 20.5,9.17816162109 20.5,20.5 c 0.0,11.3218383789 -9.17816162109,20.5 -20.5,20.5 c -11.3218383789,0.0 -20.5,-9.17816162109 -20.5,-20.5 c 0.0,-11.3218383789 9.17816162109,-20.5 20.5,-20.5 Z"
+ android:valueType="pathType"
+ android:interpolator="@anim/oobe_swipe_left_long_g_animation_interpolator_8" />
+ <objectAnimator
+ android:duration="500"
+ android:propertyName="pathData"
+ android:valueFrom="M 0.0,-20.5 c 11.3218383789,0.0 20.5,9.17816162109 20.5,20.5 c 0.0,11.3218383789 -9.17816162109,20.5 -20.5,20.5 c -11.3218383789,0.0 -20.5,-9.17816162109 -20.5,-20.5 c 0.0,-11.3218383789 9.17816162109,-20.5 20.5,-20.5 Z"
+ android:valueTo="M 0.0,-83.0 c 11.3218383789,0.0 20.5,9.17816162109 20.5,20.5 c 0.0,11.3218383789 -20.365234375,98.5 -20.365234375,98.5 c 0.0,0.0 -20.634765625,-87.1781616211 -20.634765625,-98.5 c 0.0,-11.3218383789 9.17816162109,-20.5 20.5,-20.5 Z"
+ android:valueType="pathType"
+ android:interpolator="@anim/oobe_swipe_left_long_g_animation_interpolator_5" />
+ <objectAnimator
+ android:duration="166"
+ android:propertyName="pathData"
+ android:valueFrom="M 0.0,-83.0 c 11.3218383789,0.0 20.5,9.17816162109 20.5,20.5 c 0.0,11.3218383789 -20.365234375,98.5 -20.365234375,98.5 c 0.0,0.0 -20.634765625,-87.1781616211 -20.634765625,-98.5 c 0.0,-11.3218383789 9.17816162109,-20.5 20.5,-20.5 Z"
+ android:valueTo="M 0.0,-80.4920959473 c 11.3218383789,0.0 20.5,9.17816162109 20.5,20.5 c 0.0,11.3218383789 -9.17816162109,20.5 -20.5,20.5 c -11.3218383789,0.0 -20.5,-9.17816162109 -20.5,-20.5 c 0.0,-11.3218383789 9.17816162109,-20.5 20.5,-20.5 Z"
+ android:valueType="pathType"
+ android:interpolator="@anim/oobe_swipe_left_long_g_animation_interpolator_4" />
+ <objectAnimator
+ android:duration="166"
+ android:propertyName="pathData"
+ android:valueFrom="M 0.0,-80.4920959473 c 11.3218383789,0.0 20.5,9.17816162109 20.5,20.5 c 0.0,11.3218383789 -9.17816162109,20.5 -20.5,20.5 c -11.3218383789,0.0 -20.5,-9.17816162109 -20.5,-20.5 c 0.0,-11.3218383789 9.17816162109,-20.5 20.5,-20.5 Z"
+ android:valueTo="M 0.0,-63.2420959473 c 1.10456848145,0.0 2.0,0.895431518555 2.0,2.0 c 0.0,1.10456848145 -0.895431518555,2.0 -2.0,2.0 c -1.10456848145,0.0 -2.0,-0.895431518555 -2.0,-2.0 c 0.0,-1.10456848145 0.895431518555,-2.0 2.0,-2.0 Z"
+ android:valueType="pathType"
+ android:interpolator="@anim/oobe_swipe_left_long_g_animation_interpolator_6" />
+ <objectAnimator
+ android:duration="1500"
+ android:propertyName="pathData"
+ android:valueFrom="M 0.0,-63.2420959473 c 1.10456848145,0.0 2.0,0.895431518555 2.0,2.0 c 0.0,1.10456848145 -0.895431518555,2.0 -2.0,2.0 c -1.10456848145,0.0 -2.0,-0.895431518555 -2.0,-2.0 c 0.0,-1.10456848145 0.895431518555,-2.0 2.0,-2.0 Z"
+ android:valueTo="M 0.0,-63.2420959473 c 1.10456848145,0.0 2.0,0.895431518555 2.0,2.0 c 0.0,1.10456848145 -0.895431518555,2.0 -2.0,2.0 c -1.10456848145,0.0 -2.0,-0.895431518555 -2.0,-2.0 c 0.0,-1.10456848145 0.895431518555,-2.0 2.0,-2.0 Z"
+ android:valueType="pathType"
+ android:interpolator="@anim/oobe_swipe_left_long_g_animation_interpolator_0" />
+ </set>
+ <set
+ android:ordering="sequentially" >
+ <objectAnimator
+ android:duration="166"
+ android:propertyName="fillAlpha"
+ android:valueFrom="0.0"
+ android:valueTo="1.0"
+ android:valueType="floatType"
+ android:interpolator="@anim/oobe_swipe_left_long_g_animation_interpolator_7" />
+ <objectAnimator
+ android:duration="500"
+ android:propertyName="fillAlpha"
+ android:valueFrom="1.0"
+ android:valueTo="1.0"
+ android:valueType="floatType"
+ android:interpolator="@anim/oobe_swipe_left_long_g_animation_interpolator_3" />
+ <objectAnimator
+ android:duration="333"
+ android:propertyName="fillAlpha"
+ android:valueFrom="1.0"
+ android:valueTo="0.0"
+ android:valueType="floatType"
+ android:interpolator="@anim/oobe_swipe_left_long_g_animation_interpolator_11" />
+ <objectAnimator
+ android:duration="1500"
+ android:propertyName="fillAlpha"
+ android:valueFrom="0.0"
+ android:valueTo="0.0"
+ android:valueType="floatType"
+ android:interpolator="@anim/oobe_swipe_left_long_g_animation_interpolator_0" />
+ </set>
+</set>
diff --git a/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/anim/oobe_swipe_left_long_g_swipeupbluecircle_2_animation.xml b/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/anim/oobe_swipe_left_long_g_swipeupbluecircle_2_animation.xml
new file mode 100644
index 00000000..d2986cda
--- /dev/null
+++ b/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/anim/oobe_swipe_left_long_g_swipeupbluecircle_2_animation.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="utf-8"?>
+<set
+ xmlns:android="http://schemas.android.com/apk/res/android" >
+ <set
+ android:ordering="sequentially" >
+ <objectAnimator
+ android:duration="666"
+ android:propertyName="translateX"
+ android:valueFrom="153.575"
+ android:valueTo="100.65667"
+ android:valueType="floatType"
+ android:interpolator="@anim/oobe_swipe_left_long_g_animation_interpolator_9" />
+ <objectAnimator
+ android:duration="1833"
+ android:propertyName="translateX"
+ android:valueFrom="100.65667"
+ android:valueTo="100.65667"
+ android:valueType="floatType"
+ android:interpolator="@anim/oobe_swipe_left_long_g_animation_interpolator_1" />
+ </set>
+</set>
diff --git a/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/anim/oobe_swipe_left_long_g_swipeuptrace_2_animation.xml b/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/anim/oobe_swipe_left_long_g_swipeuptrace_2_animation.xml
new file mode 100644
index 00000000..d2986cda
--- /dev/null
+++ b/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/anim/oobe_swipe_left_long_g_swipeuptrace_2_animation.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="utf-8"?>
+<set
+ xmlns:android="http://schemas.android.com/apk/res/android" >
+ <set
+ android:ordering="sequentially" >
+ <objectAnimator
+ android:duration="666"
+ android:propertyName="translateX"
+ android:valueFrom="153.575"
+ android:valueTo="100.65667"
+ android:valueType="floatType"
+ android:interpolator="@anim/oobe_swipe_left_long_g_animation_interpolator_9" />
+ <objectAnimator
+ android:duration="1833"
+ android:propertyName="translateX"
+ android:valueFrom="100.65667"
+ android:valueTo="100.65667"
+ android:valueType="floatType"
+ android:interpolator="@anim/oobe_swipe_left_long_g_animation_interpolator_1" />
+ </set>
+</set>
diff --git a/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/anim/oobe_tap_animation_interpolator_0.xml b/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/anim/oobe_tap_animation_interpolator_0.xml
new file mode 100644
index 00000000..71f0d54d
--- /dev/null
+++ b/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/anim/oobe_tap_animation_interpolator_0.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<pathInterpolator
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ android:pathData="M 0.0,0.0 c 0.4,0.4 0.509350957076,1.0 1.0,1.0" />
diff --git a/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/anim/oobe_tap_animation_interpolator_1.xml b/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/anim/oobe_tap_animation_interpolator_1.xml
new file mode 100644
index 00000000..c421f9e9
--- /dev/null
+++ b/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/anim/oobe_tap_animation_interpolator_1.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<pathInterpolator
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ android:pathData="M 0.0,0.0 c 0.16666666667,0.0 0.83333333333,1.0 1.0,1.0" />
diff --git a/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/anim/oobe_tap_animation_interpolator_2.xml b/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/anim/oobe_tap_animation_interpolator_2.xml
new file mode 100644
index 00000000..543371da
--- /dev/null
+++ b/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/anim/oobe_tap_animation_interpolator_2.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<pathInterpolator
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ android:pathData="M 0.0,0.0 c 0.0001,0.0 1.0,1.0 1.0,1.0" />
diff --git a/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/anim/oobe_tap_animation_interpolator_3.xml b/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/anim/oobe_tap_animation_interpolator_3.xml
new file mode 100644
index 00000000..5bb175cb
--- /dev/null
+++ b/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/anim/oobe_tap_animation_interpolator_3.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<pathInterpolator
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ android:pathData="M 0.0,0.0 c 0.001,0.0 1.0,1.0 1.0,1.0" />
diff --git a/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/anim/oobe_tap_animation_interpolator_4.xml b/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/anim/oobe_tap_animation_interpolator_4.xml
new file mode 100644
index 00000000..b93f4367
--- /dev/null
+++ b/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/anim/oobe_tap_animation_interpolator_4.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<pathInterpolator
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ android:pathData="M 0.0,0.0 c 0.2,0.3 0.2,1.0 1.0,1.0" />
diff --git a/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/anim/oobe_tap_animation_interpolator_5.xml b/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/anim/oobe_tap_animation_interpolator_5.xml
new file mode 100644
index 00000000..4f8fb2bb
--- /dev/null
+++ b/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/anim/oobe_tap_animation_interpolator_5.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<pathInterpolator
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ android:pathData="M 0.0,0.0 c 0.001,0.0 0.83333333333,1.0 1.0,1.0" />
diff --git a/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/anim/oobe_tap_animation_interpolator_6.xml b/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/anim/oobe_tap_animation_interpolator_6.xml
new file mode 100644
index 00000000..e118b802
--- /dev/null
+++ b/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/anim/oobe_tap_animation_interpolator_6.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<pathInterpolator
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ android:pathData="M 0.0,0.0 c 0.001,0.0 0.66666667,1.0 1.0,1.0" />
diff --git a/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/anim/oobe_tap_ellipse_21_animation.xml b/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/anim/oobe_tap_ellipse_21_animation.xml
new file mode 100644
index 00000000..e0e0a24c
--- /dev/null
+++ b/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/anim/oobe_tap_ellipse_21_animation.xml
@@ -0,0 +1,52 @@
+<?xml version="1.0" encoding="utf-8"?>
+<set
+ xmlns:android="http://schemas.android.com/apk/res/android" >
+ <set
+ android:ordering="sequentially" >
+ <objectAnimator
+ android:duration="500"
+ android:propertyName="scaleX"
+ android:valueFrom="0.5"
+ android:valueTo="1.0"
+ android:valueType="floatType"
+ android:interpolator="@android:interpolator/fast_out_slow_in" />
+ <objectAnimator
+ android:duration="500"
+ android:propertyName="scaleX"
+ android:valueFrom="1.0"
+ android:valueTo="0.5"
+ android:valueType="floatType"
+ android:interpolator="@anim/oobe_tap_animation_interpolator_5" />
+ <objectAnimator
+ android:duration="1500"
+ android:propertyName="scaleX"
+ android:valueFrom="0.5"
+ android:valueTo="0.5"
+ android:valueType="floatType"
+ android:interpolator="@anim/oobe_tap_animation_interpolator_1" />
+ </set>
+ <set
+ android:ordering="sequentially" >
+ <objectAnimator
+ android:duration="500"
+ android:propertyName="scaleY"
+ android:valueFrom="0.5"
+ android:valueTo="1.0"
+ android:valueType="floatType"
+ android:interpolator="@android:interpolator/fast_out_slow_in" />
+ <objectAnimator
+ android:duration="500"
+ android:propertyName="scaleY"
+ android:valueFrom="1.0"
+ android:valueTo="0.5"
+ android:valueType="floatType"
+ android:interpolator="@anim/oobe_tap_animation_interpolator_5" />
+ <objectAnimator
+ android:duration="1500"
+ android:propertyName="scaleY"
+ android:valueFrom="0.5"
+ android:valueTo="0.5"
+ android:valueType="floatType"
+ android:interpolator="@anim/oobe_tap_animation_interpolator_1" />
+ </set>
+</set>
diff --git a/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/anim/oobe_tap_ellipse_22_animation.xml b/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/anim/oobe_tap_ellipse_22_animation.xml
new file mode 100644
index 00000000..fa6c5e12
--- /dev/null
+++ b/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/anim/oobe_tap_ellipse_22_animation.xml
@@ -0,0 +1,52 @@
+<?xml version="1.0" encoding="utf-8"?>
+<set
+ xmlns:android="http://schemas.android.com/apk/res/android" >
+ <set
+ android:ordering="sequentially" >
+ <objectAnimator
+ android:duration="500"
+ android:propertyName="scaleX"
+ android:valueFrom="0.5"
+ android:valueTo="1.0"
+ android:valueType="floatType"
+ android:interpolator="@anim/oobe_tap_animation_interpolator_4" />
+ <objectAnimator
+ android:duration="500"
+ android:propertyName="scaleX"
+ android:valueFrom="1.0"
+ android:valueTo="0.5"
+ android:valueType="floatType"
+ android:interpolator="@anim/oobe_tap_animation_interpolator_2" />
+ <objectAnimator
+ android:duration="1500"
+ android:propertyName="scaleX"
+ android:valueFrom="0.5"
+ android:valueTo="0.5"
+ android:valueType="floatType"
+ android:interpolator="@android:interpolator/linear" />
+ </set>
+ <set
+ android:ordering="sequentially" >
+ <objectAnimator
+ android:duration="500"
+ android:propertyName="scaleY"
+ android:valueFrom="0.5"
+ android:valueTo="1.0"
+ android:valueType="floatType"
+ android:interpolator="@anim/oobe_tap_animation_interpolator_4" />
+ <objectAnimator
+ android:duration="500"
+ android:propertyName="scaleY"
+ android:valueFrom="1.0"
+ android:valueTo="0.5"
+ android:valueType="floatType"
+ android:interpolator="@anim/oobe_tap_animation_interpolator_2" />
+ <objectAnimator
+ android:duration="1500"
+ android:propertyName="scaleY"
+ android:valueFrom="0.5"
+ android:valueTo="0.5"
+ android:valueType="floatType"
+ android:interpolator="@android:interpolator/linear" />
+ </set>
+</set>
diff --git a/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/anim/oobe_tap_path_23_animation.xml b/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/anim/oobe_tap_path_23_animation.xml
new file mode 100644
index 00000000..9f3b584c
--- /dev/null
+++ b/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/anim/oobe_tap_path_23_animation.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="utf-8"?>
+<set
+ xmlns:android="http://schemas.android.com/apk/res/android" >
+ <set
+ android:ordering="sequentially" >
+ <objectAnimator
+ android:duration="500"
+ android:propertyName="fillAlpha"
+ android:valueFrom="0.0"
+ android:valueTo="0.7"
+ android:valueType="floatType"
+ android:interpolator="@android:interpolator/fast_out_slow_in" />
+ <objectAnimator
+ android:duration="500"
+ android:propertyName="fillAlpha"
+ android:valueFrom="0.7"
+ android:valueTo="0.0"
+ android:valueType="floatType"
+ android:interpolator="@anim/oobe_tap_animation_interpolator_3" />
+ <objectAnimator
+ android:duration="1500"
+ android:propertyName="fillAlpha"
+ android:valueFrom="0.0"
+ android:valueTo="0.0"
+ android:valueType="floatType"
+ android:interpolator="@android:interpolator/linear" />
+ </set>
+</set>
diff --git a/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/anim/oobe_tap_path_24_animation.xml b/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/anim/oobe_tap_path_24_animation.xml
new file mode 100644
index 00000000..c2b370ad
--- /dev/null
+++ b/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/anim/oobe_tap_path_24_animation.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="utf-8"?>
+<set
+ xmlns:android="http://schemas.android.com/apk/res/android" >
+ <set
+ android:ordering="sequentially" >
+ <objectAnimator
+ android:duration="500"
+ android:propertyName="fillAlpha"
+ android:valueFrom="0.0"
+ android:valueTo="1.0"
+ android:valueType="floatType"
+ android:interpolator="@anim/oobe_tap_animation_interpolator_4" />
+ <objectAnimator
+ android:duration="500"
+ android:propertyName="fillAlpha"
+ android:valueFrom="1.0"
+ android:valueTo="0.0"
+ android:valueType="floatType"
+ android:interpolator="@anim/oobe_tap_animation_interpolator_2" />
+ <objectAnimator
+ android:duration="1500"
+ android:propertyName="fillAlpha"
+ android:valueFrom="0.0"
+ android:valueTo="0.0"
+ android:valueType="floatType"
+ android:interpolator="@android:interpolator/linear" />
+ </set>
+</set>
diff --git a/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/anim/oobe_tap_rectangle_path_3_animation.xml b/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/anim/oobe_tap_rectangle_path_3_animation.xml
new file mode 100644
index 00000000..735ccd63
--- /dev/null
+++ b/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/anim/oobe_tap_rectangle_path_3_animation.xml
@@ -0,0 +1,45 @@
+<?xml version="1.0" encoding="utf-8"?>
+<set
+ xmlns:android="http://schemas.android.com/apk/res/android" >
+ <set
+ android:ordering="sequentially" >
+ <objectAnimator
+ android:duration="1000"
+ android:propertyName="pathData"
+ android:valueFrom="M 0.0,-25.0 l 0.0,0.0 c 13.807118745,0.0 25.0,11.192881255 25.0,25.0 l 0.0,0.0 c 0.0,13.807118745 -11.192881255,25.0 -25.0,25.0 l 0.0,0.0 c -13.807118745,0.0 -25.0,-11.192881255 -25.0,-25.0 l 0.0,0.0 c 0.0,-13.807118745 11.192881255,-25.0 25.0,-25.0 Z"
+ android:valueTo="M 0.0,-75.0 l 0.0,0.0 c 41.421356235,0.0 75.0,33.578643765 75.0,75.0 l 0.0,0.0 c 0.0,41.421356235 -33.578643765,75.0 -75.0,75.0 l 0.0,0.0 c -41.421356235,0.0 -75.0,-33.578643765 -75.0,-75.0 l 0.0,0.0 c 0.0,-41.421356235 33.578643765,-75.0 75.0,-75.0 Z"
+ android:valueType="pathType"
+ android:interpolator="@anim/oobe_tap_animation_interpolator_0" />
+ <objectAnimator
+ android:duration="1500"
+ android:propertyName="pathData"
+ android:valueFrom="M 0.0,-75.0 l 0.0,0.0 c 41.421356235,0.0 75.0,33.578643765 75.0,75.0 l 0.0,0.0 c 0.0,41.421356235 -33.578643765,75.0 -75.0,75.0 l 0.0,0.0 c -41.421356235,0.0 -75.0,-33.578643765 -75.0,-75.0 l 0.0,0.0 c 0.0,-41.421356235 33.578643765,-75.0 75.0,-75.0 Z"
+ android:valueTo="M 0.0,-75.0 l 0.0,0.0 c 41.421356235,0.0 75.0,33.578643765 75.0,75.0 l 0.0,0.0 c 0.0,41.421356235 -33.578643765,75.0 -75.0,75.0 l 0.0,0.0 c -41.421356235,0.0 -75.0,-33.578643765 -75.0,-75.0 l 0.0,0.0 c 0.0,-41.421356235 33.578643765,-75.0 75.0,-75.0 Z"
+ android:valueType="pathType"
+ android:interpolator="@anim/oobe_tap_animation_interpolator_1" />
+ </set>
+ <set
+ android:ordering="sequentially" >
+ <objectAnimator
+ android:duration="500"
+ android:propertyName="fillAlpha"
+ android:valueFrom="0.0"
+ android:valueTo="0.2"
+ android:valueType="floatType"
+ android:interpolator="@android:interpolator/fast_out_slow_in" />
+ <objectAnimator
+ android:duration="500"
+ android:propertyName="fillAlpha"
+ android:valueFrom="0.2"
+ android:valueTo="0.0"
+ android:valueType="floatType"
+ android:interpolator="@anim/oobe_tap_animation_interpolator_6" />
+ <objectAnimator
+ android:duration="1500"
+ android:propertyName="fillAlpha"
+ android:valueFrom="0.0"
+ android:valueTo="0.0"
+ android:valueType="floatType"
+ android:interpolator="@anim/oobe_tap_animation_interpolator_1" />
+ </set>
+</set>
diff --git a/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/drawable/accept_circle.xml b/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/drawable/accept_circle.xml
new file mode 100644
index 00000000..17e818b1
--- /dev/null
+++ b/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/drawable/accept_circle.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
+ <item>
+ <shape android:shape="oval">
+ <solid android:color="?android:colorAccent"/>
+ <size
+ android:height="40dp"
+ android:width="40dp"/>
+ </shape>
+ </item>
+ <item
+ android:gravity="center">
+ <vector
+ android:height="24dp"
+ android:viewportHeight="24.0"
+ android:viewportWidth="24.0"
+ android:width="24dp">
+ <path
+ android:fillColor="#FFFFFF"
+ android:pathData="M9,16.17L4.83,12l-1.42,1.41L9,19 21,7l-1.41,-1.41z"/>
+ </vector>
+ </item>
+</layer-list> \ No newline at end of file
diff --git a/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/drawable/accessibility_circle.xml b/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/drawable/accessibility_circle.xml
new file mode 100644
index 00000000..fc68c5c1
--- /dev/null
+++ b/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/drawable/accessibility_circle.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8"?>
+<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
+ <item>
+ <shape android:shape="oval">
+ <solid android:color="?android:colorPrimaryDark"/>
+ <size
+ android:height="40dp"
+ android:width="40dp"/>
+ </shape>
+ </item>
+ <item
+ android:gravity="center">
+ <vector
+ android:height="24dp"
+ android:viewportHeight="24.0"
+ android:viewportWidth="24.0"
+ android:width="24dp">
+ <path
+ android:fillColor="#FFFFFF"
+ android:pathData="M20.5,6c-2.61,0.7 -5.67,1 -8.5,1s-5.89,-0.3 -8.5,-1L3,8c1.86,
+ 0.5 4,0.83 6,1v13h2v-6h2v6h2V9c2,-0.17 4.14,-0.5 6,-1l-0.5,-2zM12,6c1.1,
+ 0 2,-0.9 2,-2s-0.9,-2 -2,-2 -2,0.9 -2,2 0.9,2 2,2z"/>
+ </vector>
+ </item>
+</layer-list> \ No newline at end of file
diff --git a/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/drawable/arrow.xml b/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/drawable/arrow.xml
new file mode 100644
index 00000000..9263cc17
--- /dev/null
+++ b/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/drawable/arrow.xml
@@ -0,0 +1,9 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+ android:height="24dp"
+ android:viewportHeight="24.0"
+ android:viewportWidth="24.0"
+ android:width="24dp">
+ <path
+ android:fillColor="#FFFFFF"
+ android:pathData="M8.59,16.34l4.58,-4.59 -4.58,-4.59L10,5.75l6,6 -6,6z"/>
+</vector>
diff --git a/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/drawable/arrow_circle.xml b/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/drawable/arrow_circle.xml
new file mode 100644
index 00000000..bb71babb
--- /dev/null
+++ b/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/drawable/arrow_circle.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
+ <item>
+ <shape android:shape="oval">
+ <solid android:color="?android:colorPrimaryDark"/>
+ <size
+ android:height="40dp"
+ android:width="40dp"/>
+ </shape>
+ </item>
+ <item
+ android:gravity="center">
+ <vector
+ android:height="24dp"
+ android:viewportHeight="48.0"
+ android:viewportWidth="48.0"
+ android:width="24dp">
+ <path
+ android:fillColor="#FFFFFF"
+ android:pathData="M24,8l-2.83,2.83L32.34,22H8v4h24.34L21.17,37.17 24,40l16,-16z"/>
+ </vector>
+ </item>
+</layer-list> \ No newline at end of file
diff --git a/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/drawable/avatar.png b/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/drawable/avatar.png
new file mode 100644
index 00000000..79534872
--- /dev/null
+++ b/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/drawable/avatar.png
Binary files differ
diff --git a/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/drawable/birds.png b/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/drawable/birds.png
new file mode 100644
index 00000000..724f4e6f
--- /dev/null
+++ b/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/drawable/birds.png
Binary files differ
diff --git a/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/drawable/bow.png b/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/drawable/bow.png
new file mode 100644
index 00000000..6c6b3367
--- /dev/null
+++ b/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/drawable/bow.png
Binary files differ
diff --git a/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/drawable/cats.png b/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/drawable/cats.png
new file mode 100644
index 00000000..ebd2eac9
--- /dev/null
+++ b/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/drawable/cats.png
Binary files differ
diff --git a/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/drawable/circle.xml b/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/drawable/circle.xml
new file mode 100644
index 00000000..44e80634
--- /dev/null
+++ b/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/drawable/circle.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="utf-8"?>
+<shape xmlns:android="http//schemas.android.com/apk/res/android"
+ android:shape="oval">
+ <solid
+ android:color="#ffffffff"/>
+ <size
+ android:height="40dp"
+ android:width="40dp"/>
+</shape> \ No newline at end of file
diff --git a/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/drawable/controls_circle.xml b/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/drawable/controls_circle.xml
new file mode 100644
index 00000000..77d66e62
--- /dev/null
+++ b/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/drawable/controls_circle.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="utf-8"?>
+<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
+ <item>
+ <shape android:shape="oval">
+ <solid android:color="?android:colorPrimaryDark"/>
+ <size
+ android:height="40dp"
+ android:width="40dp"/>
+ </shape>
+ </item>
+ <item
+ android:gravity="center">
+ <vector
+ android:height="24dp"
+ android:viewportHeight="24.0"
+ android:viewportWidth="24.0"
+ android:width="24dp">
+ <path
+ android:fillColor="#FFFFFF"
+ android:pathData="M12,2C6.48,2 2,6.48 2,12s4.48,10 10,10 10,-4.48 10,
+ -10S17.52,2 12,2zM10,17l-5,-5 1.41,-1.41L10,14.17l7.59,-7.59L19,8l-9,9z"/>
+ </vector>
+ </item>
+</layer-list> \ No newline at end of file
diff --git a/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/drawable/deny_circle.xml b/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/drawable/deny_circle.xml
new file mode 100644
index 00000000..9f9bb149
--- /dev/null
+++ b/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/drawable/deny_circle.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="utf-8"?>
+<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
+ <item>
+ <shape android:shape="oval">
+ <solid android:color="?android:colorButtonNormal"/>
+ <size
+ android:height="40dp"
+ android:width="40dp"/>
+ </shape>
+ </item>
+ <item
+ android:gravity="center">
+ <vector
+ android:height="24dp"
+ android:viewportHeight="24.0"
+ android:viewportWidth="24.0"
+ android:width="24dp">
+ <path
+ android:fillColor="#FFFFFF"
+ android:pathData="M19,6.41L17.59,5 12,10.59 6.41,5 5,6.41 10.59,12 5,
+ 17.59 6.41,19 12,13.41 17.59,19 19,17.59 13.41,12z"/>
+ </vector>
+ </item>
+</layer-list> \ No newline at end of file
diff --git a/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/drawable/dialogs_circle.xml b/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/drawable/dialogs_circle.xml
new file mode 100644
index 00000000..aae342f3
--- /dev/null
+++ b/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/drawable/dialogs_circle.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="utf-8"?>
+<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
+ <item>
+ <shape android:shape="oval">
+ <solid android:color="?android:colorPrimaryDark"/>
+ <size
+ android:height="40dp"
+ android:width="40dp"/>
+ </shape>
+ </item>
+ <item
+ android:gravity="center">
+ <vector
+ android:height="24dp"
+ android:viewportHeight="24.0"
+ android:viewportWidth="24.0"
+ android:width="24dp">
+ <path
+ android:fillColor="#FFFFFF"
+ android:pathData="M12,2C6.48,2 2,6.48 2,12s4.48,10 10,10 10,-4.48 10,
+ -10S17.52,2 12,2zM13,17h-2v-2h2v2zM13,13h-2L11,7h2v6z"/>
+ </vector>
+ </item>
+</layer-list> \ No newline at end of file
diff --git a/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/drawable/dog.png b/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/drawable/dog.png
new file mode 100644
index 00000000..30ff7f79
--- /dev/null
+++ b/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/drawable/dog.png
Binary files differ
diff --git a/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/drawable/hamster.png b/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/drawable/hamster.png
new file mode 100644
index 00000000..c6f67dfd
--- /dev/null
+++ b/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/drawable/hamster.png
Binary files differ
diff --git a/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/drawable/heart.xml b/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/drawable/heart.xml
new file mode 100644
index 00000000..0a026b6c
--- /dev/null
+++ b/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/drawable/heart.xml
@@ -0,0 +1,11 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+ android:height="24dp"
+ android:viewportHeight="24.0"
+ android:viewportWidth="24.0"
+ android:width="24dp">
+ <path
+ android:fillColor="#FFFFFF"
+ android:pathData="M12,21.35l-1.45,-1.32C5.4,15.36 2,12.28 2,8.5 2,5.42 4.42,
+ 3 7.5,3c1.74,0 3.41,0.81 4.5,2.09C13.09,3.81 14.76,3 16.5,3 19.58,3 22,
+ 5.42 22,8.5c0,3.78 -3.4,6.86 -8.55,11.54L12,21.35z"/>
+</vector>
diff --git a/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/drawable/heart_circle.xml b/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/drawable/heart_circle.xml
new file mode 100644
index 00000000..4dfddcec
--- /dev/null
+++ b/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/drawable/heart_circle.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="utf-8"?>
+<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
+ <item>
+ <shape android:shape="oval">
+ <solid android:color="?android:colorPrimaryDark"/>
+ <size
+ android:height="40dp"
+ android:width="40dp"/>
+ </shape>
+ </item>
+ <item
+ android:drawable="@drawable/heart"
+ android:gravity="center">
+ </item>
+</layer-list> \ No newline at end of file
diff --git a/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/drawable/ic_view_list_white_1x_web_48dp.png b/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/drawable/ic_view_list_white_1x_web_48dp.png
new file mode 100644
index 00000000..b81d9102
--- /dev/null
+++ b/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/drawable/ic_view_list_white_1x_web_48dp.png
Binary files differ
diff --git a/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/drawable/launcher_image.xml b/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/drawable/launcher_image.xml
new file mode 100644
index 00000000..2bedfd56
--- /dev/null
+++ b/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/drawable/launcher_image.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8"?>
+<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
+ <item>
+ <shape android:shape="oval">
+ <solid android:color="@color/icon_color"/>
+ <size
+ android:height="40dp"
+ android:width="40dp"/>
+ </shape>
+ </item>
+ <item
+ android:gravity="center">
+ <vector
+ android:height="24dp"
+ android:viewportHeight="24.0"
+ android:viewportWidth="24.0"
+ android:width="24dp">
+ <path
+ android:fillColor="#FFFFFF"
+ android:pathData="M20,12c0,-2.54 -1.19,-4.81 -3.04,-6.27L16,0H8l-0.95,5.73C5.19,
+ 7.19 4,9.45 4,12s1.19,4.81 3.05,6.27L8,24h8l0.96,-5.73C18.81,16.81 20,
+ 14.54 20,12zM6,12c0,-3.31 2.69,-6 6,-6s6,2.69 6,6 -2.69,6 -6,6 -6,
+ -2.69 -6,-6z"/>
+ </vector>
+ </item>
+</layer-list> \ No newline at end of file
diff --git a/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/drawable/list_arrow.xml b/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/drawable/list_arrow.xml
new file mode 100644
index 00000000..9263cc17
--- /dev/null
+++ b/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/drawable/list_arrow.xml
@@ -0,0 +1,9 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+ android:height="24dp"
+ android:viewportHeight="24.0"
+ android:viewportWidth="24.0"
+ android:width="24dp">
+ <path
+ android:fillColor="#FFFFFF"
+ android:pathData="M8.59,16.34l4.58,-4.59 -4.58,-4.59L10,5.75l6,6 -6,6z"/>
+</vector>
diff --git a/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/drawable/lists_circle.xml b/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/drawable/lists_circle.xml
new file mode 100644
index 00000000..400eec7a
--- /dev/null
+++ b/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/drawable/lists_circle.xml
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="utf-8"?>
+<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
+ <item>
+ <shape android:shape="oval">
+ <solid android:color="?android:colorPrimaryDark"/>
+ <size
+ android:height="40dp"
+ android:width="40dp"/>
+ </shape>
+ </item>
+ <item
+ android:gravity="center">
+ <vector
+ android:height="24dp"
+ android:viewportHeight="24.0"
+ android:viewportWidth="24.0"
+ android:width="24dp">
+ <path
+ android:fillColor="#FFFFFF"
+ android:pathData="M-278.33,-374.17h76v76h-76z"/>
+ <path
+ android:fillColor="#FFFFFF"
+ android:pathData="M2,4h4v4h-4z"/>
+ <path
+ android:fillColor="#FFFFFF"
+ android:pathData="M8,4h14v4h-14z"/>
+ <path
+ android:fillColor="#FFFFFF"
+ android:pathData="M2,10h4v4h-4z"/>
+ <path
+ android:fillColor="#FFFFFF"
+ android:pathData="M8,10h14v4h-14z"/>
+ <path
+ android:fillColor="#FFFFFF"
+ android:pathData="M2,16h4v4h-4z"/>
+ <path
+ android:fillColor="#FFFFFF"
+ android:pathData="M8,16h14v4h-14z"/>
+ </vector>
+ </item>
+</layer-list> \ No newline at end of file
diff --git a/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/drawable/notifications_circle.xml b/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/drawable/notifications_circle.xml
new file mode 100644
index 00000000..aeda58a1
--- /dev/null
+++ b/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/drawable/notifications_circle.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8"?>
+<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
+ <item>
+ <shape android:shape="oval">
+ <solid android:color="?android:colorPrimaryDark"/>
+ <size
+ android:height="40dp"
+ android:width="40dp"/>
+ </shape>
+ </item>
+ <item
+ android:gravity="center">
+ <vector
+ android:height="24dp"
+ android:viewportHeight="24.0"
+ android:viewportWidth="24.0"
+ android:width="24dp">
+ <path
+ android:fillColor="#FFFFFF"
+ android:pathData="M18,16v-5c0,-3.07 -1.64,-5.64 -4.5,-6.32L13.5,4c0,-0.83 -0.67,
+ -1.5 -1.5,-1.5s-1.5,0.67 -1.5,1.5v0.68C7.63,5.36 6,7.92 6,11v5l-2,
+ 2v1h16v-1l-2,-2zM13,16h-2v-2h2v2zM13,12h-2L11,8h2v4zM12,22c1.1,0 2,
+ -0.9 2,-2h-4c0,1.1 0.89,2 2,2z"/>
+ </vector>
+ </item>
+</layer-list> \ No newline at end of file
diff --git a/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/drawable/oobe_swipe_left_long.xml b/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/drawable/oobe_swipe_left_long.xml
new file mode 100644
index 00000000..b4f99c8b
--- /dev/null
+++ b/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/drawable/oobe_swipe_left_long.xml
@@ -0,0 +1,57 @@
+<?xml version="1.0" encoding="utf-8"?>
+<vector
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ android:name="oobe_swipe_left_long_g"
+ android:width="190dp"
+ android:viewportWidth="190"
+ android:height="78dp"
+ android:viewportHeight="78" >
+ <group
+ android:name="swipeuptrace_2"
+ android:translateX="153.575"
+ android:translateY="39"
+ android:scaleX="1.82"
+ android:scaleY="1.82"
+ android:rotation="270" >
+ <group
+ android:name="swipeuptrace_pivot_2"
+ android:translateX="-1.95508"
+ android:translateY="111.925" >
+ <group
+ android:name="ellipse_7"
+ android:translateX="1.95508"
+ android:translateY="-111.77148"
+ android:scaleX="0.75"
+ android:scaleY="0.75" >
+ <path
+ android:name="path_7"
+ android:pathData="M 0.0,-20.5 c 11.3218383789,0.0 20.5,9.17816162109 20.5,20.5 c 0.0,11.3218383789 -9.17816162109,20.5 -20.5,20.5 c -11.3218383789,0.0 -20.5,-9.17816162109 -20.5,-20.5 c 0.0,-11.3218383789 9.17816162109,-20.5 20.5,-20.5 Z"
+ android:fillColor="#FF000000"
+ android:fillAlpha="0" />
+ </group>
+ </group>
+ </group>
+ <group
+ android:name="swipeupbluecircle_2"
+ android:translateX="153.575"
+ android:translateY="39"
+ android:rotation="270" >
+ <group
+ android:name="swipeupbluecircle_pivot_2"
+ android:translateX="-1.95508"
+ android:translateY="111.925" >
+ <group
+ android:name="ellipse_8"
+ android:translateX="1.95508"
+ android:translateY="-111.77148"
+ android:scaleX="0.2"
+ android:scaleY="0.2" >
+ <path
+ android:name="path_8"
+ android:pathData="M 0.0,-20.5 c 11.3218383789,0.0 20.5,9.17816162109 20.5,20.5 c 0.0,11.3218383789 -9.17816162109,20.5 -20.5,20.5 c -11.3218383789,0.0 -20.5,-9.17816162109 -20.5,-20.5 c 0.0,-11.3218383789 9.17816162109,-20.5 20.5,-20.5 Z"
+ android:fillColor="#FF5E97F6"
+ android:fillAlpha="0" />
+ </group>
+ </group>
+ </group>
+</vector>
diff --git a/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/drawable/oobe_swipe_left_long_animation.xml b/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/drawable/oobe_swipe_left_long_animation.xml
new file mode 100644
index 00000000..51413f74
--- /dev/null
+++ b/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/drawable/oobe_swipe_left_long_animation.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<animated-vector
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ android:drawable="@drawable/oobe_swipe_left_long" >
+ <target
+ android:name="swipeuptrace_2"
+ android:animation="@anim/oobe_swipe_left_long_g_swipeuptrace_2_animation" />
+ <target
+ android:name="ellipse_7"
+ android:animation="@anim/oobe_swipe_left_long_g_ellipse_7_animation" />
+ <target
+ android:name="path_7"
+ android:animation="@anim/oobe_swipe_left_long_g_path_7_animation" />
+ <target
+ android:name="swipeupbluecircle_2"
+ android:animation="@anim/oobe_swipe_left_long_g_swipeupbluecircle_2_animation" />
+ <target
+ android:name="ellipse_8"
+ android:animation="@anim/oobe_swipe_left_long_g_ellipse_8_animation" />
+ <target
+ android:name="path_8"
+ android:animation="@anim/oobe_swipe_left_long_g_path_8_animation" />
+</animated-vector>
diff --git a/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/drawable/oobe_tap.xml b/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/drawable/oobe_tap.xml
new file mode 100644
index 00000000..4091b36f
--- /dev/null
+++ b/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/drawable/oobe_tap.xml
@@ -0,0 +1,90 @@
+<?xml version="1.0" encoding="utf-8"?>
+<vector
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ android:height="160dp"
+ android:name="oobe_tap"
+ android:viewportHeight="160"
+ android:viewportWidth="160"
+ android:width="160dp">
+ <group
+ android:name="tapripple"
+ android:translateX="80.25"
+ android:translateY="79.48125">
+ <group
+ android:name="tapripple_pivot"
+ android:translateX="-1.78031"
+ android:translateY="55.82941">
+ <group
+ android:name="rectangle_5"
+ android:scaleY="1.03255"
+ android:translateX="1.8623"
+ android:translateY="-49.13672">
+ <group
+ android:name="rectangle_path_3_position"
+ android:translateY="-6">
+ <path
+ android:fillAlpha="0"
+ android:fillColor="#FF000000"
+ android:name="rectangle_path_3"
+ android:pathData="M 0.0,-25.0 l 0.0,0.0 c 13.807118745,0.0 25.0,
+ 11.192881255 25.0,25.0 l 0.0,0.0 c 0.0,13.807118745 -11.192881255,
+ 25.0 -25.0,25.0 l 0.0,0.0 c -13.807118745,0.0 -25.0,
+ -11.192881255 -25.0,-25.0 l 0.0,0.0 c 0.0,
+ -13.807118745 11.192881255,-25.0 25.0,-25.0 Z"/>
+ </group>
+ </group>
+ </group>
+ </group>
+ <group
+ android:name="taptrace"
+ android:scaleX="1.82"
+ android:scaleY="1.82"
+ android:translateX="80.25"
+ android:translateY="79.48125">
+ <group
+ android:name="taptrace_pivot"
+ android:translateX="-1.95508"
+ android:translateY="111.925">
+ <group
+ android:name="ellipse_21"
+ android:scaleX="0.5"
+ android:scaleY="0.5"
+ android:translateX="1.95508"
+ android:translateY="-111.77148">
+ <path
+ android:fillAlpha="0"
+ android:fillColor="#FF000000"
+ android:name="path_23"
+ android:pathData="M 0.0,-20.5 c 11.3218383789,0.0 20.5,
+ 9.17816162109 20.5,20.5 c 0.0,11.3218383789 -9.17816162109,
+ 20.5 -20.5,20.5 c -11.3218383789,0.0 -20.5,-9.17816162109 -20.5,
+ -20.5 c 0.0,-11.3218383789 9.17816162109,-20.5 20.5,-20.5 Z"/>
+ </group>
+ </group>
+ </group>
+ <group
+ android:name="tapblue"
+ android:translateX="80.25"
+ android:translateY="79.48125">
+ <group
+ android:name="tapblue_pivot"
+ android:translateX="-1.95508"
+ android:translateY="111.925">
+ <group
+ android:name="ellipse_22"
+ android:scaleX="0.5"
+ android:scaleY="0.5"
+ android:translateX="1.95508"
+ android:translateY="-111.77148">
+ <path
+ android:fillAlpha="0"
+ android:fillColor="#FF5E97F6"
+ android:name="path_24"
+ android:pathData="M 0.0,-20.5 c 11.3218383789,0.0 20.5,9.17816162109 20.5,
+ 20.5 c 0.0,11.3218383789 -9.17816162109,20.5 -20.5,
+ 20.5 c -11.3218383789,0.0 -20.5,-9.17816162109 -20.5,
+ -20.5 c 0.0,-11.3218383789 9.17816162109,-20.5 20.5,-20.5 Z"/>
+ </group>
+ </group>
+ </group>
+</vector> \ No newline at end of file
diff --git a/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/drawable/oobe_tap_animation.xml b/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/drawable/oobe_tap_animation.xml
new file mode 100644
index 00000000..7e09a9d6
--- /dev/null
+++ b/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/drawable/oobe_tap_animation.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<animated-vector
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ android:drawable="@drawable/oobe_tap">
+ <target
+ android:animation="@anim/oobe_tap_rectangle_path_3_animation"
+ android:name="rectangle_path_3"/>
+ <target
+ android:animation="@anim/oobe_tap_ellipse_21_animation"
+ android:name="ellipse_21"/>
+ <target
+ android:animation="@anim/oobe_tap_path_23_animation"
+ android:name="path_23"/>
+ <target
+ android:animation="@anim/oobe_tap_ellipse_22_animation"
+ android:name="ellipse_22"/>
+ <target
+ android:animation="@anim/oobe_tap_path_24_animation"
+ android:name="path_24"/>
+</animated-vector>
diff --git a/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/drawable/open_in_phone_circle.xml b/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/drawable/open_in_phone_circle.xml
new file mode 100644
index 00000000..1a6d02c1
--- /dev/null
+++ b/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/drawable/open_in_phone_circle.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="utf-8"?>
+<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
+ <item>
+ <shape android:shape="oval">
+ <solid android:color="?android:colorButtonNormal"/>
+ <size
+ android:height="40dp"
+ android:width="40dp"/>
+ </shape>
+ </item>
+ <item
+ android:gravity="center">
+ <vector android:width="24dp"
+ android:height="24dp"
+ android:viewportWidth="24.0"
+ android:viewportHeight="24.0">
+ <path
+ android:pathData="M16.5,2.7H7.4c-0.3,0 -0.5,0.2 -0.5,0.5v7.4h0.8V5.1C7.7,5 7.8,
+ 5 7.8,5h8.2c0.1,0 0.1,0.1 0.1,0.1v13.5c0,0.1 -0.1,0.1 -0.1,0.1H7.8c-0.1,
+ 0 -0.1,-0.1 -0.1,-0.1v-5.2H6.9v7.4c0,0.3 0.2,0.5 0.5,0.5h9.1c0.3,0 0.5,
+ -0.2 0.5,-0.5V3.2C17,2.9 16.8,2.7 16.5,2.7z"
+ android:fillColor="#FFFFFF"/>
+ <path android:pathData="M9.5,13.9l0.8,0.8l2.7,-2.7l-2.7,-2.7l-0.8,0.8l1.4,
+ 1.4H5.3v1.1h5.6L9.5,13.9z"
+ android:fillColor="#FFFFFF"/>
+ </vector>
+ </item>
+</layer-list> \ No newline at end of file
diff --git a/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/drawable/open_on_phone.xml b/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/drawable/open_on_phone.xml
new file mode 100644
index 00000000..bab4d617
--- /dev/null
+++ b/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/drawable/open_on_phone.xml
@@ -0,0 +1,62 @@
+<?xml version="1.0" encoding="utf-8"?>
+<vector
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ android:height="24dp"
+ android:name="open_on_phone"
+ android:viewportHeight="24.0"
+ android:viewportWidth="24.0"
+ android:width="24dp">
+ <group
+ android:name="phone"
+ android:scaleX="0.1507"
+ android:scaleY="0.1507"
+ android:translateX="32"
+ android:translateY="32">
+ <group
+ android:name="shape_1">
+ <path
+ android:fillColor="#FFFFFFFF"
+ android:name="path_1"
+ android:pathData="M 99.625,-194.5 c 0.0,0.0 -182.125,0.0 -194.25,0.0 c -12.125,
+ 0.0 -11.875,11.0 -11.875,11.0 c 0.0,0.0 0.00002,151.259307861 0.00002,
+ 151.259307861 c 0.0,0.0 17.625,-0.207061767578 17.625,-0.207061767578 c 0.0,
+ 0.0 -0.00002,-108.614746094 -0.00002,-111.239746094 c 0.0,-2.625 1.9375,
+ -2.375 1.9375,-2.375 c 0.0,0.0 175.4375,0.0 177.8125,0.0 c 2.375,0.0 2.125,
+ 2.9375 2.125,2.9375 c 0.0,0.0 0.0,285.8125 0.0,288.125 c 0.0,2.3125 -2.0,
+ 2.0 -2.0,2.0 c 0.0,0.0 -174.875,0.0 -177.6875,0.0 c -2.8125,0.0 -2.3125,
+ -1.875 -2.3125,-1.875 c 0.0,0.0 0.00005,-86.4319152832 0.00005,
+ -86.4319152832 c 0.0,0.0 -17.25,0.0 -17.25,0.0 c 0.0,0.0 -0.00005,
+ 121.306915283 -0.00005,132.306915283 c 0.0,11.0 9.25,10.75 9.25,
+ 10.75 c 0.0,0.0 184.25,0.0 195.5,0.0 c 11.25,0.0 10.5,-12.25 10.5,
+ -12.25 c 0.0,0.0 0.125,-364.75 0.125,-374.5 c 0.0,-9.75 -9.5,-9.5 -9.5,
+ -9.5 Z"/>
+ </group>
+ </group>
+ <group
+ android:name="arrow"
+ android:scaleX="0.1507"
+ android:scaleY="0.1507"
+ android:translateX="20.86372"
+ android:translateY="33.39034">
+ <group
+ android:name="arrow_pivot"
+ android:translateX="56"
+ android:translateY="-2">
+ <group
+ android:name="shape_2">
+ <path
+ android:fillColor="#FFFFFFFF"
+ android:name="path_2"
+ android:pathData="M -32.2857208252,-52.9642944336 c 0.0,0.0 -15.75,
+ 16.25 -15.75,16.25 c 0.0,0.0 30.3749847412,29.0 30.3749847412,
+ 29.0 c 0.0,0.0 -111.124969482,0.0 -111.124969482,0.0 c 0.0,0.0 0.0,
+ 23.0000152588 0.0,23.0000152588 c 0.0,0.0 110.874938965,
+ 0.0 110.874938965,0.0 c 0.0,0.0 -30.1249542236,29.25 -30.1249542236,
+ 29.25 c 0.0,0.0 16.0,16.0 16.0,16.0 c 0.0,0.0 56.7500152588,
+ -57.25 56.7500152588,-57.25 c 0.0,0.0 -0.257537841797,
+ -0.254150390625 -0.257537841797,-0.254150390625 c 0.0,
+ 0.0 -56.742477417,-55.9958648682 -56.742477417,-55.9958648682 Z"/>
+ </group>
+ </group>
+ </group>
+</vector>
diff --git a/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/drawable/progress_circle.xml b/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/drawable/progress_circle.xml
new file mode 100644
index 00000000..56f3d3f6
--- /dev/null
+++ b/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/drawable/progress_circle.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="utf-8"?>
+<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
+ <item>
+ <shape android:shape="oval">
+ <solid android:color="?android:colorPrimaryDark"/>
+ <size
+ android:height="40dp"
+ android:width="40dp"/>
+ </shape>
+ </item>
+ <item
+ android:gravity="center">
+ <vector
+ android:height="24dp"
+ android:viewportHeight="24.0"
+ android:viewportWidth="24.0"
+ android:width="24dp">
+ <path
+ android:fillColor="#FFFFFF"
+ android:pathData="M6,2v6h0.01L6,8.01 10,12l-4,4 0.01,0.01H6V22h12v-5.99h-0.01L18,
+ 16l-4,-4 4,-3.99 -0.01,-0.01H18V2H6z"/>
+ </vector>
+ </item>
+</layer-list> \ No newline at end of file
diff --git a/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/drawable/reply.xml b/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/drawable/reply.xml
new file mode 100644
index 00000000..524416f8
--- /dev/null
+++ b/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/drawable/reply.xml
@@ -0,0 +1,10 @@
+<vector
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ android:height="24dp"
+ android:viewportHeight="48.0"
+ android:viewportWidth="48.0"
+ android:width="24dp">
+ <path
+ android:fillColor="#FFFFFF"
+ android:pathData="M20,18v-8L6,24l14,14v-8.2c10,0 17,3.2 22,10.2 -2,-10 -8,-20 -22,-22z"/>
+</vector>
diff --git a/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/drawable/settings_circle.xml b/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/drawable/settings_circle.xml
new file mode 100644
index 00000000..d07819dc
--- /dev/null
+++ b/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/drawable/settings_circle.xml
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="utf-8"?>
+<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
+ <item>
+ <shape android:shape="oval">
+ <solid android:color="?android:colorButtonNormal"/>
+ <size
+ android:height="40dp"
+ android:width="40dp"/>
+ </shape>
+ </item>
+ <item
+ android:gravity="center">
+ <vector
+ android:height="24dp"
+ android:viewportHeight="48.0"
+ android:viewportWidth="48.0"
+ android:width="24dp">
+ <path
+ android:fillColor="#FFFFFF"
+ android:pathData="M38.86,25.95c0.08,-0.64 0.14,-1.29 0.14,-1.95s-0.06,-1.31 -0.14,
+ -1.95l4.23,-3.31c0.38,-0.3 0.49,-0.84 0.24,-1.28l-4,-6.93c-0.25,
+ -0.43 -0.77,-0.61 -1.22,-0.43l-4.98,2.01c-1.03,-0.79 -2.16,-1.46 -3.38,
+ -1.97L29,4.84c-0.09,-0.47 -0.5,-0.84 -1,-0.84h-8c-0.5,0 -0.91,0.37 -0.99,
+ 0.84l-0.75,5.3c-1.22,0.51 -2.35,1.17 -3.38,1.97L9.9,10.1c-0.45,-0.17 -0.97,
+ 0 -1.22,0.43l-4,6.93c-0.25,0.43 -0.14,0.97 0.24,1.28l4.22,3.31C9.06,
+ 22.69 9,23.34 9,24s0.06,1.31 0.14,1.95l-4.22,3.31c-0.38,0.3 -0.49,
+ 0.84 -0.24,1.28l4,6.93c0.25,0.43 0.77,0.61 1.22,0.43l4.98,-2.01c1.03,
+ 0.79 2.16,1.46 3.38,1.97l0.75,5.3c0.08,0.47 0.49,0.84 0.99,0.84h8c0.5,
+ 0 0.91,-0.37 0.99,-0.84l0.75,-5.3c1.22,-0.51 2.35,-1.17 3.38,-1.97l4.98,
+ 2.01c0.45,0.17 0.97,0 1.22,-0.43l4,-6.93c0.25,-0.43 0.14,-0.97 -0.24,
+ -1.28l-4.22,-3.31zM24,31c-3.87,0 -7,-3.13 -7,-7s3.13,-7 7,-7 7,3.13 7,
+ 7 -3.13,7 -7,7z"/>
+ </vector>
+ </item>
+</layer-list> \ No newline at end of file
diff --git a/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/drawable/start.xml b/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/drawable/start.xml
new file mode 100644
index 00000000..40d1c9f8
--- /dev/null
+++ b/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/drawable/start.xml
@@ -0,0 +1,9 @@
+<vector
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ android:height="24dp"
+ android:viewportHeight="48.0"
+ android:viewportWidth="48.0"
+ android:width="24dp">
+ <path android:fillColor="#FFFFFF"
+ android:pathData="M16,10v28l22,-14z"/>
+</vector>
diff --git a/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/drawable/stop.xml b/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/drawable/stop.xml
new file mode 100644
index 00000000..d15bb1b1
--- /dev/null
+++ b/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/drawable/stop.xml
@@ -0,0 +1,10 @@
+<vector
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ android:height="24dp"
+ android:viewportHeight="48.0"
+ android:viewportWidth="48.0"
+ android:width="24dp">
+ <path android:fillColor="#FFFFFF"
+ android:pathData="M38,12.83L35.17,10 24,21.17 12.83,10 10,12.83 21.17,24 10,
+ 35.17 12.83,38 24,26.83 35.17,38 38,35.17 26.83,24z"/>
+</vector>
diff --git a/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/drawable/watch.png b/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/drawable/watch.png
new file mode 100644
index 00000000..0ed1b5fb
--- /dev/null
+++ b/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/drawable/watch.png
Binary files differ
diff --git a/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/layout/activity_accessibility.xml b/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/layout/activity_accessibility.xml
new file mode 100644
index 00000000..6fa66dc6
--- /dev/null
+++ b/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/layout/activity_accessibility.xml
@@ -0,0 +1,45 @@
+<?xml version="1.0" encoding="utf-8"?>
+<ScrollView
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ android:id="@+id/scroll_view_accessibility"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_centerHorizontal="true"
+ android:layout_centerVertical="true">
+ <LinearLayout
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:paddingTop="?android:dialogPreferredPadding"
+ android:paddingBottom="?android:dialogPreferredPadding"
+ android:paddingStart="?android:listPreferredItemPaddingStart"
+ android:paddingEnd="?android:listPreferredItemPaddingEnd"
+ android:orientation="vertical">
+ <TextView
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:gravity="center_horizontal"
+ android:paddingTop="4dp"
+ android:paddingBottom="4dp"
+ android:text="@string/description_1_accessibility"
+ android:textAppearance="@style/android:TextAppearance.Material.Title"/>
+ <TextView
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:paddingTop="4dp"
+ android:paddingBottom="4dp"
+ android:text="@string/description_2_accessibility"
+ android:textAppearance="@style/android:TextAppearance.Material.Body1"/>
+ <TextView
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:paddingTop="4dp"
+ android:paddingBottom="4dp"
+ android:text="@string/description_3_accessibility"
+ android:textAppearance="@style/android:TextAppearance.Material.Body1"/>
+ <include
+ android:id="@+id/accessibility_button_include"
+ layout="@layout/app_item_layout"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"/>
+ </LinearLayout>
+</ScrollView> \ No newline at end of file
diff --git a/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/layout/activity_dialogs.xml b/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/layout/activity_dialogs.xml
new file mode 100644
index 00000000..6c5a83ed
--- /dev/null
+++ b/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/layout/activity_dialogs.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="utf-8"?>
+<ListView
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ android:id="@+id/list_view_dialogs"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:paddingTop="?android:dialogPreferredPadding"
+ android:paddingBottom="?android:dialogPreferredPadding"
+ android:clipToPadding="false"/> \ No newline at end of file
diff --git a/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/layout/activity_fullscreen_progress.xml b/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/layout/activity_fullscreen_progress.xml
new file mode 100644
index 00000000..11674ee5
--- /dev/null
+++ b/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/layout/activity_fullscreen_progress.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="utf-8"?>
+<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
+ android:orientation="vertical"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent">
+ <ProgressBar
+ android:id="@+id/progressBar"
+ style="?android:attr/progressBarStyleLarge"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_centerInParent="true"/>
+ <TextView
+ android:id="@+id/loadingTextView"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_below="@+id/progressBar"
+ android:layout_centerHorizontal="true"
+ android:paddingTop="8dp"
+ android:text="@string/loading"
+ android:textAppearance="@style/android:TextAppearance.Material.Body1"/>
+</RelativeLayout> \ No newline at end of file
diff --git a/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/layout/activity_images.xml b/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/layout/activity_images.xml
new file mode 100644
index 00000000..c1ea76d1
--- /dev/null
+++ b/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/layout/activity_images.xml
@@ -0,0 +1,93 @@
+<?xml version="1.0" encoding="utf-8"?>
+<ScrollView
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ android:id="@+id/scroll_view_tutorial_images"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:layout_centerHorizontal="true"
+ android:layout_centerVertical="true">
+ <LinearLayout
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:paddingTop="?android:dialogPreferredPadding"
+ android:paddingBottom="?android:dialogPreferredPadding"
+ android:paddingStart="?android:listPreferredItemPaddingStart"
+ android:paddingEnd="?android:listPreferredItemPaddingEnd"
+ android:orientation="vertical">
+ <TextView
+ android:id="@+id/title_images"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:paddingTop="4dp"
+ android:paddingBottom="4dp"
+ android:gravity="center_horizontal"
+ android:text="@string/images"
+ android:textAppearance="@style/android:TextAppearance.Material.Title"/>
+ <TextView
+ android:id="@+id/description_1_tutorial_image"
+ android:layout_width="wrap_content"
+ android:layout_height="match_parent"
+ android:paddingTop="4dp"
+ android:paddingBottom="4dp"
+ android:text="@string/description_1_tutorial_image"
+ android:textAppearance="@style/android:TextAppearance.Material.Body1"/>
+ <ImageView
+ android:id="@+id/swipe_left_image"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_gravity="center"
+ android:paddingTop="4dp"
+ android:paddingBottom="4dp"
+ android:contentDescription="@string/swipe_left"
+ android:foregroundTint="@color/dark_blue"
+ android:src="@drawable/oobe_swipe_left_long_animation"
+ android:tint="@color/dark_blue"/>
+ <TextView
+ android:id="@+id/description_2_tutorial_image"
+ android:layout_width="wrap_content"
+ android:layout_height="match_parent"
+ android:paddingTop="4dp"
+ android:text="@string/description_2_tutorial_image"
+ android:textAppearance="@style/android:TextAppearance.Material.Body1"/>
+ <ImageView
+ android:id="@+id/tap_image"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_gravity="center"
+ android:contentDescription="@string/tap"
+ android:foregroundTint="@color/dark_blue"
+ android:src="@drawable/oobe_tap_animation"
+ android:tint="@color/dark_blue"/>
+ <TextView
+ android:id="@+id/description_3_tutorial_image"
+ android:layout_width="wrap_content"
+ android:layout_height="match_parent"
+ android:paddingBottom="8dp"
+ android:text="@string/description_3_tutorial_image"
+ android:textAppearance="@style/android:TextAppearance.Material.Body1"/>
+ <TextView
+ android:id="@+id/description_1_decorative_image"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:paddingTop="8dp"
+ android:paddingBottom="4dp"
+ android:text="@string/description_1_decorative_image"
+ android:textAppearance="@style/android:TextAppearance.Material.Body1"/>
+ <ImageView
+ android:id="@+id/bow_image"
+ android:layout_width="match_parent"
+ android:layout_height="75dp"
+ android:paddingTop="4dp"
+ android:paddingBottom="4dp"
+ android:scaleType="centerInside"
+ android:src="@drawable/bow"/>
+ <TextView
+ android:id="@+id/description_2_decorative_image"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:paddingTop="4dp"
+ android:paddingBottom="4dp"
+ android:text="@string/description_2_decorative_image"
+ android:textAppearance="@style/android:TextAppearance.Material.Body1"/>
+ </LinearLayout>
+</ScrollView> \ No newline at end of file
diff --git a/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/layout/activity_list_of_graphics.xml b/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/layout/activity_list_of_graphics.xml
new file mode 100644
index 00000000..33347a1c
--- /dev/null
+++ b/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/layout/activity_list_of_graphics.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<ListView
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ android:id="@+id/list_view_graphics"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:paddingTop="?android:dialogPreferredPadding"
+ android:paddingBottom="?android:dialogPreferredPadding"
+ android:clickable="true"
+ android:clipToPadding="false"
+ android:divider="@null"
+ android:dividerHeight="0dp"/> \ No newline at end of file
diff --git a/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/layout/activity_lists.xml b/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/layout/activity_lists.xml
new file mode 100644
index 00000000..b3c1915e
--- /dev/null
+++ b/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/layout/activity_lists.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="utf-8"?>
+<ListView
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ android:id="@+id/list_view_lists"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:paddingTop="?android:dialogPreferredPadding"
+ android:paddingBottom="?android:dialogPreferredPadding"
+ android:clipToPadding="false"/> \ No newline at end of file
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
new file mode 100644
index 00000000..3e7e27d6
--- /dev/null
+++ b/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/layout/activity_long_list.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8"?>
+<android.support.wearable.view.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"
+ android:id="@+id/drawer_layout_long_list"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ tools:deviceIds="wear">
+ <android.support.wearable.view.WearableRecyclerView
+ android:id="@+id/recycler_view_long_list"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:paddingTop="?android:dialogPreferredPadding"
+ android:paddingBottom="?android:dialogPreferredPadding"
+ android:clipToPadding="false"
+ android:scrollbars="vertical"/>
+ <android.support.wearable.view.drawer.WearableActionDrawer
+ android:id="@+id/action_drawer_long_list"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:visibility="invisible"
+ app:action_menu="@menu/action_drawer_menu"
+ app:show_overflow_in_peek="true">
+ </android.support.wearable.view.drawer.WearableActionDrawer>
+</android.support.wearable.view.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
new file mode 100644
index 00000000..19a5606c
--- /dev/null
+++ b/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/layout/activity_main.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="utf-8"?>
+<android.support.wearable.view.WearableRecyclerView
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ android:id="@+id/main_recycler_view"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:layout_centerHorizontal="true"
+ android:layout_centerVertical="true"
+ android:scrollbars="vertical"/> \ No newline at end of file
diff --git a/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/layout/activity_messaging_main.xml b/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/layout/activity_messaging_main.xml
new file mode 100644
index 00000000..f49d8101
--- /dev/null
+++ b/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/layout/activity_messaging_main.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="utf-8"?>
+<TextView
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ android:id="@+id/messaging_text_view"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:paddingTop="?android:dialogPreferredPadding"
+ android:paddingBottom="?android:dialogPreferredPadding"
+ android:paddingStart="?android:listPreferredItemPaddingStart"
+ android:paddingEnd="?android:listPreferredItemPaddingEnd"
+ android:text="@string/main_text_activity_messaging_main"/> \ No newline at end of file
diff --git a/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/layout/activity_notifications.xml b/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/layout/activity_notifications.xml
new file mode 100644
index 00000000..35cb36ca
--- /dev/null
+++ b/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/layout/activity_notifications.xml
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="utf-8"?>
+<ScrollView
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ android:id="@+id/scroll_view_notifications"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_centerHorizontal="true"
+ android:layout_centerVertical="true">
+ <LinearLayout
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:paddingTop="?android:dialogPreferredPadding"
+ android:paddingBottom="?android:dialogPreferredPadding"
+ android:paddingStart="?android:listPreferredItemPaddingStart"
+ android:paddingEnd="?android:listPreferredItemPaddingEnd"
+ android:orientation="vertical">
+ <include
+ android:id="@+id/notifications_title_include"
+ layout="@layout/title_layout"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"/>
+ <include
+ android:id="@+id/inline_action_switch_include"
+ layout="@layout/switch_layout"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"/>
+ <include
+ android:id="@+id/avatar_switch_include"
+ layout="@layout/switch_layout"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"/>
+ <include
+ android:id="@+id/push_notification_app_item_include"
+ layout="@layout/app_item_layout"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"/>
+ </LinearLayout>
+</ScrollView> \ No newline at end of file
diff --git a/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/layout/activity_open_on_phone_animation.xml b/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/layout/activity_open_on_phone_animation.xml
new file mode 100644
index 00000000..2fef6eb9
--- /dev/null
+++ b/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/layout/activity_open_on_phone_animation.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="utf-8"?>
+<RelativeLayout
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:tools="http://schemas.android.com/tools"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:paddingTop="?android:dialogPreferredPadding"
+ android:paddingBottom="?android:dialogPreferredPadding"
+ tools:context="com.example.android.wearable.wear.wearaccessibilityapp.OpenOnPhoneAnimationActivity">
+ <ImageView
+ android:id="@+id/open_on_phone_animation_image"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:layout_gravity="center_horizontal"
+ android:contentDescription="tap"
+ android:foregroundTint="@color/white"
+ android:src="@drawable/open_on_phone_animation"
+ android:tint="@color/white"/>
+ <TextView
+ android:id="@+id/description_dialogs_phone_animation"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:layout_below="@id/open_on_phone_animation_image"
+ android:paddingTop="?android:dialogPreferredPadding"
+ android:gravity="center"
+ android:text="@string/continue_on_phone"
+ android:textAppearance="@style/android:TextAppearance.Material.Caption"/>
+</RelativeLayout> \ No newline at end of file
diff --git a/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/layout/activity_photo_carousel.xml b/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/layout/activity_photo_carousel.xml
new file mode 100644
index 00000000..575680c5
--- /dev/null
+++ b/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/layout/activity_photo_carousel.xml
@@ -0,0 +1,60 @@
+<?xml version="1.0" encoding="utf-8"?>
+<ScrollView
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ android:id="@+id/scroll_view_carousel"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:layout_centerHorizontal="true"
+ android:layout_centerVertical="true">
+ <LinearLayout
+ android:id="@+id/layout_photo_carousel"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:paddingTop="?android:dialogPreferredPadding"
+ android:paddingBottom="?android:dialogPreferredPadding"
+ android:orientation="vertical">
+ <TextView
+ android:id="@+id/title_photo_carousel"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:gravity="center_horizontal"
+ android:text="@string/photo_carousel"
+ android:textAppearance="@style/android:TextAppearance.Material.Title"/>
+ <ImageView
+ android:id="@+id/cat_image"
+ android:layout_width="100dp"
+ android:layout_height="100dp"
+ android:layout_gravity="center"
+ android:contentDescription="@string/description_of_cat_image"
+ android:src="@drawable/cats"/>
+ <ImageView
+ android:id="@+id/dog_image"
+ android:layout_width="100dp"
+ android:layout_height="100dp"
+ android:layout_gravity="center"
+ android:contentDescription="@string/description_of_dog_image"
+ android:src="@drawable/dog"/>
+ <ImageView
+ android:id="@+id/hamster_image"
+ android:layout_width="100dp"
+ android:layout_height="100dp"
+ android:layout_gravity="center"
+ android:contentDescription="@string/description_of_hamster_image"
+ android:src="@drawable/hamster"/>
+ <ImageView
+ android:id="@+id/bird_image"
+ android:layout_width="100dp"
+ android:layout_height="100dp"
+ android:layout_gravity="center"
+ android:contentDescription="@string/description_of_bird_image"
+ android:src="@drawable/birds"/>
+ <TextView
+ android:id="@+id/description_photo_carousel"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:paddingStart="?android:listPreferredItemPaddingStart"
+ android:paddingEnd="?android:listPreferredItemPaddingEnd"
+ android:text="@string/graphics_description"
+ android:textAppearance="@style/android:TextAppearance.Material.Body1"/>
+ </LinearLayout>
+</ScrollView> \ No newline at end of file
diff --git a/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/layout/activity_radio_list.xml b/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/layout/activity_radio_list.xml
new file mode 100644
index 00000000..dced28ba
--- /dev/null
+++ b/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/layout/activity_radio_list.xml
@@ -0,0 +1,47 @@
+<?xml version="1.0" encoding="utf-8"?>
+<ScrollView
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:layout_centerHorizontal="true"
+ android:layout_centerVertical="true"
+ android:paddingTop="?android:dialogPreferredPadding">
+ <LinearLayout
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:orientation="vertical">
+ <include
+ android:id="@+id/radio_list_title"
+ layout="@layout/title_layout"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"/>
+ <RadioGroup
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:layout_gravity="center"
+ android:paddingStart="?android:listPreferredItemPaddingStart"
+ android:paddingEnd="?android:listPreferredItemPaddingEnd">
+ <RadioButton
+ android:id="@+id/radio_button_1"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:textAppearance="@style/android:TextAppearance.Material.Body1"
+ android:padding="4dp"
+ android:text="@string/hello"/>
+ <RadioButton
+ android:id="@+id/radio_button_2"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:textAppearance="@style/android:TextAppearance.Material.Body1"
+ android:padding="4dp"
+ android:text="@string/hi"/>
+ <RadioButton
+ android:id="@+id/radio_button_3"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:textAppearance="@style/android:TextAppearance.Material.Body1"
+ android:padding="4dp"
+ android:text="@string/howdy"/>
+ </RadioGroup>
+ </LinearLayout>
+</ScrollView> \ No newline at end of file
diff --git a/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/layout/activity_zoom_image.xml b/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/layout/activity_zoom_image.xml
new file mode 100644
index 00000000..43d2223a
--- /dev/null
+++ b/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/layout/activity_zoom_image.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="utf-8"?>
+<ImageView
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ android:id="@+id/expanded_image"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:contentDescription="@string/description_of_cat_image"
+ android:scaleType="centerInside"
+ android:src="@drawable/cats"/> \ No newline at end of file
diff --git a/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/layout/app_item_layout.xml b/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/layout/app_item_layout.xml
new file mode 100644
index 00000000..5e71559d
--- /dev/null
+++ b/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/layout/app_item_layout.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:padding="4dp"
+ android:paddingEnd="?android:listPreferredItemPaddingEnd">
+ <ImageView
+ android:id="@+id/icon_image_view"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:src="@drawable/ic_view_list_white_1x_web_48dp"/>
+ <TextView
+ android:id="@+id/icon_text_view"
+ android:layout_width="wrap_content"
+ android:layout_height="match_parent"
+ android:layout_marginStart="8dp"
+ android:gravity="center_vertical"
+ android:text="@string/default_text"
+ android:textAppearance="@style/android:TextAppearance.Material.Body1"/>
+</LinearLayout> \ No newline at end of file
diff --git a/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/layout/circled_image_layout.xml b/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/layout/circled_image_layout.xml
new file mode 100644
index 00000000..27db3aff
--- /dev/null
+++ b/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/layout/circled_image_layout.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:app="http://schemas.android.com/apk/res-auto"
+ android:id="@+id/circled_image_layout"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content">
+ <android.support.wearable.view.CircledImageView
+ android:id="@+id/circled_image_view"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_marginStart="?android:listPreferredItemPaddingStart"
+ app:circle_border_color="?android:colorAccent"
+ app:circle_border_width="4dp"
+ app:circle_color="@color/icon_color"
+ app:circle_radius="18dp"/>
+ <TextView
+ android:id="@+id/circled_image_text"
+ android:layout_width="wrap_content"
+ android:layout_height="match_parent"
+ android:gravity="center_vertical"
+ android:layout_marginStart="8dp"
+ android:textAppearance="@style/android:TextAppearance.Material.Body1"/>
+</LinearLayout> \ No newline at end of file
diff --git a/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/layout/header_footer_layout.xml b/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/layout/header_footer_layout.xml
new file mode 100644
index 00000000..3acd282b
--- /dev/null
+++ b/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/layout/header_footer_layout.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
+ android:layout_width="match_parent"
+ android:layout_height="?android:dialogPreferredPadding"/> \ No newline at end of file
diff --git a/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/layout/list_item_layout.xml b/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/layout/list_item_layout.xml
new file mode 100644
index 00000000..d6527ac0
--- /dev/null
+++ b/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/layout/list_item_layout.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<RelativeLayout
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:padding="4dp"
+ android:paddingStart="?android:listPreferredItemPaddingStart"
+ android:paddingEnd="?android:listPreferredItemPaddingEnd">
+ <TextView
+ android:id="@+id/item_text"
+ android:layout_width="wrap_content"
+ android:layout_height="match_parent"
+ android:text="@string/default_text"
+ android:textAppearance="@style/android:TextAppearance.Material.Title"/>
+ <ImageView
+ android:id="@+id/item_image"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_alignParentEnd="true"
+ android:layout_centerVertical="true"
+ android:src="@drawable/arrow"/>
+</RelativeLayout> \ No newline at end of file
diff --git a/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/layout/long_list_switch_widget_layout.xml b/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/layout/long_list_switch_widget_layout.xml
new file mode 100644
index 00000000..740ab5f7
--- /dev/null
+++ b/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/layout/long_list_switch_widget_layout.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="utf-8"?>
+<RelativeLayout
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:padding="4dp"
+ android:paddingStart="?android:listPreferredItemPaddingStart"
+ android:paddingEnd="?android:listPreferredItemPaddingEnd">
+ <Switch
+ android:id="@+id/switch_widget"
+ style="@style/Widget.Wear.RoundSwitch"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_alignParentStart="true"
+ android:layout_alignParentTop="true"
+ android:checked="false">
+ </Switch>
+ <TextView
+ android:id="@+id/switch_text"
+ android:layout_width="wrap_content"
+ android:layout_height="match_parent"
+ android:layout_marginLeft="10dp"
+ android:layout_centerVertical="true"
+ android:layout_toRightOf="@id/switch_widget"
+ android:gravity="center_vertical"
+ android:text="@string/default_text"
+ android:textAppearance="@style/android:TextAppearance.Material.Body1"/>
+</RelativeLayout> \ No newline at end of file
diff --git a/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/layout/progress_bar_layout.xml b/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/layout/progress_bar_layout.xml
new file mode 100644
index 00000000..896e915b
--- /dev/null
+++ b/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/layout/progress_bar_layout.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8"?>
+<ProgressBar
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ android:id="@+id/progress_bar_long_list"
+ style="?android:attr/progressBarStyle"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:layout_gravity="center_horizontal"/> \ No newline at end of file
diff --git a/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/layout/progress_bar_with_text_layout.xml b/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/layout/progress_bar_with_text_layout.xml
new file mode 100644
index 00000000..f1dd6909
--- /dev/null
+++ b/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/layout/progress_bar_with_text_layout.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ android:id="@+id/progress_bar_layout"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:padding="4dp">
+ <ProgressBar
+ android:id="@+id/progress_bar"
+ style="?android:attr/progressBarStyle"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_marginStart="?android:listPreferredItemPaddingStart"/>
+ <TextView
+ android:id="@+id/progress_bar_text"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:text="@string/indeterminant_progress"
+ android:layout_marginStart="8dp"
+ android:textAppearance="@style/android:TextAppearance.Material.Body1"/>
+</LinearLayout> \ No newline at end of file
diff --git a/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/layout/shifted_app_item_layout.xml b/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/layout/shifted_app_item_layout.xml
new file mode 100644
index 00000000..cb18a7ad
--- /dev/null
+++ b/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/layout/shifted_app_item_layout.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:padding="4dp"
+ android:paddingStart="?android:listPreferredItemPaddingStart"
+ android:paddingEnd="?android:listPreferredItemPaddingEnd">
+ <ImageView
+ android:id="@+id/shifted_icon_image_view"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:src="@drawable/ic_view_list_white_1x_web_48dp"/>
+ <TextView
+ android:id="@+id/shifted_icon_text_view"
+ android:layout_width="wrap_content"
+ android:layout_height="match_parent"
+ android:layout_marginStart="8dp"
+ android:gravity="center_vertical"
+ android:text="@string/default_text"
+ android:textAppearance="@style/android:TextAppearance.Material.Body1"/>
+</LinearLayout> \ No newline at end of file
diff --git a/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/layout/switch_layout.xml b/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/layout/switch_layout.xml
new file mode 100644
index 00000000..b3704381
--- /dev/null
+++ b/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/layout/switch_layout.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ android:id="@+id/switch_widget_layout"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:padding="4dp">
+ <Switch
+ android:id="@+id/switch_widget"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:checked="true"
+ android:layout_marginStart="?android:listPreferredItemPaddingStart"
+ android:clickable="false">
+ </Switch>
+ <TextView
+ android:id="@+id/switch_text"
+ android:text="@string/switch_name"
+ android:textAppearance="@style/android:TextAppearance.Material.Body1"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_marginStart="8dp"
+ android:paddingTop="4dp"
+ android:paddingBottom="4dp"/>
+</LinearLayout> \ No newline at end of file
diff --git a/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/layout/title_layout.xml b/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/layout/title_layout.xml
new file mode 100644
index 00000000..b1dc97f2
--- /dev/null
+++ b/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/layout/title_layout.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8"?>
+<TextView
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ android:id="@+id/title_text"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:padding="4dp"
+ android:text="@string/default_text"
+ android:gravity="center_horizontal"
+ android:textAppearance="@style/android:TextAppearance.Material.Title"/> \ No newline at end of file
diff --git a/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/menu/action_drawer_menu.xml b/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/menu/action_drawer_menu.xml
new file mode 100644
index 00000000..8f74867c
--- /dev/null
+++ b/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/menu/action_drawer_menu.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="utf-8"?>
+<menu xmlns:android="http://schemas.android.com/apk/res/android"
+ android:layout_width="wrap_content"
+ android:layout_height="match_parent">
+ <item
+ android:id="@+id/menu_click_hold"
+ android:icon="@drawable/heart"
+ android:title="@string/action_1"/>
+ <item
+ android:id="@+id/menu_right_click"
+ android:icon="@drawable/heart"
+ android:title="@string/action_2"/>
+ <item
+ android:id="@+id/menu_exit"
+ android:icon="@drawable/heart"
+ android:title="@string/action_3"/>
+</menu> \ No newline at end of file
diff --git a/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/values/colors.xml b/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/values/colors.xml
new file mode 100644
index 00000000..128bb9c6
--- /dev/null
+++ b/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/values/colors.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources>
+ <color name="background">#44104d</color>
+ <color name="accent">#ec80ff</color>
+ <color name="icon_color">#9c27b0</color>
+ <color name="dialog_icon">#7f7f7f</color>
+</resources> \ No newline at end of file
diff --git a/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/values/strings.xml b/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/values/strings.xml
new file mode 100644
index 00000000..0c9a7dd9
--- /dev/null
+++ b/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/values/strings.xml
@@ -0,0 +1,117 @@
+<!--
+ Copyright 2016 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<resources>
+ <string name="app_name">Wear Accessibility App</string>
+
+ <!-- Strings for Lists -->
+ <string name="lists">Lists</string>
+ <string name="description_2_tutorial_image">Swipe hint is labeled \"swipe left\"</string>
+ <string name="description_3_tutorial_image">Tap hint labeled \"tap\"</string>
+ <string name="description_1_decorative_image">Graphics that are used decoratively that do
+ not add additional meaning do not need a text label.</string>
+ <string name="description_2_decorative_image">Bow graphic is unlabeled and would be passed
+ over by a screen reader.</string>
+ <string name="a_long_list">A long list</string>
+ <string name="list_of_graphics">List of graphics</string>
+ <string name="bottom_action_drawer">Bottom action \ndrawer</string>
+ <string name="photo_carousel">Photo carousel</string>
+ <string name="images">Images</string>
+ <string name="graphics_description">
+ Each image has a descriptive label for a screenreader.</string>
+ <string name="description_of_cat_image">Two cats forming a heart.</string>
+ <string name="description_of_dog_image">Dog holding a bone.</string>
+ <string name="description_of_hamster_image">Hamster hugging a baby carrot.</string>
+ <string name="description_of_bird_image">Two love birds on a branch.</string>
+ <string name="zoom_image">Zoomed Image</string>
+ <string name="intent_extra_image">image</string>
+ <string name="description_1_tutorial_image">Graphics that add additional information should
+ be properly labeled.</string>
+ <string name="swipe_left">swipe left</string>
+ <string name="action_1">Action 1</string>
+ <string name="action_2">Action 2</string>
+ <string name="action_3">Action 3</string>
+ <string name="item_text">Item %1$d</string>
+ <string name="switch_bottom_action_drawer">%1$s Switch Bottom Action Drawer</string>
+ <string name="on">On</string>
+ <string name="off">Off</string>
+
+ <!-- Strings for Dialogs -->
+ <string name="dialogs">Dialogs</string>
+ <string name="open_on_phone_animation">Open On Phone Animation</string>
+ <string name="yes_no_dialog">Yes/no dialog</string>
+ <string name="yes_no_dialog_description">This dialog only has two actions available.</string>
+ <string name="one_action_dialog">One action dialog</string>
+ <string name="one_action_dialog_description">There is only one action on this dialog.</string>
+ <string name="multiple_action_dialog">Multiple action dialog</string>
+ <string name="multiple_action_dialog_description">This dialog has multiple actions.</string>
+ <string name="ok">OK</string>
+ <string name="close">Close</string>
+ <string name="open_on_phone">Open on phone</string>
+ <string name="yes_no_action">Yes/No action</string>
+ <string name="one_action">One action</string>
+ <string name="multiple_actions">Multiple actions</string>
+ <string name="continue_on_phone">Continue on phone</string>
+ <string name="tap">tap</string>
+
+ <!-- Strings for Progress -->
+ <string name="progress">Progress</string>
+ <string name="in_line">In-line</string>
+ <string name="full_screen">Full screen</string>
+ <string name="loading">Loading&#8230;</string>
+ <string name="start">Start</string>
+ <string name="determinant">Determinant</string>
+ <string name="in_line_progress">In-line Progress</string>
+ <string name="indeterminant_progress">Indeterminant\nProgress</string>
+ <string name="key_pref_determinant_switch">pref_determinant_switch</string>
+ <string name="key_pref_circled_image_view">pref_circled_image_view</string>
+ <string name="key_pref_progress_screen">pref_progress_screen</string>
+
+ <!-- Strings for Controls -->
+ <string name="controls">Controls</string>
+ <string name="checkbox">Checkbox</string>
+ <string name="radio_list">Radio List</string>
+ <string name="switch_name">Switch</string>
+ <string name="hello">Hello</string>
+ <string name="hi">Hi</string>
+ <string name="howdy">Howdy</string>
+ <string name="radio_button_list">Radio Button List</string>
+
+ <!-- Strings for Notifications -->
+ <string name="notifications">Notifications</string>
+ <string name="main_text_activity_messaging_main">
+ This Activity would handle the messaging app\'s functionality for a chat(s).
+ \n\nThe notification type for this example was the Messaging Style!
+ </string>
+ <string name="reply_label">Reply</string>
+ <string name="inline_action">In-line action</string>
+ <string name="avatar">Avatar</string>
+ <string name="push_notification">Push notification now</string>
+ <string name="key_pref_avatar">pref_avatar</string>
+ <string name="key_pref_action">pref_action</string>
+ <string name="key_pref_push_notification">pref_push_notification</string>
+
+ <!-- Strings for Accessibility -->
+ <string name="description_1_accessibility">
+ Make sure your watch is accessible for all users</string>
+ <string name="description_2_accessibility">
+ What does your app look like in the largest text size?</string>
+ <string name="description_3_accessibility">Does your app work with a screen reader?</string>
+ <string name="accessibility">Accessibility</string>
+ <string name="accessibility_settings">Accessibility settings</string>
+
+ <string name="default_text">TextView</string>
+ <string name="title">title</string>
+</resources> \ No newline at end of file
diff --git a/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/values/styles.xml b/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/values/styles.xml
new file mode 100644
index 00000000..1c0375ca
--- /dev/null
+++ b/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/values/styles.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources>
+ <style name="SampleAppTheme" parent="android:Theme.Material.NoActionBar">
+ <item name="android:colorBackground">@color/background</item>
+ <item name="android:colorAccent">@color/accent</item>
+ <!-- Used for border of radio buttons and checkboxes -->
+ <item name="android:textColorSecondary">@color/icon_color</item>
+ <!-- Used for icon's background color -->
+ <item name="android:colorPrimaryDark">@color/icon_color</item>
+ <!-- Used for action drawer's background color -->
+ <item name="android:colorBackgroundFloating">@color/icon_color</item>
+ <!-- Used for dialog's deny buttons -->
+ <item name="android:colorButtonNormal">@color/dialog_icon</item>
+ <!-- Used for switch widget's background color -->
+ <item name="android:colorPrimary">@color/semitransparent_grey</item>
+ </style>
+ <style name="OpenOnPhoneAnimationTheme" parent="android:Theme.Material.NoActionBar">
+ <item name="android:colorBackground">@color/black</item>
+ </style>
+</resources> \ No newline at end of file
diff --git a/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/xml/prefs_controls.xml b/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/xml/prefs_controls.xml
new file mode 100644
index 00000000..dd2909ca
--- /dev/null
+++ b/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/xml/prefs_controls.xml
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="utf-8"?>
+<PreferenceScreen
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ android:title="@string/controls">
+ <SwitchPreference
+ android:key="pref_switch"
+ android:title="@string/switch_name"/>
+ <CheckBoxPreference
+ android:key="pref_checkbox"
+ android:title="@string/checkbox"/>
+ <Preference
+ android:key="pref_radio_button_list"
+ android:title="@string/radio_button_list"
+ android:icon="@drawable/arrow_circle">
+ <intent
+ android:targetPackage="com.example.android.wearable.wear.wearaccessibilityapp"
+ android:targetClass="com.example.android.wearable.wear.wearaccessibilityapp.RadioListActivity"/>
+ </Preference>
+</PreferenceScreen> \ No newline at end of file
diff --git a/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/xml/prefs_in_line_progress.xml b/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/xml/prefs_in_line_progress.xml
new file mode 100644
index 00000000..bcf22802
--- /dev/null
+++ b/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/xml/prefs_in_line_progress.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<PreferenceScreen
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ android:key="pref_progress_screen"
+ android:title="@string/in_line_progress">
+ <SwitchPreference
+ android:key="pref_determinant_switch"
+ android:title="@string/determinant"/>
+ <com.example.android.wearable.wear.wearaccessibilityapp.CircledImageViewPreference
+ android:key="pref_circled_image_view"
+ android:title="@string/start"/>
+</PreferenceScreen> \ No newline at end of file
diff --git a/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/xml/prefs_notifications.xml b/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/xml/prefs_notifications.xml
new file mode 100644
index 00000000..dfe76272
--- /dev/null
+++ b/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/xml/prefs_notifications.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="utf-8"?>
+<PreferenceScreen
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ android:title="@string/notifications">
+ <SwitchPreference
+ android:key="pref_action"
+ android:title="@string/inline_action"/>
+ <SwitchPreference
+ android:key="pref_avatar"
+ android:title="@string/avatar"/>
+ <Preference
+ android:key="pref_push_notification"
+ android:title="@string/push_notification"
+ android:icon="@drawable/arrow_circle"/>
+</PreferenceScreen> \ No newline at end of file
diff --git a/wearable/wear/WearAccessibilityApp/build.gradle b/wearable/wear/WearAccessibilityApp/build.gradle
new file mode 100644
index 00000000..b95a8604
--- /dev/null
+++ b/wearable/wear/WearAccessibilityApp/build.gradle
@@ -0,0 +1,12 @@
+
+
+// BEGIN_EXCLUDE
+import com.example.android.samples.build.SampleGenPlugin
+apply plugin: SampleGenPlugin
+
+samplegen {
+ pathToBuild "../../../../../build"
+ pathToSamplesCommon "../../../common"
+}
+apply from: "../../../../../build/build.gradle"
+// END_EXCLUDE
diff --git a/wearable/wear/WearAccessibilityApp/buildSrc/build.gradle b/wearable/wear/WearAccessibilityApp/buildSrc/build.gradle
new file mode 100644
index 00000000..7c150e4b
--- /dev/null
+++ b/wearable/wear/WearAccessibilityApp/buildSrc/build.gradle
@@ -0,0 +1,16 @@
+
+repositories {
+ jcenter()
+}
+dependencies {
+ compile 'org.freemarker:freemarker:2.3.20'
+}
+
+sourceSets {
+ main {
+ groovy {
+ srcDir new File(rootDir, "../../../../../../build/buildSrc/src/main/groovy")
+ }
+ }
+}
+
diff --git a/wearable/wear/WearAccessibilityApp/gradle/wrapper/gradle-wrapper.jar b/wearable/wear/WearAccessibilityApp/gradle/wrapper/gradle-wrapper.jar
new file mode 100644
index 00000000..8c0fb64a
--- /dev/null
+++ b/wearable/wear/WearAccessibilityApp/gradle/wrapper/gradle-wrapper.jar
Binary files differ
diff --git a/wearable/wear/WearAccessibilityApp/gradle/wrapper/gradle-wrapper.properties b/wearable/wear/WearAccessibilityApp/gradle/wrapper/gradle-wrapper.properties
new file mode 100644
index 00000000..0a4f2274
--- /dev/null
+++ b/wearable/wear/WearAccessibilityApp/gradle/wrapper/gradle-wrapper.properties
@@ -0,0 +1,7 @@
+#Wed Apr 10 15:27:10 PDT 2013
+distributionBase=GRADLE_USER_HOME
+distributionPath=wrapper/dists
+zipStoreBase=GRADLE_USER_HOME
+zipStorePath=wrapper/dists
+distributionUrl=https\://services.gradle.org/distributions/gradle-4.1-all.zip
+
diff --git a/wearable/wear/WearAccessibilityApp/gradlew b/wearable/wear/WearAccessibilityApp/gradlew
new file mode 100755
index 00000000..91a7e269
--- /dev/null
+++ b/wearable/wear/WearAccessibilityApp/gradlew
@@ -0,0 +1,164 @@
+#!/usr/bin/env bash
+
+##############################################################################
+##
+## Gradle start up script for UN*X
+##
+##############################################################################
+
+# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
+DEFAULT_JVM_OPTS=""
+
+APP_NAME="Gradle"
+APP_BASE_NAME=`basename "$0"`
+
+# Use the maximum available, or set MAX_FD != -1 to use that value.
+MAX_FD="maximum"
+
+warn ( ) {
+ echo "$*"
+}
+
+die ( ) {
+ echo
+ echo "$*"
+ echo
+ exit 1
+}
+
+# OS specific support (must be 'true' or 'false').
+cygwin=false
+msys=false
+darwin=false
+case "`uname`" in
+ CYGWIN* )
+ cygwin=true
+ ;;
+ Darwin* )
+ darwin=true
+ ;;
+ MINGW* )
+ msys=true
+ ;;
+esac
+
+# For Cygwin, ensure paths are in UNIX format before anything is touched.
+if $cygwin ; then
+ [ -n "$JAVA_HOME" ] && JAVA_HOME=`cygpath --unix "$JAVA_HOME"`
+fi
+
+# Attempt to set APP_HOME
+# Resolve links: $0 may be a link
+PRG="$0"
+# Need this for relative symlinks.
+while [ -h "$PRG" ] ; do
+ ls=`ls -ld "$PRG"`
+ link=`expr "$ls" : '.*-> \(.*\)$'`
+ if expr "$link" : '/.*' > /dev/null; then
+ PRG="$link"
+ else
+ PRG=`dirname "$PRG"`"/$link"
+ fi
+done
+SAVED="`pwd`"
+cd "`dirname \"$PRG\"`/" >&-
+APP_HOME="`pwd -P`"
+cd "$SAVED" >&-
+
+CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
+
+# Determine the Java command to use to start the JVM.
+if [ -n "$JAVA_HOME" ] ; then
+ if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
+ # IBM's JDK on AIX uses strange locations for the executables
+ JAVACMD="$JAVA_HOME/jre/sh/java"
+ else
+ JAVACMD="$JAVA_HOME/bin/java"
+ fi
+ if [ ! -x "$JAVACMD" ] ; then
+ die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
+
+Please set the JAVA_HOME variable in your environment to match the
+location of your Java installation."
+ fi
+else
+ JAVACMD="java"
+ which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
+
+Please set the JAVA_HOME variable in your environment to match the
+location of your Java installation."
+fi
+
+# Increase the maximum file descriptors if we can.
+if [ "$cygwin" = "false" -a "$darwin" = "false" ] ; then
+ MAX_FD_LIMIT=`ulimit -H -n`
+ if [ $? -eq 0 ] ; then
+ if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
+ MAX_FD="$MAX_FD_LIMIT"
+ fi
+ ulimit -n $MAX_FD
+ if [ $? -ne 0 ] ; then
+ warn "Could not set maximum file descriptor limit: $MAX_FD"
+ fi
+ else
+ warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT"
+ fi
+fi
+
+# For Darwin, add options to specify how the application appears in the dock
+if $darwin; then
+ GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
+fi
+
+# For Cygwin, switch paths to Windows format before running java
+if $cygwin ; then
+ APP_HOME=`cygpath --path --mixed "$APP_HOME"`
+ CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
+
+ # We build the pattern for arguments to be converted via cygpath
+ ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
+ SEP=""
+ for dir in $ROOTDIRSRAW ; do
+ ROOTDIRS="$ROOTDIRS$SEP$dir"
+ SEP="|"
+ done
+ OURCYGPATTERN="(^($ROOTDIRS))"
+ # Add a user-defined pattern to the cygpath arguments
+ if [ "$GRADLE_CYGPATTERN" != "" ] ; then
+ OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)"
+ fi
+ # Now convert the arguments - kludge to limit ourselves to /bin/sh
+ i=0
+ for arg in "$@" ; do
+ CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -`
+ CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option
+
+ if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition
+ eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"`
+ else
+ eval `echo args$i`="\"$arg\""
+ fi
+ i=$((i+1))
+ done
+ case $i in
+ (0) set -- ;;
+ (1) set -- "$args0" ;;
+ (2) set -- "$args0" "$args1" ;;
+ (3) set -- "$args0" "$args1" "$args2" ;;
+ (4) set -- "$args0" "$args1" "$args2" "$args3" ;;
+ (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
+ (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
+ (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
+ (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
+ (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
+ esac
+fi
+
+# Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules
+function splitJvmOpts() {
+ JVM_OPTS=("$@")
+}
+eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS
+JVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME"
+
+exec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "$@"
diff --git a/wearable/wear/WearAccessibilityApp/gradlew.bat b/wearable/wear/WearAccessibilityApp/gradlew.bat
new file mode 100644
index 00000000..aec99730
--- /dev/null
+++ b/wearable/wear/WearAccessibilityApp/gradlew.bat
@@ -0,0 +1,90 @@
+@if "%DEBUG%" == "" @echo off
+@rem ##########################################################################
+@rem
+@rem Gradle startup script for Windows
+@rem
+@rem ##########################################################################
+
+@rem Set local scope for the variables with windows NT shell
+if "%OS%"=="Windows_NT" setlocal
+
+@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
+set DEFAULT_JVM_OPTS=
+
+set DIRNAME=%~dp0
+if "%DIRNAME%" == "" set DIRNAME=.
+set APP_BASE_NAME=%~n0
+set APP_HOME=%DIRNAME%
+
+@rem Find java.exe
+if defined JAVA_HOME goto findJavaFromJavaHome
+
+set JAVA_EXE=java.exe
+%JAVA_EXE% -version >NUL 2>&1
+if "%ERRORLEVEL%" == "0" goto init
+
+echo.
+echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
+echo.
+echo Please set the JAVA_HOME variable in your environment to match the
+echo location of your Java installation.
+
+goto fail
+
+:findJavaFromJavaHome
+set JAVA_HOME=%JAVA_HOME:"=%
+set JAVA_EXE=%JAVA_HOME%/bin/java.exe
+
+if exist "%JAVA_EXE%" goto init
+
+echo.
+echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
+echo.
+echo Please set the JAVA_HOME variable in your environment to match the
+echo location of your Java installation.
+
+goto fail
+
+:init
+@rem Get command-line arguments, handling Windowz variants
+
+if not "%OS%" == "Windows_NT" goto win9xME_args
+if "%@eval[2+2]" == "4" goto 4NT_args
+
+:win9xME_args
+@rem Slurp the command line arguments.
+set CMD_LINE_ARGS=
+set _SKIP=2
+
+:win9xME_args_slurp
+if "x%~1" == "x" goto execute
+
+set CMD_LINE_ARGS=%*
+goto execute
+
+:4NT_args
+@rem Get arguments from the 4NT Shell from JP Software
+set CMD_LINE_ARGS=%$
+
+:execute
+@rem Setup the command line
+
+set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
+
+@rem Execute Gradle
+"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS%
+
+:end
+@rem End local scope for the variables with windows NT shell
+if "%ERRORLEVEL%"=="0" goto mainEnd
+
+:fail
+rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
+rem the _cmd.exe /c_ return code!
+if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
+exit /b 1
+
+:mainEnd
+if "%OS%"=="Windows_NT" endlocal
+
+:omega
diff --git a/wearable/wear/WearAccessibilityApp/settings.gradle b/wearable/wear/WearAccessibilityApp/settings.gradle
new file mode 100644
index 00000000..9c2651c7
--- /dev/null
+++ b/wearable/wear/WearAccessibilityApp/settings.gradle
@@ -0,0 +1,2 @@
+
+include ':Wearable'
diff --git a/wearable/wear/WearAccessibilityApp/template-params.xml b/wearable/wear/WearAccessibilityApp/template-params.xml
new file mode 100644
index 00000000..dc9f5d52
--- /dev/null
+++ b/wearable/wear/WearAccessibilityApp/template-params.xml
@@ -0,0 +1,111 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright 2013 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+
+<sample>
+ <name>WearAccessibilityApp</name>
+ <group>Wearable</group>
+ <package>com.example.android.wearable.wear.wearaccessibilityapp</package>
+
+ <minSdkVersionWear>23</minSdkVersionWear>
+ <compileSdkVersionWear>26</compileSdkVersionWear>
+ <targetSdkVersionWear>26</targetSdkVersionWear>
+
+ <multiDexEnabled>true</multiDexEnabled>
+
+ <dependency_wearable>com.android.support:wear:27.0.0</dependency_wearable>
+ <dependency_wearable>com.android.support.constraint:constraint-layout:1.0.2</dependency_wearable>
+ <dependency_wearable>com.android.support:appcompat-v7:27.0.0</dependency_wearable>
+
+
+ <strings>
+ <intro>
+ <![CDATA[
+ Introductory text that explains what the sample is intended to demonstrate. Edit
+ in template-params.xml.
+ ]]>
+ </intro>
+ </strings>
+
+ <template src="base-build" />
+ <template src="Wear" />
+
+ <metadata>
+ <!-- Values: {DRAFT | PUBLISHED | INTERNAL | DEPRECATED | SUPERCEDED} -->
+ <status>DRAFT</status>
+ <!-- See http://go/sample-categories for details on the next 4 fields. -->
+ <!-- Most samples just need to udpate the Categories field. This is a comma-
+ seperated list of topic tags. Unlike the old category system, samples
+ may have multiple categories, so feel free to add extras. Try to avoid
+ simply tagging everything with "UI". :)-->
+ <categories>Wearable</categories>
+ <technologies>Android</technologies>
+ <languages>Java</languages>
+ <solutions>Mobile</solutions>
+ <!-- Values: {BEGINNER | INTERMEDIATE | ADVANCED | EXPERT} -->
+ <!-- Beginner is for "getting started" type content, or essential content.
+ (e.g. "Hello World", activities, intents)
+
+ Intermediate is for content that covers material a beginner doesn't need
+ to know, but that a skilled developer is expected to know.
+ (e.g. services, basic styles and theming, sync adapters)
+
+ Advanced is for highly technical content geared towards experienced developers.
+ (e.g. performance optimizations, custom views, bluetooth)
+
+ Expert is reserved for highly technical or specialized content, and should
+ be used sparingly. (e.g. VPN clients, SELinux, custom instrumentation runners) -->
+ <level>INTERMEDIATE</level>
+ <!-- Dimensions: 512x512, PNG fomrat -->
+ <icon>screenshots/icon-web.png</icon>
+ <!-- Path to screenshots. Use <img> tags for each. -->
+ <screenshots>
+ <img>screenshots/1-main.png</img>
+ <img>screenshots/2-settings.png</img>
+ </screenshots>
+ <!-- List of APIs that this sample should be cross-referenced under. Use <android>
+ for fully-qualified Framework class names ("android:" namespace).
+
+ Use <ext> for custom namespaces, if needed. See "Samples Index API" documentation
+ for more details. -->
+ <api_refs>
+ <android>android.app.ActionBar</android>
+ </api_refs>
+
+ <!-- 1-3 line description of the sample here.
+
+ Avoid simply rearranging the sample's title. What does this sample actually
+ accomplish, and how does it do it? -->
+ <description>
+ Sample demonstrating how to instantiate an ActionBar on Android, define
+ action items, and set an "up" navigation link. Uses the Support Library
+ for compatibility with pre-3.0 devices.
+ </description>
+
+ <!-- Multi-paragraph introduction to sample, from an educational point-of-view.
+ Makrdown formatting allowed. This will be used to generate a mini-article for the
+ sample on DAC. -->
+ <intro>
+ Long intro here.
+
+ Multi-paragraph introduction to sample, from an educational point-of-view.
+ *Makrdown* formatting allowed. See [Markdown Documentation][1]
+ for details.
+
+ [1]: http://daringfireball.net/projects/markdown/syntax
+ </intro>
+ </metadata>
+</sample>