これは、イベントベースのコードの読み取り方法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もありますが、問題は同じです。デバイスがオンラインでない場合は、メッセージが失われます。
私はマップのパスを持っていますが、アイテムではありません – user3290180
KEY_DATAの値を取得する方法はありますか? – user3290180