gpt4 book ai didi

java - AllJoyn BusSignalReply 错误

转载 作者:太空宇宙 更新时间:2023-11-04 12:41:10 27 4
gpt4 key购买 nike

我正在构建一个使用 AllJoyn 框架的 Android 应用程序。基本上,我需要 LAN 通信来创建大厅并允许加入其中的人玩某种游戏。

为此,我创建了一个 Lobby 对象及其相应的 LobbyInterface。我现在所做的是:- 用户可以创建一个大厅,这会显示在所有连接设备的列表中。-用户可以选择已创建的大厅并加入它。

我现在想要的是当用户加入大厅时刷新列表。为此,我需要获取大厅中的用户列表。我正在尝试从 LobbyInterface 获取此列表。我知道我无法通过总线获取复杂的对象(如果它们不是按结构构建的),但我正在尝试获取一个简单的字符串数组。

这是我的代码:

LobbyClass:

public class Lobby implements LobbyInterface, BusObject {
private String[] lstUsers;
private String name;

public Lobby(String name){
this.name = name;
lstUsers = new String[4];
}

/**
extra code here
**/

@Override
public String[] getLstUsers() throws BusException {
return lstUsers;
}

}

大厅界面类:

@BusInterface(name = "com.example.cantor.pruebamultiplayerv3.lobby", announced = "true")
public interface LobbyInterface {


@BusMethod(replySignature = "as")
String[] getLstUsers() throws BusException;
}

这是我调用它的方法,形成一个 UsersFacade 类:

public String[] getLstUsers(){
try {
Log.d(TAG, "USER could get users list");
return lobbyI.getLstUsers();
} catch (BusException e) {
Log.d(TAG, "USER error getting users lst");
e.printStackTrace();
}
return null;
}

这总是返回 null,错误是:

04-23 21:09:47.327 5864-5864/com.example.cantor.pruebamultiplayerv3 W/System.err: org.alljoyn.bus.ErrorReplyBusException: org.alljoyn.Bus.ErStatus
04-23 21:09:47.346 5864-5864/com.example.cantor.pruebamultiplayerv3 W/System.err: at org.alljoyn.bus.ProxyBusObject.methodCall(Native Method)
04-23 21:09:47.346 5864-5864/com.example.cantor.pruebamultiplayerv3 W/System.err: at org.alljoyn.bus.ProxyBusObject.access$300(ProxyBusObject.java:35)
04-23 21:09:47.346 5864-5864/com.example.cantor.pruebamultiplayerv3 W/System.err: at org.alljoyn.bus.ProxyBusObject$Handler.invoke(ProxyBusObject.java:264)
04-23 21:09:47.346 5864-5864/com.example.cantor.pruebamultiplayerv3 W/System.err: at java.lang.reflect.Proxy.invoke(Proxy.java:397)
04-23 21:09:47.346 5864-5864/com.example.cantor.pruebamultiplayerv3 W/System.err: at $Proxy2.getLstUsers(Unknown Source)
04-23 21:09:47.346 5864-5864/com.example.cantor.pruebamultiplayerv3 W/System.err: at com.example.cantor.pruebamultiplayerv3.UsersFacade.getLstUsers(UsersFacade.java:70)

我知道我可以返回指定位置和类型的结构。但我已经看到我可以使用简单的字符串数组: https://allseenalliance.org/docs/api/java/org/alljoyn/bus/annotation/Signature.html

我一直在这里阅读其他答案,但这些答案适用于复杂的数据,例如: signature get error on Alljoyn framework?

我的代码有什么问题吗?还有其他选择吗?

非常感谢您的关注!

最佳答案

没关系...我刚刚发现了错误。我正在使用一个空列表(一些槽位为空,因为我试图填充该列表)。我用空字符串填充它,现在它可以工作了......

public Lobby(String name){
this.name = name;
lstUsers = new String[4];
for (int i = 0; i <=3; i++){
lstUsers[i] = "";
}
}

关于java - AllJoyn BusSignalReply 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36815326/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com