【发布时间】:2019-04-10 11:58:51
【问题描述】:
我无法将我的表盘与手持应用程序连接起来。我想发送一个简单的文本(在手持设备上的单击按钮上)以了解它是如何工作的。不幸的是,我错过了一些东西,因为我在表盘中没有任何消息。
我在手持MainActivity中的onClickListener
sendDataItem.setOnClickListener {
val putDataReq: PutDataRequest = PutDataMapRequest.create("/test").run {
dataMap.putString("key", "TEST TEXT")
asPutDataRequest()
}
val putDataTask: Task<DataItem> = dataClient.putDataItem(putDataReq)
}
我的重写 OnDataChanged 方法(我至少想做的)将数据发送到我的表盘
override fun onDataChanged(dataEvents: DataEventBuffer) {
dataEvents.forEach { event ->
// DataItem changed
if (event.type == DataEvent.TYPE_CHANGED) {
event.dataItem.also { item ->
if (item.uri.path.compareTo("/test") == 0) {
DataMapItem.fromDataItem(item).dataMap.apply {
weatherTemp = getString("key")
}
}
}
} else if (event.type == DataEvent.TYPE_DELETED) {
// DataItem deleted
}
}
}
我想要一个简单的结果。一旦我收到数据,我想将其保存到 weatherTemp var。
【问题讨论】:
-
logcat 中的任何内容?
-
我只是一般地说,数据 API 有相当多的活动部分需要纠正,而且很难从您的 sn-ps 中判断出什么可能是错误的。一件显而易见的事情是,如果您总是发送相同的
"TEST TEXT",您将永远不会收到onDataChanged,因为数据不会更改。但你也可能有其他问题。一个好的策略可能是从 Google 的 API 示例开始,并根据您的用例调整其已经工作的代码。 -
哦,我明白 onDataChanged 的意思了:D 但现在我的应用程序逻辑有问题。我在可穿戴设备中有一个选项列表。数据项是从手持设备切换选项的好方法吗?今天我花了一些时间在谷歌样本上。我认为我没有收到发送数据部分。我可以在 onClickListener 中发送数据吗?还有一件事,我能否以某种方式检查数据项是否已成功发送(例如 onDataRecived 方法)?
-
AFAIK,没有什么比得上“onDataReceived”事件了;我们在这方面受到 WearOS 的摆布。最好提出一个关于
onClickListener的新问题,并提供有关您的设置的更多详细信息。 -
谢谢,我想我真的很接近解决方案了。但我无法理解一件事。我能以某种方式获得第一个收到的数据吗?因为每一个下一个数据都被 onDataChanged 拦截,但首先丢失了。感谢您的耐心等待:D
标签: android kotlin wear-os android-wear-data-api