将HashMap数据从移动设备传输到Android Wear

时间:2015-08-08 18:03:25

标签: java android wear-os

目前我正在尝试开发Android移动/磨损应用程序,我遇到了一个问题,我需要将Hashmap中包含的数据从移动设备发送到磨损设备。我查看了Android开发人员指南,似乎我必须使用DataMap,但我仍然不知道如何将HashMap数据存储在DataMap中并正确检索Wear设备上的信息。

如果有人可以创建此过程的示例,或者向我指出如何执行此操作的示例,我们将不胜感激。

2 个答案:

答案 0 :(得分:1)

您应该将DataMap视为一个精简的Bundle,其中支持原始类型(以及更多); HashMap可以包含任何类型的对象,而不是DatMap支持的对象,因此没有api可以将一个对象映射到另一个。您可以遍历HasMap并使用DataMap.put **()方法为受支持的数据类型构建DataMap;如果你有一个DataMap不支持的对象,你需要以某种方式序列化(比如构建对象的json表示),然后将它放在DataMap中。除此之外,没有什么神奇之处;根据我描述的内容构建一个DataMap,然后跨设备同步并在另一端获取DataMap并反转该过程以从DataMap填充HashMap。

答案 1 :(得分:1)

这取决于您在HashMap中的类型,但假设您有HashMap<String, String>,您只需要浏览所有值并将其复制到DataMap

public static DataMap toDataMap(HashMap<String, String> hashMap) {
    DataMap dataMap = new DataMap();
    for (Map.Entry<String, String> entry : hashMap.entrySet()) {
        dataMap.putString(entry.getKey(), entry.getValue());
    }
    return dataMap;
}

以及稍后从HashMap

创建DataMap
public static HashMap<String, String> fromDataMap(DataMap dataMap) {
    HashMap<String, String> hashMap = new HashMap<String, String>();
    for (String key : dataMap.keySet()) {
        hashMap.put(key, dataMap.getString(key));
    }
    return hashMap;
}

当然记住不要在这样生成的DataMap中存储任何其他内容,因为您可能会覆盖现有密钥之一。因此,如果您想要发送任何其他内容,则应在另一个DataMap上使用putDataMap (String key, DataMap value)方法将此DataMap嵌套在另一个{。}}内。