2015-10-13 2 views
0

Donc, je veux utiliser le MessageApi et pas le DataApi pour envoyer plusieurs objets à l'ordinateur portable. Toutefois, sendMessage() de MessageApi autorise uniquement l'envoi d'un tableau d'octets.Android Wear: Comment envoyer plusieurs éléments avec MessageApi?

Pour référence:

Wearable.MessageApi.sendMessage(mGoogleApiClient, 
          String id, 
          String path, 
          byte[] bytes) 

Je pense serait de créer un tableau de tableaux d'octets et sérialisation alors que dans un grand tableau d'octets et l'envoyer.

Pour rendre les choses plus clairement ce sont les étapes dans le code pseudo:

byte[][] arrayOfByteArrays; 
String a --> convert to byte[]; 
Bitmap b --> convert to byte[]; 

Add a and b byte[]'s to arrayOfByteArrays; 
Serialize arrayOfByteArrays to just a byte[] and send it off; 

Est-ce la bonne approche? ou Dois-je simplement appeler sendMessage() plusieurs fois? Merci.

Répondre

1

En général, il est plus efficace (batterie, bande passante, ...) d'envoyer un message au lieu de plusieurs. Toutefois, il se peut que d'autres facteurs impliqués dans votre cas spécifique justifient l'envoi de plusieurs messages. En regardant votre code pseudo, j'ai remarqué que vous essayez également d'envoyer un bitmap en utilisant le MessageApi. En général, ce n'est pas la meilleure approche pour envoyer à travers une image, ou d'autres types d'actifs; vous pouvez utiliser Assets ou vous pouvez utiliser ChannelApi. Autrement, l'approche consistant à sérialiser un groupe de petits objets et à les placer dans un tableau d'octets, puis à les désaliéner à l'autre extrémité fonctionnerait; un moyen simple de le faire (s'il s'agit d'objets simples) est d'utiliser json comme moyen de sérialisation.

+0

Merci, je pense que 'ChannelApi' pourrait être ce que je cherche. Cependant, pour envoyer plusieurs éléments via ChannelApi, je dois encore utiliser 'sendFile()' plusieurs fois, n'est-ce pas? – user2968401

+0

Correct. Si je devais envoyer le type de choses que vous avez mentionné, j'utiliserais le ChannelApis pour envoyer des fichiers et utiliserais MessageApis pour envoyer de petits messages (y compris de petits tableaux de chaînes, etc.). Notez que ChannelApis a aussi une API bas niveau qui peut vous permettre d'ouvrir un OutputStream du côté de l'expéditeur et un InputStream du côté du destinataire pour envoyer des bits, mais cela est plus utile pour le transfert en temps réel plutôt que pour envoyer un fichier. –