android - WebRTC Android 视频聊天应用,无法让一台设备响另一台设备
问题描述
这可能听起来很傻,但我一直在寻找如何做到这一点很长时间,而我得到的只是更加困惑:/我制作了一个 webRTC 视频聊天应用程序,它工作得很好,我现在需要的是如何在另一个想要呼叫第一个时从另一个Android设备响铃,我的意思是直到现在我必须在两个设备上输入相同的房间名称才能进行视频通话,这实际上并不实用生活其他对等方或设备用户如何知道有人想给他打电话,我已经阅读了关于 SIP 的信息,但似乎不是我想要的,请帮忙。
解决方案
WebRTC
负责PeerConnection
不响设备和处理用户。它是您自己的数据,您需要自己处理。
那就是SignalingServer
参加聚会的地方。一旦您createOffer()
从 auserId(lets say id is 2)
发送到带有目标 userSocketId 的 Singnalling 服务器(这里我将 userId 映射到 SocketId,您也可以映射其他一些字段)。
如果目标 Socket 已注册,它将立即获得带有呼叫者信息的来电请求,您在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);
}
}
每当您收到报价时,只需调用上述方法即可。显然,您需要处理其他一些情况,例如呼叫者端的互联网丢失和连接重置,等待 ICECandidates。
WebRTC
如果您首先了解建筑,那么事情将是生死攸关的。所以我谦虚地建议先阅读结构。您可以从 This和This或 上的类似博客开始WEBRTC
。
推荐阅读
- java - 如何在 Java 中将 Arraylist 添加到另一个 Arraylist
- canoe - 如何在 CANoe 中实时回放 .blf 文件?
- python - Linux 上的 Libarchive 未正确安装(对于 Python)
- arrays - 在 JMeter 中从固定集合中随机选择值
- swift - 如何将 Swift 声明标记为在 iOS 中可用而在 macOS 中不可用
- solr - 对 solr 查询的结果进行排序
- python - 无法部署 Google 的 AppEngine - 无法安装 google.appengine 库 - ModuleNotFound ez_setup
- android - 通知服务
- python - 将数组索引插入转置数组
- mysql - 是否可以将仅“帖子”表导入新数据库?