Data itemを同期する

2014/8/5 4207hit

ウェアラブル向けアプリを作る 目次
原文
Data itemはシステムが携帯端末とウェアラブル間でデータを同期するときに使うインターフェイスを記載します。DataItemは通常以下のアイテムを含みます。

・Payload - 希望するどんなデータでもセットできるバイト配列です。あなた自身でオブジェクトをシリアライズ/デシリアライズします。payloadのサイズ上限は100kbです。

・Path - フォワードスラッシュで始まる一意の文字列です。(例"/path/to/data")

通常、DataItemは直接実装せずに、

1.PutDataRequestオブジェクトを作りアイテムの一意なIDを示すString pathを指定する。
2.setData()を呼んでpayloadをセットする。
3.DataApi.putDataItem()を呼んでデータアイテムを作るようにシステムにリクエストする。
4.Data itemがリクエストされたら、システムはDataItemインターフェイスを実装したオブジェクトを返します。

setData()を使う生のバイトデータの代わりにuse a data mapを使うことをおすすめします。これによりBundleの使いやすいインターフェイスでData Itemが現れます。

Data Mapを使ったデータの同期

DataMapが使用できるときは、Android Bundleのフォーム内でData itemを使えます。それによりオブジェクトはシリアライズ、デシリアライズされて、Key -valueのペアでデータを操作できます。

data mapを使うには
1.PutDataMapRequestのオブジェクトを作りData itemのパスをセットする。
メモ:pathの文字列はData itemを一意に定めるIDで、これにより接続の両側からデータにアクセスできるようになります。パスは必ずフォワードスラッシュから始まる必要があります。もし、アプリ内で階層的なデータを使うなら、データの構造と一致したpathを作る必要があります。
2.値をセットできるdata mapを取得するためにPutDataMapRequest.getDataMap()を呼びます。
3.putString()などのput...()メソッドを使用してdata mapに好きな値をセットします。
4.PutDataRequestオブジェクトを取得するためにPutDataMapRequest.asPutDataRequest()を呼びます。
5.DataApi.putDataItem()を呼びシステムにData item作成をリクエストします。
メモ:携帯端末とウェアラブルデバイスが切断されていたら、データはバッファリングされ、再接続した時に同期されます。
下記はdata mapを作りデータをセットする例です。

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());
}
}
}

以上はほんのさわりです。より詳細が必要な場合、Listening for Data Layer EventsでServiceやActivityで完全なリスナーを実装する方法を学んでください。


Except as noted, this content is licensed under Creative Commons Attribution 2.5. For details and restrictions, see the Content License.

前:ウェアラブルデータレイヤーにアクセスする 次:Assetsを転送する

関連キーワード

[Android][Java][モバイル][IT][翻訳][ウェアラブル]

コメントを投稿する

名前URI
コメント