2016-09-13 3 views
0

Android 용 salut librari (wifip2p 라이브러리)를 사용하려고합니다.LoganSquare and Salut libraries - Android Wifip2p

모두 잘 작동하고, 장치를 검색하고, 호스트에 연결하고, 클라이언트를 연결합니다 ... 하지만 메시지를 보내야 할 때 문제가 있습니다. 내가 메시지를 보내 Salut

및 콘솔에서 그쪽으로 발발했습니다 메시지가 수신 내게 말 :

나는 건배 자습서를 따르십시오.

09-13 13:21:58.633 21798-21906/app.ingenia.marse.ingeniamarse D/Salut: Listening for service data... 
09-13 13:21:58.643 21798-21986/app.ingenia.marse.ingeniamarse V/Salut: A device is sending data... 
09-13 13:21:58.675 21798-21986/app.ingenia.marse.ingeniamarse D/Salut: Successfully received data. 

그러나받은 메시지를 읽을 수 없습니다.

보낸 사람 기능 : 나는 데이터받은

public void sendData(){ 

    Message myMessage = new Message(); 
    myMessage.description = "See you on the other side!"; 

    network.sendToAllDevices(myMessage, new SalutCallback() { 
     @Override 
     public void call() { 
      Log.e(TAG, "Oh no! The data failed to send."); 
     } 
    }); 

} 

:

@Override 
public void onDataReceived(Object data) { 
    Log.d(TAG, "Received network data."); 
    try 
    { 
     Message newMessage = LoganSquare.parse((Message)data, Message.class); 
     Log.d(TAG, newMessage.description); //See you on the other side! 
     //Do other stuff with data. 
    } 
    catch (IOException ex) 
    { 
     Log.e(TAG, "Failed to parse network data."); 
    } 
} 

코드 로그를 excecute하지 않는 네트워크 데이터를 받았다. 그리고 한 줄 변경해야

Message newMessage = LoganSquare.parse((Message)data, Message.class); 
//to 
Message newMessage = LoganSquare.parse(String.valueOf((Message)data), Message.class); 

을 그리고 Message.class : message.class에서

@JsonObject 
public class Message{ 

    /* 
    * Annotate a field that you want sent with the @JsonField marker. 
    */ 
    @JsonField 
    public String description; 

    /* 
    * Note that since this field isn't annotated as a 
    * @JsonField, LoganSquare will ignore it when parsing 
    * and serializing this class. 
    */ 
    public int nonJsonField; 


    @OnJsonParseComplete 
    void onParseComplete() { 
     Log.d("PARSED", "onParseComplete: PARSED!!"); 
    } 

    /* 
    * Optional callback method to do something before your 
    * object serializes. 
    */ 
    @OnPreJsonSerialize 
    void onPreSerialize() { 
     Log.d("SERIALIZED", "onParseComplete: SERIALIZED!!"); 
    } 

} 

두 로그를하거나 그들에 따라 때문이다

답변

0

을 실행 한 설명서에서 data.isEmpty()가 true를 반환하므로 onDataRecieve()가 실행되지 않습니다. here의 의미를 확인하십시오.

+0

나는이 사람 (WIngenia)과 정확히 똑같은 문제가 있으며 나는 당신의 대답을 이해하지 못한다. 실제로 당신의 대답은 실제 해결책이 아니다. data.isEmpty가 true를 반환하면 호스트에서 클라이언트로 정보를 전송하기 때문에 무엇을 의미하는지 알 수 없습니다. –