我正在尝试为我的应用程序使用 AllJoyn,但是当我尝试使用示例(示例 13)中的代码时,我无法加入会话并收到错误BUS_BLOCKING_CALL_NOT_ALLOWED。
bus.registerBusListener(new BusListener() {
@Override
public void foundAdvertisedName(String name,
short transport,
String namePrefix) {
short contactPort = CONTACT_PORT;
SessionOpts sessionOpts = new SessionOpts();
Mutable.IntegerValue sessionId = new Mutable.IntegerValue();
Status status = bus.joinSession("com.my.well.known.name", //here's error: status = BUS_BLOCKING_CALL_NOT_ALLOWED
contactPort,
sessionId,
sessionOpts,
new SessionListener());
bus.cancelAdvertiseName("com.my.well.known.name",SessionOpts.TRANSPORT_ANY);
}
});
这段代码来自示例,我不知道它有什么问题。你可以帮我吗?
如有必要,下面是完整的代码:http://pastebin.com/f1sD7RtK
我正在尝试创建新频道并自动连接到它,而无需用户参与。
此外,我将非常感谢任何好的建议或样品。
在 foundAdvertisedName 方法中调用bus.joinSession(...)
之前,请尝试调用bus.enableConcurrentCallbacks()
。
这将允许AllJoyn在当前回调foundAdvertisedName仍在执行时调度一个额外的回调。下面是说明所发生情况的文档链接。