오늘은 DataLayout 을 알아보도록 하겠습니다.
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 을 통해 데이터를 전송 합니다.
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 에 데이터가 전송됩니다.
그럼 오늘도 읽어주셔서 감사합니다
-피드백와 비판은 언제나 환영입니다-