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

foundAdvertisedName メソッドを呼び出すbus.enableConcurrentCallbacks()前に呼び出してみてください。 これにより、現在のものである foundAdvertisedName がまだ実行されている間に、AllJoyn が追加のコールバックをディスパッチできるようになります。これは、何が起こっているかを説明するドキュメントへのリンクです。bus.joinSession(...)

于 2012-11-14T20:24:05.677 に答える