【发布时间】:2016-03-31 12:39:39
【问题描述】:
我下载了一个现成的手机应用程序,并尝试为我的 Android Wear 项目实现一个表盘。目标是将温度信息从手机传递到穿戴设备并让它更新表盘。
我尝试过: 1.相同的包名 2.相同的applicationId 3.相同的依赖版本 4.相同的权限 5. 在我的手机端,我确定我的数据每次都不同(因此必须进行更新)
我还使用数据项,因此我的数据必须得到同步。
private void syncWatch(String min, String max, int image){
Log.v("SunshineSyncAdapter", "syncWatch");
String time = String.valueOf(new Date().getTime());
PutDataMapRequest putDataMapRequest = PutDataMapRequest.create("/weather-update");
putDataMapRequest.getDataMap().putLong("time", new Date().getTime()); // MOST IMPORTANT LINE FOR TIMESTAMP
putDataMapRequest.getDataMap().putString("min-temp", min + time);
putDataMapRequest.getDataMap().putString("max-temp", max + time);
Log.v("SunshineSyncAdapter", min + time + " " + max + time);
PutDataRequest request = putDataMapRequest.asPutDataRequest();
if (mGoogleApiClient == null){
Log.v("SunshineSyncAdapter", "NOOOOOOOOOOOOOOOOO, life is no good");
return;
}
Wearable.DataApi.putDataItem(mGoogleApiClient,request).setResultCallback(new ResultCallback<DataApi.DataItemResult>() {
@Override
public void onResult(DataApi.DataItemResult dataItemResult) {
if (!dataItemResult.getStatus().isSuccess()) {
Log.v("MainActivity", "Something went wrong, watch was not notified");
} else {
Log.v("MainActivity", "Success, Watch Notified");
}
}
});
}
我首先在手机上运行我的应用程序,确保它运行正常,并且更新了数据项并将数据项发送到我的穿戴设备。然后我运行我的磨损模块并没有收到任何信息,因为从未调用过 onDataChanged 方法。
@Override
public void onDataChanged(DataEventBuffer dataEvents) {
Log.v("SunshineWatchFace", "onDataChanged");
try{
for(DataEvent dataEvent: dataEvents){
if(dataEvent.getType() != DataEvent.TYPE_CHANGED){
continue;
}
DataItem dataItem = dataEvent.getDataItem();
if(dataItem.getUri().getPath().compareTo("weather_update") == 0){
DataMap dataMap = DataMapItem.fromDataItem(dataItem).getDataMap();
minTemp = dataMap.getString("min-temp");
maxTemp = dataMap.getString("max-temp");
weatherImage = dataMap.getInt("weather-image");
Log.v("SunshineWatchFace", minTemp);
Log.v("SunshineWatchFace", maxTemp);
}
}
dataEvents.release();
if(!isInAmbientMode()){
invalidate();
}
}catch (Exception e){
Log.v("SunshineWatchFace",e.getMessage());
}
}
非常感谢任何帮助
我花了很多时间试图解决这个问题。
【问题讨论】: