WebRTC Android视频聊天应用程序,无法使一台设备响起另一台设备



这听起来可能很愚蠢,但我一直在寻找如何做到这一点,我得到的只是更加困惑:/我已经制作了一个webRTC视频聊天应用程序,它运行良好,我现在需要的是当另一个想要呼叫第一个Android设备时,如何从另一个Android设备拨打另一个,我的意思是直到现在我必须在两个设备上输入相同的房间名称才能进行视频通话,这在现实生活中是不切实际的,因为另一个对等方或设备用户如何知道某人想打电话给他,我读过关于SIP的信息,但似乎不是我要找的,请帮忙。

WebRTC负责PeerConnection不振铃设备并处理用户。它您自己的数据,您需要自己处理。

这就是SignalingServer来参加派对的地方.一旦你从userId(lets say id is 2)createOffer(),并使用目标userSocketId将其发送到你的Singnalling服务器(在这里我正在将userId映射到SocketId,你也可以映射一些其他字段(。

如果目标套接字已注册,它将立即收到带有您放入packet的呼叫者信息的来电请求。然后你可以 响铃设备 .
看到我无法在这里解释整个功能,但您应该了解的一件事您必须利用Signalling server来共享两个设备的文本数据。

基本上,您需要具有要调用的ID,然后只有信令服务器才会在接收器端发出特定数据。所以你需要一个 保存所有用户信息的云数据库 .

您可以按照此处提到的示例进行操作。 此示例中的signalling server使用NODE.JS如果您熟悉 java,则易于理解和修改。

编辑:-如果您正在寻找应该开始RING点。好吧,只要您收到Offer并打开调用 UI(活动(,它就会响铃。

请记住一件事ICECandiates不应该迷路,因此在发送ICECandiates列表之前,请在双方之间使用适当的握手,因为这是设置PeerConnection的基础。

public void startCallNotification() {
Uri notification = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_RINGTONE);
ringtone  = RingtoneManager.getRingtone(this, notification);
ringtone.play();
vibrator = (Vibrator)getSystemService(Context.VIBRATOR_SERVICE);
long[] vibrationCycle = {0, 1000, 1000};
if (vibrator.hasVibrator()) {
vibrator.vibrate(vibrationCycle, 1);
}
}

只需在收到报价时调用上述方法即可。显然,您需要处理其他一些情况,例如呼叫端的互联网丢失和连接重置,等待ICECandidates。

如果你先了解WebRTC架构,事情就会变得面包和黄油。所以我谦虚地建议先阅读结构。您可以从 这个 和 这个 或类似的博客开始WEBRTC.

Just Use Socket.io 它由两部分组成: 1. 前端软件开发工具包(IOS,安卓,网络,...等( 2. 后端 ->有据可查

这是链接:https://socket.io/

相关内容

最新更新