Updates DataLayer example.
Bug: 4368433
Test: Manual tests.
Change-Id: I9b37cb1f2b425713ab2b976839f21d4366bba70d
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 b7f9f8b..2f232cc 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
@@ -168,7 +168,7 @@
}
@Override
- public void onMessageReceived(final MessageEvent messageEvent) {
+ public void onMessageReceived(MessageEvent messageEvent) {
LOGD(TAG, "onMessageReceived() A message from watch was received:"
+ messageEvent.getRequestId() + " " + messageEvent.getPath());
@@ -186,9 +186,9 @@
* 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);
+ mSendPhotoBtn = findViewById(R.id.sendPhoto);
+ mThumbView = findViewById(R.id.imageView);
+ mDataItemList = findViewById(R.id.data_item_list);
mStartActivityBtn = findViewById(R.id.start_wearable_activity);
}
@@ -419,4 +419,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 020cd15..d8f2cbe 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
@@ -20,16 +20,14 @@
import android.net.Uri;
import android.util.Log;
-import com.google.android.gms.common.ConnectionResult;
-import com.google.android.gms.common.api.GoogleApiClient;
+import com.google.android.gms.tasks.OnCompleteListener;
+import com.google.android.gms.tasks.Task;
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.Wearable;
import com.google.android.gms.wearable.WearableListenerService;
-import java.util.concurrent.TimeUnit;
-
/**
* Listens to DataItems and Messages from the local node.
*/
@@ -42,34 +40,16 @@
public static final String COUNT_PATH = "/count";
public static final String IMAGE_PATH = "/image";
public static final String IMAGE_KEY = "photo";
- GoogleApiClient mGoogleApiClient;
-
- @Override
- public void onCreate() {
- super.onCreate();
- mGoogleApiClient = new GoogleApiClient.Builder(this)
- .addApi(Wearable.API)
- .build();
- mGoogleApiClient.connect();
- }
@Override
public void onDataChanged(DataEventBuffer dataEvents) {
- LOGD(TAG, "onDataChanged: " + dataEvents);
- if (!mGoogleApiClient.isConnected() || !mGoogleApiClient.isConnecting()) {
- ConnectionResult connectionResult = mGoogleApiClient
- .blockingConnect(30, TimeUnit.SECONDS);
- if (!connectionResult.isSuccess()) {
- Log.e(TAG, "DataLayerListenerService failed to connect to GoogleApiClient, "
- + "error code: " + connectionResult.getErrorCode());
- return;
- }
- }
+ Log.d(TAG, "onDataChanged: " + dataEvents);
// Loop through the events and send a message back to the node that created the data item.
for (DataEvent event : dataEvents) {
Uri uri = event.getDataItem().getUri();
String path = uri.getPath();
+
if (COUNT_PATH.equals(path)) {
// Get the node id of the node that created the data item from the host portion of
// the uri.
@@ -78,15 +58,28 @@
byte[] payload = uri.toString().getBytes();
// Send the rpc
- Wearable.MessageApi.sendMessage(mGoogleApiClient, nodeId, DATA_ITEM_RECEIVED_PATH,
- payload);
+ // Instantiates clients without member variables, as clients are inexpensive to
+ // create. (They are cached and shared between GoogleApi instances.)
+ Task<Integer> sendMessageTask = Wearable.getMessageClient(this)
+ .sendMessage(nodeId, DATA_ITEM_RECEIVED_PATH, payload);
+
+ sendMessageTask.addOnCompleteListener(new OnCompleteListener<Integer>() {
+ @Override
+ public void onComplete(Task<Integer> task) {
+ if (task.isSuccessful()) {
+ Log.d(TAG, "Message sent successfully");
+ } else {
+ Log.d(TAG, "Message failed: " + task.getResult());
+ }
+ }
+ });
}
}
}
@Override
public void onMessageReceived(MessageEvent messageEvent) {
- LOGD(TAG, "onMessageReceived: " + messageEvent);
+ Log.d(TAG, "onMessageReceived: " + messageEvent);
// Check to see if the message is to start an activity
if (messageEvent.getPath().equals(START_ACTIVITY_PATH)) {
@@ -95,10 +88,4 @@
startActivity(startIntent);
}
}
-
- 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 feec09c..0044ca0 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
@@ -16,8 +16,6 @@
package com.example.android.wearable.datalayer;
-import static com.example.android.wearable.datalayer.DataLayerListenerService.LOGD;
-
import android.app.Activity;
import android.app.Fragment;
import android.app.FragmentManager;
@@ -120,7 +118,7 @@
@Override
public void onDataChanged(DataEventBuffer dataEvents) {
- LOGD(TAG, "onDataChanged(): " + dataEvents);
+ Log.d(TAG, "onDataChanged(): " + dataEvents);
for (DataEvent event : dataEvents) {
if (event.getType() == DataEvent.TYPE_CHANGED) {
@@ -133,10 +131,10 @@
new LoadBitmapAsyncTask().execute(photoAsset);
} else if (DataLayerListenerService.COUNT_PATH.equals(path)) {
- LOGD(TAG, "Data Changed for COUNT_PATH");
+ Log.d(TAG, "Data Changed for COUNT_PATH");
mDataFragment.appendItem("DataItem Changed", event.getDataItem().toString());
} else {
- LOGD(TAG, "Unrecognized path: " + path);
+ Log.d(TAG, "Unrecognized path: " + path);
}
} else if (event.getType() == DataEvent.TYPE_DELETED) {
@@ -162,13 +160,13 @@
@Override
public void onMessageReceived(MessageEvent event) {
- LOGD(TAG, "onMessageReceived: " + event);
+ Log.d(TAG, "onMessageReceived: " + event);
mDataFragment.appendItem("Message", event.toString());
}
@Override
public void onCapabilityChanged(CapabilityInfo capabilityInfo) {
- LOGD(TAG, "onCapabilityChanged: " + capabilityInfo);
+ Log.d(TAG, "onCapabilityChanged: " + capabilityInfo);
mDataFragment.appendItem("onCapabilityChanged", capabilityInfo.toString());
}
@@ -206,7 +204,7 @@
for (Node node : nodes) {
nodesList.add(node.getDisplayName());
}
- LOGD(TAG, "Connected Nodes: " + (nodesList.isEmpty()
+ Log.d(TAG, "Connected Nodes: " + (nodesList.isEmpty()
? "No connected device was found for the given capabilities"
: TextUtils.join(",", nodesList)));
String msg;
@@ -322,10 +320,10 @@
protected void onPostExecute(Bitmap bitmap) {
if (bitmap != null) {
- LOGD(TAG, "Setting background image on second page..");
+ Log.d(TAG, "Setting background image on second page..");
moveToPage(1);
mAssetFragment.setBackgroundImage(bitmap);
}
}
}
-}
\ No newline at end of file
+}
diff --git a/wearable/wear/DataLayer/Wearable/src/main/java/com/example/android/wearable/datalayer/fragments/AssetFragment.java b/wearable/wear/DataLayer/Wearable/src/main/java/com/example/android/wearable/datalayer/fragments/AssetFragment.java
index 879c2a7..312b086 100644
--- a/wearable/wear/DataLayer/Wearable/src/main/java/com/example/android/wearable/datalayer/fragments/AssetFragment.java
+++ b/wearable/wear/DataLayer/Wearable/src/main/java/com/example/android/wearable/datalayer/fragments/AssetFragment.java
@@ -39,7 +39,7 @@
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.asset_fragment, container, false);
- mPhoto = (ImageView) view.findViewById(R.id.photo);
+ mPhoto = view.findViewById(R.id.photo);
return view;
}
diff --git a/wearable/wear/DataLayer/Wearable/src/main/java/com/example/android/wearable/datalayer/fragments/DataFragment.java b/wearable/wear/DataLayer/Wearable/src/main/java/com/example/android/wearable/datalayer/fragments/DataFragment.java
index f111e7d..c8457fc 100644
--- a/wearable/wear/DataLayer/Wearable/src/main/java/com/example/android/wearable/datalayer/fragments/DataFragment.java
+++ b/wearable/wear/DataLayer/Wearable/src/main/java/com/example/android/wearable/datalayer/fragments/DataFragment.java
@@ -43,8 +43,8 @@
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.data_fragment, container, false);
- ListView dataItemList = (ListView) view.findViewById(R.id.dataItem_list);
- mIntroText = (TextView) view.findViewById(R.id.intro);
+ ListView dataItemList = view.findViewById(R.id.dataItem_list);
+ mIntroText = view.findViewById(R.id.intro);
mDataItemListAdapter = new DataItemAdapter(getActivity(),
android.R.layout.simple_list_item_1);
dataItemList.setAdapter(mDataItemListAdapter);
@@ -78,8 +78,8 @@
Context.LAYOUT_INFLATER_SERVICE);
convertView = inflater.inflate(android.R.layout.two_line_list_item, null);
convertView.setTag(holder);
- holder.text1 = (TextView) convertView.findViewById(android.R.id.text1);
- holder.text2 = (TextView) convertView.findViewById(android.R.id.text2);
+ holder.text1 = convertView.findViewById(android.R.id.text1);
+ holder.text2 = convertView.findViewById(android.R.id.text2);
} else {
holder = (ViewHolder) convertView.getTag();
}
diff --git a/wearable/wear/DataLayer/template-params.xml b/wearable/wear/DataLayer/template-params.xml
index 1f83906..ba07ff6 100644
--- a/wearable/wear/DataLayer/template-params.xml
+++ b/wearable/wear/DataLayer/template-params.xml
@@ -26,6 +26,12 @@
<multiDexEnabled>true</multiDexEnabled>
+ <dependency>com.android.support:recyclerview-v7:27.1.1</dependency>
+ <dependency>com.android.support:percent:27.1.1</dependency>
+
+ <dependency_wearable>com.android.support:recyclerview-v7:27.1.1</dependency_wearable>
+ <dependency_wearable>com.android.support:percent:27.1.1</dependency_wearable>
+
<wearable>
<has_handheld_app>true</has_handheld_app>
</wearable>