0

これは、イベントベースのコードの読み取り方法Android Wearable:DataApiを使用して現在の変数を取得する方法は?

Wearable.DataApi.addListener(googleApiClient, new DataApi.DataListener() { 
     @Override 
     public void onDataChanged(DataEventBuffer dataEvents) { 
      Log.i(tag, "on data changed " + dataEvents.toString()); 
      for (DataEvent event : dataEvents) { 
       DataItem item = event.getDataItem(); 
       String path = item.getUri().getPath(); 
       if (path.equals(PATH_MAP)) { 
        DataMap dataMap = DataMapItem.fromDataItem(item).getDataMap(); 
        String dataValue = dataMap.getString(KEY_DATA); 
       } 
      } 
     } 
    }).setResultCallback(new ResultCallbacks<Status>() { 
     @Override 
     public void onSuccess(@NonNull Status status) { 
      Log.i(tag, "success"); 
     } 

     @Override 
     public void onFailure(@NonNull Status status) { 
      Log.i(tag, "failure"); 
     } 
    }); 

dataValueリスナーパターンを使用せずにKEY_DATAに関連しますか?緊急モードが設定されていてもノードが同期されないことがあるので、これが必要です。特に、値の変更があった場合にのみ、onDataChangedコールバックが呼び出されます。

これはシナリオです。モバイルapkがインストールされており、起動時にKEY_DATAアイテムに値が書き込まれます。ウェアラブルapkのインストール後、私はこの値を受け取るようにリスナーを設定しましたが、データ変更イベントは呼び出されないので、明示的なポーリングで現在の値を取得する方法が必要です。

私はMessageApiもありますが、問題は同じです。デバイスがオンラインでない場合は、メッセージが失われます。

答えて

0

あなたはここに文書化さgetDataItemsのいずれかの方法を使用してDataApiから前の値を取得することができます:https://developers.google.com/android/reference/com/google/android/gms/wearable/DataApi.html

はあなたにデータを返す前に行うためのAPIを希望フィルタリングに応じて様々な形式があります。最も単純な形式は、次のようになります。

Wearable.DataApi.getDataItems(googleApiClient).setResultCallback(new ResultCallback<DataItemBuffer>() { 
    @Override 
    public void onResult(@NonNull DataItemBuffer buffer) { 
     for (DataItem item : buffer) { 
      if (item.getUri().getPath().equals(PATH_MAP)) { 
       DataMap dataMap = DataMapItem.fromDataItem(item).getDataMap(); 
       String dataValue = dataMap.getString(KEY_DATA); 
      } 
     } 
    } 
}); 

DataItemアプリがAPIに送信されましたよすべてを返します。上記のとおり、KEY_DATAの値にアクセスできます。

+0

私はマップのパスを持っていますが、アイテムではありません – user3290180

+0

KEY_DATAの値を取得する方法はありますか? – user3290180

関連する問題