diff options
author | anaddaf <anaddaf@google.com> | 2015-04-04 20:01:10 -0700 |
---|---|---|
committer | anaddaf <anaddaf@google.com> | 2015-04-21 11:05:25 -0700 |
commit | 0c0dce2e927c52d0b4ba246bcfc13b1f95094b29 (patch) | |
tree | a2826040b135c1278534eeb31dd540cf877a6322 /wearable/wear/XYZTouristAttractions | |
parent | 1c8d8da4faa8bfe292f545432ee5969a07cea2a0 (diff) | |
download | android-0c0dce2e927c52d0b4ba246bcfc13b1f95094b29.tar.gz |
Updating samples to handle multi-node scenarios.
Bug: 19015876
Change-Id: I397b07d77f851ec4bbeeb67037b4f78d6b9dbe03
Diffstat (limited to 'wearable/wear/XYZTouristAttractions')
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(); } } |