aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJeremy Walker <jewalker@google.com>2016-04-15 15:18:42 -0700
committerJeremy Walker <jewalker@google.com>2016-04-19 10:58:01 -0700
commit17df1e197ba9a761daea880c6f379cc417375f8a (patch)
treef74f75abd54b681efe8dfbb7ddbc8cb64e2f2773
parent7fde685bd8e1834886401d207c55606c591698b2 (diff)
downloadandroid-17df1e197ba9a761daea880c6f379cc417375f8a.tar.gz
DataLayer sample: Removes BIND_LISTENER from manifest and removes Node API.
Change-Id: Ibf08bcfdaaf23e95561ce7e580d46ca9e22896d1 Change-Id: Ie8ea3cfd22c35d06e6d878e23c56399626dc2a22
-rw-r--r--wearable/wear/DataLayer/Application/src/main/java/com/example/android/wearable/datalayer/MainActivity.java398
-rw-r--r--wearable/wear/DataLayer/Wearable/src/main/AndroidManifest.xml13
-rw-r--r--wearable/wear/DataLayer/Wearable/src/main/java/com/example/android/wearable/datalayer/DataLayerListenerService.java16
-rw-r--r--wearable/wear/DataLayer/Wearable/src/main/java/com/example/android/wearable/datalayer/MainActivity.java46
-rw-r--r--wearable/wear/DataLayer/gradle/wrapper/gradle-wrapper.properties4
5 files changed, 221 insertions, 256 deletions
diff --git a/wearable/wear/DataLayer/Application/src/main/java/com/example/android/wearable/datalayer/MainActivity.java b/wearable/wear/DataLayer/Application/src/main/java/com/example/android/wearable/datalayer/MainActivity.java
index 4afeec97..ca86d7a3 100644
--- a/wearable/wear/DataLayer/Application/src/main/java/com/example/android/wearable/datalayer/MainActivity.java
+++ b/wearable/wear/DataLayer/Application/src/main/java/com/example/android/wearable/datalayer/MainActivity.java
@@ -22,9 +22,9 @@ import android.content.Intent;
import android.content.IntentSender;
import android.content.pm.PackageManager;
import android.graphics.Bitmap;
+import android.net.Uri;
import android.os.AsyncTask;
import android.os.Bundle;
-import android.os.Handler;
import android.provider.MediaStore;
import android.util.Log;
import android.view.LayoutInflater;
@@ -41,8 +41,9 @@ import com.google.android.gms.common.api.GoogleApiClient;
import com.google.android.gms.common.api.GoogleApiClient.ConnectionCallbacks;
import com.google.android.gms.common.api.GoogleApiClient.OnConnectionFailedListener;
import com.google.android.gms.common.api.ResultCallback;
-import com.google.android.gms.common.data.FreezableUtils;
import com.google.android.gms.wearable.Asset;
+import com.google.android.gms.wearable.CapabilityApi;
+import com.google.android.gms.wearable.CapabilityInfo;
import com.google.android.gms.wearable.DataApi;
import com.google.android.gms.wearable.DataApi.DataItemResult;
import com.google.android.gms.wearable.DataEvent;
@@ -61,7 +62,6 @@ import java.io.IOException;
import java.util.Collection;
import java.util.Date;
import java.util.HashSet;
-import java.util.List;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.ScheduledFuture;
import java.util.concurrent.ScheduledThreadPoolExecutor;
@@ -72,17 +72,20 @@ import java.util.concurrent.TimeUnit;
* item every second while it is open. Also allows user to take a photo and send that as an asset
* to the paired wearable.
*/
-public class MainActivity extends Activity implements DataApi.DataListener,
- MessageApi.MessageListener, NodeApi.NodeListener, ConnectionCallbacks,
+public class MainActivity extends Activity implements
+ CapabilityApi.CapabilityListener,
+ MessageApi.MessageListener,
+ DataApi.DataListener,
+ ConnectionCallbacks,
OnConnectionFailedListener {
private static final String TAG = "MainActivity";
- /**
- * Request code for launching the Intent to resolve Google Play services errors.
- */
+ //Request code for launching the Intent to resolve Google Play services errors.
private static final int REQUEST_RESOLVE_ERROR = 1000;
+ private static final int REQUEST_IMAGE_CAPTURE = 1;
+
private static final String START_ACTIVITY_PATH = "/start-activity";
private static final String COUNT_PATH = "/count";
private static final String IMAGE_PATH = "/image";
@@ -100,18 +103,14 @@ public class MainActivity extends Activity implements DataApi.DataListener,
private View mStartActivityBtn;
private DataItemAdapter mDataItemListAdapter;
- private Handler mHandler;
// Send DataItems.
private ScheduledExecutorService mGeneratorExecutor;
private ScheduledFuture<?> mDataItemGeneratorFuture;
- static final int REQUEST_IMAGE_CAPTURE = 1;
-
@Override
- public void onCreate(Bundle b) {
- super.onCreate(b);
- mHandler = new Handler();
+ public void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
LOGD(TAG, "onCreate");
mCameraSupported = getPackageManager().hasSystemFeature(PackageManager.FEATURE_CAMERA);
setContentView(R.layout.main_activity);
@@ -131,15 +130,6 @@ public class MainActivity extends Activity implements DataApi.DataListener,
}
@Override
- protected void onActivityResult(int requestCode, int resultCode, Intent data) {
- if (requestCode == REQUEST_IMAGE_CAPTURE && resultCode == RESULT_OK) {
- Bundle extras = data.getExtras();
- mImageBitmap = (Bitmap) extras.get("data");
- mThumbView.setImageBitmap(mImageBitmap);
- }
- }
-
- @Override
protected void onStart() {
super.onStart();
if (!mResolvingError) {
@@ -162,16 +152,25 @@ public class MainActivity extends Activity implements DataApi.DataListener,
@Override
protected void onStop() {
- if (!mResolvingError) {
+ if (!mResolvingError && (mGoogleApiClient != null) && (mGoogleApiClient.isConnected())) {
Wearable.DataApi.removeListener(mGoogleApiClient, this);
Wearable.MessageApi.removeListener(mGoogleApiClient, this);
- Wearable.NodeApi.removeListener(mGoogleApiClient, this);
+ Wearable.CapabilityApi.removeListener(mGoogleApiClient, this);
mGoogleApiClient.disconnect();
}
super.onStop();
}
- @Override //ConnectionCallbacks
+ @Override
+ protected void onActivityResult(int requestCode, int resultCode, Intent data) {
+ if (requestCode == REQUEST_IMAGE_CAPTURE && resultCode == RESULT_OK) {
+ Bundle extras = data.getExtras();
+ mImageBitmap = (Bitmap) extras.get("data");
+ mThumbView.setImageBitmap(mImageBitmap);
+ }
+ }
+
+ @Override
public void onConnected(Bundle connectionHint) {
LOGD(TAG, "Google API Client was connected");
mResolvingError = false;
@@ -179,95 +178,190 @@ public class MainActivity extends Activity implements DataApi.DataListener,
mSendPhotoBtn.setEnabled(mCameraSupported);
Wearable.DataApi.addListener(mGoogleApiClient, this);
Wearable.MessageApi.addListener(mGoogleApiClient, this);
- Wearable.NodeApi.addListener(mGoogleApiClient, this);
+ Wearable.CapabilityApi.addListener(
+ mGoogleApiClient, this, Uri.parse("wear://"), CapabilityApi.FILTER_REACHABLE);
}
- @Override //ConnectionCallbacks
+ @Override
public void onConnectionSuspended(int cause) {
LOGD(TAG, "Connection to Google API client was suspended");
mStartActivityBtn.setEnabled(false);
mSendPhotoBtn.setEnabled(false);
}
- @Override //OnConnectionFailedListener
+ @Override
public void onConnectionFailed(ConnectionResult result) {
- if (mResolvingError) {
- // Already attempting to resolve an error.
- return;
- } else if (result.hasResolution()) {
- try {
- mResolvingError = true;
- result.startResolutionForResult(this, REQUEST_RESOLVE_ERROR);
- } catch (IntentSender.SendIntentException e) {
- // There was an error with the resolution intent. Try again.
- mGoogleApiClient.connect();
+ if (!mResolvingError) {
+
+ if (result.hasResolution()) {
+ try {
+ mResolvingError = true;
+ result.startResolutionForResult(this, REQUEST_RESOLVE_ERROR);
+ } catch (IntentSender.SendIntentException e) {
+ // There was an error with the resolution intent. Try again.
+ mGoogleApiClient.connect();
+ }
+ } else {
+ Log.e(TAG, "Connection to Google API client has failed");
+ mResolvingError = false;
+ mStartActivityBtn.setEnabled(false);
+ mSendPhotoBtn.setEnabled(false);
+ Wearable.DataApi.removeListener(mGoogleApiClient, this);
+ Wearable.MessageApi.removeListener(mGoogleApiClient, this);
+ Wearable.CapabilityApi.removeListener(mGoogleApiClient, this);
}
- } else {
- Log.e(TAG, "Connection to Google API client has failed");
- mResolvingError = false;
- mStartActivityBtn.setEnabled(false);
- mSendPhotoBtn.setEnabled(false);
- Wearable.DataApi.removeListener(mGoogleApiClient, this);
- Wearable.MessageApi.removeListener(mGoogleApiClient, this);
- Wearable.NodeApi.removeListener(mGoogleApiClient, this);
}
}
- @Override //DataListener
+ @Override
public void onDataChanged(DataEventBuffer dataEvents) {
LOGD(TAG, "onDataChanged: " + dataEvents);
- // Need to freeze the dataEvents so they will exist later on the UI thread
- final List<DataEvent> events = FreezableUtils.freezeIterable(dataEvents);
- runOnUiThread(new Runnable() {
- @Override
- public void run() {
- for (DataEvent event : events) {
- if (event.getType() == DataEvent.TYPE_CHANGED) {
- mDataItemListAdapter.add(
- new Event("DataItem Changed", event.getDataItem().toString()));
- } else if (event.getType() == DataEvent.TYPE_DELETED) {
- mDataItemListAdapter.add(
- new Event("DataItem Deleted", event.getDataItem().toString()));
- }
- }
+
+ for (DataEvent event : dataEvents) {
+ if (event.getType() == DataEvent.TYPE_CHANGED) {
+ mDataItemListAdapter.add(
+ new Event("DataItem Changed", event.getDataItem().toString()));
+ } else if (event.getType() == DataEvent.TYPE_DELETED) {
+ mDataItemListAdapter.add(
+ new Event("DataItem Deleted", event.getDataItem().toString()));
}
- });
+ }
}
- @Override //MessageListener
+ @Override
public void onMessageReceived(final MessageEvent messageEvent) {
- LOGD(TAG, "onMessageReceived() A message from watch was received:" + messageEvent
- .getRequestId() + " " + messageEvent.getPath());
- mHandler.post(new Runnable() {
- @Override
- public void run() {
- mDataItemListAdapter.add(new Event("Message from watch", messageEvent.toString()));
- }
- });
+ LOGD(TAG, "onMessageReceived() A message from watch was received:"
+ + messageEvent.getRequestId() + " " + messageEvent.getPath());
+ mDataItemListAdapter.add(new Event("Message from watch", messageEvent.toString()));
}
- @Override //NodeListener
- public void onPeerConnected(final Node peer) {
- LOGD(TAG, "onPeerConnected: " + peer);
- mHandler.post(new Runnable() {
- @Override
- public void run() {
- mDataItemListAdapter.add(new Event("Connected", peer.toString()));
- }
- });
+ @Override
+ public void onCapabilityChanged(final CapabilityInfo capabilityInfo) {
+ LOGD(TAG, "onCapabilityChanged: " + capabilityInfo);
+
+ mDataItemListAdapter.add(new Event("onCapabilityChanged", capabilityInfo.toString()));
+ }
+ /**
+ * Sets up UI components and their callback handlers.
+ */
+ private void setupViews() {
+ mSendPhotoBtn = (Button) findViewById(R.id.sendPhoto);
+ mThumbView = (ImageView) findViewById(R.id.imageView);
+ mDataItemList = (ListView) findViewById(R.id.data_item_list);
+ mStartActivityBtn = findViewById(R.id.start_wearable_activity);
}
- @Override //NodeListener
- public void onPeerDisconnected(final Node peer) {
- LOGD(TAG, "onPeerDisconnected: " + peer);
- mHandler.post(new Runnable() {
- @Override
- public void run() {
- mDataItemListAdapter.add(new Event("Disconnected", peer.toString()));
+ public void onTakePhotoClick(View view) {
+ dispatchTakePictureIntent();
+ }
+
+ public void onSendPhotoClick(View view) {
+ if (null != mImageBitmap && mGoogleApiClient.isConnected()) {
+ sendPhoto(toAsset(mImageBitmap));
+ }
+ }
+
+ /**
+ * Sends an RPC to start a fullscreen Activity on the wearable.
+ */
+ public void onStartWearableActivityClick(View view) {
+ LOGD(TAG, "Generating RPC");
+
+ // Trigger an AsyncTask that will query for a list of connected nodes and send a
+ // "start-activity" message to each connected node.
+ new StartWearableActivityTask().execute();
+ }
+
+ private void sendStartActivityMessage(String node) {
+ Wearable.MessageApi.sendMessage(
+ mGoogleApiClient, node, START_ACTIVITY_PATH, new byte[0]).setResultCallback(
+ new ResultCallback<SendMessageResult>() {
+ @Override
+ public void onResult(SendMessageResult sendMessageResult) {
+ if (!sendMessageResult.getStatus().isSuccess()) {
+ Log.e(TAG, "Failed to send message with status code: "
+ + sendMessageResult.getStatus().getStatusCode());
+ }
+ }
+ }
+ );
+ }
+
+ /**
+ * Dispatches an {@link android.content.Intent} to take a photo. Result will be returned back
+ * in onActivityResult().
+ */
+ private void dispatchTakePictureIntent() {
+ Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
+ if (takePictureIntent.resolveActivity(getPackageManager()) != null) {
+ startActivityForResult(takePictureIntent, REQUEST_IMAGE_CAPTURE);
+ }
+ }
+
+ /**
+ * Builds an {@link com.google.android.gms.wearable.Asset} from a bitmap. The image that we get
+ * back from the camera in "data" is a thumbnail size. Typically, your image should not exceed
+ * 320x320 and if you want to have zoom and parallax effect in your app, limit the size of your
+ * image to 640x400. Resize your image before transferring to your wearable device.
+ */
+ private static Asset toAsset(Bitmap bitmap) {
+ ByteArrayOutputStream byteStream = null;
+ try {
+ byteStream = new ByteArrayOutputStream();
+ bitmap.compress(Bitmap.CompressFormat.PNG, 100, byteStream);
+ return Asset.createFromBytes(byteStream.toByteArray());
+ } finally {
+ if (null != byteStream) {
+ try {
+ byteStream.close();
+ } catch (IOException e) {
+ // ignore
+ }
}
- });
+ }
+ }
+
+ /**
+ * Sends the asset that was created from the photo we took by adding it to the Data Item store.
+ */
+ private void sendPhoto(Asset asset) {
+ PutDataMapRequest dataMap = PutDataMapRequest.create(IMAGE_PATH);
+ dataMap.getDataMap().putAsset(IMAGE_KEY, asset);
+ dataMap.getDataMap().putLong("time", new Date().getTime());
+ PutDataRequest request = dataMap.asPutDataRequest();
+ request.setUrgent();
+
+ Wearable.DataApi.putDataItem(mGoogleApiClient, request)
+ .setResultCallback(new ResultCallback<DataItemResult>() {
+ @Override
+ public void onResult(DataItemResult dataItemResult) {
+ LOGD(TAG, "Sending image was successful: " + dataItemResult.getStatus()
+ .isSuccess());
+ }
+ });
+ }
+
+ private Collection<String> getNodes() {
+ HashSet<String> results = new HashSet<>();
+ NodeApi.GetConnectedNodesResult nodes =
+ Wearable.NodeApi.getConnectedNodes(mGoogleApiClient).await();
+
+ for (Node node : nodes.getNodes()) {
+ results.add(node.getId());
+ }
+
+ return results;
+ }
+
+ /**
+ * As simple wrapper around Log.d
+ */
+ private static void LOGD(final String tag, String message) {
+ if (Log.isLoggable(tag, Log.DEBUG)) {
+ Log.d(tag, message);
+ }
}
/**
@@ -303,7 +397,6 @@ public class MainActivity extends Activity implements DataApi.DataListener,
}
private class ViewHolder {
-
TextView text1;
TextView text2;
}
@@ -320,33 +413,6 @@ public class MainActivity extends Activity implements DataApi.DataListener,
}
}
- private Collection<String> getNodes() {
- HashSet<String> results = new HashSet<>();
- NodeApi.GetConnectedNodesResult nodes =
- Wearable.NodeApi.getConnectedNodes(mGoogleApiClient).await();
-
- for (Node node : nodes.getNodes()) {
- results.add(node.getId());
- }
-
- return results;
- }
-
- private void sendStartActivityMessage(String node) {
- Wearable.MessageApi.sendMessage(
- mGoogleApiClient, node, START_ACTIVITY_PATH, new byte[0]).setResultCallback(
- new ResultCallback<SendMessageResult>() {
- @Override
- public void onResult(SendMessageResult sendMessageResult) {
- if (!sendMessageResult.getStatus().isSuccess()) {
- Log.e(TAG, "Failed to send message with status code: "
- + sendMessageResult.getStatus().getStatusCode());
- }
- }
- }
- );
- }
-
private class StartWearableActivityTask extends AsyncTask<Void, Void, Void> {
@Override
@@ -360,17 +426,6 @@ public class MainActivity extends Activity implements DataApi.DataListener,
}
/**
- * Sends an RPC to start a fullscreen Activity on the wearable.
- */
- public void onStartWearableActivityClick(View view) {
- LOGD(TAG, "Generating RPC");
-
- // Trigger an AsyncTask that will query for a list of connected nodes and send a
- // "start-activity" message to each connected node.
- new StartWearableActivityTask().execute();
- }
-
- /**
* Generates a DataItem based on an incrementing count.
*/
private class DataItemGenerator implements Runnable {
@@ -401,89 +456,4 @@ public class MainActivity extends Activity implements DataApi.DataListener,
});
}
}
-
- /**
- * Dispatches an {@link android.content.Intent} to take a photo. Result will be returned back
- * in onActivityResult().
- */
- private void dispatchTakePictureIntent() {
- Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
- if (takePictureIntent.resolveActivity(getPackageManager()) != null) {
- startActivityForResult(takePictureIntent, REQUEST_IMAGE_CAPTURE);
- }
- }
-
- /**
- * Builds an {@link com.google.android.gms.wearable.Asset} from a bitmap. The image that we get
- * back from the camera in "data" is a thumbnail size. Typically, your image should not exceed
- * 320x320 and if you want to have zoom and parallax effect in your app, limit the size of your
- * image to 640x400. Resize your image before transferring to your wearable device.
- */
- private static Asset toAsset(Bitmap bitmap) {
- ByteArrayOutputStream byteStream = null;
- try {
- byteStream = new ByteArrayOutputStream();
- bitmap.compress(Bitmap.CompressFormat.PNG, 100, byteStream);
- return Asset.createFromBytes(byteStream.toByteArray());
- } finally {
- if (null != byteStream) {
- try {
- byteStream.close();
- } catch (IOException e) {
- // ignore
- }
- }
- }
- }
-
- /**
- * Sends the asset that was created form the photo we took by adding it to the Data Item store.
- */
- private void sendPhoto(Asset asset) {
- PutDataMapRequest dataMap = PutDataMapRequest.create(IMAGE_PATH);
- dataMap.getDataMap().putAsset(IMAGE_KEY, asset);
- dataMap.getDataMap().putLong("time", new Date().getTime());
- PutDataRequest request = dataMap.asPutDataRequest();
- request.setUrgent();
-
- Wearable.DataApi.putDataItem(mGoogleApiClient, request)
- .setResultCallback(new ResultCallback<DataItemResult>() {
- @Override
- public void onResult(DataItemResult dataItemResult) {
- LOGD(TAG, "Sending image was successful: " + dataItemResult.getStatus()
- .isSuccess());
- }
- });
-
- }
-
- public void onTakePhotoClick(View view) {
- dispatchTakePictureIntent();
- }
-
- public void onSendPhotoClick(View view) {
- if (null != mImageBitmap && mGoogleApiClient.isConnected()) {
- sendPhoto(toAsset(mImageBitmap));
- }
- }
-
- /**
- * Sets up UI components and their callback handlers.
- */
- private void setupViews() {
- mSendPhotoBtn = (Button) findViewById(R.id.sendPhoto);
- mThumbView = (ImageView) findViewById(R.id.imageView);
- mDataItemList = (ListView) findViewById(R.id.data_item_list);
- mStartActivityBtn = findViewById(R.id.start_wearable_activity);
- }
-
- /**
- * As simple wrapper around Log.d
- */
- private static void LOGD(final String tag, String message) {
- if (Log.isLoggable(tag, Log.DEBUG)) {
- Log.d(tag, message);
- }
- }
-
-}
+} \ No newline at end of file
diff --git a/wearable/wear/DataLayer/Wearable/src/main/AndroidManifest.xml b/wearable/wear/DataLayer/Wearable/src/main/AndroidManifest.xml
index 5567365d..6608bb70 100644
--- a/wearable/wear/DataLayer/Wearable/src/main/AndroidManifest.xml
+++ b/wearable/wear/DataLayer/Wearable/src/main/AndroidManifest.xml
@@ -18,7 +18,7 @@
package="com.example.android.wearable.datalayer" >
<uses-sdk android:minSdkVersion="20"
- android:targetSdkVersion="22" />
+ android:targetSdkVersion="23" />
<uses-feature android:name="android.hardware.type.watch" />
@@ -35,10 +35,15 @@
<service
android:name=".DataLayerListenerService" >
<intent-filter>
- <action android:name="com.google.android.gms.wearable.BIND_LISTENER" />
+ <!-- listeners receive events that match the action and data filters -->
+ <action android:name="com.google.android.gms.wearable.DATA_CHANGED" />
+ <data android:scheme="wear" android:host="*" android:pathPrefix="/count"/>
+ </intent-filter>
+ <intent-filter>
+ <action android:name="com.google.android.gms.wearable.MESSAGE_RECEIVED" />
+ <data android:scheme="wear" android:host="*" android:pathPrefix="/start-activity"/>
</intent-filter>
</service>
-
<activity
android:name=".MainActivity"
android:label="@string/app_name">
@@ -52,4 +57,4 @@
</intent-filter>
</activity>
</application>
-</manifest>
+</manifest> \ No newline at end of file
diff --git a/wearable/wear/DataLayer/Wearable/src/main/java/com/example/android/wearable/datalayer/DataLayerListenerService.java b/wearable/wear/DataLayer/Wearable/src/main/java/com/example/android/wearable/datalayer/DataLayerListenerService.java
index 67dcef94..020cd158 100644
--- a/wearable/wear/DataLayer/Wearable/src/main/java/com/example/android/wearable/datalayer/DataLayerListenerService.java
+++ b/wearable/wear/DataLayer/Wearable/src/main/java/com/example/android/wearable/datalayer/DataLayerListenerService.java
@@ -25,11 +25,9 @@ import com.google.android.gms.common.api.GoogleApiClient;
import com.google.android.gms.wearable.DataEvent;
import com.google.android.gms.wearable.DataEventBuffer;
import com.google.android.gms.wearable.MessageEvent;
-import com.google.android.gms.wearable.Node;
import com.google.android.gms.wearable.Wearable;
import com.google.android.gms.wearable.WearableListenerService;
-import java.util.List;
import java.util.concurrent.TimeUnit;
/**
@@ -37,7 +35,7 @@ import java.util.concurrent.TimeUnit;
*/
public class DataLayerListenerService extends WearableListenerService {
- private static final String TAG = "DataLayerListenerServic";
+ private static final String TAG = "DataLayerService";
private static final String START_ACTIVITY_PATH = "/start-activity";
private static final String DATA_ITEM_RECEIVED_PATH = "/data-item-received";
@@ -98,19 +96,9 @@ public class DataLayerListenerService extends WearableListenerService {
}
}
- @Override
- public void onPeerConnected(Node peer) {
- LOGD(TAG, "onPeerConnected: " + peer);
- }
-
- @Override
- public void onPeerDisconnected(Node peer) {
- LOGD(TAG, "onPeerDisconnected: " + peer);
- }
-
public static void LOGD(final String tag, String message) {
if (Log.isLoggable(tag, Log.DEBUG)) {
Log.d(tag, message);
}
}
-}
+} \ No newline at end of file
diff --git a/wearable/wear/DataLayer/Wearable/src/main/java/com/example/android/wearable/datalayer/MainActivity.java b/wearable/wear/DataLayer/Wearable/src/main/java/com/example/android/wearable/datalayer/MainActivity.java
index b3cb2530..402912f4 100644
--- a/wearable/wear/DataLayer/Wearable/src/main/java/com/example/android/wearable/datalayer/MainActivity.java
+++ b/wearable/wear/DataLayer/Wearable/src/main/java/com/example/android/wearable/datalayer/MainActivity.java
@@ -23,9 +23,9 @@ import android.app.Fragment;
import android.app.FragmentManager;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
+import android.net.Uri;
import android.os.AsyncTask;
import android.os.Bundle;
-import android.os.Handler;
import android.support.wearable.view.DotsPageIndicator;
import android.support.wearable.view.FragmentGridPagerAdapter;
import android.support.wearable.view.GridViewPager;
@@ -54,7 +54,6 @@ import com.google.android.gms.wearable.DataMapItem;
import com.google.android.gms.wearable.MessageApi;
import com.google.android.gms.wearable.MessageEvent;
import com.google.android.gms.wearable.Node;
-import com.google.android.gms.wearable.NodeApi;
import com.google.android.gms.wearable.Wearable;
import java.io.InputStream;
@@ -78,9 +77,12 @@ import java.util.Set;
* </li>
* </ul>
*/
-public class MainActivity extends Activity implements ConnectionCallbacks,
- OnConnectionFailedListener, DataApi.DataListener, MessageApi.MessageListener,
- NodeApi.NodeListener {
+public class MainActivity extends Activity implements
+ ConnectionCallbacks,
+ OnConnectionFailedListener,
+ DataApi.DataListener,
+ MessageApi.MessageListener,
+ CapabilityApi.CapabilityListener {
private static final String TAG = "MainActivity";
private static final String CAPABILITY_1_NAME = "capability_1";
@@ -92,8 +94,8 @@ public class MainActivity extends Activity implements ConnectionCallbacks,
private AssetFragment mAssetFragment;
@Override
- public void onCreate(Bundle b) {
- super.onCreate(b);
+ public void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
setContentView(R.layout.main_activity);
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
setupViews();
@@ -112,11 +114,14 @@ public class MainActivity extends Activity implements ConnectionCallbacks,
@Override
protected void onPause() {
+ if ((mGoogleApiClient != null) && mGoogleApiClient.isConnected()) {
+ Wearable.DataApi.removeListener(mGoogleApiClient, this);
+ Wearable.MessageApi.removeListener(mGoogleApiClient, this);
+ Wearable.CapabilityApi.removeListener(mGoogleApiClient, this);
+ mGoogleApiClient.disconnect();
+ }
+
super.onPause();
- Wearable.DataApi.removeListener(mGoogleApiClient, this);
- Wearable.MessageApi.removeListener(mGoogleApiClient, this);
- Wearable.NodeApi.removeListener(mGoogleApiClient, this);
- mGoogleApiClient.disconnect();
}
@Override
@@ -124,7 +129,8 @@ public class MainActivity extends Activity implements ConnectionCallbacks,
LOGD(TAG, "onConnected(): Successfully connected to Google API client");
Wearable.DataApi.addListener(mGoogleApiClient, this);
Wearable.MessageApi.addListener(mGoogleApiClient, this);
- Wearable.NodeApi.addListener(mGoogleApiClient, this);
+ Wearable.CapabilityApi.addListener(
+ mGoogleApiClient, this, Uri.parse("wear://"), CapabilityApi.FILTER_REACHABLE);
}
@Override
@@ -244,13 +250,9 @@ public class MainActivity extends Activity implements ConnectionCallbacks,
}
@Override
- public void onPeerConnected(Node node) {
- mDataFragment.appendItem("Node Connected", node.getId());
- }
-
- @Override
- public void onPeerDisconnected(Node node) {
- mDataFragment.appendItem("Node Disconnected", node.getId());
+ public void onCapabilityChanged(CapabilityInfo capabilityInfo) {
+ LOGD(TAG, "onCapabilityChanged: " + capabilityInfo);
+ mDataFragment.appendItem("onCapabilityChanged", capabilityInfo.toString());
}
private void setupViews() {
@@ -312,7 +314,7 @@ public class MainActivity extends Activity implements ConnectionCallbacks,
@Override
protected Bitmap doInBackground(Asset... params) {
- if(params.length > 0) {
+ if (params.length > 0) {
Asset asset = params[0];
@@ -334,11 +336,11 @@ public class MainActivity extends Activity implements ConnectionCallbacks,
@Override
protected void onPostExecute(Bitmap bitmap) {
- if(bitmap != null) {
+ if (bitmap != null) {
LOGD(TAG, "Setting background image on second page..");
moveToPage(1);
mAssetFragment.setBackgroundImage(bitmap);
}
}
}
-}
+} \ No newline at end of file
diff --git a/wearable/wear/DataLayer/gradle/wrapper/gradle-wrapper.properties b/wearable/wear/DataLayer/gradle/wrapper/gradle-wrapper.properties
index 07fc193f..69aad789 100644
--- a/wearable/wear/DataLayer/gradle/wrapper/gradle-wrapper.properties
+++ b/wearable/wear/DataLayer/gradle/wrapper/gradle-wrapper.properties
@@ -1,6 +1,6 @@
-#Wed Apr 10 15:27:10 PDT 2013
+#Tue Apr 12 16:28:18 PDT 2016
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-2.8-all.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-2.10-all.zip