天天看點

Android 通路Android Wear資料層Api——同步Data Items

Data Items是用于同步手機和wear的資料接口,一個Date Items通常包括下面幾部分:

Payload

一個位元組數組,你可以設定任何需要的資料類型,允許進行對象的序列化與反序列化,大小不能超過100k。

Path

唯一的字元串,必須以正斜杠開始(例如,“/path/to/ data”)

通常不需要直接實作DataItem,隻需要:

1、建立PutDataRequest對象,指定一個路徑字元串差別該item

2、調用setData()設定payload

3、調用DataApi.putDataItem(),請求系統建立一個data item

4、當請求data item時候,系統會傳回一個正确的實作了接口的data item對象

使用setData()使用原始位元組,建議使用一個data map,可以暴露一個易于使用的類似于bundle的資料

使用Data Map同步資料

如果可以的話,使用DataMap類,可以使用data items類似Bundle,而且兌現序列化和反序列化幫你完成,你可以操作資料使用鍵值對。

使用data map 的步驟

1 建立PutDataMapRequest對象,設定data item的路徑

2 調用 

PutDataMapRequest.getDataMap()建立data map,可以設定資料

3 設定需要的資料使用put...()方法,如

putString()

4 調用 

PutDataMapRequest.asPutDataRequest()建立 

PutDataRequest對象

5 調用 

DataApi.putDataItem()

 請求系統建立data item

如果手機與wear沒有連接配接,則緩存等到連接配接後同步

如下代碼所示

PutDataMapRequest dataMap = PutDataMapRequest.create("/count");
dataMap.getDataMap().putInt(COUNT_KEY, count++);
PutDataRequest request = dataMap.asPutDataRequest();
PendingResult<DataApi.DataItemResult> pendingResult = Wearable.DataApi
        .putDataItem(mGoogleApiClient, request);
           

監聽Data Item時間

如果一方資料層使data item發生變化,你可能需要去通知任何變化的資料連接配接,你可以實作這些通過時間一個監聽data item的事件,下面是個例子。

@Override
public void onDataChanged(DataEventBuffer dataEvents) {
    for (DataEvent event : dataEvents) {
        if (event.getType() == DataEvent.TYPE_DELETED) {
            Log.d(TAG, "DataItem deleted: " + event.getDataItem().getUri());
        } else if (event.getType() == DataEvent.TYPE_CHANGED) {
             Log.d(TAG, "DataItem changed: " + event.getDataItem().getUri());
        }
    }
}