aboutsummaryrefslogtreecommitdiff
path: root/wearable
diff options
context:
space:
mode:
authorJeremy Walker <jewalker@google.com>2019-03-31 15:55:18 -0700
committerJeremy Walker <jewalker@google.com>2019-04-01 15:12:21 -0700
commit5d76fedbfa7a022a62783e86e8c9192d54c7dd3b (patch)
tree758d17dc8f2d435a2b9738a303aad15d3b5bca44 /wearable
parent38c7da1220c60cf7c6ee02df914aabb2668667a2 (diff)
downloadandroid-5d76fedbfa7a022a62783e86e8c9192d54c7dd3b.tar.gz
WearAccessibilityApp - Updates to latest libraries and MessagingStyles.
Bug: 129548613 Test: Manually tested. Change-Id: Ic1c4931459407be7fb2b9e7917d57a0a9f3a7089
Diffstat (limited to 'wearable')
-rw-r--r--wearable/wear/WearAccessibilityApp/Wearable/build.gradle24
-rw-r--r--wearable/wear/WearAccessibilityApp/Wearable/src/main/AndroidManifest.xml2
-rw-r--r--wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/AccessibilityActivity.java4
-rw-r--r--wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/AppItem.java5
-rw-r--r--wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/AppItemListViewAdapter.java5
-rw-r--r--wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/ControlsActivity.java5
-rw-r--r--wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/DialogsActivity.java5
-rw-r--r--wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/FullScreenActivity.java5
-rw-r--r--wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/GlobalNotificationBuilder.java2
-rw-r--r--wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/ImagesActivity.java5
-rw-r--r--wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/InLineActivity.java5
-rw-r--r--wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/ListOfGraphicsActivity.java5
-rw-r--r--wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/ListViewAdapter.java5
-rw-r--r--wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/ListsActivity.java5
-rw-r--r--wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/ListsItem.java5
-rw-r--r--wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/LongListActivity.java13
-rw-r--r--wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/LongListRecyclerViewAdapter.java5
-rw-r--r--wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/MainActivity.java9
-rw-r--r--wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/MenuRecyclerViewAdapter.java5
-rw-r--r--wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/MessagingIntentService.java126
-rw-r--r--wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/MessagingMainActivity.java3
-rw-r--r--wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/MockDatabase.java227
-rw-r--r--wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/NotificationsActivity.java119
-rw-r--r--wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/OpenOnPhoneAnimationActivity.java5
-rw-r--r--wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/PhotoCarouselActivity.java5
-rw-r--r--wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/ProgressActivity.java5
-rw-r--r--wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/RadioListActivity.java5
-rw-r--r--wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/ScalingScrollLayoutCallback.java5
-rw-r--r--wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/ZoomImageActivity.java5
-rw-r--r--wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/util/NotificationUtil.java77
-rw-r--r--wearable/wear/WearAccessibilityApp/Wearable/src/main/res/drawable-hdpi/earth.pngbin0 -> 155081 bytes
-rw-r--r--wearable/wear/WearAccessibilityApp/Wearable/src/main/res/drawable-hdpi/famous_fryer.pngbin0 -> 34251 bytes
-rw-r--r--wearable/wear/WearAccessibilityApp/Wearable/src/main/res/drawable-hdpi/me_macdonald.pngbin0 -> 57180 bytes
-rw-r--r--wearable/wear/WearAccessibilityApp/Wearable/src/main/res/drawable-hdpi/wendy_wonda.pngbin0 -> 45387 bytes
-rw-r--r--wearable/wear/WearAccessibilityApp/Wearable/src/main/res/layout/activity_long_list.xml10
-rw-r--r--wearable/wear/WearAccessibilityApp/Wearable/src/main/res/layout/activity_main.xml2
-rw-r--r--wearable/wear/WearAccessibilityApp/gradle.properties2
-rw-r--r--wearable/wear/WearAccessibilityApp/gradle/wrapper/gradle-wrapper.properties5
-rw-r--r--wearable/wear/WearAccessibilityApp/template-params.xml14
39 files changed, 488 insertions, 246 deletions
diff --git a/wearable/wear/WearAccessibilityApp/Wearable/build.gradle b/wearable/wear/WearAccessibilityApp/Wearable/build.gradle
index e5ee2ffa..c8e23bb8 100644
--- a/wearable/wear/WearAccessibilityApp/Wearable/build.gradle
+++ b/wearable/wear/WearAccessibilityApp/Wearable/build.gradle
@@ -6,7 +6,7 @@ buildscript {
}
dependencies {
- classpath 'com.android.tools.build:gradle:3.1.3'
+ classpath 'com.android.tools.build:gradle:3.3.2'
}
}
@@ -21,17 +21,19 @@ repositories {
dependencies {
- implementation 'com.android.support:wear:27.1.0'
- implementation 'com.android.support.constraint:constraint-layout:1.0.2'
- implementation 'com.android.support:appcompat-v7:27.1.0'
+ implementation 'androidx.wear:wear:1.0.0'
+ implementation 'androidx.legacy:legacy-support-v4:1.0.0'
+ implementation 'androidx.legacy:legacy-support-v13:1.0.0'
+ implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
+ implementation 'androidx.appcompat:appcompat:1.0.2'
- implementation 'com.google.android.gms:play-services-wearable:15.0.1'
- implementation 'com.android.support:support-v13:27.1.1'
+ implementation 'com.google.android.gms:play-services-wearable:16.0.1'
- compileOnly 'com.google.android.wearable:wearable:2.3.0'
- implementation 'com.google.android.support:wearable:2.3.0'
+ compileOnly 'com.google.android.wearable:wearable:2.4.0'
+
+ implementation 'com.google.android.support:wearable:2.4.0'
}
@@ -45,9 +47,9 @@ List<String> dirs = [
android {
- compileSdkVersion 26
+ compileSdkVersion 28
- buildToolsVersion "27.0.3"
+ buildToolsVersion "28.0.3"
defaultConfig {
versionCode 1
@@ -55,7 +57,7 @@ android {
minSdkVersion 24
- targetSdkVersion 26
+ targetSdkVersion 28
multiDexEnabled true
diff --git a/wearable/wear/WearAccessibilityApp/Wearable/src/main/AndroidManifest.xml b/wearable/wear/WearAccessibilityApp/Wearable/src/main/AndroidManifest.xml
index 3c7fcaf1..6e936d6f 100644
--- a/wearable/wear/WearAccessibilityApp/Wearable/src/main/AndroidManifest.xml
+++ b/wearable/wear/WearAccessibilityApp/Wearable/src/main/AndroidManifest.xml
@@ -17,8 +17,6 @@
<manifest package="com.example.android.wearable.wear.wearaccessibilityapp"
xmlns:android="http://schemas.android.com/apk/res/android">
- <uses-sdk android:minSdkVersion="14"/>
-
<uses-feature android:name="android.hardware.type.watch"/>
<!-- Required for Always-on. -->
diff --git a/wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/AccessibilityActivity.java b/wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/AccessibilityActivity.java
index d982d123..319fa34d 100644
--- a/wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/AccessibilityActivity.java
+++ b/wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/AccessibilityActivity.java
@@ -19,12 +19,14 @@ import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.provider.Settings;
-import android.support.wear.ambient.AmbientMode;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.ImageView;
import android.widget.TextView;
+import androidx.wear.ambient.AmbientMode;
+
+
public class AccessibilityActivity extends Activity implements AmbientMode.AmbientCallbackProvider {
@Override
protected void onCreate(Bundle savedInstanceState) {
diff --git a/wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/AppItem.java b/wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/AppItem.java
index ee1002bf..7c713c04 100644
--- a/wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/AppItem.java
+++ b/wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/AppItem.java
@@ -52,6 +52,9 @@ public class AppItem {
}
public void launchActivity(Context context) {
- context.startActivity(new Intent(context, mClass));
+ Intent intent = new Intent(context, mClass);
+ intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
+
+ context.startActivity(intent);
}
}
diff --git a/wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/AppItemListViewAdapter.java b/wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/AppItemListViewAdapter.java
index 372f995b..e82cafe3 100644
--- a/wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/AppItemListViewAdapter.java
+++ b/wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/AppItemListViewAdapter.java
@@ -16,8 +16,6 @@
package com.example.android.wearable.wear.wearaccessibilityapp;
import android.content.Context;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
@@ -25,6 +23,9 @@ import android.widget.ArrayAdapter;
import android.widget.ImageView;
import android.widget.TextView;
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+
import java.util.List;
public class AppItemListViewAdapter extends ArrayAdapter<AppItem> {
diff --git a/wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/ControlsActivity.java b/wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/ControlsActivity.java
index 5cb897e5..91dd1274 100644
--- a/wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/ControlsActivity.java
+++ b/wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/ControlsActivity.java
@@ -17,8 +17,9 @@ package com.example.android.wearable.wear.wearaccessibilityapp;
import android.os.Bundle;
import android.preference.PreferenceFragment;
-import android.support.v4.app.FragmentActivity;
-import android.support.wear.ambient.AmbientModeSupport;
+
+import androidx.fragment.app.FragmentActivity;
+import androidx.wear.ambient.AmbientModeSupport;
public class ControlsActivity extends FragmentActivity implements
AmbientModeSupport.AmbientCallbackProvider {
diff --git a/wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/DialogsActivity.java b/wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/DialogsActivity.java
index e17476c8..41825dcd 100644
--- a/wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/DialogsActivity.java
+++ b/wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/DialogsActivity.java
@@ -20,8 +20,6 @@ import android.content.DialogInterface;
import android.content.DialogInterface.OnClickListener;
import android.content.Intent;
import android.os.Bundle;
-import android.support.v4.app.FragmentActivity;
-import android.support.wear.ambient.AmbientModeSupport;
import android.support.wearable.view.AcceptDenyDialog;
import android.support.wearable.view.WearableDialogHelper.DialogBuilder;
import android.view.LayoutInflater;
@@ -30,6 +28,9 @@ import android.widget.AdapterView;
import android.widget.ListView;
import android.widget.TextView;
+import androidx.fragment.app.FragmentActivity;
+import androidx.wear.ambient.AmbientModeSupport;
+
import java.util.ArrayList;
import java.util.List;
import java.util.function.Supplier;
diff --git a/wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/FullScreenActivity.java b/wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/FullScreenActivity.java
index f254e288..bee32771 100644
--- a/wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/FullScreenActivity.java
+++ b/wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/FullScreenActivity.java
@@ -16,8 +16,9 @@
package com.example.android.wearable.wear.wearaccessibilityapp;
import android.os.Bundle;
-import android.support.v4.app.FragmentActivity;
-import android.support.wear.ambient.AmbientModeSupport;
+
+import androidx.fragment.app.FragmentActivity;
+import androidx.wear.ambient.AmbientModeSupport;
public class FullScreenActivity extends FragmentActivity implements
AmbientModeSupport.AmbientCallbackProvider {
diff --git a/wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/GlobalNotificationBuilder.java b/wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/GlobalNotificationBuilder.java
index 812ed944..c77d6238 100644
--- a/wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/GlobalNotificationBuilder.java
+++ b/wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/GlobalNotificationBuilder.java
@@ -15,7 +15,7 @@
*/
package com.example.android.wearable.wear.wearaccessibilityapp;
-import android.support.v4.app.NotificationCompat;
+import androidx.core.app.NotificationCompat;
/**
* We use a Singleton for a global copy of the NotificationCompat.Builder to update active
diff --git a/wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/ImagesActivity.java b/wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/ImagesActivity.java
index dcb95046..f9334de8 100644
--- a/wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/ImagesActivity.java
+++ b/wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/ImagesActivity.java
@@ -19,10 +19,11 @@ import android.graphics.drawable.Animatable2.AnimationCallback;
import android.graphics.drawable.AnimatedVectorDrawable;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
-import android.support.v4.app.FragmentActivity;
-import android.support.wear.ambient.AmbientModeSupport;
import android.widget.ImageView;
+import androidx.fragment.app.FragmentActivity;
+import androidx.wear.ambient.AmbientModeSupport;
+
public class ImagesActivity extends FragmentActivity implements
AmbientModeSupport.AmbientCallbackProvider {
private AnimatedVectorDrawable mAnimatedVectorDrawableSwipe;
diff --git a/wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/InLineActivity.java b/wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/InLineActivity.java
index 275f5444..25a2011e 100644
--- a/wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/InLineActivity.java
+++ b/wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/InLineActivity.java
@@ -21,8 +21,9 @@ import android.preference.Preference.OnPreferenceChangeListener;
import android.preference.PreferenceFragment;
import android.preference.PreferenceScreen;
import android.preference.SwitchPreference;
-import android.support.v4.app.FragmentActivity;
-import android.support.wear.ambient.AmbientModeSupport;
+
+import androidx.fragment.app.FragmentActivity;
+import androidx.wear.ambient.AmbientModeSupport;
public class InLineActivity extends FragmentActivity implements
AmbientModeSupport.AmbientCallbackProvider {
diff --git a/wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/ListOfGraphicsActivity.java b/wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/ListOfGraphicsActivity.java
index 1d700667..e0aff859 100644
--- a/wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/ListOfGraphicsActivity.java
+++ b/wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/ListOfGraphicsActivity.java
@@ -16,14 +16,15 @@
package com.example.android.wearable.wear.wearaccessibilityapp;
import android.os.Bundle;
-import android.support.v4.app.FragmentActivity;
-import android.support.wear.ambient.AmbientModeSupport;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ListView;
import android.widget.TextView;
+import androidx.fragment.app.FragmentActivity;
+import androidx.wear.ambient.AmbientModeSupport;
+
import java.util.ArrayList;
import java.util.List;
diff --git a/wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/ListViewAdapter.java b/wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/ListViewAdapter.java
index 41b18d8a..8899b4e4 100644
--- a/wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/ListViewAdapter.java
+++ b/wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/ListViewAdapter.java
@@ -16,8 +16,6 @@
package com.example.android.wearable.wear.wearaccessibilityapp;
import android.content.Context;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
@@ -25,6 +23,9 @@ import android.widget.ArrayAdapter;
import android.widget.ImageView;
import android.widget.TextView;
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+
import java.util.List;
public class ListViewAdapter<T extends Item> extends ArrayAdapter<T> {
diff --git a/wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/ListsActivity.java b/wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/ListsActivity.java
index bd9d7736..6680900d 100644
--- a/wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/ListsActivity.java
+++ b/wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/ListsActivity.java
@@ -16,14 +16,15 @@
package com.example.android.wearable.wear.wearaccessibilityapp;
import android.os.Bundle;
-import android.support.v4.app.FragmentActivity;
-import android.support.wear.ambient.AmbientModeSupport;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ListView;
import android.widget.TextView;
+import androidx.fragment.app.FragmentActivity;
+import androidx.wear.ambient.AmbientModeSupport;
+
import java.util.ArrayList;
import java.util.List;
diff --git a/wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/ListsItem.java b/wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/ListsItem.java
index 42e84642..57be950c 100644
--- a/wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/ListsItem.java
+++ b/wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/ListsItem.java
@@ -33,6 +33,9 @@ public class ListsItem implements Item {
}
public void launchActivity(Context context) {
- context.startActivity(new Intent(context, mClass));
+ Intent intent = new Intent(context, mClass);
+ intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
+
+ context.startActivity(intent);
}
}
diff --git a/wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/LongListActivity.java b/wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/LongListActivity.java
index 42403975..c1255e6a 100644
--- a/wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/LongListActivity.java
+++ b/wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/LongListActivity.java
@@ -17,14 +17,15 @@ package com.example.android.wearable.wear.wearaccessibilityapp;
import android.os.Bundle;
import android.os.Handler;
-import android.support.v4.app.FragmentActivity;
-import android.support.v7.widget.LinearLayoutManager;
-import android.support.v7.widget.RecyclerView;
-import android.support.wear.ambient.AmbientModeSupport;
-import android.support.wear.widget.WearableRecyclerView;
-import android.support.wear.widget.drawer.WearableActionDrawerView;
import android.view.View;
+import androidx.fragment.app.FragmentActivity;
+import androidx.recyclerview.widget.LinearLayoutManager;
+import androidx.recyclerview.widget.RecyclerView;
+import androidx.wear.ambient.AmbientModeSupport;
+import androidx.wear.widget.WearableRecyclerView;
+import androidx.wear.widget.drawer.WearableActionDrawerView;
+
import com.example.android.wearable.wear.wearaccessibilityapp.LongListRecyclerViewAdapter.SwitchChangeListener;
import java.util.ArrayList;
diff --git a/wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/LongListRecyclerViewAdapter.java b/wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/LongListRecyclerViewAdapter.java
index 96b273a5..27681b31 100644
--- a/wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/LongListRecyclerViewAdapter.java
+++ b/wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/LongListRecyclerViewAdapter.java
@@ -16,8 +16,6 @@
package com.example.android.wearable.wear.wearaccessibilityapp;
import android.content.Context;
-import android.support.v7.widget.RecyclerView;
-import android.support.v7.widget.RecyclerView.ViewHolder;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
@@ -26,6 +24,9 @@ import android.widget.ImageView;
import android.widget.Switch;
import android.widget.TextView;
+import androidx.recyclerview.widget.RecyclerView;
+import androidx.recyclerview.widget.RecyclerView.ViewHolder;
+
import java.util.List;
public class LongListRecyclerViewAdapter
diff --git a/wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/MainActivity.java b/wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/MainActivity.java
index 4bbfacdd..370c0e5a 100644
--- a/wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/MainActivity.java
+++ b/wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/MainActivity.java
@@ -16,10 +16,11 @@
package com.example.android.wearable.wear.wearaccessibilityapp;
import android.os.Bundle;
-import android.support.v4.app.FragmentActivity;
-import android.support.wear.ambient.AmbientModeSupport;
-import android.support.wear.widget.WearableLinearLayoutManager;
-import android.support.wear.widget.WearableRecyclerView;
+
+import androidx.fragment.app.FragmentActivity;
+import androidx.wear.ambient.AmbientModeSupport;
+import androidx.wear.widget.WearableLinearLayoutManager;
+import androidx.wear.widget.WearableRecyclerView;
import java.util.ArrayList;
import java.util.List;
diff --git a/wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/MenuRecyclerViewAdapter.java b/wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/MenuRecyclerViewAdapter.java
index e5367625..3e57c008 100644
--- a/wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/MenuRecyclerViewAdapter.java
+++ b/wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/MenuRecyclerViewAdapter.java
@@ -16,14 +16,15 @@
package com.example.android.wearable.wear.wearaccessibilityapp;
import android.content.Context;
-import android.support.v7.widget.RecyclerView;
-import android.support.v7.widget.RecyclerView.ViewHolder;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
+import androidx.recyclerview.widget.RecyclerView;
+import androidx.recyclerview.widget.RecyclerView.ViewHolder;
+
import java.util.List;
public class MenuRecyclerViewAdapter extends RecyclerView.Adapter<MenuRecyclerViewAdapter.Holder> {
diff --git a/wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/MessagingIntentService.java b/wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/MessagingIntentService.java
index b8e998f9..980dcbc7 100644
--- a/wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/MessagingIntentService.java
+++ b/wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/MessagingIntentService.java
@@ -21,12 +21,15 @@ import android.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;
+import androidx.core.app.NotificationCompat;
+import androidx.core.app.NotificationCompat.MessagingStyle;
+import androidx.core.app.NotificationManagerCompat;
+import androidx.core.app.Person;
+import androidx.core.app.RemoteInput;
+import androidx.core.content.ContextCompat;
+
/**
* Asynchronously handles updating messaging app posts (and active Notification) with replies from
* user in a conversation. Notification for social app use MessagingStyle.
@@ -100,8 +103,9 @@ public class MessagingIntentService extends IntentService {
NotificationCompat.MessagingStyle.extractMessagingStyleFromNotification(
notification);
- // Add new message to the MessagingStyle
- messagingStyle.addMessage(replyCharSequence, System.currentTimeMillis(), null);
+ // Add new message to the MessagingStyle. Set last parameter to null for responses
+ // from user.
+ messagingStyle.addMessage(replyCharSequence, System.currentTimeMillis(), (Person) null);
// Updates the Notification
notification = notificationCompatBuilder.setStyle(messagingStyle).build();
@@ -130,51 +134,52 @@ public class MessagingIntentService extends IntentService {
*/
private NotificationCompat.Builder recreateBuilderWithMessagingStyle() {
- // Main steps for building a MESSAGING_STYLE notification (for more detailed comments on
- // building this notification, check StandaloneMainActivity.java)::
+ // Main steps for building a MESSAGING_STYLE notification:
// 0. Get your data
- // 1. Build the MESSAGING_STYLE
- // 2. Add support for Wear 1.+
+ // 1. Create Notification Channel for O and beyond devices (26+)
+ // 2. Build the MESSAGING_STYLE
// 3. Set up main Intent for notification
// 4. Set up RemoteInput (users can input directly from notification)
// 5. Build and issue the notification
- // 0. Get your data (everything unique per Notification)
+ // 0. Get your data (everything unique per Notification).
MockDatabase.MessagingStyleCommsAppData messagingStyleCommsAppData =
- MockDatabase.getMessagingStyleData();
+ MockDatabase.getMessagingStyleData(getApplicationContext());
+
+ // 1. Retrieve Notification Channel for O and beyond devices (26+). We don't need to create
+ // the NotificationChannel, since it was created the first time this Notification was
+ // created.
+ String notificationChannelId = messagingStyleCommsAppData.getChannelId();
- // 1. Build the Notification.Style (MESSAGING_STYLE)
+ // 2. Build the Notification.Style (MESSAGING_STYLE).
String contentTitle = messagingStyleCommsAppData.getContentTitle();
MessagingStyle messagingStyle =
- new NotificationCompat.MessagingStyle(messagingStyleCommsAppData.getReplayName())
+ new NotificationCompat.MessagingStyle(messagingStyleCommsAppData.getMe())
+ /*
+ * <p>This API's behavior was changed in SDK version
+ * {@link Build.VERSION_CODES#P}. If your application's target version is
+ * less than {@link Build.VERSION_CODES#P}, setting a conversation title to
+ * a non-null value will make {@link #isGroupConversation()} return
+ * {@code true} and passing {@code null} will make it return {@code false}.
+ * This behavior can be overridden by calling
+ * {@link #setGroupConversation(boolean)} regardless of SDK version.
+ * In {@code P} and above, this method does not affect group conversation
+ * settings.
+ *
+ * In our case, we use the same title.
+ */
.setConversationTitle(contentTitle);
- // Adds all Messages
+ // Adds all Messages.
+ // Note: Messages include the text, timestamp, and sender.
for (MessagingStyle.Message message : messagingStyleCommsAppData.getMessages()) {
messagingStyle.addMessage(message);
}
- // 2. Add support for Wear 1.+.
- String fullMessageForWearVersion1 = messagingStyleCommsAppData.getFullConversation();
-
- Notification chatHistoryForWearV1 =
- new NotificationCompat.Builder(getApplicationContext())
- .setStyle(
- new NotificationCompat.BigTextStyle()
- .bigText(fullMessageForWearVersion1))
- .setContentTitle(contentTitle)
- .setSmallIcon(R.drawable.watch)
- .setContentText(fullMessageForWearVersion1)
- .build();
+ messagingStyle.setGroupConversation(messagingStyleCommsAppData.isGroupConversation());
- // Adds page with all text to support Wear 1.+.
- NotificationCompat.WearableExtender wearableExtenderForWearVersion1 =
- new NotificationCompat.WearableExtender()
- .setHintContentIntentLaunchesActivity(true)
- .addPage(chatHistoryForWearV1);
-
- // 3. Set up main Intent for notification
+ // 3. Set up main Intent for notification.
Intent notifyIntent = new Intent(this, MessagingMainActivity.class);
PendingIntent mainPendingIntent =
@@ -182,58 +187,83 @@ public class MessagingIntentService extends IntentService {
// 4. Set up a RemoteInput Action, so users can input (keyboard, drawing, voice) directly
// from the notification without entering the app.
+
+ // Create the RemoteInput specifying this key.
String replyLabel = getString(R.string.reply_label);
RemoteInput remoteInput =
new RemoteInput.Builder(MessagingIntentService.EXTRA_REPLY)
.setLabel(replyLabel)
+ // Use machine learning to create responses based on previous messages.
+ .setChoices(messagingStyleCommsAppData.getReplyChoicesBasedOnLastMessage())
.build();
+ // Create PendingIntent for service that handles input.
Intent replyIntent = new Intent(this, MessagingIntentService.class);
replyIntent.setAction(MessagingIntentService.ACTION_REPLY);
PendingIntent replyActionPendingIntent = PendingIntent.getService(this, 0, replyIntent, 0);
// Enable action to appear inline on Wear 2.0 (24+). This means it will appear over the
// lower portion of the Notification for easy action (only possible for one action).
- final NotificationCompat.Action.WearableExtender inlineActionForWear2_0 =
+ final NotificationCompat.Action.WearableExtender inlineActionForWear2 =
new NotificationCompat.Action.WearableExtender()
.setHintDisplayActionInline(true)
.setHintLaunchesActivity(false);
NotificationCompat.Action replyAction =
new NotificationCompat.Action.Builder(
- R.drawable.reply, replyLabel, replyActionPendingIntent)
+ R.drawable.reply,
+ replyLabel,
+ replyActionPendingIntent)
.addRemoteInput(remoteInput)
- // Allows system to generate replies by context of conversation
+ // Informs system we aren't bringing up our own custom UI for a reply
+ // action.
+ .setShowsUserInterface(false)
+ // Allows system to generate replies by context of conversation.
.setAllowGeneratedReplies(true)
- // Add WearableExtender to enable inline actions
- .extend(inlineActionForWear2_0)
+ // Add WearableExtender to enable inline actions.
+ .setSemanticAction(NotificationCompat.Action.SEMANTIC_ACTION_REPLY)
+ .extend(inlineActionForWear2)
.build();
- // 5. Build and issue the notification
+ // 5. Build and issue the notification.
+
+ // Notification Channel Id is ignored for Android pre O (26).
NotificationCompat.Builder notificationCompatBuilder =
- new NotificationCompat.Builder(getApplicationContext());
+ new NotificationCompat.Builder(getApplicationContext(), notificationChannelId);
GlobalNotificationBuilder.setNotificationCompatBuilderInstance(notificationCompatBuilder);
- // Builds and issues notification
notificationCompatBuilder
+ // MESSAGING_STYLE sets title and content for Wear 1.+ and Wear 2.0 devices.
.setStyle(messagingStyle)
.setContentTitle(contentTitle)
.setContentText(messagingStyleCommsAppData.getContentText())
.setSmallIcon(R.drawable.watch)
.setLargeIcon(BitmapFactory.decodeResource(getResources(), R.drawable.avatar))
.setContentIntent(mainPendingIntent)
+ .setDefaults(NotificationCompat.DEFAULT_ALL)
+ // Set primary color (important for Wear 2.0 Notifications).
+ .setColor(ContextCompat.getColor(getApplicationContext(), R.color.background))
+
+ // Number of new notifications for API <24 (Wear 1.+) devices.
.setSubText(Integer.toString(messagingStyleCommsAppData.getNumberOfNewMessages()))
.addAction(replyAction)
.setCategory(Notification.CATEGORY_MESSAGE)
- .setPriority(Notification.PRIORITY_HIGH)
- .setVisibility(Notification.VISIBILITY_PRIVATE)
- .extend(wearableExtenderForWearVersion1);
- for (String name : messagingStyleCommsAppData.getParticipants()) {
- notificationCompatBuilder.addPerson(name);
- }
+ // Sets priority for 25 and below. For 26 and above, 'priority' is deprecated for
+ // 'importance' which is set in the NotificationChannel. The integers representing
+ // 'priority' are different from 'importance', so make sure you don't mix them.
+ .setPriority(messagingStyleCommsAppData.getPriority())
+ // Sets lock-screen visibility for 25 and below. For 26 and above, lock screen
+ // visibility is set in the NotificationChannel.
+ .setVisibility(messagingStyleCommsAppData.getChannelLockscreenVisibility());
+
+ // If the phone is in "Do not disturb" mode, the user may still be notified if the
+ // sender(s) are in a group allowed through "Do not disturb" by the user.
+ for (Person person : messagingStyleCommsAppData.getParticipants()) {
+ notificationCompatBuilder.addPerson(person.getUri());
+ }
return notificationCompatBuilder;
}
}
diff --git a/wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/MessagingMainActivity.java b/wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/MessagingMainActivity.java
index b3d64644..81fed8f6 100644
--- a/wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/MessagingMainActivity.java
+++ b/wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/MessagingMainActivity.java
@@ -19,7 +19,8 @@ import android.app.Activity;
import android.app.NotificationManager;
import android.content.Context;
import android.os.Bundle;
-import android.support.wear.ambient.AmbientMode;
+
+import androidx.wear.ambient.AmbientMode;
/**
* Template class meant to include functionality for your Messaging App. (This project's main focus
diff --git a/wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/MockDatabase.java b/wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/MockDatabase.java
index 421a7195..1b70e036 100644
--- a/wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/MockDatabase.java
+++ b/wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/MockDatabase.java
@@ -16,105 +16,135 @@
package com.example.android.wearable.wear.wearaccessibilityapp;
import android.app.NotificationManager;
-import android.support.v4.app.NotificationCompat;
-import android.support.v4.app.NotificationCompat.MessagingStyle;
+import android.content.ContentResolver;
+import android.content.Context;
+import android.net.Uri;
+
+import androidx.core.app.NotificationCompat;
+import androidx.core.app.NotificationCompat.MessagingStyle;
+import androidx.core.app.Person;
+import androidx.core.graphics.drawable.IconCompat;
import java.util.ArrayList;
/** Mock data for each of the Notification Style Demos. */
public final class MockDatabase {
- public static MessagingStyleCommsAppData getMessagingStyleData() {
- return MessagingStyleCommsAppData.getInstance();
+ /**
+ * Returns object containing all information to create a Messaging.Style Notification.
+ * @param context
+ * @return
+ */
+ public static MessagingStyleCommsAppData getMessagingStyleData(Context context) {
+ return MessagingStyleCommsAppData.getInstance(context);
}
/** Represents data needed for MessagingStyle Notification. */
- public static class MessagingStyleCommsAppData {
+ public static class MessagingStyleCommsAppData extends MockNotificationData {
private static MessagingStyleCommsAppData sInstance = null;
- // Standard notification values
- protected String mContentTitle;
- protected String mContentText;
- protected int mPriority;
+ // Unique data for this Notification.Style:
+ private ArrayList<MessagingStyle.Message> mMessages;
+ // String of all mMessages.
+ private String mFullConversation;
+ // Name preferred when replying to chat.
+ private Person mMe;
+ private ArrayList<Person> mParticipants;
- // Style notification values
- protected ArrayList<MessagingStyle.Message> mMessages;
- // Basically, String of all mMessages
- protected String mFullConversation;
- // Name preferred when replying to chat
- protected String mReplayName;
- protected int mNumberOfNewMessages;
- protected ArrayList<String> mParticipants;
+ private CharSequence[] mReplyChoicesBasedOnLastMessages;
- // Notification channel values (O and above):
- protected String mChannelId;
- protected CharSequence mChannelName;
- protected String mChannelDescription;
- protected int mChannelImportance;
- protected boolean mChannelEnableVibrate;
- protected int mChannelLockscreenVisibility;
-
- public static MessagingStyleCommsAppData getInstance() {
+ /**
+ * Returns singleton version of Messaging.Style data.
+ */
+ public static MessagingStyleCommsAppData getInstance(Context context) {
if (sInstance == null) {
- sInstance = getSync();
+ sInstance = getSync(context);
}
return sInstance;
}
- private static synchronized MessagingStyleCommsAppData getSync() {
+ private static synchronized MessagingStyleCommsAppData getSync(Context context) {
if (sInstance == null) {
- sInstance = new MessagingStyleCommsAppData();
+ sInstance = new MessagingStyleCommsAppData(context);
}
return sInstance;
}
- private MessagingStyleCommsAppData() {
- // Standard notification values
- // Content for API <24 (M and below) devices
- mContentTitle = "2 Messages w/ Famous McFamously";
- mContentText = "Dude! ... You know I am a Pesce-pescetarian. :P";
+ private MessagingStyleCommsAppData(Context context) {
+ // Standard notification values:
+ // Content for API <24 (M and below) devices.
+ // Note: I am actually hardcoding these Strings based on info below. You would be
+ // pulling these values from the same source in your database. I leave this up here, so
+ // you can see the standard parts of a Notification first.
+ mContentTitle = "3 Messages w/ Famous, Wendy";
+ mContentText = "HEY, I see my house! :)";
mPriority = NotificationCompat.PRIORITY_HIGH;
- // Style notification values
+ // Create the users for the conversation.
+ // Name preferred when replying to chat.
+ mMe =
+ new Person.Builder()
+ .setName("Me MacDonald")
+ .setKey("1234567890")
+ .setUri("tel:1234567890")
+ .setIcon(
+ IconCompat.createWithResource(context, R.drawable.me_macdonald))
+ .build();
+
+ Person participant1 =
+ new Person.Builder()
+ .setName("Famous Fryer")
+ .setKey("9876543210")
+ .setUri("tel:9876543210")
+ .setIcon(
+ IconCompat.createWithResource(context, R.drawable.famous_fryer))
+ .build();
+
+ Person participant2 =
+ new Person.Builder()
+ .setName("Wendy Wonda")
+ .setKey("2233221122")
+ .setUri("tel:2233221122")
+ .setIcon(IconCompat.createWithResource(context, R.drawable.wendy_wonda))
+ .build();
- // For each message, you need the timestamp, in this case, we are using arbitrary ones.
- long currentTime = System.currentTimeMillis();
+ // If the phone is in "Do not disturb mode, the user will still be notified if
+ // the user(s) is starred as a favorite.
+ // Note: You don't need to add yourself, aka 'me', as a participant.
+ mParticipants = new ArrayList<>();
+ mParticipants.add(participant1);
+ mParticipants.add(participant2);
mMessages = new ArrayList<>();
+
+ // For each message, you need the timestamp. In this case, we are using arbitrary longs
+ // representing time in milliseconds.
mMessages.add(
- new MessagingStyle.Message(
- "What are you doing tonight?", currentTime - 4000, "Famous"));
+ // When you are setting an image for a message, text does not display.
+ new MessagingStyle.Message("", 1528490641998L, participant1)
+ .setData(
+ "image/png", resourceToUri(context, R.drawable.earth)));
+
mMessages.add(
new MessagingStyle.Message(
- "I don't know, dinner maybe?", currentTime - 3000, null));
- mMessages.add(new MessagingStyle.Message("Sounds good.", currentTime - 2000, "Famous"));
- mMessages.add(new MessagingStyle.Message("How about BBQ?", currentTime - 1000, null));
- // Last two are the newest message (2) from friend
- mMessages.add(new MessagingStyle.Message("Hey!", currentTime, "Famous"));
+ "Visiting the moon again? :P", 1528490643998L, mMe));
+
mMessages.add(
new MessagingStyle.Message(
- "You know I am a Pesce-pescetarian. :P", currentTime, "Famous"));
+ "HEY, I see my house!", 1528490645998L, participant2));
- // String version of the mMessages above
+ // String version of the mMessages above.
mFullConversation =
- "Famous: What are you doing tonight?\n\n"
- + "Me: I don't know, dinner maybe?\n\n"
- + "Famous: Sounds good.\n\n"
- + "Me: How about BBQ?\n\n"
- + "Famous: Hey!\n\n"
- + "Famous: You know I am a Pesce-pescetarian. :P\n\n";
-
- mNumberOfNewMessages = 2;
+ "Famous: [Picture of Moon]\n\n"
+ + "Me: Visiting the moon again? :P\n\n"
+ + "Wendy: HEY, I see my house! :)\n\n";
- // 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");
+ // Responses based on the last messages of the conversation. You would use
+ // Machine Learning to get these (https://developers.google.com/ml-kit/).
+ mReplyChoicesBasedOnLastMessages =
+ new CharSequence[] {"Me too!", "How's the weather?", "You have good eyesight."};
// Notification channel values (for devices targeting 26 and above):
mChannelId = "channel_messaging_1";
@@ -127,14 +157,6 @@ public final class MockDatabase {
mChannelLockscreenVisibility = NotificationCompat.VISIBILITY_PRIVATE;
}
- public String getContentTitle() {
- return mContentTitle;
- }
-
- public String getContentText() {
- return mContentText;
- }
-
public ArrayList<MessagingStyle.Message> getMessages() {
return mMessages;
}
@@ -143,18 +165,57 @@ public final class MockDatabase {
return mFullConversation;
}
- public String getReplayName() {
- return mReplayName;
+ public Person getMe() {
+ return mMe;
}
public int getNumberOfNewMessages() {
- return mNumberOfNewMessages;
+ return mMessages.size();
}
- public ArrayList<String> getParticipants() {
+ public ArrayList<Person> getParticipants() {
return mParticipants;
}
+ public CharSequence[] getReplyChoicesBasedOnLastMessage() {
+ return mReplyChoicesBasedOnLastMessages;
+ }
+
+ @Override
+ public String toString() {
+ return getFullConversation();
+ }
+
+ public boolean isGroupConversation() {
+ return mParticipants.size() > 1;
+ }
+ }
+
+ /** Represents standard data needed for a Notification. */
+ public abstract static class MockNotificationData {
+
+ // Standard notification values:
+ protected String mContentTitle;
+ protected String mContentText;
+ protected int mPriority;
+
+ // Notification channel values (O and above):
+ protected String mChannelId;
+ protected CharSequence mChannelName;
+ protected String mChannelDescription;
+ protected int mChannelImportance;
+ protected boolean mChannelEnableVibrate;
+ protected int mChannelLockscreenVisibility;
+
+ // Notification Standard notification get methods:
+ public String getContentTitle() {
+ return mContentTitle;
+ }
+
+ public String getContentText() {
+ return mContentText;
+ }
+
public int getPriority() {
return mPriority;
}
@@ -183,10 +244,22 @@ public final class MockDatabase {
public int getChannelLockscreenVisibility() {
return mChannelLockscreenVisibility;
}
+ }
- @Override
- public String toString() {
- return getFullConversation();
- }
+ /**
+ * Returns URI from a resource.
+ * @param context
+ * @param resId
+ * @return
+ */
+ public static Uri resourceToUri(Context context, int resId) {
+ return Uri.parse(
+ ContentResolver.SCHEME_ANDROID_RESOURCE
+ + "://"
+ + context.getResources().getResourcePackageName(resId)
+ + "/"
+ + context.getResources().getResourceTypeName(resId)
+ + "/"
+ + context.getResources().getResourceEntryName(resId));
}
}
diff --git a/wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/NotificationsActivity.java b/wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/NotificationsActivity.java
index fd0bfeb4..d573948e 100644
--- a/wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/NotificationsActivity.java
+++ b/wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/NotificationsActivity.java
@@ -29,15 +29,19 @@ import android.preference.Preference.OnPreferenceChangeListener;
import android.preference.Preference.OnPreferenceClickListener;
import android.preference.PreferenceFragment;
import android.preference.SwitchPreference;
-import android.support.v4.app.FragmentActivity;
-import android.support.v4.app.NotificationCompat;
-import android.support.v4.app.NotificationCompat.MessagingStyle;
-import android.support.v4.app.NotificationManagerCompat;
-import android.support.v4.app.RemoteInput;
-import android.support.v4.content.ContextCompat;
-import android.support.wear.ambient.AmbientModeSupport;
import android.util.Log;
+import androidx.core.app.NotificationCompat;
+import androidx.core.app.NotificationCompat.MessagingStyle;
+import androidx.core.app.NotificationManagerCompat;
+import androidx.core.app.Person;
+import androidx.core.app.RemoteInput;
+import androidx.core.content.ContextCompat;
+import androidx.fragment.app.FragmentActivity;
+import androidx.wear.ambient.AmbientModeSupport;
+
+import com.example.android.wearable.wear.wearaccessibilityapp.util.NotificationUtil;
+
public class NotificationsActivity extends FragmentActivity implements
AmbientModeSupport.AmbientCallbackProvider {
@@ -145,7 +149,7 @@ public class NotificationsActivity extends FragmentActivity implements
// Main steps for building a MESSAGING_STYLE notification:
// 0. Get your data
- // 1. Retrieve Notification Channel for O and beyond devices (26+)
+ // 1. Create/Retrieve Notification Channel for O and beyond devices (26+)
// 2. Build the MESSAGING_STYLE
// 3. Set up main Intent for notification
// 4. Set up RemoteInput (users can input directly from notification)
@@ -153,46 +157,64 @@ public class NotificationsActivity extends FragmentActivity implements
// 0. Get your data (everything unique per Notification).
MockDatabase.MessagingStyleCommsAppData messagingStyleCommsAppData =
- MockDatabase.getMessagingStyleData();
+ MockDatabase.getMessagingStyleData(getContext());
// 1. Create/Retrieve Notification Channel for O and beyond devices (26+).
- String notificationChannelId =
- createNotificationChannel(context, messagingStyleCommsAppData);
+ String notificationChannelId = NotificationUtil.createNotificationChannel(
+ getContext(),
+ messagingStyleCommsAppData);
+
- // 2. Build the Notification.Style (MESSAGING_STYLE)
+ // 2. Build the Notification.Style (MESSAGING_STYLE).
String contentTitle = messagingStyleCommsAppData.getContentTitle();
MessagingStyle messagingStyle =
- new NotificationCompat.MessagingStyle(
- messagingStyleCommsAppData.getReplayName())
- // You could set a different title to appear when the messaging style
- // is supported on device (24+) if you wish. In our case, we use the
- // same
- // title.
+ new NotificationCompat.MessagingStyle(messagingStyleCommsAppData.getMe())
+ /*
+ * <p>This API's behavior was changed in SDK version
+ * {@link Build.VERSION_CODES#P}. If your application's target version
+ * is less than {@link Build.VERSION_CODES#P}, setting a conversation
+ * title to a non-null value will make {@link #isGroupConversation()}
+ * return {@code true} and passing {@code null} will make it return
+ * {@code false}.
+ * This behavior can be overridden by calling
+ * {@link #setGroupConversation(boolean)} regardless of SDK version.
+ * In {@code P} and above, this method does not affect group
+ * conversation settings.
+ *
+ * In our case, we use the same title.
+ */
.setConversationTitle(contentTitle);
- // Adds all Messages
- // Note: Messages include the text, timestamp, and sender
+ // Adds all Messages.
+ // Note: Messages include the text, timestamp, and sender.
for (MessagingStyle.Message message : messagingStyleCommsAppData.getMessages()) {
messagingStyle.addMessage(message);
}
- // 3. Set up main Intent for notification
+ messagingStyle.setGroupConversation(messagingStyleCommsAppData.isGroupConversation());
+
+ // 3. Set up main Intent for notification.
Intent notifyIntent = new Intent(getActivity(), MessagingMainActivity.class);
PendingIntent mainPendingIntent =
PendingIntent.getActivity(
- getActivity(), 0, notifyIntent, PendingIntent.FLAG_UPDATE_CURRENT);
+ getActivity(),
+ 0,
+ notifyIntent,
+ PendingIntent.FLAG_UPDATE_CURRENT
+ );
// 4. Set up a RemoteInput Action, so users can input (keyboard, drawing, voice)
// directly from the notification without entering the app.
// Create the RemoteInput specifying this key.
String replyLabel = getString(R.string.reply_label);
- RemoteInput remoteInput =
- new RemoteInput.Builder(MessagingIntentService.EXTRA_REPLY)
- .setLabel(replyLabel)
- .build();
+ RemoteInput remoteInput = new RemoteInput.Builder(MessagingIntentService.EXTRA_REPLY)
+ .setLabel(replyLabel)
+ // Use machine learning to create responses based on previous messages.
+ .setChoices(messagingStyleCommsAppData.getReplyChoicesBasedOnLastMessage())
+ .build();
// Create PendingIntent for service that handles input.
Intent replyIntent = new Intent(getActivity(), MessagingIntentService.class);
@@ -204,44 +226,55 @@ public class NotificationsActivity extends FragmentActivity implements
// lower portion of the Notification for easy action (only possible for one action).
final NotificationCompat.Action.WearableExtender inlineActionForWear2 =
new NotificationCompat.Action.WearableExtender()
- .setHintDisplayActionInline(mActionOn)
+ .setHintDisplayActionInline(true)
.setHintLaunchesActivity(false);
NotificationCompat.Action replyAction =
new NotificationCompat.Action.Builder(
- R.drawable.reply, replyLabel, replyActionPendingIntent)
+ R.drawable.reply,
+ replyLabel,
+ replyActionPendingIntent)
.addRemoteInput(remoteInput)
- // Allows system to generate replies by context of conversation
+ // Informs system we aren't bringing up our own custom UI for a reply
+ // action.
+ .setShowsUserInterface(false)
+ // Allows system to generate replies by context of conversation.
.setAllowGeneratedReplies(true)
- // Add WearableExtender to enable inline actions
+ // Add WearableExtender to enable inline actions.
+ .setSemanticAction(NotificationCompat.Action.SEMANTIC_ACTION_REPLY)
.extend(inlineActionForWear2)
.build();
- // 5. Build and issue the notification
- // Because we want this to be a new notification (not updating current notification),
- // we create a new Builder. Later, we update this same notification, so we need to save
+ // 5. Build and issue the notification.
+
+ // Because we want this to be a new notification (not updating current notification), we
+ // create a new Builder. Later, we update this same notification, so we need to save
// this Builder globally (as outlined earlier).
// Notification Channel Id is ignored for Android pre O (26).
NotificationCompat.Builder notificationCompatBuilder =
- new NotificationCompat.Builder(context, notificationChannelId);
+ new NotificationCompat.Builder(
+ context, notificationChannelId);
GlobalNotificationBuilder.setNotificationCompatBuilderInstance(
notificationCompatBuilder);
- // Builds and issues notification
notificationCompatBuilder
// MESSAGING_STYLE sets title and content for Wear 1.+ and Wear 2.0 devices.
.setStyle(messagingStyle)
.setContentTitle(contentTitle)
.setContentText(messagingStyleCommsAppData.getContentText())
.setSmallIcon(R.drawable.watch)
+ .setLargeIcon(BitmapFactory.decodeResource(
+ getResources(),
+ mAvatarOn ? R.drawable.avatar : R.drawable.watch))
.setContentIntent(mainPendingIntent)
- .setColor(ContextCompat.getColor(context, R.color.background))
.setDefaults(NotificationCompat.DEFAULT_ALL)
+ // Set primary color (important for Wear 2.0 Notifications).
+ .setColor(ContextCompat.getColor(context, R.color.background))
- // Number of new notifications for API <24 (Wear 1.+) devices
+ // Number of new notifications for API <24 (Wear 1.+) devices.
.setSubText(
Integer.toString(messagingStyleCommsAppData.getNumberOfNewMessages()))
.addAction(replyAction)
@@ -257,14 +290,10 @@ public class NotificationsActivity extends FragmentActivity implements
// visibility is set in the NotificationChannel.
.setVisibility(messagingStyleCommsAppData.getChannelLockscreenVisibility());
- notificationCompatBuilder.setLargeIcon(
- BitmapFactory.decodeResource(
- getResources(), mAvatarOn ? R.drawable.avatar : R.drawable.watch));
-
- // If the phone is in "Do not disturb mode, the user will still be notified if
- // the sender(s) is starred as a favorite.
- for (String name : messagingStyleCommsAppData.getParticipants()) {
- notificationCompatBuilder.addPerson(name);
+ // If the phone is in "Do not disturb" mode, the user may still be notified if the
+ // sender(s) are in a group allowed through "Do not disturb" by the user.
+ for (Person person : messagingStyleCommsAppData.getParticipants()) {
+ notificationCompatBuilder.addPerson(person.getUri());
}
Notification notification = notificationCompatBuilder.build();
diff --git a/wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/OpenOnPhoneAnimationActivity.java b/wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/OpenOnPhoneAnimationActivity.java
index acc3c534..606c3d11 100644
--- a/wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/OpenOnPhoneAnimationActivity.java
+++ b/wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/OpenOnPhoneAnimationActivity.java
@@ -19,10 +19,11 @@ import android.graphics.drawable.Animatable2.AnimationCallback;
import android.graphics.drawable.AnimatedVectorDrawable;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
-import android.support.v4.app.FragmentActivity;
-import android.support.wear.ambient.AmbientModeSupport;
import android.widget.ImageView;
+import androidx.fragment.app.FragmentActivity;
+import androidx.wear.ambient.AmbientModeSupport;
+
public class OpenOnPhoneAnimationActivity extends FragmentActivity
implements AmbientModeSupport.AmbientCallbackProvider {
private AnimationCallback mAnimationCallback;
diff --git a/wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/PhotoCarouselActivity.java b/wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/PhotoCarouselActivity.java
index 5fa1f8b0..8828fc8c 100644
--- a/wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/PhotoCarouselActivity.java
+++ b/wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/PhotoCarouselActivity.java
@@ -17,12 +17,13 @@ package com.example.android.wearable.wear.wearaccessibilityapp;
import android.content.Intent;
import android.os.Bundle;
-import android.support.v4.app.FragmentActivity;
-import android.support.wear.ambient.AmbientModeSupport;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.ImageView;
+import androidx.fragment.app.FragmentActivity;
+import androidx.wear.ambient.AmbientModeSupport;
+
public class PhotoCarouselActivity extends FragmentActivity implements
AmbientModeSupport.AmbientCallbackProvider, OnClickListener {
diff --git a/wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/ProgressActivity.java b/wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/ProgressActivity.java
index 38add02e..22602feb 100644
--- a/wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/ProgressActivity.java
+++ b/wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/ProgressActivity.java
@@ -16,14 +16,15 @@
package com.example.android.wearable.wear.wearaccessibilityapp;
import android.os.Bundle;
-import android.support.v4.app.FragmentActivity;
-import android.support.wear.ambient.AmbientModeSupport;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ListView;
import android.widget.TextView;
+import androidx.fragment.app.FragmentActivity;
+import androidx.wear.ambient.AmbientModeSupport;
+
import java.util.ArrayList;
import java.util.List;
diff --git a/wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/RadioListActivity.java b/wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/RadioListActivity.java
index d5bcc8b9..dcd675f4 100644
--- a/wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/RadioListActivity.java
+++ b/wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/RadioListActivity.java
@@ -16,10 +16,11 @@
package com.example.android.wearable.wear.wearaccessibilityapp;
import android.os.Bundle;
-import android.support.v4.app.FragmentActivity;
-import android.support.wear.ambient.AmbientModeSupport;
import android.widget.TextView;
+import androidx.fragment.app.FragmentActivity;
+import androidx.wear.ambient.AmbientModeSupport;
+
public class RadioListActivity extends FragmentActivity implements
AmbientModeSupport.AmbientCallbackProvider {
diff --git a/wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/ScalingScrollLayoutCallback.java b/wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/ScalingScrollLayoutCallback.java
index 00b42268..6b3f7ca6 100644
--- a/wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/ScalingScrollLayoutCallback.java
+++ b/wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/ScalingScrollLayoutCallback.java
@@ -15,10 +15,11 @@
*/
package com.example.android.wearable.wear.wearaccessibilityapp;
-import android.support.v7.widget.RecyclerView;
-import android.support.wear.widget.WearableLinearLayoutManager;
import android.view.View;
+import androidx.recyclerview.widget.RecyclerView;
+import androidx.wear.widget.WearableLinearLayoutManager;
+
public class ScalingScrollLayoutCallback extends WearableLinearLayoutManager.LayoutCallback {
/** How much should we scale the icon at most. */
diff --git a/wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/ZoomImageActivity.java b/wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/ZoomImageActivity.java
index cde17b57..5bed9775 100644
--- a/wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/ZoomImageActivity.java
+++ b/wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/ZoomImageActivity.java
@@ -17,10 +17,11 @@ package com.example.android.wearable.wear.wearaccessibilityapp;
import android.content.res.Resources.NotFoundException;
import android.os.Bundle;
-import android.support.v4.app.FragmentActivity;
-import android.support.wear.ambient.AmbientModeSupport;
import android.widget.ImageView;
+import androidx.fragment.app.FragmentActivity;
+import androidx.wear.ambient.AmbientModeSupport;
+
public class ZoomImageActivity extends FragmentActivity implements
AmbientModeSupport.AmbientCallbackProvider {
diff --git a/wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/util/NotificationUtil.java b/wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/util/NotificationUtil.java
new file mode 100644
index 00000000..bbdcbdcc
--- /dev/null
+++ b/wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/util/NotificationUtil.java
@@ -0,0 +1,77 @@
+/*
+ * Copyright 2018 The Android Open Source Project. All Rights Reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.example.android.wearable.wear.wearaccessibilityapp.util;
+
+import android.app.Notification;
+import android.app.NotificationChannel;
+import android.app.NotificationManager;
+import android.content.Context;
+import android.os.Build;
+
+import com.example.android.wearable.wear.wearaccessibilityapp.MockDatabase;
+
+/**
+ * Simplifies common {@link Notification} tasks.
+ */
+public class NotificationUtil {
+
+ /**
+ * Creates Notification Channel used for Notifications on O (26) and higher.
+ *
+ * @param context
+ * @param mockNotificationData
+ * @return
+ */
+ public static String createNotificationChannel(
+ Context context,
+ MockDatabase.MessagingStyleCommsAppData mockNotificationData) {
+
+ // NotificationChannels are required for Notifications on O (API 26) and above.
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
+
+ // The id of the channel.
+ String channelId = mockNotificationData.getChannelId();
+
+ // The user-visible name of the channel.
+ CharSequence channelName = mockNotificationData.getChannelName();
+ // The user-visible description of the channel.
+ String channelDescription = mockNotificationData.getChannelDescription();
+ int channelImportance = mockNotificationData.getChannelImportance();
+ boolean channelEnableVibrate = mockNotificationData.isChannelEnableVibrate();
+ int channelLockscreenVisibility =
+ mockNotificationData.getChannelLockscreenVisibility();
+
+ // Initializes NotificationChannel.
+ NotificationChannel notificationChannel =
+ new NotificationChannel(channelId, channelName, channelImportance);
+ notificationChannel.setDescription(channelDescription);
+ notificationChannel.enableVibration(channelEnableVibrate);
+ notificationChannel.setLockscreenVisibility(channelLockscreenVisibility);
+
+ // Adds NotificationChannel to system. Attempting to create an existing notification
+ // channel with its original values performs no operation, so it's safe to perform the
+ // below sequence.
+ NotificationManager notificationManager =
+ (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
+ notificationManager.createNotificationChannel(notificationChannel);
+
+ return channelId;
+ } else {
+ // Returns null for pre-O (26) devices.
+ return null;
+ }
+ }
+}
diff --git a/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/drawable-hdpi/earth.png b/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/drawable-hdpi/earth.png
new file mode 100644
index 00000000..13abd77a
--- /dev/null
+++ b/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/drawable-hdpi/earth.png
Binary files differ
diff --git a/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/drawable-hdpi/famous_fryer.png b/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/drawable-hdpi/famous_fryer.png
new file mode 100644
index 00000000..92204dbf
--- /dev/null
+++ b/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/drawable-hdpi/famous_fryer.png
Binary files differ
diff --git a/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/drawable-hdpi/me_macdonald.png b/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/drawable-hdpi/me_macdonald.png
new file mode 100644
index 00000000..cbf4a056
--- /dev/null
+++ b/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/drawable-hdpi/me_macdonald.png
Binary files differ
diff --git a/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/drawable-hdpi/wendy_wonda.png b/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/drawable-hdpi/wendy_wonda.png
new file mode 100644
index 00000000..3097ce12
--- /dev/null
+++ b/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/drawable-hdpi/wendy_wonda.png
Binary files differ
diff --git a/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/layout/activity_long_list.xml b/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/layout/activity_long_list.xml
index e133f15f..addc66c0 100644
--- a/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/layout/activity_long_list.xml
+++ b/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/layout/activity_long_list.xml
@@ -14,7 +14,7 @@
See the License for the specific language governing permissions and
limitations under the License.
-->
-<android.support.wear.widget.drawer.WearableDrawerLayout
+<androidx.wear.widget.drawer.WearableDrawerLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
@@ -22,7 +22,7 @@
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:deviceIds="wear">
- <android.support.wear.widget.WearableRecyclerView
+ <androidx.wear.widget.WearableRecyclerView
android:id="@+id/recycler_view_long_list"
android:layout_width="match_parent"
android:layout_height="match_parent"
@@ -30,12 +30,12 @@
android:paddingBottom="?android:dialogPreferredPadding"
android:clipToPadding="false"
android:scrollbars="vertical"/>
- <android.support.wear.widget.drawer.WearableActionDrawerView
+ <androidx.wear.widget.drawer.WearableActionDrawerView
android:id="@+id/action_drawer_long_list"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:visibility="invisible"
app:actionMenu="@menu/action_drawer_menu"
app:show_overflow_in_peek="true">
- </android.support.wear.widget.drawer.WearableActionDrawerView>
-</android.support.wear.widget.drawer.WearableDrawerLayout>
+ </androidx.wear.widget.drawer.WearableActionDrawerView>
+</androidx.wear.widget.drawer.WearableDrawerLayout>
diff --git a/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/layout/activity_main.xml b/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/layout/activity_main.xml
index 21446473..60135190 100644
--- a/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/layout/activity_main.xml
+++ b/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/layout/activity_main.xml
@@ -14,7 +14,7 @@
See the License for the specific language governing permissions and
limitations under the License.
-->
-<android.support.wear.widget.WearableRecyclerView
+<androidx.wear.widget.WearableRecyclerView
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/main_recycler_view"
android:layout_width="match_parent"
diff --git a/wearable/wear/WearAccessibilityApp/gradle.properties b/wearable/wear/WearAccessibilityApp/gradle.properties
new file mode 100644
index 00000000..5465fec0
--- /dev/null
+++ b/wearable/wear/WearAccessibilityApp/gradle.properties
@@ -0,0 +1,2 @@
+android.enableJetifier=true
+android.useAndroidX=true \ No newline at end of file
diff --git a/wearable/wear/WearAccessibilityApp/gradle/wrapper/gradle-wrapper.properties b/wearable/wear/WearAccessibilityApp/gradle/wrapper/gradle-wrapper.properties
index 9470ad8b..c68d61eb 100644
--- a/wearable/wear/WearAccessibilityApp/gradle/wrapper/gradle-wrapper.properties
+++ b/wearable/wear/WearAccessibilityApp/gradle/wrapper/gradle-wrapper.properties
@@ -1,7 +1,6 @@
-#Wed Apr 10 15:27:10 PDT 2013
+#Sun Mar 31 15:27:57 PDT 2019
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-4.4-all.zip
-
+distributionUrl=https\://services.gradle.org/distributions/gradle-4.10.1-all.zip
diff --git a/wearable/wear/WearAccessibilityApp/template-params.xml b/wearable/wear/WearAccessibilityApp/template-params.xml
index 7e32902c..1148f074 100644
--- a/wearable/wear/WearAccessibilityApp/template-params.xml
+++ b/wearable/wear/WearAccessibilityApp/template-params.xml
@@ -21,14 +21,18 @@
<package>com.example.android.wearable.wear.wearaccessibilityapp</package>
<minSdkVersionWear>24</minSdkVersionWear>
- <compileSdkVersionWear>26</compileSdkVersionWear>
- <targetSdkVersionWear>26</targetSdkVersionWear>
+ <compileSdkVersionWear>28</compileSdkVersionWear>
+ <targetSdkVersionWear>28</targetSdkVersionWear>
<multiDexEnabled>true</multiDexEnabled>
- <dependency_wearable>com.android.support:wear:27.1.1</dependency_wearable>
- <dependency_wearable>com.android.support.constraint:constraint-layout:1.0.2</dependency_wearable>
- <dependency_wearable>com.android.support:appcompat-v7:27.1.1</dependency_wearable>
+ <androidX>true</androidX>
+
+ <dependency_wearable>androidx.wear:wear:1.0.0</dependency_wearable>
+ <dependency_wearable>androidx.legacy:legacy-support-v4:1.0.0</dependency_wearable>
+ <dependency_wearable>androidx.legacy:legacy-support-v13:1.0.0</dependency_wearable>
+ <dependency_wearable>androidx.constraintlayout:constraintlayout:1.1.3</dependency_wearable>
+ <dependency_wearable>androidx.appcompat:appcompat:1.0.2</dependency_wearable>
<strings>