wear data layer 을 알아보자

Assist·2023년 7월 10일
0

Android

목록 보기
12/24

오늘은 DataLayout 을 알아보도록 하겠습니다.

Data Layer

Data layer 은 쉽게 말해서 데이터 보내는 API 입니다.

예를들어

안드로이드폰 - Wearable device
좀더 쉽게 생각해서

Galaxy S 21 + - Galaxy Watch 5 가 서로 연결 되있다고 가정해봅시다

  • 웨어러블 디바이스는 하나만 연결할수 있습니다.

그럴때 워치에서 카카오톡 이나 메세지 받는 기능을 하는 앱을 구현해본다고 생각해보겠습니다.

그럴때 워치가 셀룰러(LTE)모델이 아니면 벌써부터 구현 불가 하다 생각할수 있으실텐데

그것을 Data Layer 가 기능을 하게 해줍니다.

어떻게 통신을 하는건가요?

Wear Data layer 은 데이터를 보낼때 DataMap 이라는 객체에 래핑이 됩니다.

이는 Key Value 값으로 저장되어됩니다.

그후 DataMap 을 Wearable Data Api 을 통해 Wearable 혹은 Android

데이터를 보냅니다. 그후 Bluetooth 혹은 Wifi 을 통해 데이터를 보냅니다.

그떄 DataMap은 Android Bundle 을 통해 데이터를 전송 합니다.

그럼 Data Layer 을 세팅해봅시다.

Project에 res/values / 디렉토리 에 wear.xml 파일을 만들어 줘서


<resources xmlns:tools="http://schemas.android.com/tools"
              tools:keep="@array/android_wear_capabilities">
       <string-array name="android_wear_capabilities">
           <item>voice_transcription</item>
       </string-array>
   </resources>

이런식으로 만들어 줍니다.

그후 메세지를 보낼때는
messageClient 와 capabilityClient 변수를 선언해주시고

 fun sendMessage(messageClient , capabilityClient){
 
 	val data = SendData("data")
    val gson = Gson() 
    val dataJson = gson.toJson(data)
    val dataForSend = dataJson.toByteArray(Charsets.UTF_8)
    CoroutinScope(Dispatcher.Default).launch{
  val nodes = capabilityClient.getCapability(Define.URL,
  CapabilityClient.FILTER_REACHABLE)
  					.await()
                    .nodes
                nodes.map { node ->
                    async {
                        Timber.d("명령 전달 $data")
                        //testcode 불필요시 삭제
                        messageClient.sendMessage(node.id, uri, dataForSend).await()
                    }
                }.awaitAll()
                
                }

이렇게 함수를 만들어 서 보내면 같은 프로젝트의 지정된 URL Android 혹은 Wear 에 데이터가 전송됩니다.

그럼 오늘도 읽어주셔서 감사합니다
-피드백와 비판은 언제나 환영입니다-

profile
안드로이드만 좋아하는 특이한 개발자

0개의 댓글

관련 채용 정보