Android/Wear2015. 8. 24. 16:43


안드로이드 웨어는 HTTP통신 같은 인터넷 억세스를 지원하지 않는다고 한다. 이에 어떻게 데이터 전송을 지원하는지 알아보기 위해 아래 문서를 정리해 보았다.  실제로 이 API를 wrapper하여 http get을 지원하는 lib를 만들어서 공개한 개발자도 있다.

좀더 정확히 얘기 하면 Bluetooth로 연결이 되지 않은 상태에서 wifi에 연결이 되어 있다면 인터넷 억세스가 다이렉트로 가능하다. 하지만 bluetooth가 연결이 되는 순간 먹통이 된단다. 동시에는 안된다는데... 왜 안될까??? 단말과 워치간의 데이터 동기화를 위해서는 이 때는 Data Layer API로 bluetooth를 통해서 전송하는 방법을 사용해야 한다고 한다. 이건 맞다고 보는데 이 때 wifi가 진짜 안될까????? 워치가 없으니 확인할 방법은 없고.. 궁금하긴 하다. 워치 구매하면 제일먼저 해야할 일이다.


http://developer.android.com/training/wearables/data-layer/index.html


Data Layer API for Wearable은 Google Play Service의 일부로 폰과 웨어러블간의 통신채널을 제공한다.

데이터오브젝트의 셋을 제공하는데 전송 및 동기화 그리고 관련 콜백리스너를 제공한다.


Data Items

  DataItem한개는 단발과 웨어러블간에 자동으로 동기되는 데이터 스토리지를 제공한다.


Messages

  MessageApi클래스는 메시지들을 전송할 수 있으며 RPC에 기반하여 웨버러블에서 단말의 미디어플레이어를 제어한다거나 단말에서 웨어러블에 인텐트를 시작하거나 할 수 있다.

  Message는 단방향 및 양방향 통신을 모두 제공한다.

  단말과 웨어러블이 연결되면 메세지를 전달하기 위해 시스템은 큐잉하고 성공코드를 반환한다. 디바이스가 연결이 되지 않으면 에러를 반환한다. 


Asset

  Asset객체는 이미지 같은 바이너리데이터를 전송하기 위한 객체이다. Data item에 asset을 첨부하면 시스템은 자동으로 잘 전송해준다. 


WearableListenerService(for services)

  WearableListenerService를 확장하여 서비스에서 중요한 이벤트를 처리할 수 있다. 시스템은 lifecycle을 관리하고, data item이나 message를 전송해야 하면 서비스에 바인딩하며, 서비스가 더이상 필요없으면 언바인딩한다.


DataListener(for foreground activities)

  액티비티에서 DataListener를 구현하여 액티비티가 포그라운드로 진입히 중요한 이벤트를 처리할 수 있다. WearableListenerService대신에 사용하면 앱이 사용중에만 변경을 감지할 수 있다.


Channel

  ChannelApi클래스를 사용하여 큰 data item들을 전송할 수 있다. 음악이나 동여상파일들을 단말에서 웨어러블에 전송이 가능하다. ChannelApi는 다음과 같은 잇점이 있다.

  • 하나이상의 단말간에 대용량 데이터 파일을 전송한다(DataItem에 Asset으로 자동동기화를 하지 않고 가능). 디스크용량을 절약이 가능하다. DataApi클래스의 경우 동기화하기 전에 Asset을 복사한 후 수행하기 때문에 디스크용량 절약에 불리하다.
  • MessageApi 클래스를 사용하여 아주 큰사이즈를 안정적으로 전송이 가능하다.
  • network server나 micorophone같은 스트림데이터를 전송할 수 있다.


주의) 단말과 웨어러블간의 통신을 위해서 설계가 된 API이기 때문에 두 단말간에 셋업해야 하는 API가 있다. 예를 들어 low-level 소켓통신을 시도해서는 안된다.


안드로이드 웨어는 여러개의 디바이스와 동기화를 지원한다. 한단말에서 노트를 편집하면 연결된 모든 디바이스에 동기화가 된다. 동기화를 위해 구글 서비스에 클라우드 노드가 생성되고 이 노드를 통해서 동기화가 된단다.



Posted by 삼스