WebRTC Android视频聊天应用,不能让一个设备响起另一个设备

时间:2018-06-10 05:14:39

标签: android webrtc

这可能听起来很傻,但我一直在寻找如何做到这一点很长时间,而我所得到的只是更加困惑:/ 我已经制作了一个webRTC视频聊天应用程序,它工作得很好,我现在需要的是如何在另一个想要调用第一个时,从另一个安卓设备上响一个,我的意思是直到现在我必须输入相同的房间名称两个设备都可以进行视频通话而且在现实生活中不实用,如何让其他同伴或设备用户知道有人想给他打电话,我已经读过SIP,但似乎不是我的意思我在找,请帮忙。

2 个答案:

答案 0 :(得分:2)

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

那是SignalingServer参加聚会的地方。从createOffer() userId(lets say id is 2)并使用目标userSocketId将其发送到您的Singnalling服务器后(我将mapId映射到SocketId,您也可以映射其他字段)。

如果目的地套接字已注册,它将立即收到来自packet的来电信息的来电请求。然后你可以振铃设备 看,我无法解释这里的所有功能,但有一点你应该理解你必须利用Signalling server在两个设备之间进行文本数据共享。

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

您可以关注Sample mentioned here。此示例中的signalling server使用NODE.JS,如果您熟悉java,则易于理解和修改。

编辑: - 如果您正在寻找应该从RING开始的地方。那么只要你收到Offer并打开你的通话用户界面(活动)就应该响铃。

记住一件事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架构,那么事情将会变得非常糟糕。所以我谦虚地建议先阅读结构。您可以从WEBRTCThisTenantId上的类似博客开始。

答案 1 :(得分:0)

只需使用由两部分组成的Socket.io: 1.前端SDK(IOS,Android,Web等) 2.后端->有据可查

以下是链接:https://socket.io/