2017-10-01 1 views
0

Google In Documenta sagen:Wie zum Senden und Empfangen eines Objekts in der Nähe Verbindungen Api

Sie Daten durch das Senden und Empfangen von Payload Objekten austauschen können. Eine Payload kann ein einfaches Byte-Array darstellen, z. B. eine kurze Textnachricht. eine Datei, z. B. ein Foto oder Video; oder ein Stream, z. B. der Audiostream vom Mikrofon des Geräts.

Aber ich frage mich, wie senden und empfangen komplexe Datentypen wie ein Objekt.

Antwort

1

Sie können einen Serializer-Helfer zum (De-) Serialisieren eines Objekts verwenden.

/** Helper class to serialize and deserialize an Object to byte[] and vice-versa **/ 
public class SerializationHelper { 
    public static byte[] serialize(Object object) throws IOException{ 
     ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); 
     ObjectOutputStream objectOutputStream = new ObjectOutputStream(byteArrayOutputStream); 
     // transform object to stream and then to a byte array 
     objectOutputStream.writeObject(object); 
     objectOutputStream.flush(); 
     objectOutputStream.close(); 
     return byteArrayOutputStream.toByteArray(); 
    } 

    public static Object deserialize(byte[] bytes) throws IOException, ClassNotFoundException{ 
     ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(bytes); 
     ObjectInputStream objectInputStream = new ObjectInputStream(byteArrayInputStream); 
     return objectInputStream.readObject(); 
    } 
} 

Auf Ihrer Aktivität können Sie

nennen
@Override 
protected void onReceive(Endpoint endpoint, Payload payload) { 
    try{ 
     onDataReceived(endpoint, SerializationHelper.deserialize(payload.asBytes())); 
    } catch (IOException | ClassNotFoundException e) { e.getMessage(); } 
} 

protected void onDataReceived(Endpoint endpoint, Object object){ 
    // do something with your Object 
} 

public void sendDataToAllDevices(Object object){ 
    try { 
     send(Payload.fromBytes(SerializationHelper.serialize(object))); 
    } catch (IOException e) { e.getMessage(); } 
} 
Verwandte Themen