代码之家  ›  专栏  ›  技术社区  ›  harunB10

颤振阿戈拉.io呼叫屏幕

  •  0
  • harunB10  · 技术社区  · 5 年前

    我想像Messenger(Facebook)那样添加应用程序(视频)通话。当一方创建通道,另一方加入时,它就起作用了。

    但有没有办法创造一个呼叫屏幕,乙方可以接受或拒绝呼叫?我在往里看阿戈拉.io但找不到任何适合的文档。

     Future<void> initialize() async {
        if (APP_ID.isEmpty) {
          setState(() {
            _infoStrings.add(
              'APP_ID missing, please provide your APP_ID in settings.dart',
            );
            _infoStrings.add('Agora Engine is not starting');
          });
          return;
        }
    
        await _initAgoraRtcEngine();
        _addAgoraEventHandlers();
        await AgoraRtcEngine.enableWebSdkInteroperability(true);
        await AgoraRtcEngine.setParameters('''
    {\"che.video.lowBitRateStreamParameter\":{\"width\":320,\"height\":180,\"frameRate\":15,\"bitRate\":140}}''');
        await AgoraRtcEngine.joinChannel(null, 'Test', null, 0);
      }
    
      Future<void> _initAgoraRtcEngine() async {
        AgoraRtcEngine.create(APP_ID);
        AgoraRtcEngine.enableVideo();
      }
    
      void _addAgoraEventHandlers() {
        AgoraRtcEngine.onError = (dynamic code) {
          setState(() {
            final info = 'onError: $code';
            _infoStrings.add(info);
          });
        };
    
        AgoraRtcEngine.onJoinChannelSuccess = (
          String channel,
          int uid,
          int elapsed,
        ) {
          setState(() {
            final info = 'onJoinChannel: $channel, uid: $uid';
            _infoStrings.add(info);
          });
        };
    
        AgoraRtcEngine.onLeaveChannel = () {
          setState(() {
            _infoStrings.add('onLeaveChannel');
            _users.clear();
          });
        };
    
        AgoraRtcEngine.onUserJoined = (int uid, int elapsed) {
          setState(() {
            final info = 'userJoined: $uid';
            _infoStrings.add(info);
            _users.add(uid);
          });
        };
    
        AgoraRtcEngine.onUserOffline = (int uid, int reason) {
          setState(() {
            final info = 'userOffline: $uid';
            _infoStrings.add(info);
            _users.remove(uid);
          });
        };
    
        AgoraRtcEngine.onFirstRemoteVideoFrame = (
          int uid,
          int width,
          int height,
          int elapsed,
        ) {
          setState(() {
            final info = 'firstRemoteVideo: $uid ${width}x $height';
            _infoStrings.add(info);
          });
        };
      } 
    
    0 回复  |  直到 5 年前
        1
  •  4
  •   Sourab Sharma    4 年前

    在这种情况下,您需要将channelId推送到其他移动用户。 CS的家伙在YouTube上创建了非常有用的视频来实现这个步骤以及调用屏幕。

    https://www.youtube.com/watch?v=v9ngriCV0J0

        2
  •  1
  •   Sai    5 年前

    ConnectionService 对于Android和 Callkit iOS的一部分。

    https://github.com/AgoraIO/Advanced-Video/tree/master/Calling-Interface ,但我不认为Agora在flatter中有调用接口示例,您现在必须自己编写包装器。

        3
  •  0
  •   Stu Furlong    4 年前

    widget.chatRoomId

    Future<void> onJoin() async {
    // update input validation
    
      if (widget.chatRoomId.isNotEmpty) {
        // await for camera and mic permissions before pushing video page
        await _handleCameraAndMic();
        // push video page with given channel name
        await Navigator.push(
          context,
          MaterialPageRoute(
            builder: (context) => CallPage(
              channelName: widget.chatRoomId,
              // TODO: set to _role
              role: ClientRole.Broadcaster,
            ),
          ),
        );
      }
    }