我在Android Studio中有类似的代码用于表盘。我在数据图中放置一个随机整数,以便手机应用程序的接收方可以检测到它已更新。我将此代码设置为onConnected,意图是每次用户再次安装或“选择”表盘时,它都会更新表盘上的数据 - 主应用程序接收此“已安装”状态,然后将更新后的信息发送回观看。
public class MyWatchFace extends CanvasWatchFaceService {
///
private class Engine extends CanvasWatchFaceService.Engine implements
DataApi.DataListener,
GoogleApiClient.ConnectionCallbacks,
GoogleApiClient.OnConnectionFailedListener{
@Override
public void onConnected(@Nullable Bundle bundle) {
Wearable.DataApi.addListener(mGoogleApiClient, this);
PutDataMapRequest putDataMapReq = PutDataMapRequest.create("/installed");
putDataMapReq.getDataMap().putInt(INSTALLED, new Random().nextInt());
PutDataRequest putDataReq = putDataMapReq.asPutDataRequest();
putDataReq.setUrgent();
Wearable.DataApi.putDataItem(mGoogleApiClient, putDataReq)
.setResultCallback(new ResultCallback<DataApi.DataItemResult>() {
@Override
public void onResult(DataApi.DataItemResult dataItemResult) {
Log.d(TAG, "Sending Install Status was successful: " + dataItemResult.getStatus()
.isSuccess());
}
});
}
问题是这段代码
Wearable.DataApi.putDataItem(mGoogleApiClient, putDataReq)
.setResultCallback
当我调试它时,似乎永远不会调用它,同时再次安装或选择表盘。我必须转到手机应用程序并更新相关信息,以便将信息发送回手表。
我最初将回调放在Engine的onCreate方法中,但从未调用过。这也是我创建并连接成功调用的mGoogleApiClient的地方。
是否有更合适的方法来安装此已安装的更新代码?为什么从未在这两种方法中调用它?
关于手表的其他所有工作正常 - 当手机应用数据发生变化时,它会成功从手机应用中检索数据。 PS,我使用相同的mGoogleApiClient来检索此手机数据以发送安装状态,以防您认为可能存在问题。我是否必须创建两个单独的客户端?