Android 使用dataApi更新复杂度
这能做到吗?如果我在WearableListener类中执行此操作,如何将数据传递给CompliationService并强制更新? 非常感谢 此代码位于手持设备上,用于在发生更改时更新数据项:Android 使用dataApi更新复杂度,android,wear-os,android-wear-data-api,android-wear-2.0,Android,Wear Os,Android Wear Data Api,Android Wear 2.0,这能做到吗?如果我在WearableListener类中执行此操作,如何将数据传递给CompliationService并强制更新? 非常感谢 此代码位于手持设备上,用于在发生更改时更新数据项: private void syncDataItem(){ Log.d(TAG, "PanicAlert AlarmStatus=" + isAlertActive(context)); PutDataMapRequest putDataMapRequest = PutDataMapReq
private void syncDataItem(){
Log.d(TAG, "PanicAlert AlarmStatus=" + isAlertActive(context));
PutDataMapRequest putDataMapRequest = PutDataMapRequest.create(PATH_ALARM);
putDataMapRequest.getDataMap().putBoolean(FIELD_ALARM_ON, isAlertActive(context));
putDataMapRequest.setUrgent();
Wearable.DataApi.putDataItem(mGoogleApiClient, putDataMapRequest.asPutDataRequest()).await();
}
这是手表上的DataListener:
public class DataLayerListenerService extends WearableListenerService {
private static final String TAG = "DataLayerSample";
private static final String PATH_ALARM = "/alarm_path";
private static final String FIELD_ALARM_ON = "alarm_on";
@Override
public void onDataChanged(DataEventBuffer dataEvents) {
if (Log.isLoggable(TAG, Log.DEBUG)) {
Log.d(TAG, "onDataChanged: " + dataEvents);
}
GoogleApiClient googleApiClient = new GoogleApiClient.Builder(this)
.addApi(Wearable.API)
.build();
ConnectionResult connectionResult =
googleApiClient.blockingConnect(30, TimeUnit.SECONDS);
if (!connectionResult.isSuccess()) {
Log.e(TAG, "Failed to connect to GoogleApiClient.");
return;
}
for (DataEvent event : dataEvents) {
//Force update of complication? How?
}
}
}
这是复杂化服务(谷歌的例子只是提供了一个随机数):
在我看来,您需要在您的
WearableListenerService
中安装一个ProviderUpdateRequester
。当您从手持设备接收到更改后的数据时,拨打如下电话:
new ProviderUpdateRequester(context, new ComponentName(context, "myComplicationClass"))
.requestUpdateAll();
显然,在执行此操作之前,您需要将更改后的数据存储在本地(在手表上),存储在数据库、SharedReferences
,或其他任何地方,因为无法直接将数据传递给提供商。但无论如何,您可能已经这样做了,以使您的提供商能够正常工作
文档在这里:我觉得您需要在
WearableListenerService
中安装一个ProviderUpdateRequester
。当您从手持设备接收到更改后的数据时,拨打如下电话:
new ProviderUpdateRequester(context, new ComponentName(context, "myComplicationClass"))
.requestUpdateAll();
显然,在执行此操作之前,您需要将更改后的数据存储在本地(在手表上),存储在数据库、SharedReferences
,或其他任何地方,因为无法直接将数据传递给提供商。但无论如何,您可能已经这样做了,以使您的提供商能够正常工作
文档位于此处:请向我们展示一些代码和工作。但无论如何,请记住,除非数据被更改,否则数据API实际上不会发送数据。所以,一般的做法是在其中添加一个时间戳。对不起,我用一些代码更新了这篇文章。我读过关于时间戳的内容,但我真的只需要它来更新数据更改时的复杂性,这样就可以了。您是否在
AndroidManifest.xml
中正确声明了服务?是的,我让DataApi和MessageApi来发送和同步消息。但是我找不到在发生更改时使用dataApi和CompliationService来更新数据的方法。您能提供错误日志吗?请向我们展示一些代码和工作。但无论如何,请记住,除非数据被更改,否则数据API实际上不会发送数据。所以,一般的做法是在其中添加一个时间戳。对不起,我用一些代码更新了这篇文章。我读过关于时间戳的内容,但我真的只需要它来更新数据更改时的复杂性,这样就可以了。您是否在AndroidManifest.xml
中正确声明了服务?是的,我让DataApi和MessageApi来发送和同步消息。但是我找不到在发生更改时使用dataApi和CompliationService来更新数据的方法。你能提供错误日志吗?是的,ProviderUpdateRequester正是我所需要的。谢谢@曼努埃尔塞罗:你最终是如何让事情运转起来的?我不知道“上下文”/“myComplicationClass”是什么?是的,ProviderUpdateRequester正是我需要的。谢谢@曼努埃尔塞罗:你最终是如何让事情运转起来的?我不知道“上下文”/“myComplicationClass”是什么?