问题
I am developing demo application for wear and handheld. When wear starts it sends request to handheld and get list along with time stamp. and while we click on any list item, it sends changes to handheld again. This works perfectly
But not i want to sends list while on click of device list is performs. in device activity thread
class SendToDataLayerThread extends Thread {
String path;
DataMap dataMap;
SendToDataLayerThread(String p,DataMap d){
path = p;
dataMap = d;
}
@Override
public void run() {
PutDataMapRequest putDMR= PutDataMapRequest.create(path);
ArrayList<Job> arrlist=new ArrayList<>();
ArrayList<String> staticArray=new ArrayList<>();
mydb=new DBHelper(ListOfTaskActivity.this);
arrlist.clear();
arrlist = mydb.getAllCalls();
if(arrlist.size()>0) {
for (int i = 0; i < arrlist.size(); i++) {
staticArray.add(arrlist.get(i).get_id()+"~"+arrlist.get(i).getJob_status()+"~"+arrlist.get(i).getJob_placename());
}
}
dataMap.putStringArrayList("CallArrayList", staticArray);
NodeApi.GetConnectedNodesResult nodes = Wearable.NodeApi.getConnectedNodes(wagoogleApiClient).await();
for(Node node : nodes.getNodes()) {
if(wagoogleApiClient.isConnected()){
dataMap.putLong("new_TimeStamp", new Date().getTime());
putDMR.getDataMap().putAll(dataMap);
PutDataRequest request = putDMR.asPutDataRequest();
Wearable.DataApi.putDataItem(googleApiClient,request);
}
}
}
}
this works, but wearable service onDataChanged never called
wear service
public class WearableService extends WearableListenerService {
@Override
public void onDataChanged(DataEventBuffer dataEvents) {
super.onDataChanged(dataEvents);
DataMap dataMap;
try {
for (DataEvent event : dataEvents) {
Log.d(TAG, "in for DataEvent event : dataEvents");
if (event.getType() == DataEvent.TYPE_CHANGED) {
String path = event.getDataItem().getUri().getPath();
if(path.equals("/DataService_Path")) {
// change list
}
}
}
I am stuck here, thank you for help in advance
回答1:
Did you connect to the googleclientapi in your service?
mGoogleApiClient = new GoogleApiClient.Builder(context) .addApi(Wearable.API) .addConnectionCallbacks(this) .build(); mGoogleApiClient.connect()
Also check this post:
WearableListenerService, onDataChanged() is not called
来源:https://stackoverflow.com/questions/32516177/ondatachanged-is-not-getting-called