将DataMap转换为字符串或字符串数​​组

时间:2017-02-15 16:26:54

标签: java android string wear-os

我正在通过DataMap将Android手机中的天气数据传输到Android Wear可穿戴设备。

我已经设法在设备上获取DataMap,但需要找到一种方法如何将其转换为一个长字符串(然后拆分为数组)或字符串数​​组。

有什么想法吗?

电话上的当前代码:

DataMap dataMap = new DataMap();
dataMap.putLong("1-#TIME-STAMP:", System.nanoTime());
dataMap.putLong("2-#CONTENT:", 0);
dataMap.putString("time:", currentWeather[0]);
dataMap.putString("summary:", currentWeather[1]);
dataMap.putString("icon:", currentWeather[2]);
dataMap.putString("nearestStormDistance:", currentWeather[3]);
dataMap.putString("nearestStormBEaring:", currentWeather[4]);
dataMap.putString("precipIntensity:", currentWeather[5]);
dataMap.putString("precipPRobability:", currentWeather[6]);
dataMap.putString("temperature:", currentWeather[7]);
dataMap.putString("apparentTemperature:", currentWeather[8]);
dataMap.putString("dewPoint:", currentWeather[9]);
dataMap.putString("humidity:", currentWeather[10]);
dataMap.putString("windSpeed:", currentWeather[11]);
dataMap.putString("windBearing:", currentWeather[12]);
dataMap.putString("visibility:", currentWeather[13]);
dataMap.putString("cloudCover:", currentWeather[14]);
dataMap.putString("pressure:", currentWeather[15]);
dataMap.putString("ozone:", currentWeather[16]);
new SendToDataLayerThread("/data_from_phone", dataMap).start();

可穿戴设备的当前代码:

@Override
public void onDataChanged(DataEventBuffer dataEvents)
{
    DataMap dataMap;
    for (DataEvent event : dataEvents)
    {
        Log.v("myTag", "DataMap item: " + DataMapItem.fromDataItem(event.getDataItem()).getDataMap());
    }
}

3 个答案:

答案 0 :(得分:2)

我知道你想要一个字符串数组中的所有值。在设备上获得数据映射对象后,可以按以下方式执行此操作:

 ArrayList<String> listOfDataItems = new ArrayList<String>();
 for(String key: dataMap.keySet())
 {
    Object value = get(key);
    if(value instanceof Long)
    {
        listOfDataItems.add(String.valueOf(value));
    }
    else if(value instanceof String)
    {
        listOfDataItems.add(value);
    }
 }
 String [] arrayOfDataItems = listOfDataItems.toArray(new String[listOfDataItems.size()]);

答案 1 :(得分:1)

你尝试过使用Gson吗?你可以直接写Gson.toJsonString(dataMap)。

答案 2 :(得分:0)

使用DataMap.putStringArray (String key, String[] value)时有问题吗?查看您的代码,如果您希望在可穿戴设备上使用相同的格式,则可以将其用于整个currentWeather数组。

Doumentation:https://developers.google.com/android/reference/com/google/android/gms/wearable/DataMap.html#putStringArray(java.lang.String,%20java.lang.String[])