将 DataMap 转换为字符串或字符串数组
Converting a DataMap to a String or String Array
我正在通过 DataMap 将天气数据从 Android phone 传输到 Android Wear 可穿戴设备。
我已经设法在设备上获取 DataMap,但需要找到一种方法将其转换为一个长字符串(然后拆分为一个数组)或一个字符串数组。
有什么想法吗?
Phone 上的当前代码:
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());
}
}
您尝试过使用 Gson 吗?你可以直接写 Gson.toJsonString(dataMap).
我知道您需要一个字符串数组中的所有值。在设备上拥有数据映射对象后,您可以按以下方式执行此操作:
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()]);
使用DataMap.putStringArray (String key, String[] value)
有问题吗?看看你的代码,如果你想在可穿戴设备上以相同的格式使用它,你似乎可以将它用于整个 currentWeather
数组。
我正在通过 DataMap 将天气数据从 Android phone 传输到 Android Wear 可穿戴设备。
我已经设法在设备上获取 DataMap,但需要找到一种方法将其转换为一个长字符串(然后拆分为一个数组)或一个字符串数组。
有什么想法吗?
Phone 上的当前代码:
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());
}
}
您尝试过使用 Gson 吗?你可以直接写 Gson.toJsonString(dataMap).
我知道您需要一个字符串数组中的所有值。在设备上拥有数据映射对象后,您可以按以下方式执行此操作:
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()]);
使用DataMap.putStringArray (String key, String[] value)
有问题吗?看看你的代码,如果你想在可穿戴设备上以相同的格式使用它,你似乎可以将它用于整个 currentWeather
数组。