我尝试在安卓系统中使用salut库(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.");
}
});
}其中I接收数据
@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.");
}
}代码不会超出日志接收到的网络数据。我需要换一句话:
Message newMessage = LoganSquare.parse((Message)data, Message.class);
//to
Message newMessage = LoganSquare.parse(String.valueOf((Message)data), 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!!");
}
}message.class中的两个日志也没有执行
发布于 2017-04-23 10:31:37
这是因为根据文档,onDataRecieve()没有执行,因为data.isEmpty()返回true。检查一下我从这里的意思。
https://stackoverflow.com/questions/39468931
复制相似问题