val request: PutDataRequest = putDataMapRequest.asPutDataRequest()
request.setUrgent()
Wearable.getDataClient(context).putDataItem(request);
위와같이 DataItem을 전송하면 연결된 모든 노드로 DataItem이 전송된다.
이경우 자기자신에게도 똑같이 전송이 되는데 One APK로 개발을 할때 문제가 될 여지가 있다.
WearableListenerService: WearableListenerService(){
...
init {
val nodeTask = Wearable.getNodeClient(applicationContext).localNode
nodeTask.addOnCompleteListener { task ->
task.result?.let {
Log.d(LOG_TAG,"getNodeClient localNode : ${it.id}")
localNodeId = it.id
}
}
}
}
위와같이 자신의 nodeID를 확보한후
override fun onDataChanged(dataEventBuffer : DataEventBuffer) {
dataEventBuffer.forEach{dataEvent->
val uri = dataEvent.dataItem.uri
localNodeId?.let {
if(uri.host == localNodeId){
Log.d(LOG_TAG, "skip loopback event")
return@forEach
}
}
}
수신된 dataItem의 host와 비교해서 자신이 보낸 메세지일때는 스킵해준다.