こちらのページは旧SkyWayの情報です。新しいSkyWayに関する情報はこちら

接続する相手が分かっている場合

Comments

4 comments

  • Avatar
    Hiroki Kato

    hikoさん、こんにちわ

    > 接続する相手がわかっている場合

    これがPeer IDが既にわかっている場合という話であれば、現在のサンプルにおけるpeerのリストを取得する処理を、

    例えば

    CallOption option = new CallOption();
    _mediaConnection = _peer.call([相手のPeer ID], _localStream, option);

    if (null != _mediaConnection) {
    setMediaCallbacks();
    _bConnected = true;
    }


    としてあげれば、ボタンを押した次点で発信、サンプルの実装であればその後接続されるかと思います。

     

    その前段として、PeerIDをどうやって交換するか?という話を含むとどのような方法でも良いと言うのが仕様でして、
    自前サーバやfirebase等のBaaSを使って、ユーザ認証を行い、IDを管理してあげるというのが一般的かと思います。

    PoCなどで雑にやるのであれば、new Peer時にPeer IDを指定して、PeerIDを固定してあげることも可能です。(但しPeerIDが複数ユーザ間で重複した場合には接続できなかったり、意図しない人と通話が始まってしまう可能性があります)

    同一ルーム名を指定したユーザ間をつなぐRoom APIの方が実装方法によっては楽かもしれません。https://github.com/skyway/skyway-android-sdk/tree/master/examples/mesh-videochat


    質問の意図が異なっていればお教えください。

    よろしくお願いします。

     

     

    0
    Comment actions Permalink
  • Avatar
    hiko

    Hiroki Katoさん、ご返信ありがとうございます。

    アドバイスありがとうございます。勝手で申し訳ないのですが、少し質問の意図が違うので再度お尋ねします。

    先日の質問は、主にサンプルのこの部分についてです。
    // Show IDs using DialogFragment
    if (0 < _listPeerIds.size()) {

    FragmentManager mgr = getFragmentManager();
    PeerListDialogFragment dialog = new PeerListDialogFragment();
    dialog.setListener(
    new PeerListDialogFragment.PeerListDialogFragmentListener() {
    @Override
    public void onItemClick(final String item) {//item
    _handler.post(new Runnable() {
    @Override
    public void run() {
    onPeerSelected(item);
    }
    });
    }
    });

    このプログラムの前行で取得したIDの中から自分のIDを削除して、接続されているIDを残す。そして上のプログラムによって接続されているIDをダイアログによって選択できる。

    この度、私がしたいことは、「接続されるIDが一台だけの場合(IDは決まっていない)の時、MakeCallというボタンを押せば、相手側にすぐに接続される」です。

    解決策があれば、アドバイスよろしくお願いします。

     

    0
    Comment actions Permalink
  • Avatar
    Hiroki Kato

    ボタンを押した際の挙動を変更したい

    自分を除く接続中のPeerIDが1台だけの時には処理を分けたいということで、下記のような書き方ではいかがでしょうか?

    if (1 == _listPeerIds.size()){

        // _listPeerIds[0]に対して接続する処理
       // 既存コードを使うのであれば、onPeerSelected(_listPeerIds[0])とかでしょうか。(動作確認はできていません)
    }

    0
    Comment actions Permalink
  • Avatar
    hiko

    再度ご返答ありがとうございます。

    ご返答いただいたアドバイスを基に、実装してみました。

    if (1 ==_listPeerIds.size()) {
    onPeerSelected(_listPeerIds.get(0));
    //以下コメントアウト
    }
    else

    動作確認もできました。

    本当にありがとうございました。また、よろしくお願いします


     

    0
    Comment actions Permalink

Please sign in to leave a comment.