aboutsummaryrefslogtreecommitdiff
path: root/wearable/wear/XYZTouristAttractions
diff options
context:
space:
mode:
authoranaddaf <anaddaf@google.com>2015-04-04 20:01:10 -0700
committeranaddaf <anaddaf@google.com>2015-04-21 11:05:25 -0700
commit0c0dce2e927c52d0b4ba246bcfc13b1f95094b29 (patch)
treea2826040b135c1278534eeb31dd540cf877a6322 /wearable/wear/XYZTouristAttractions
parent1c8d8da4faa8bfe292f545432ee5969a07cea2a0 (diff)
downloadandroid-0c0dce2e927c52d0b4ba246bcfc13b1f95094b29.tar.gz
Updating samples to handle multi-node scenarios.
Bug: 19015876 Change-Id: I397b07d77f851ec4bbeeb67037b4f78d6b9dbe03
Diffstat (limited to 'wearable/wear/XYZTouristAttractions')
-rw-r--r--wearable/wear/XYZTouristAttractions/Application/src/main/res/values/wear.xml7
-rw-r--r--wearable/wear/XYZTouristAttractions/Shared/src/main/res/values/strings.xml4
-rw-r--r--wearable/wear/XYZTouristAttractions/Wearable/src/main/java/com/example/android/xyztouristattractions/service/UtilityService.java32
3 files changed, 36 insertions, 7 deletions
diff --git a/wearable/wear/XYZTouristAttractions/Application/src/main/res/values/wear.xml b/wearable/wear/XYZTouristAttractions/Application/src/main/res/values/wear.xml
new file mode 100644
index 00000000..719ca4b1
--- /dev/null
+++ b/wearable/wear/XYZTouristAttractions/Application/src/main/res/values/wear.xml
@@ -0,0 +1,7 @@
+<resources>
+ <string-array name="android_wear_capabilities" translatable="false">
+ <!-- declaring that phone has the capability to show details -->
+ <item>@string/show_detail_capability_name</item>
+ </string-array>
+</resources>
+
diff --git a/wearable/wear/XYZTouristAttractions/Shared/src/main/res/values/strings.xml b/wearable/wear/XYZTouristAttractions/Shared/src/main/res/values/strings.xml
new file mode 100644
index 00000000..87ede60c
--- /dev/null
+++ b/wearable/wear/XYZTouristAttractions/Shared/src/main/res/values/strings.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources>
+ <string name="show_detail_capability_name">show_details</string>
+</resources>
diff --git a/wearable/wear/XYZTouristAttractions/Wearable/src/main/java/com/example/android/xyztouristattractions/service/UtilityService.java b/wearable/wear/XYZTouristAttractions/Wearable/src/main/java/com/example/android/xyztouristattractions/service/UtilityService.java
index 234002ce..8a4fea56 100644
--- a/wearable/wear/XYZTouristAttractions/Wearable/src/main/java/com/example/android/xyztouristattractions/service/UtilityService.java
+++ b/wearable/wear/XYZTouristAttractions/Wearable/src/main/java/com/example/android/xyztouristattractions/service/UtilityService.java
@@ -20,14 +20,19 @@ import android.app.IntentService;
import android.app.NotificationManager;
import android.content.Context;
import android.content.Intent;
+import android.util.Log;
+import com.example.android.xyztouristattractions.R;
import com.example.android.xyztouristattractions.common.Constants;
import com.example.android.xyztouristattractions.common.Utils;
import com.google.android.gms.common.ConnectionResult;
import com.google.android.gms.common.api.GoogleApiClient;
+import com.google.android.gms.wearable.CapabilityApi;
+import com.google.android.gms.wearable.Node;
import com.google.android.gms.wearable.Wearable;
import java.util.Iterator;
+import java.util.Set;
import java.util.concurrent.TimeUnit;
/**
@@ -35,6 +40,7 @@ import java.util.concurrent.TimeUnit;
* operations that do not necessarily need to be tied to a UI.
*/
public class UtilityService extends IntentService {
+
private static final String TAG = UtilityService.class.getSimpleName();
private static final String ACTION_CLEAR_NOTIFICATION = "clear_notification";
@@ -42,6 +48,7 @@ public class UtilityService extends IntentService {
private static final String ACTION_START_DEVICE_ACTIVITY = "start_device_activity";
private static final String EXTRA_START_PATH = "start_path";
private static final String EXTRA_START_ACTIVITY_INFO = "start_activity_info";
+ private static final long GET_CAPABILITY_TIMEOUT_S = 10;
public static void clearNotification(Context context) {
Intent intent = new Intent(context, UtilityService.class);
@@ -131,7 +138,8 @@ public class UtilityService extends IntentService {
}
/**
- * Sends the actual message to ask other devices to start an activity
+ * Sends the actual message to ask other devices that are capable of showing "details" to start
+ * the appropriate activity
*
* @param path the path to pass to the wearable message API
* @param extraInfo extra info that varies based on the path being sent
@@ -145,14 +153,24 @@ public class UtilityService extends IntentService {
Constants.GOOGLE_API_CLIENT_TIMEOUT_S, TimeUnit.SECONDS);
if (connectionResult.isSuccess() && googleApiClient.isConnected()) {
- Iterator<String> itr = Utils.getNodes(googleApiClient).iterator();
- while (itr.hasNext()) {
- // Loop through all connected nodes
- Wearable.MessageApi.sendMessage(
- googleApiClient, itr.next(), path, extraInfo.getBytes());
+ CapabilityApi.GetCapabilityResult result = Wearable.CapabilityApi.getCapability(
+ googleApiClient,
+ getApplicationContext().getString(R.string.show_detail_capability_name),
+ CapabilityApi.FILTER_REACHABLE)
+ .await(GET_CAPABILITY_TIMEOUT_S, TimeUnit.SECONDS);
+ if (result.getStatus().isSuccess()) {
+ Set<Node> nodes = result.getCapability().getNodes();
+ for (Node node : nodes) {
+ Wearable.MessageApi.sendMessage(
+ googleApiClient, node.getId(), path, extraInfo.getBytes());
+ }
+ } else {
+ Log.e(TAG, "startDeviceActivityInternal() Failed to get capabilities, status: "
+ + result.getStatus().getStatusMessage());
}
+
+ googleApiClient.disconnect();
}
- googleApiClient.disconnect();
}
}