接続する相手が分かっている場合
ビデオチャットのサンプルを参考にしながら作成を現在しています。
現在困っていることは、
接続する相手がわかっている場合、ダイアログからIDを一回一回選択するのではなく、MakeCallをすれば相手側に自動的に接続されるようにしたいです。
Android で作成しています。
よろしくお願いします。
-
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
質問の意図が異なっていればお教えください。よろしくお願いします。
-
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というボタンを押せば、相手側にすぐに接続される」です。
解決策があれば、アドバイスよろしくお願いします。
Please sign in to leave a comment.
Comments
4 comments