【问题标题】:WebRTC Android video chat app, can't make one device ring anotherWebRTC Android 视频聊天应用,无法让一台设备响另一台设备
【发布时间】:2018-11-19 16:50:48
【问题描述】:

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

【问题讨论】:

    标签: android webrtc


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

      这就是SignalingServer 参加聚会的地方。一旦你从userId(lets say id is 2)createOffer() 发送到带有目标 userSocketId 的 Singnalling 服务器(这里我将 userId 映射到 SocketId,你也可以映射其他一些字段)。

      如果目标 Socket 已注册,它将立即收到带有您在 packet 中的呼叫者信息的来电请求。然后你就可以响铃了。
      请参阅我无法在这里解释整个功能,但您应该了解一件事您将不得不利用Signalling server 在两个设备之间共享文本数据。

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

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

      编辑:- 如果您正在寻找应该从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 架构,那么一切都会好起来的。所以我谦虚地建议先阅读结构。您可以从ThisThisWEBRTC 上的类似博客开始。

      【讨论】:

      • 首先谢谢你,但我需要问更多的事情,首先我已经在使用你附加的相同的信令服务器来获取套接字 io 设置和 android 中的相同代码也在你的线程中附加,我完全知道 webRTC 与呼叫响铃无关,您谈论该信令是我应该用来使电话响铃的地方,正确,请告诉我如何,再次感谢您的回答@ADM
      • 如果 1. 在前台(我确定是的)2. 在后台 3. 既不在前台也不在后台,这是否会开始
      • 它取决于 API 级别。由于后台限制,您无法在后台维护套接字连接。所以你需要依赖 FCM 通知消息。
      • 如果它不会让你失望,我正在为一款不支持任何 google play 服务的智能眼镜开发这个应用程序,你可以推荐任何其他解决方案。
      • 这就是我要说的。没有播放服务没有推送通知。所以必须有一种方法来通知设备发生事件。对我来说,这只是一个黑匣子。我也没有在可穿戴设备上工作过。所以我对此一无所知。如果您了解 webrtc 的底层架构,那么您剩下的唯一问题就是如何在 glass 中实现这一点。您可以为此添加一个新问题。因为我在这个话题上闻到了赏金xd。
      猜你喜欢
      • 2020-12-05
      • 1970-01-01
      • 1970-01-01
      • 2013-01-19
      • 1970-01-01
      • 2014-07-30
      • 2015-10-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多