The Android Developer Challenge is back! Submit your idea before December 2.

Wear에서 데이터 보내기 및 동기화

Wear OS by Google을 사용하면 Android 또는 iOS 스마트폰에 액세스하지 않고도 시계가 네트워크와 직접 통신할 수 있습니다.

이 페이지의 필수 조건 및 전제 조건은 다음과 같습니다.

이와 별도로 Google Play 서비스의 일부인 Wearable Data Layer API는 앱을 위한 선택적 통신 채널을 제공합니다. Wear 앱은 Wearable Data Layer API를 사용하여 전화 앱과 통신할 수 있지만, 이 API를 사용하여 네트워크에 연결하는 것은 권장되지 않습니다.

Data Layer API는 다음과 같이, 시스템이 전송하고 동기화할 수 있는 데이터 객체 집합 및 앱에 특정 이벤트를 알려주는 리스너로 구성되어 있습니다.

데이터 항목
DataItem은 핸드헬드와 웨어러블 간의 자동 동기화를 데이터 스토리지에 제공합니다.
애셋
Asset 객체는 이미지와 같은 데이터의 바이너리 blob을 전송하기 위한 것입니다. 애셋을 데이터 항목에 첨부하면 시스템에서 자동으로 전송을 처리하며 재전송을 방지하기 위해 대용량 애셋을 캐싱하여 블루투스 대역폭을 보존합니다.
메시지
메시지를 전송하는 MessageClient는 웨어러블에서 핸드헬드 미디어 플레이어를 제어하거나 핸드헬드에서 웨어러블의 인텐트를 시작하는 것과 같은 리모트 프로시져 콜(RPC)에 적합합니다. 메시지는 단방향 요청 또는 요청/응답 통신 모델에도 매우 유용합니다. 핸드헬드와 웨어러블이 연결되면 시스템은 전달을 위한 대기열에 메시지를 추가하고 성공 결과 코드를 반환합니다. 기기가 연결되어 있지 않으면 오류가 반환됩니다. 성공 결과 코드가 수신되어도 메시지가 제대로 전달되지 않았을 수 있습니다. 성공 결과 코드를 수신한 후 기기 연결이 끊길 수 있기 때문입니다.
채널
핸드헬드에서 웨어러블 기기로 음악 및 동영상 파일과 같은 대용량 항목을 전송하려면 ChannelClient를 사용할 수 있습니다. 데이터 전송에 ChannelClient를 사용하면 다음과 같은 이점이 있습니다.
  • DataItem 객체에 첨부된 Asset 객체를 사용할 경우 자동 동기화 없이 둘 이상의 연결된 기기 간에 대용량 데이터 파일을 전송할 수 있습니다. ChannelClient는 연결된 기기와 동기화하기 전에 로컬 기기에 애셋의 복사본을 만드는 DataClient에 비해 디스크 공간을 덜 차지합니다.
  • 너무 커서 MessageClient를 사용하여 전송할 수 없는 파일을 안정적으로 전송할 수 있습니다.
  • 네트워크 서버에서 가져온 음악이나 마이크의 음성 데이터와 같은 스트리밍된 데이터를 전송할 수 있습니다.
WearableListenerService(서비스용)
WearableListenerService를 확장하면 서비스에서 중요한 데이터 영역 이벤트를 수신 대기할 수 있습니다. 시스템은 WearableListenerService의 라이프사이클을 관리하며, 데이터 항목이나 메시지를 보내야 할 경우 서비스를 결합하고, 필요한 작업이 없으면 서비스의 결합을 해제합니다.
OnDataChangedListener(포그라운드 활동용)
활동에서 OnDataChangedListener를 구현하면 포그라운드에서 활동이 일어날 때 중요한 데이터 영역 이벤트를 수신 대기할 수 있습니다. WearableListenerService 대신 이것을 사용하면 사용자가 앱을 적극적으로 사용하는 경우에만 변경 사항을 수신 대기할 수 있습니다.

경고: 이러한 API는 핸드헬드와 웨어러블 간의 통신용으로 설계되었기 때문에, 핸드헬드와 웨어러블 간에 통신을 설정하려면 반드시 이러한 API를 사용해야 합니다. 예를 들면, 하위 레벨 소켓을 열어 통신 채널을 만들려고 하지 마세요.

중요: DataLayer API가 기기 간에 성공적으로 통신하려면 스마트폰과 Wear APK 서명 및 서명 체계가 동일해야 합니다. 여기에는 v1 및/또는 v2 서명 사용이 포함됩니다. build.gradle에서 또는 서명된 APK 생성 마법사를 사용할 때 서명 체계가 올바르게 설정되어 있는지 확인하세요.

Wear OS는 핸드헬드 기기에 연결된 여러 웨어러블을 지원합니다. 예를 들어, 사용자가 핸드헬드에 메모를 저장하면 그 사용자의 모든 Wear 기기에 자동으로 메모가 나타납니다. Google 서버는 기기 간 데이터 동기화를 지원하기 위해 기기 네트워크에 클라우드 노드를 호스팅합니다. 시스템은 직접 연결된 기기, 클라우드 노드, 그리고 Wi-Fi를 통해 클라우드 노드에 연결된 웨어러블 기기에 데이터를 동기화합니다.

그림 1. 핸드헬드 및 웨어러블 기기가 있는 노드의 샘플 네트워크.

네트워크 액세스 및 동기화
이 과정에서는 고대역폭 네트워크를 확보하는 방법을 설명합니다. 또한 클라우드 메시징 등을 위한 출발점을 제공합니다.
웨어러블 데이터 영역에 액세스
이 과정에서는 Data Layer API에 액세스하기 위해 클라이언트를 만드는 방법을 보여줍니다.
데이터 항목 동기화
데이터 항목은 핸드헬드에서 웨어러블로 자동으로 동기화되는 복제된 데이터 저장소에 저장되는 개체입니다.
애셋 전송
애셋은 일반적으로 이미지 또는 미디어를 전송하는 데 사용하는 데이터의 바이너리 blob입니다.
메시지 주고받기
메시지는 웨어러블과 핸드헬드 간에 주고받을 수 있는 fire-and-forget 메시지용으로 설계됩니다.
데이터 영역 이벤트 처리
데이터 영역에서 발생하는 변경 사항과 이벤트에 관한 알림을 받습니다.
Wear 앱을 GoogleApi로 마이그레이션
GoogleApiClient 클래스에서 다른 클래스로 마이그레이션합니다.