데이터를 보내는 기기
// wear os와 로그인 데이터 동기화
class AuthListenerService: WearableListenerService() {
private lateinit var dataClient: DataClient
override fun onCreate() {
super.onCreate()
dataClient = Wearable.getDataClient(this)
Log.d("AuthListenerService", "Service created")
}
override fun onDataChanged(dataEvents: DataEventBuffer) {
dataEvents.forEach { event ->
if (event.type == DataEvent.TYPE_CHANGED && event.dataItem.uri.path == "/authRequest") {
// 로그인 상태 확인
val isLoggedIn = checkLoginStatus(this) // 로그인 상태 확인 함수 호출
Log.d("AuthListenerService", "$isLoggedIn")
val putDataReq = PutDataMapRequest.create("/authStatus").apply {
dataMap.putBoolean("isLoggedIn", isLoggedIn)
}.asPutDataRequest().setUrgent()
// 응답 전송
dataClient.putDataItem(putDataReq).addOnSuccessListener {
Log.d("AuthListenerService", "Login status response sent to watch")
}.addOnFailureListener { e ->
Log.e("AuthListenerService", "Failed to send login status response", e)
}
}
}
}
}
데이터를 받는 기기
class AuthRequestService(context: Context) {
private val dataClient: DataClient = Wearable.getDataClient(context)
fun sendAuthRequest() {
val authDataReq = PutDataMapRequest.create("/authRequest").apply{
dataMap.putString("String", "GIVE ME LOGIN")
dataMap.putLong("timestamp", System.currentTimeMillis()) // 매번 다른 데이터로 인식되도록
}.asPutDataRequest().setUrgent()
dataClient.putDataItem(authDataReq).addOnSuccessListener {
Log.d("AuthRequestService", "Login status request sent to mobile")
}.addOnFailureListener { e ->
Log.e("AuthRequestService", "Failed to send login status request", e)
}
}
}