我无法将表面与手持式应用程序连接。我想发送一个简单的文本(在掌上电脑中单击按钮)以了解其工作原理。不幸的是,我丢失了一些东西,因为表面上没有任何消息。
我的手持式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。
答案 0 :(得分:0)
我花了一些时间,但是最后,我开始工作了。在我的表面类中,我有onDataChange方法正在接收数据项:
override fun onDataChanged(dataEvents: DataEventBuffer) {
dataEvents.forEach { event ->
if (event.type == DataEvent.TYPE_CHANGED) {
val path = event.dataItem.uri.path
event.dataItem.also { item ->
if (path.compareTo("/testPath") == 0) {
DataMapItem.fromDataItem(item).dataMap.apply {
//I'm changing var that is printed on the watchface screen
testVar = getInt("key").toString()
}
}
}
} else if (event.type == DataEvent.TYPE_DELETED) {
//DataItem deleted
} else {
//Unknown data type event
}
}
}
您不会忘记:
Wearable.getDataClient(applicationContext).addListener(this)
在您的onCreate方法中。 我正在通过按下按钮的手持设备活动发送数据项。
sendDataItem.setOnClickListener {
putDataMapReq = PutDataMapRequest.create("/testPath")
putDataMapReq.dataMap.putInt("key", testVar++)
putDataReq = putDataMapReq.asPutDataRequest()
putDataReq.setUrgent()
putDataTask = Wearable.getDataClient(applicationContext).putDataItem(putDataReq)
}
它并不完美,但至少可以正常工作,我可以继续。如果不清楚,请随时发表评论。