Android Wear Watchface引擎从不调用DataApi更新

时间:2017-01-25 17:01:25

标签: java android wear-os android-wear-data-api

我在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来检索此手机数据以发送安装状态,以防您认为可能存在问题。我是否必须创建两个单独的客户端?

0 个答案:

没有答案