2016-04-23 1 views
1

私はAllJoynフレームワークを使用するAndroid Appを構築しています。基本的には、私はロビーを作成し、参加している人々に特定のゲームをさせるために、LAN通信が必要です。AllJoyn BusSignalReplyエラー

このため、私はオブジェクト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; 
    } 

} 

LobbyInterfaceクラス:

@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?

間違っている何が、私は文字列の単純な配列で動作できることを見てきました私のコードで?他の選択肢はありますか?

ありがとうございました!

答えて

0

Nevermind ...エラーが見つかりました。私は空のリスト(いくつかのスロットは、私がリストを埋もうとしていたので、nullを持っていました)を使って作業していました。私は空の弦でそれを埋めると今はそれが動作します...

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