aboutsummaryrefslogtreecommitdiff
path: root/wearable
diff options
context:
space:
mode:
authorTreeHugger Robot <treehugger-gerrit@google.com>2017-12-16 00:13:27 +0000
committerAndroid (Google) Code Review <android-gerrit@google.com>2017-12-16 00:13:27 +0000
commitbdf43521feaf1d2a6ce579e48cd2d7efeb00bbd6 (patch)
treea6411d97708d27cbbdb6be08ca6ffc12113b545a /wearable
parentcba890b6251f0339c6e15b6eff64fe7df3c848a2 (diff)
parent0f0212e13e8dc55f1c824abb14901c31d94ee5b4 (diff)
downloadandroid-bdf43521feaf1d2a6ce579e48cd2d7efeb00bbd6.tar.gz
Merge "Updates deprecated components, adds README (via template file), and updates notifications for O channels." into oc-mr1-dev
Diffstat (limited to 'wearable')
-rw-r--r--wearable/wear/WearAccessibilityApp/Wearable/build.gradle4
-rw-r--r--wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/AccessibilityActivity.java14
-rw-r--r--wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/AppItem.java7
-rw-r--r--wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/CircledImageViewPreference.java2
-rw-r--r--wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/ControlsActivity.java15
-rw-r--r--wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/DialogsActivity.java14
-rw-r--r--wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/FullScreenActivity.java15
-rw-r--r--wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/ImagesActivity.java14
-rw-r--r--wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/InLineActivity.java15
-rw-r--r--wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/ListOfGraphicsActivity.java15
-rw-r--r--wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/ListsActivity.java14
-rw-r--r--wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/ListsItem.java4
-rw-r--r--wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/LongListActivity.java27
-rw-r--r--wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/MainActivity.java26
-rw-r--r--wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/MessagingMainActivity.java12
-rw-r--r--wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/MockDatabase.java69
-rw-r--r--wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/NotificationsActivity.java105
-rw-r--r--wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/OpenOnPhoneAnimationActivity.java15
-rw-r--r--wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/PhotoCarouselActivity.java15
-rw-r--r--wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/ProgressActivity.java14
-rw-r--r--wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/RadioListActivity.java14
-rw-r--r--wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/ScalingScrollLayoutCallback.java (renamed from wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/MyLauncherChildLayoutManager.java)16
-rw-r--r--wearable/wear/WearAccessibilityApp/Wearable/src/main/java/com/example/android/wearable/wear/wearaccessibilityapp/ZoomImageActivity.java14
-rw-r--r--wearable/wear/WearAccessibilityApp/Wearable/src/main/res/layout/activity_long_list.xml12
-rw-r--r--wearable/wear/WearAccessibilityApp/Wearable/src/main/res/layout/activity_main.xml2
-rw-r--r--wearable/wear/WearAccessibilityApp/Wearable/src/main/res/layout/circled_image_layout.xml2
-rw-r--r--wearable/wear/WearAccessibilityApp/screenshots/controls_screen.pngbin0 -> 19394 bytes
-rw-r--r--wearable/wear/WearAccessibilityApp/screenshots/main_screen.pngbin0 -> 18788 bytes
-rw-r--r--wearable/wear/WearAccessibilityApp/screenshots/progress_screen.pngbin0 -> 17470 bytes
-rw-r--r--wearable/wear/WearAccessibilityApp/template-params.xml34
30 files changed, 405 insertions, 105 deletions
diff --git a/wearable/wear/WearAccessibilityApp/Wearable/build.gradle b/wearable/wear/WearAccessibilityApp/Wearable/build.gradle
index c1f3a89c..d99e59da 100644
--- a/wearable/wear/WearAccessibilityApp/Wearable/build.gradle
+++ b/wearable/wear/WearAccessibilityApp/Wearable/build.gradle
@@ -8,7 +8,7 @@ buildscript {
}
dependencies {
- classpath 'com.android.tools.build:gradle:3.0.0'
+ classpath 'com.android.tools.build:gradle:3.0.1'
}
}
@@ -57,7 +57,7 @@ android {
versionCode 1
versionName "1.0"
- minSdkVersion 23
+ minSdkVersion 24
targetSdkVersion 26
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 a7e1fb62..d982d123 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
@@ -15,21 +15,24 @@
*/
package com.example.android.wearable.wear.wearaccessibilityapp;
+import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.provider.Settings;
-import android.support.wearable.activity.WearableActivity;
+import android.support.wear.ambient.AmbientMode;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.ImageView;
import android.widget.TextView;
-public class AccessibilityActivity extends WearableActivity {
+public class AccessibilityActivity extends Activity implements AmbientMode.AmbientCallbackProvider {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_accessibility);
+ AmbientMode.attachAmbientSupport(this);
+
ImageView accessibilityImage = findViewById(R.id.icon_image_view);
accessibilityImage.setImageDrawable(getDrawable(R.drawable.settings_circle));
@@ -46,4 +49,11 @@ public class AccessibilityActivity extends WearableActivity {
}
});
}
+
+ @Override
+ public AmbientMode.AmbientCallback getAmbientCallback() {
+ return new MyAmbientCallback();
+ }
+
+ private class MyAmbientCallback extends AmbientMode.AmbientCallback {}
}
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 9ec2ac49..ee1002bf 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
@@ -15,9 +15,9 @@
*/
package com.example.android.wearable.wear.wearaccessibilityapp;
+import android.app.Activity;
import android.content.Context;
import android.content.Intent;
-import android.support.wearable.activity.WearableActivity;
public class AppItem {
private final String mItemName;
@@ -25,15 +25,14 @@ public class AppItem {
private final int mViewType;
private final Class mClass;
- public AppItem(
- String itemName, int imageId, int viewType, Class<? extends WearableActivity> clazz) {
+ public AppItem(String itemName, int imageId, int viewType, Class<? extends Activity> clazz) {
mItemName = itemName;
mImageId = imageId;
mViewType = viewType;
mClass = clazz;
}
- public AppItem(String itemName, int imageId, Class<? extends WearableActivity> clazz) {
+ public AppItem(String itemName, int imageId, Class<? extends Activity> clazz) {
mItemName = itemName;
mImageId = imageId;
mViewType = SampleAppConstants.NORMAL;
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
index d78b7037..f06ddb8c 100644
--- 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
@@ -73,9 +73,11 @@ public class CircledImageViewPreference extends Preference {
public void setStartCircledImageView() {
mCircledImageText.setText(R.string.start);
+
mCircledImage.setImageResource(R.drawable.start);
mCircledImage.setCircleBorderColor(mColorPrimaryDark);
mCircledImage.setProgress(1);
+
mIsLoading = false;
}
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 c056f16e..40c7a3ad 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
@@ -15,15 +15,19 @@
*/
package com.example.android.wearable.wear.wearaccessibilityapp;
+import android.app.Activity;
import android.os.Bundle;
import android.preference.PreferenceFragment;
-import android.support.wearable.activity.WearableActivity;
+import android.support.wear.ambient.AmbientMode;
-public class ControlsActivity extends WearableActivity {
+public class ControlsActivity extends Activity implements AmbientMode.AmbientCallbackProvider {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
+
+ AmbientMode.attachAmbientSupport(this);
+
// Display the fragment as the main content.
getFragmentManager()
.beginTransaction()
@@ -40,4 +44,11 @@ public class ControlsActivity extends WearableActivity {
addPreferencesFromResource(R.xml.prefs_controls);
}
}
+
+ @Override
+ public AmbientMode.AmbientCallback getAmbientCallback() {
+ return new MyAmbientCallback();
+ }
+
+ private class MyAmbientCallback extends AmbientMode.AmbientCallback {}
}
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 0c394008..cc0d0fba 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
@@ -15,12 +15,13 @@
*/
package com.example.android.wearable.wear.wearaccessibilityapp;
+import android.app.Activity;
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.wear.ambient.AmbientMode;
import android.support.wearable.view.AcceptDenyDialog;
import android.support.wearable.view.WearableDialogHelper.DialogBuilder;
import android.view.LayoutInflater;
@@ -33,7 +34,7 @@ import java.util.ArrayList;
import java.util.List;
import java.util.function.Supplier;
-public class DialogsActivity extends WearableActivity {
+public class DialogsActivity extends Activity implements AmbientMode.AmbientCallbackProvider {
private List<DialogsItem> mItems;
public View mView;
@@ -43,6 +44,8 @@ public class DialogsActivity extends WearableActivity {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_dialogs);
+ AmbientMode.attachAmbientSupport(this);
+
// Supplier objects
Supplier<Dialog> twoActionDialog =
new Supplier<Dialog>() {
@@ -178,4 +181,11 @@ public class DialogsActivity extends WearableActivity {
}
});
}
+
+ @Override
+ public AmbientMode.AmbientCallback getAmbientCallback() {
+ return new MyAmbientCallback();
+ }
+
+ private class MyAmbientCallback extends AmbientMode.AmbientCallback {}
}
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 1ef6ed1e..0145288e 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
@@ -15,14 +15,25 @@
*/
package com.example.android.wearable.wear.wearaccessibilityapp;
+import android.app.Activity;
import android.os.Bundle;
-import android.support.wearable.activity.WearableActivity;
+import android.support.wear.ambient.AmbientMode;
-public class FullScreenActivity extends WearableActivity {
+public class FullScreenActivity extends Activity implements AmbientMode.AmbientCallbackProvider {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
+
+ AmbientMode.attachAmbientSupport(this);
+
setContentView(R.layout.activity_fullscreen_progress);
}
+
+ @Override
+ public AmbientMode.AmbientCallback getAmbientCallback() {
+ return new MyAmbientCallback();
+ }
+
+ private class MyAmbientCallback extends AmbientMode.AmbientCallback {}
}
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 5f1e8770..2291fbc4 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
@@ -15,14 +15,15 @@
*/
package com.example.android.wearable.wear.wearaccessibilityapp;
+import android.app.Activity;
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.support.wear.ambient.AmbientMode;
import android.widget.ImageView;
-public class ImagesActivity extends WearableActivity {
+public class ImagesActivity extends Activity implements AmbientMode.AmbientCallbackProvider {
private AnimatedVectorDrawable mAnimatedVectorDrawableSwipe;
private AnimatedVectorDrawable mAnimatedVectorDrawableTap;
private AnimationCallback mAnimationCallback;
@@ -32,6 +33,8 @@ public class ImagesActivity extends WearableActivity {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_images);
+ AmbientMode.attachAmbientSupport(this);
+
// Used to repeat animation from the beginning.
mAnimationCallback =
new AnimationCallback() {
@@ -61,4 +64,11 @@ public class ImagesActivity extends WearableActivity {
mAnimatedVectorDrawableSwipe.unregisterAnimationCallback(mAnimationCallback);
mAnimatedVectorDrawableTap.unregisterAnimationCallback(mAnimationCallback);
}
+
+ @Override
+ public AmbientMode.AmbientCallback getAmbientCallback() {
+ return new MyAmbientCallback();
+ }
+
+ private class MyAmbientCallback extends AmbientMode.AmbientCallback {}
}
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 f5652f36..723d57cb 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
@@ -15,19 +15,23 @@
*/
package com.example.android.wearable.wear.wearaccessibilityapp;
+import android.app.Activity;
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;
+import android.support.wear.ambient.AmbientMode;
-public class InLineActivity extends WearableActivity {
+public class InLineActivity extends Activity implements AmbientMode.AmbientCallbackProvider {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
+
+ AmbientMode.attachAmbientSupport(this);
+
getFragmentManager()
.beginTransaction()
.replace(android.R.id.content, new InLinePrefFragment())
@@ -81,4 +85,11 @@ public class InLineActivity extends WearableActivity {
});
}
}
+
+ @Override
+ public AmbientMode.AmbientCallback getAmbientCallback() {
+ return new MyAmbientCallback();
+ }
+
+ private class MyAmbientCallback extends AmbientMode.AmbientCallback {}
}
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 30ba972e..1159ebc5 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
@@ -15,8 +15,9 @@
*/
package com.example.android.wearable.wear.wearaccessibilityapp;
+import android.app.Activity;
import android.os.Bundle;
-import android.support.wearable.activity.WearableActivity;
+import android.support.wear.ambient.AmbientMode;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.AdapterView;
@@ -26,7 +27,8 @@ import android.widget.TextView;
import java.util.ArrayList;
import java.util.List;
-public class ListOfGraphicsActivity extends WearableActivity {
+public class ListOfGraphicsActivity extends Activity
+ implements AmbientMode.AmbientCallbackProvider {
private List<AppItem> mItems;
@Override
@@ -34,6 +36,8 @@ public class ListOfGraphicsActivity extends WearableActivity {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_list_of_graphics);
+ AmbientMode.attachAmbientSupport(this);
+
// Store all data in a list for adapter to use.
mItems = new ArrayList<AppItem>();
mItems.add(
@@ -73,4 +77,11 @@ public class ListOfGraphicsActivity extends WearableActivity {
}
});
}
+
+ @Override
+ public AmbientMode.AmbientCallback getAmbientCallback() {
+ return new MyAmbientCallback();
+ }
+
+ private class MyAmbientCallback extends AmbientMode.AmbientCallback {}
}
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 bc545db7..0ef82dc1 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
@@ -15,8 +15,9 @@
*/
package com.example.android.wearable.wear.wearaccessibilityapp;
+import android.app.Activity;
import android.os.Bundle;
-import android.support.wearable.activity.WearableActivity;
+import android.support.wear.ambient.AmbientMode;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.AdapterView;
@@ -26,7 +27,7 @@ import android.widget.TextView;
import java.util.ArrayList;
import java.util.List;
-public class ListsActivity extends WearableActivity {
+public class ListsActivity extends Activity implements AmbientMode.AmbientCallbackProvider {
private List<ListsItem> mItems;
@Override
@@ -34,6 +35,8 @@ public class ListsActivity extends WearableActivity {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_lists);
+ AmbientMode.attachAmbientSupport(this);
+
// Create a list of items for adapter to display.
mItems = new ArrayList<>();
mItems.add(new ListsItem(R.string.a_long_list, LongListActivity.class));
@@ -65,4 +68,11 @@ public class ListsActivity extends WearableActivity {
}
});
}
+
+ @Override
+ public AmbientMode.AmbientCallback getAmbientCallback() {
+ return new MyAmbientCallback();
+ }
+
+ private class MyAmbientCallback extends AmbientMode.AmbientCallback {}
}
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 6c2cece0..42e84642 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
@@ -15,15 +15,15 @@
*/
package com.example.android.wearable.wear.wearaccessibilityapp;
+import android.app.Activity;
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) {
+ public ListsItem(int itemId, Class<? extends Activity> clazz) {
mItemId = itemId;
mClass = clazz;
}
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 14ad7641..2d107af4 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
@@ -15,13 +15,14 @@
*/
package com.example.android.wearable.wear.wearaccessibilityapp;
+import android.app.Activity;
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.support.wear.ambient.AmbientMode;
+import android.support.wear.widget.WearableRecyclerView;
+import android.support.wear.widget.drawer.WearableActionDrawerView;
import android.view.View;
import com.example.android.wearable.wear.wearaccessibilityapp.LongListRecyclerViewAdapter.SwitchChangeListener;
@@ -29,7 +30,8 @@ import com.example.android.wearable.wear.wearaccessibilityapp.LongListRecyclerVi
import java.util.ArrayList;
import java.util.List;
-public class LongListActivity extends WearableActivity {
+public class LongListActivity extends Activity implements AmbientMode.AmbientCallbackProvider {
+
private List<AppItem> mItems;
private LongListRecyclerViewAdapter mAdapter;
private Handler mHandler;
@@ -42,6 +44,8 @@ public class LongListActivity extends WearableActivity {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_long_list);
+ AmbientMode.attachAmbientSupport(this);
+
mHandler = new Handler();
// List of items to display within recyclerView (used by adapter).
@@ -65,7 +69,7 @@ public class LongListActivity extends WearableActivity {
new SwitchChangeListener() {
@Override
public void onChange(boolean switchOn) {
- WearableActionDrawer wearableActionDrawer =
+ WearableActionDrawerView wearableActionDrawer =
findViewById(R.id.action_drawer_long_list);
if (switchOn) {
@@ -79,6 +83,12 @@ public class LongListActivity extends WearableActivity {
});
WearableRecyclerView recyclerView = findViewById(R.id.recycler_view_long_list);
+ // Aligns the first and last items on the list vertically centered on the screen.
+ recyclerView.setEdgeItemsCenteringEnabled(true);
+ recyclerView.setLayoutManager(new LinearLayoutManager(this));
+ recyclerView.setHasFixedSize(false);
+
+
recyclerView.setAdapter(mAdapter); // Set adapter to the recyclerView.
// Uncomment if you want the action drawer to show while scrolling down.
@@ -177,4 +187,11 @@ public class LongListActivity extends WearableActivity {
mItems.add(new AppItem(null, 0, SampleAppConstants.HEADER_FOOTER, null)); // add footer
mAdapter.notifyItemInserted(mItems.size() - 1);
}
+
+ @Override
+ public AmbientMode.AmbientCallback getAmbientCallback() {
+ return new MyAmbientCallback();
+ }
+
+ private class MyAmbientCallback extends AmbientMode.AmbientCallback {}
}
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 d5fc7eff..a1f1d371 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
@@ -15,20 +15,24 @@
*/
package com.example.android.wearable.wear.wearaccessibilityapp;
+import android.app.Activity;
import android.os.Bundle;
-import android.support.wearable.activity.WearableActivity;
-import android.support.wearable.view.WearableRecyclerView;
+import android.support.wear.ambient.AmbientMode;
+import android.support.wear.widget.WearableLinearLayoutManager;
+import android.support.wear.widget.WearableRecyclerView;
import java.util.ArrayList;
import java.util.List;
-public class MainActivity extends WearableActivity {
+public class MainActivity extends Activity implements AmbientMode.AmbientCallbackProvider {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
+ AmbientMode.attachAmbientSupport(this);
+
// Menu items
List<AppItem> items = new ArrayList<AppItem>();
items.add(
@@ -63,8 +67,20 @@ public class MainActivity extends WearableActivity {
MenuRecyclerViewAdapter appListAdapter = new MenuRecyclerViewAdapter(this, items);
WearableRecyclerView recyclerView = findViewById(R.id.main_recycler_view);
+
+ // Customizes scrolling so items farther away form center are smaller.
+ ScalingScrollLayoutCallback scalingScrollLayoutCallback = new ScalingScrollLayoutCallback();
+ recyclerView.setLayoutManager(
+ new WearableLinearLayoutManager(this, scalingScrollLayoutCallback));
+
+ recyclerView.setEdgeItemsCenteringEnabled(true);
recyclerView.setAdapter(appListAdapter);
- recyclerView.setLayoutManager(new MyLauncherChildLayoutManager(this)); // For curved layout.
- recyclerView.setCenterEdgeItems(true);
}
+
+ @Override
+ public AmbientMode.AmbientCallback getAmbientCallback() {
+ return new MyAmbientCallback();
+ }
+
+ private class MyAmbientCallback extends AmbientMode.AmbientCallback {}
}
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 a33cad99..b3d64644 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,22 +19,32 @@ import android.app.Activity;
import android.app.NotificationManager;
import android.content.Context;
import android.os.Bundle;
+import android.support.wear.ambient.AmbientMode;
/**
* Template class meant to include functionality for your Messaging App. (This project's main focus
* is on Notification Styles.)
*/
-public class MessagingMainActivity extends Activity {
+public class MessagingMainActivity extends Activity implements AmbientMode.AmbientCallbackProvider {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_messaging_main);
+ AmbientMode.attachAmbientSupport(this);
+
// Cancel Notification
NotificationManager notificationManager =
(NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
notificationManager.cancel(NotificationsActivity.NOTIFICATION_ID);
}
+
+ @Override
+ public AmbientMode.AmbientCallback getAmbientCallback() {
+ return new MyAmbientCallback();
+ }
+
+ private class MyAmbientCallback extends AmbientMode.AmbientCallback {}
}
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 f5b8f0db..421a7195 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
@@ -15,6 +15,8 @@
*/
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 java.util.ArrayList;
@@ -32,17 +34,26 @@ public final class MockDatabase {
private static MessagingStyleCommsAppData sInstance = null;
// Standard notification values
- private String mContentTitle;
- private String mContentText;
+ protected String mContentTitle;
+ protected String mContentText;
+ protected int mPriority;
// Style notification values
- private ArrayList<MessagingStyle.Message> mMessages;
+ protected ArrayList<MessagingStyle.Message> mMessages;
// Basically, String of all mMessages
- private String mFullConversation;
+ protected String mFullConversation;
// Name preferred when replying to chat
- private String mReplayName;
- private int mNumberOfNewMessages;
- private ArrayList<String> mParticipants;
+ protected String mReplayName;
+ protected int mNumberOfNewMessages;
+ protected ArrayList<String> mParticipants;
+
+ // 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() {
if (sInstance == null) {
@@ -64,6 +75,7 @@ public final class MockDatabase {
// Content for API <24 (M and below) devices
mContentTitle = "2 Messages w/ Famous McFamously";
mContentText = "Dude! ... You know I am a Pesce-pescetarian. :P";
+ mPriority = NotificationCompat.PRIORITY_HIGH;
// Style notification values
@@ -80,7 +92,7 @@ public final class MockDatabase {
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("Hey!", currentTime, "Famous"));
mMessages.add(
new MessagingStyle.Message(
"You know I am a Pesce-pescetarian. :P", currentTime, "Famous"));
@@ -91,7 +103,7 @@ public final class MockDatabase {
+ "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: Hey!\n\n"
+ "Famous: You know I am a Pesce-pescetarian. :P\n\n";
mNumberOfNewMessages = 2;
@@ -103,6 +115,16 @@ public final class MockDatabase {
// the user(s) is starred as a favorite.
mParticipants = new ArrayList<>();
mParticipants.add("Famous McFamously");
+
+ // Notification channel values (for devices targeting 26 and above):
+ mChannelId = "channel_messaging_1";
+ // The user-visible name of the channel.
+ mChannelName = "Sample Messaging";
+ // The user-visible description of the channel.
+ mChannelDescription = "Sample Messaging Notifications";
+ mChannelImportance = NotificationManager.IMPORTANCE_MAX;
+ mChannelEnableVibrate = true;
+ mChannelLockscreenVisibility = NotificationCompat.VISIBILITY_PRIVATE;
}
public String getContentTitle() {
@@ -133,6 +155,35 @@ public final class MockDatabase {
return mParticipants;
}
+ public int getPriority() {
+ return mPriority;
+ }
+
+ // Channel values (O and above) get methods:
+ public String getChannelId() {
+ return mChannelId;
+ }
+
+ public CharSequence getChannelName() {
+ return mChannelName;
+ }
+
+ public String getChannelDescription() {
+ return mChannelDescription;
+ }
+
+ public int getChannelImportance() {
+ return mChannelImportance;
+ }
+
+ public boolean isChannelEnableVibrate() {
+ return mChannelEnableVibrate;
+ }
+
+ public int getChannelLockscreenVisibility() {
+ return mChannelLockscreenVisibility;
+ }
+
@Override
public String toString() {
return getFullConversation();
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 2cf8bd75..accd1314 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
@@ -15,10 +15,15 @@
*/
package com.example.android.wearable.wear.wearaccessibilityapp;
+import android.app.Activity;
import android.app.Notification;
+import android.app.NotificationChannel;
+import android.app.NotificationManager;
import android.app.PendingIntent;
+import android.content.Context;
import android.content.Intent;
import android.graphics.BitmapFactory;
+import android.os.Build;
import android.os.Bundle;
import android.preference.Preference;
import android.preference.Preference.OnPreferenceChangeListener;
@@ -29,16 +34,20 @@ 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.support.v4.content.ContextCompat;
+import android.support.wear.ambient.AmbientMode;
import android.util.Log;
-public class NotificationsActivity extends WearableActivity {
+public class NotificationsActivity extends Activity implements AmbientMode.AmbientCallbackProvider {
public static final int NOTIFICATION_ID = 888;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
+
+ AmbientMode.attachAmbientSupport(this);
+
// Display the fragment as the main content.
getFragmentManager()
.beginTransaction()
@@ -105,7 +114,7 @@ public class NotificationsActivity extends WearableActivity {
new OnPreferenceClickListener() {
@Override
public boolean onPreferenceClick(Preference preference) {
- generateMessagingStyleNotification();
+ generateMessagingStyleNotification(getContext());
return true;
}
});
@@ -130,21 +139,26 @@ public class NotificationsActivity extends WearableActivity {
* If you wish to replicate the original experience of a bridged notification, please
* review the generateBigTextStyleNotification() method above to see how.
*/
- private void generateMessagingStyleNotification() {
+ private void generateMessagingStyleNotification(Context context) {
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
+ // 1. 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)
+ // 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();
- // 1. Build the Notification.Style (MESSAGING_STYLE)
+ // 1. Create/Retrieve Notification Channel for O and beyond devices (26+).
+ String notificationChannelId =
+ createNotificationChannel(context, messagingStyleCommsAppData);
+
+ // 2. Build the Notification.Style (MESSAGING_STYLE)
String contentTitle = messagingStyleCommsAppData.getContentTitle();
MessagingStyle messagingStyle =
@@ -162,14 +176,14 @@ public class NotificationsActivity extends WearableActivity {
messagingStyle.addMessage(message);
}
- // 2. Set up main Intent for notification
+ // 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);
- // 3. Set up a RemoteInput Action, so users can input (keyboard, drawing, voice)
+ // 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.
@@ -202,14 +216,16 @@ public class NotificationsActivity extends WearableActivity {
.extend(inlineActionForWear2)
.build();
- // 4. Build and issue the notification
+ // 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(getActivity());
+ new NotificationCompat.Builder(
+ context, notificationChannelId);
GlobalNotificationBuilder.setNotificationCompatBuilderInstance(
notificationCompatBuilder);
@@ -222,16 +238,24 @@ public class NotificationsActivity extends WearableActivity {
.setContentText(messagingStyleCommsAppData.getContentText())
.setSmallIcon(R.drawable.watch)
.setContentIntent(mainPendingIntent)
+ .setColor(ContextCompat.getColor(context, R.color.background))
+ .setDefaults(NotificationCompat.DEFAULT_ALL)
// 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)
+ .setPriority(messagingStyleCommsAppData.getPriority())
- // Hides content on the lock-screen
- .setVisibility(Notification.VISIBILITY_PRIVATE);
+ // 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());
notificationCompatBuilder.setLargeIcon(
BitmapFactory.decodeResource(
@@ -249,5 +273,52 @@ public class NotificationsActivity extends WearableActivity {
// Close app to demonstrate notification in steam.
getActivity().finish();
}
+
+ private 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;
+ }
+ }
}
+
+ @Override
+ public AmbientMode.AmbientCallback getAmbientCallback() {
+ return new MyAmbientCallback();
+ }
+
+ private class MyAmbientCallback extends AmbientMode.AmbientCallback {}
}
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 51d9bdff..db1ae6e1 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
@@ -15,14 +15,16 @@
*/
package com.example.android.wearable.wear.wearaccessibilityapp;
+import android.app.Activity;
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.support.wear.ambient.AmbientMode;
import android.widget.ImageView;
-public class OpenOnPhoneAnimationActivity extends WearableActivity {
+public class OpenOnPhoneAnimationActivity extends Activity
+ implements AmbientMode.AmbientCallbackProvider {
private AnimationCallback mAnimationCallback;
private AnimatedVectorDrawable mAnimatedVectorDrawablePhone;
@@ -31,6 +33,8 @@ public class OpenOnPhoneAnimationActivity extends WearableActivity {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_open_on_phone_animation);
+ AmbientMode.attachAmbientSupport(this);
+
mAnimationCallback =
new AnimationCallback() {
@Override
@@ -53,4 +57,11 @@ public class OpenOnPhoneAnimationActivity extends WearableActivity {
super.onDestroy();
mAnimatedVectorDrawablePhone.unregisterAnimationCallback(mAnimationCallback);
}
+
+ @Override
+ public AmbientMode.AmbientCallback getAmbientCallback() {
+ return new MyAmbientCallback();
+ }
+
+ private class MyAmbientCallback extends AmbientMode.AmbientCallback {}
}
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 6c07384f..3c53b03f 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
@@ -15,20 +15,24 @@
*/
package com.example.android.wearable.wear.wearaccessibilityapp;
+import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
-import android.support.wearable.activity.WearableActivity;
+import android.support.wear.ambient.AmbientMode;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.ImageView;
-public class PhotoCarouselActivity extends WearableActivity implements OnClickListener {
+public class PhotoCarouselActivity extends Activity
+ implements AmbientMode.AmbientCallbackProvider, OnClickListener {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_photo_carousel);
+ AmbientMode.attachAmbientSupport(this);
+
// Grab reference to each image in activity_photo_carousel.
ImageView catImage = findViewById(R.id.cat_image);
catImage.setTag(R.drawable.cats);
@@ -53,4 +57,11 @@ public class PhotoCarouselActivity extends WearableActivity implements OnClickLi
intent.putExtra(getString(R.string.intent_extra_image), (int) v.getTag());
startActivity(intent);
}
+
+ @Override
+ public AmbientMode.AmbientCallback getAmbientCallback() {
+ return new MyAmbientCallback();
+ }
+
+ private class MyAmbientCallback extends AmbientMode.AmbientCallback {}
}
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 e385f6b2..07ed344a 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
@@ -15,8 +15,9 @@
*/
package com.example.android.wearable.wear.wearaccessibilityapp;
+import android.app.Activity;
import android.os.Bundle;
-import android.support.wearable.activity.WearableActivity;
+import android.support.wear.ambient.AmbientMode;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.AdapterView;
@@ -26,7 +27,7 @@ import android.widget.TextView;
import java.util.ArrayList;
import java.util.List;
-public class ProgressActivity extends WearableActivity {
+public class ProgressActivity extends Activity implements AmbientMode.AmbientCallbackProvider {
private List<ListsItem> mItems;
@Override
@@ -34,6 +35,8 @@ public class ProgressActivity extends WearableActivity {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_lists);
+ AmbientMode.attachAmbientSupport(this);
+
// Create a list of items for adapter to display.
mItems = new ArrayList<>();
mItems.add(new ListsItem(R.string.full_screen, FullScreenActivity.class));
@@ -65,4 +68,11 @@ public class ProgressActivity extends WearableActivity {
}
});
}
+
+ @Override
+ public AmbientMode.AmbientCallback getAmbientCallback() {
+ return new MyAmbientCallback();
+ }
+
+ private class MyAmbientCallback extends AmbientMode.AmbientCallback {}
}
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 978d49db..e8d26b2f 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
@@ -15,18 +15,28 @@
*/
package com.example.android.wearable.wear.wearaccessibilityapp;
+import android.app.Activity;
import android.os.Bundle;
-import android.support.wearable.activity.WearableActivity;
+import android.support.wear.ambient.AmbientMode;
import android.widget.TextView;
-public class RadioListActivity extends WearableActivity {
+public class RadioListActivity extends Activity implements AmbientMode.AmbientCallbackProvider {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_radio_list);
+ AmbientMode.attachAmbientSupport(this);
+
TextView titleView = findViewById(R.id.radio_list_title);
titleView.setText(R.string.radio_list);
}
+
+ @Override
+ public AmbientMode.AmbientCallback getAmbientCallback() {
+ return new MyAmbientCallback();
+ }
+
+ private class MyAmbientCallback extends AmbientMode.AmbientCallback {}
}
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/ScalingScrollLayoutCallback.java
index 44b3c75c..00b42268 100644
--- 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/ScalingScrollLayoutCallback.java
@@ -15,31 +15,25 @@
*/
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.support.v7.widget.RecyclerView;
+import android.support.wear.widget.WearableLinearLayoutManager;
import android.view.View;
-public class MyLauncherChildLayoutManager extends CurvedChildLayoutManager {
+public class ScalingScrollLayoutCallback extends WearableLinearLayoutManager.LayoutCallback {
/** 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);
+ public void onLayoutFinished(View child, RecyclerView 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);
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 efd16427..27a24d10 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
@@ -15,18 +15,21 @@
*/
package com.example.android.wearable.wear.wearaccessibilityapp;
+import android.app.Activity;
import android.content.res.Resources.NotFoundException;
import android.os.Bundle;
-import android.support.wearable.activity.WearableActivity;
+import android.support.wear.ambient.AmbientMode;
import android.widget.ImageView;
-public class ZoomImageActivity extends WearableActivity {
+public class ZoomImageActivity extends Activity implements AmbientMode.AmbientCallbackProvider {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_zoom_image);
+ AmbientMode.attachAmbientSupport(this);
+
// Check if integer was actually given.
if (!(getIntent().hasExtra(getString(R.string.intent_extra_image)))) {
throw new NotFoundException("Expecting extras");
@@ -37,4 +40,11 @@ public class ZoomImageActivity extends WearableActivity {
ImageView expandedImage = findViewById(R.id.expanded_image);
expandedImage.setImageResource(value);
}
+
+ @Override
+ public AmbientMode.AmbientCallback getAmbientCallback() {
+ return new MyAmbientCallback();
+ }
+
+ private class MyAmbientCallback extends AmbientMode.AmbientCallback {}
}
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 525d8b38..e133f15f 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.wearable.view.drawer.WearableDrawerLayout
+<android.support.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.wearable.view.WearableRecyclerView
+ <android.support.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.wearable.view.drawer.WearableActionDrawer
+ <android.support.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:action_menu="@menu/action_drawer_menu"
+ app:actionMenu="@menu/action_drawer_menu"
app:show_overflow_in_peek="true">
- </android.support.wearable.view.drawer.WearableActionDrawer>
-</android.support.wearable.view.drawer.WearableDrawerLayout>
+ </android.support.wear.widget.drawer.WearableActionDrawerView>
+</android.support.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 8c35593c..21446473 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.wearable.view.WearableRecyclerView
+<android.support.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/Wearable/src/main/res/layout/circled_image_layout.xml b/wearable/wear/WearAccessibilityApp/Wearable/src/main/res/layout/circled_image_layout.xml
index bd3b9da7..d28ac0d4 100644
--- 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
@@ -17,7 +17,7 @@
<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:id="@+id/rounded_drawable_layout"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<android.support.wearable.view.CircledImageView
diff --git a/wearable/wear/WearAccessibilityApp/screenshots/controls_screen.png b/wearable/wear/WearAccessibilityApp/screenshots/controls_screen.png
new file mode 100644
index 00000000..2363dc53
--- /dev/null
+++ b/wearable/wear/WearAccessibilityApp/screenshots/controls_screen.png
Binary files differ
diff --git a/wearable/wear/WearAccessibilityApp/screenshots/main_screen.png b/wearable/wear/WearAccessibilityApp/screenshots/main_screen.png
new file mode 100644
index 00000000..ecd58bcc
--- /dev/null
+++ b/wearable/wear/WearAccessibilityApp/screenshots/main_screen.png
Binary files differ
diff --git a/wearable/wear/WearAccessibilityApp/screenshots/progress_screen.png b/wearable/wear/WearAccessibilityApp/screenshots/progress_screen.png
new file mode 100644
index 00000000..70674897
--- /dev/null
+++ b/wearable/wear/WearAccessibilityApp/screenshots/progress_screen.png
Binary files differ
diff --git a/wearable/wear/WearAccessibilityApp/template-params.xml b/wearable/wear/WearAccessibilityApp/template-params.xml
index dc9f5d52..60c79ad3 100644
--- a/wearable/wear/WearAccessibilityApp/template-params.xml
+++ b/wearable/wear/WearAccessibilityApp/template-params.xml
@@ -20,7 +20,7 @@
<group>Wearable</group>
<package>com.example.android.wearable.wear.wearaccessibilityapp</package>
- <minSdkVersionWear>23</minSdkVersionWear>
+ <minSdkVersionWear>24</minSdkVersionWear>
<compileSdkVersionWear>26</compileSdkVersionWear>
<targetSdkVersionWear>26</targetSdkVersionWear>
@@ -34,8 +34,7 @@
<strings>
<intro>
<![CDATA[
- Introductory text that explains what the sample is intended to demonstrate. Edit
- in template-params.xml.
+ Sample demostrates best practices for accessibility (a11y support).
]]>
</intro>
</strings>
@@ -45,7 +44,7 @@
<metadata>
<!-- Values: {DRAFT | PUBLISHED | INTERNAL | DEPRECATED | SUPERCEDED} -->
- <status>DRAFT</status>
+ <status>PUBLISHED</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
@@ -73,8 +72,9 @@
<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>
+ <img>screenshots/main_screen.png</img>
+ <img>screenshots/progress_screen.png</img>
+ <img>screenshots/controls_screen.png</img>
</screenshots>
<!-- List of APIs that this sample should be cross-referenced under. Use <android>
for fully-qualified Framework class names ("android:" namespace).
@@ -82,7 +82,9 @@
Use <ext> for custom namespaces, if needed. See "Samples Index API" documentation
for more details. -->
<api_refs>
- <android>android.app.ActionBar</android>
+ <android>android.support.wear.widget.WearableRecyclerView</android>
+ <android>android.preference.Preference</android>
+ <android>android.support.v4.app.NotificationCompat</android>
</api_refs>
<!-- 1-3 line description of the sample here.
@@ -90,22 +92,24 @@
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.
+ Sample demonstrates how to include accessibility support for your wearable app.
</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.
+ Accessibility is an important part of any app (especially wearable apps). By
+ integrating accessible components and services, you can improve your app's usability,
+ particularly for users with disabilities.
- Multi-paragraph introduction to sample, from an educational point-of-view.
- *Makrdown* formatting allowed. See [Markdown Documentation][1]
- for details.
+ This sample demonstrates common UX patterns in wearable apps along with accessibility
+ support of those patterns. Be sure to review the [Accessibility Developer Checklist][1]
+ for your own app. For additional information please see our
+ [Best Practices for User Interface][2] page.
- [1]: http://daringfireball.net/projects/markdown/syntax
+ [1]: https://developer.android.com/guide/topics/ui/accessibility/checklist.html
+ [2]: https://developer.android.com/training/accessibility/index.html
</intro>
</metadata>
</sample>