如何通过 DataItem 发送字符串
How to send String via DataItem
我无法将我的表盘与手持应用程序连接。我想发送一个简单的文本(在手持设备的点击按钮上)以了解它是如何工作的。不幸的是,我错过了一些东西,因为我在表盘上没有任何消息。
我在掌机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.
我花了一些时间在这上面,但最后,我开始工作了。在我的表盘 class 中,我有正在接收数据项的 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 方法中。
我在按下按钮时从手持设备 activity 发送数据项。
sendDataItem.setOnClickListener {
putDataMapReq = PutDataMapRequest.create("/testPath")
putDataMapReq.dataMap.putInt("key", testVar++)
putDataReq = putDataMapReq.asPutDataRequest()
putDataReq.setUrgent()
putDataTask = Wearable.getDataClient(applicationContext).putDataItem(putDataReq)
}
它并不完美,但至少它在工作,我可以继续了。如果有任何不清楚的地方,请随时写评论。
我无法将我的表盘与手持应用程序连接。我想发送一个简单的文本(在手持设备的点击按钮上)以了解它是如何工作的。不幸的是,我错过了一些东西,因为我在表盘上没有任何消息。
我在掌机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.
我花了一些时间在这上面,但最后,我开始工作了。在我的表盘 class 中,我有正在接收数据项的 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 方法中。 我在按下按钮时从手持设备 activity 发送数据项。
sendDataItem.setOnClickListener {
putDataMapReq = PutDataMapRequest.create("/testPath")
putDataMapReq.dataMap.putInt("key", testVar++)
putDataReq = putDataMapReq.asPutDataRequest()
putDataReq.setUrgent()
putDataTask = Wearable.getDataClient(applicationContext).putDataItem(putDataReq)
}
它并不完美,但至少它在工作,我可以继续了。如果有任何不清楚的地方,请随时写评论。