如何使用MessageAPI从Android Wear发送ArrayList <parcelablecustomobject>?

时间:2016-09-29 14:11:13

标签: android wear-os parcelable

我有一个可以自定义项目的ArrayList:

ArrayList<AudioLog> audioLogs = getAudioLogs();

我想使用MessageAPI从手表发送到手机:

Wearable.MessageApi.sendMessage(googleClient, node.getId(), path, audioLogs).await();

但是,我需要将整个ArrayList及其内容转换为byte [],因为sendMessage方法需要 - (GoogleClient客户端,int id,String path,byte []消息)。

为了转换我的每个parcelable AudioLog对象,我有一个自定义的Util类,它将每个对象编组并解组为byte []。我只需要一个类似的类,可以一次性将整个ArrayList及其内容转换为byte [],如果可能的话,谢谢。

1 个答案:

答案 0 :(得分:1)

您应该创建一个DataMap对象,该对象可以转换为字节数组。

DataMap audioLogMap = new DataMap();
ArrayList<DataMap> audioLogArrayList = new ArrayList<>();
for (AudioLog audioLog: audioLogs) {
    DataMap audioLogMap = new DataMap();
    //TODO: copy something from audioLog to audioLogMap
    audioLogArrayList.add(audioLogMap);
}
audioLogMap.putDataMapArrayList("key", audioLogArrayList);
byte[] audioLogByteArray = audioLogMap.toByteArray();