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

Transfer HashMap Data From Mobile to Android Wear

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

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

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

这取决于您的 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;
}

及以后从 DataMap

创建 HashMap
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 嵌套在另一个内部