11

ハンドヘルドとウェアラブルの間で設定を同期したい。ハンドヘルド アプリにサンプル コードを実装します。

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

次に、ウェアラブル アプリに以下のコードを実装します。ただし、保存されたカウントは取得できません。

 PutDataMapRequest dataMap = PutDataMapRequest.create("/count");
 int count = dataMap.getDataMap().getInt("COUNT_KEY");
 System.out.println(count);//print 0

実際のAndroid携帯端末とAndroid Wearのエミュレータで試してみました。Android Wearアプリのデモカードで接続を確認しました。

もっと何が必要ですか、それとも何か誤解していますか?

4

1 に答える 1

19

そのコードでは、以前に保存されたデータを読み取るのではなく、 2 番目の put requestを作成しようとしています。だから空いてる。

以前に保存されたデータにアクセスする方法は、DataApiメソッドを使用することです。たとえば、保存されているすべてのデータをWearable.DataApi.getDataItems()次のように取得できます。

PendingResult<DataItemBuffer> results = Wearable.DataApi.getDataItems(mGoogleApiClient);
results.setResultCallback(new ResultCallback<DataItemBuffer>() {
    @Override
    public void onResult(DataItemBuffer dataItems) {
        if (dataItems.getCount() != 0) {
            DataMapItem dataMapItem = DataMapItem.fromDataItem(dataItems.get(0));

            // This should read the correct value.
            int value = dataMapItem.getDataMap().getInt(COUNT_KEY);
        }

        dataItems.release();
    }
});

私はこれを使用しましたが、動作します。ただし、特定のデータ項目にアクセスするための Uri がわからないため、私自身が問題を抱えていますWearable.DataApi.getDataItem()だから私はこの質問を投稿しました。ただし、テストするだけの場合は、DataApi.getDataItems()十分なはずです。

もう 1 つのオプションはDataApi.addListener()、ストレージへの変更を通知するために使用することです。

于 2014-07-06T23:30:55.453 に答える