首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Flutter Agora.io呼叫屏幕

Flutter Agora.io呼叫屏幕
EN

Stack Overflow用户
提问于 2019-12-15 20:39:29
回答 3查看 4.9K关注 0票数 7

我想像Messenger (Facebook)那样添加应用内(视频)呼叫。当一方创建频道,另一方加入时,它就会起作用。

但是,有没有办法创建呼叫屏幕,使乙方可以接受或拒绝呼叫?我在Agora.io文档中寻找,但找不到任何适合这个的东西。

这是我的代码。

代码语言:javascript
复制
 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);
      });
    };
  } 
EN

回答 3

Stack Overflow用户

发布于 2020-04-20 21:19:31

在这种情况下,您需要将channelId推送到其他用户的移动设备。CS Guy在you tube上制作了非常有用的视频来实现这一步骤以及呼叫屏幕。

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

票数 4
EN

Stack Overflow用户

发布于 2019-12-16 18:06:09

您需要使用Android原生ConnectionService和iOS的Callkit

你可以在这里找到上述特性的官方Agora示例:https://github.com/AgoraIO/Advanced-Video/tree/master/Calling-Interface,但我不认为Agora有Flutter中的调用接口示例,现在你必须自己编写包装器。

票数 1
EN

Stack Overflow用户

发布于 2020-08-15 03:26:37

widget.chatRoomId是为这两个用户创建聊天室时指定的id。

代码语言:javascript
复制
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,
        ),
      ),
    );
  }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59343973

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档