2016-09-29 1 views
0

У меня есть ArrayList из parcelable пользовательских элементов:Как отправить ArrayList <ParcelableCustomObject> из Android Wear с помощью MessageAPI?

ArrayList<AudioLog> audioLogs = getAudioLogs(); 

Я хочу отправить это от часов к телефону с помощью MessageAPI:

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

НО, мне нужно, чтобы преобразовать весь ArrayList и его содержимое в байте [], как метод sendMessage принимает (клиент GoogleClient, int id, String path, byte []).

Чтобы преобразовать каждый из моих аргументированных объектов AudioLog, у меня есть собственный класс Util, который маршалирует и деактивирует каждый из них до байта []. Мне просто нужен аналогичный класс, который может конвертировать весь ArrayList и его содержимое в байты [] за один раз, если это возможно, спасибо.

ответ

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();