gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-03 13:41:43 25 4
gpt4 key购买 nike

这听起来可能很傻,但我已经搜索了很长时间如何做到这一点,而我得到的只是更加困惑:/我已经制作了一个 webRTC 视频聊天应用程序,它工作得很好,我现在需要的是如何在另一个想要调用第一个时从另一个 android 设备响铃,我的意思是直到现在我必须输入相同的房间名称两种设备都能够进行视频通话,这在现实生活中是不切实际的,因为其他对等方或设备用户如何知道有人想调用它,我已经阅读了有关 SIP 的信息,但这似乎不是我想要的,请帮忙。

最佳答案

WebRTC 负责PeerConnection不响设备和处理Users。这是您自己的数据,您需要自己处理。

这就是 SignalingServer 出现的地方。一旦您从 userId(假设 id 为 2)createOffer() 并将其与目标 userSocketId 一起发送到您的 Singnalling 服务器(这里我将 userId 映射到 SocketId,您可以也映射一些其他字段)。

如果目标 Socket 已经注册,它会立即收到传入的调用请求,其中包含您放入 packet 的调用者信息。然后你就可以给设备响铃了。
看到我不能在这里解释全部功能,但你应该明白一件事你将不得不利用 Signalling server 在两个设备之间共享文本数据。

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

可以关注Sample mentioned here .本例中的signalling server使用了NODE.JS,熟悉java的 friend 可以轻松理解和修改。

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

记住一件事 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 开始和 ThisWEBRTC 上的类似博客。

关于android - WebRTC Android 视频聊天应用程序,无法让一台设备响起另一台设备,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50780753/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com