这可能听起来很愚蠢,但我已经搜索了很长时间如何做到这一点,而我得到的只是更加困惑:/我制作了一个 webRTC 视频聊天应用程序,它工作得很好,我什么现在需要的是,当另一个 Android 设备想要呼叫第一个 Android 设备时,如何从另一个 Android 设备上拨打电话,我的意思是到目前为止,我必须在两台设备上输入相同的房间名称才能进行视频通话,但这在实际中并不实用生活中其他对等方或设备用户如何知道有人想给他打电话,我已经阅读过有关 SIP 的内容,但似乎不是我要找的内容,请帮忙。
WebRTC负责PeerConnection不响铃设备和处理用户。这是您自己的数据,您需要自己处理。
SignalingServer那就是参加聚会的地方。一旦你createOffer()从 auserId(lets say id is 2)并将其发送到带有目标 userSocketId 的信号服务器(这里我将 userId 映射到 SocketId,你也可以映射一些其他字段)。
如果目标套接字已注册,它将立即获取传入呼叫请求以及您在packet. 然后您可以响铃该设备。
请注意,我无法在这里解释全部功能,但您应该了解一件事,您必须利用它Signalling server在两个设备之间共享文本数据。
基本上,您需要拥有ID要调用的对象,然后只有信令服务器才会在接收端发出特定数据。所以你需要一个保存所有用户信息的云数据库。
您可以按照此处提到的示例进行操作。如果您熟悉 java, 则signalling server此示例中使用的很容易理解和修改。NODE.JS
编辑:-如果您正在寻找应该开始的点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);
}
}
Run Code Online (Sandbox Code Playgroud)
每当您收到报价时,只需调用上述方法即可。显然,您需要处理其他一些情况,例如呼叫者端互联网丢失和连接重置,等待 ICECandidates。
如果你首先了解建筑,事情就会变得更美好WebRTC。所以我谦虚地建议先阅读结构。您可以从 This和This或类似的博客开始WEBRTC。