[안드로이드] 워치 기기와 모바일 기기의 데이터 연동(Data Layer API)

김도은·2024년 11월 24일

안드로이드 Data Layter API

데이터를 보내는 기기

// 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)
        }
    }
}
profile
프론트엔드와 디자인

0개의 댓글