From 17df1e197ba9a761daea880c6f379cc417375f8a Mon Sep 17 00:00:00 2001 From: Jeremy Walker Date: Fri, 15 Apr 2016 15:18:42 -0700 Subject: DataLayer sample: Removes BIND_LISTENER from manifest and removes Node API. Change-Id: Ibf08bcfdaaf23e95561ce7e580d46ca9e22896d1 Change-Id: Ie8ea3cfd22c35d06e6d878e23c56399626dc2a22 --- .../android/wearable/datalayer/MainActivity.java | 398 ++++++++++----------- .../Wearable/src/main/AndroidManifest.xml | 13 +- .../datalayer/DataLayerListenerService.java | 16 +- .../android/wearable/datalayer/MainActivity.java | 46 +-- .../gradle/wrapper/gradle-wrapper.properties | 4 +- 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); @@ -130,15 +129,6 @@ public class MainActivity extends Activity implements DataApi.DataListener, .build(); } - @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(); @@ -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 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() { + @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() { + @Override + public void onResult(DataItemResult dataItemResult) { + LOGD(TAG, "Sending image was successful: " + dataItemResult.getStatus() + .isSuccess()); + } + }); + } + + private Collection getNodes() { + HashSet 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 getNodes() { - HashSet 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() { - @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 { @Override @@ -359,17 +425,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. */ @@ -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() { - @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" > + android:targetSdkVersion="23" /> @@ -35,10 +35,15 @@ - + + + + + + + - @@ -52,4 +57,4 @@ - + \ 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; * * */ -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 -- cgit v1.2.3