4

我正在尝试将 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

我正在尝试创建新频道并自动连接到它,无需用户参与。

此外,我将非常感谢任何好的建议或样品。

4

1 回答 1

5

bus.enableConcurrentCallbacks()在调用 foundAdvertisedName 方法之前尝试调用bus.joinSession(...)
这将允许 AllJoyn 在当前回调 foundAdvertisedName 仍在执行时分派一个额外的回调。这是解释正在发生的事情的文档的链接。

于 2012-11-14T20:24:05.677 回答