StreamCorruptedException al enviar objetos serializados a través de Bluetooth

Tengo una clase Serializada que necesito enviar como un objeto a través de Bluetooth, y también implemento Runnable. Como tal, primero establezco algunas variables, luego las envío como un objeto para que sea ejecutado por otro dispositivo Android, que luego establecerá su resultado en una variable, y enviará el mismo objeto con el resultado en una de las variables. He estado usando los siguientes dos métodos para serializar mi objeto y obtener un ByteArray antes de enviarlo a través del OutputStream de mi BluetoothSocket, y para deserializar ese ByteArray para recuperar mi objeto.

public static byte[] serializeObject(Object o) throws IOException { 
    ByteArrayOutputStream bos = new ByteArrayOutputStream(); 

    ObjectOutput out = new ObjectOutputStream(bos);
    out.writeObject(o);  
    out.flush();
    out.close();

    // Get the bytes of the serialized object 
    byte[] buf = bos.toByteArray(); 

    return buf; 
} 

public static Object deserializeObject(byte[] b) throws OptionalDataException, ClassNotFoundException, IOException { 
    ByteArrayInputStream bis = new ByteArrayInputStream(b);

    ObjectInputStream in = new ObjectInputStream(bis); 
    Object object = in.readObject(); 
    in.close(); 

    return object; 
}

Todavía tengo el mismo error de estos dos métodos, así que intenté combinarlo con los métodos que utilizo para enviar mi ByteArray a través de OutputStream de BluetoothSocket, como se muestra a continuación.

public void sendObject(Object obj) throws IOException{
    ByteArrayOutputStream bos = new ByteArrayOutputStream() ; 
    ObjectOutputStream out = new ObjectOutputStream( bos );
    out.writeObject(obj); 
    out.flush();
    out.close();

    byte[] buf = bos.toByteArray();
    sendByteArray(buf);
}
public void sendByteArray(byte[] buffer, int offset, int count) throws IOException{
    bluetoothSocket.getOutputStream().write(buffer, offset, count);
}

public Object getObject() throws IOException, ClassNotFoundException{
    byte[] buffer = new byte[10240];
    Object obj = null;
    if(bluetoothSocket.getInputStream().available() > 0){
        bluetoothSocket.getInputStream().read(buffer);

        ByteArrayInputStream b = new ByteArrayInputStream(buffer);
        ObjectInputStream o = new ObjectInputStream(b);
        obj = o.readObject();
    }
    return obj;
}

Al final, recibo el mismo error al deserializar el objeto en el dispositivo receptor, como se muestra a continuación.

java.io.StreamCorruptedException
at java.io.ObjectInputStream.readStreamHeader (ObjectInputStream.java:2102)
at java.io.ObjectInputStream.<init>(ObjectInputStream.java:372)
and so on...

¿Alguien por favor puede ayudar? Estoy desesperado, esto me ha estado matando durante semanas, y necesito que esto funcione en unos pocos días. : S

Respuestas a la pregunta(1)

Su respuesta a la pregunta