TRTCCalling.dart 5.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164
  1. import 'TRTCCallingDef.dart';
  2. import 'impl/TRTCCallingImpl.dart';
  3. abstract class TRTCCalling {
  4. static int typeUnknow = 0;
  5. static int typeAudioCall = 1; //纯音频通话
  6. static int typeVideoCall = 2; //视频通话
  7. /*
  8. * 获取 TRTCCalling 单例对象
  9. *
  10. * @return TRTCCalling 实例
  11. * @note 可以调用 {@link TRTCCalling.destroySharedInstance()} 销毁单例对象
  12. */
  13. static Future<TRTCCalling> sharedInstance() async {
  14. return TRTCCallingImpl.sharedInstance();
  15. }
  16. /*
  17. * 销毁 TRTCCalling 单例对象
  18. *
  19. * @note 销毁实例后,外部缓存的 TRTCCalling 实例不能再使用,需要重新调用 {@link TRTCCalling.sharedInstance()} 获取新实例
  20. */
  21. static void destroySharedInstance() async {
  22. TRTCCallingImpl.destroySharedInstance();
  23. }
  24. /// 销毁函数,如果不需要再运行该实例,请调用该接口
  25. void destroy();
  26. //////////////////////////////////////////////////////////
  27. //
  28. // 基础接口
  29. //
  30. //////////////////////////////////////////////////////////
  31. /*
  32. * 设置组件事件监听接口
  33. *
  34. * 您可以通过 registerListener 获得 TRTCCalling 的各种状态通知
  35. *
  36. * @param VoiceListenerFunc func 回调接口
  37. */
  38. void registerListener(VoiceListenerFunc func);
  39. /*
  40. * 移除组件事件监听接口
  41. */
  42. void unRegisterListener(VoiceListenerFunc func);
  43. /*
  44. * 登录
  45. *
  46. * @param sdkAppId 您可以在实时音视频控制台 >【[应用管理](https://console.cloud.tencent.com/trtc/app)】> 应用信息中查看 SDKAppID
  47. * @param userId 当前用户的 ID,字符串类型,只允许包含英文字母(a-z 和 A-Z)、数字(0-9)、连词符(-)和下划线(\_)
  48. * @param userSig 腾讯云设计的一种安全保护签名,获取方式请参考 [如何计算 UserSig](https://cloud.tencent.com/document/product/647/17275)。
  49. * @param 返回值:成功时 code 为0
  50. */
  51. Future<ActionCallback> login(int sdkAppId, String userId, String userSig);
  52. /*
  53. * 退出登录
  54. */
  55. Future<ActionCallback> logout();
  56. /*
  57. * C2C邀请通话,被邀请方会收到 {@link TRTCCallingDelegate#onInvited } 的回调
  58. * 如果当前处于通话中,可以调用该函数以邀请第三方进入通话
  59. *
  60. * @param userId 被邀请方
  61. * @param type 1-语音通话,2-视频通话
  62. */
  63. Future<ActionCallback> call(String userId, int type);
  64. /*
  65. * IM群组邀请通话,被邀请方会收到 {@link TRTCCallingDelegate#onInvited } 的回调
  66. * 如果当前处于通话中,可以继续调用该函数继续邀请他人进入通话,同时正在通话的用户会收到 {@link TRTCCallingDelegate#onGroupCallInviteeListUpdate(List)} 的回调
  67. *
  68. * @param userIdList 邀请列表
  69. * @param type 1-语音通话,2-视频通话
  70. * @param groupId IM群组ID,选填。如果填写该参数,那么通话请求消息是通过群消息系统广播出去的,这种消息广播方式比较简单可靠。如果不填写,那么 TRTCCalling 组件会采用单发消息逐一通知。
  71. */
  72. Future<ActionCallback> groupCall(
  73. List<String> userIdList, int type, String? groupId);
  74. /*
  75. * 当您作为被邀请方收到 {@link TRTCCallingDelegate#onInvited } 的回调时,可以调用该函数接听来电
  76. */
  77. Future<ActionCallback> accept();
  78. /*
  79. * 当您作为被邀请方收到 {@link TRTCCallingDelegate#onInvited } 的回调时,可以调用该函数拒绝来电
  80. */
  81. Future<ActionCallback> reject();
  82. /*
  83. * 当您处于通话中,可以调用该函数结束通话
  84. */
  85. Future<void> hangup();
  86. /*
  87. * 当您收到 onUserVideoAvailable 回调时,可以调用该函数将远端用户的摄像头数据渲染到指定的TRTCCloudVideoView中
  88. *
  89. * @param userId 远端用户id
  90. * @param viewId 远端用户数据将渲染到该view中
  91. */
  92. Future<void> startRemoteView(String userId, int streamType, int viewId);
  93. /*
  94. * 当您收到 onUserVideoAvailable 回调为false时,可以停止渲染数据
  95. *
  96. * @param userId 远端用户id
  97. */
  98. Future<void> stopRemoteView(String userId, int streamType);
  99. /*
  100. * 更新远端视频画面的窗口,仅仅ios有效
  101. *
  102. * @param userId 远端用户id
  103. * @param viewId 远端用户数据将渲染到该view中
  104. */
  105. Future<void> updateRemoteView(String userId, int streamType, int viewId);
  106. /*
  107. * 您可以调用该函数开启摄像头,并渲染在指定的TRTCCloudVideoView中
  108. * 处于通话中的用户会收到 {@link TRTCCallingDelegate#onUserVideoAvailable(java.lang.String, boolean)} 回调
  109. *
  110. * @param isFrontCamera 是否开启前置摄像头
  111. * @param viewId TRTCCloudVideoView生成的viewId
  112. */
  113. Future<void> openCamera(bool isFrontCamera, int viewId);
  114. /// 更新本地视频预览画面的窗口,仅仅ios有效
  115. ///
  116. /// 参数:
  117. ///
  118. /// viewId 承载视频画面的控件
  119. Future<void> updateLocalView(int viewId);
  120. /*
  121. * 您可以调用该函数关闭摄像头
  122. * 处于通话中的用户会收到 {@link TRTCCallingDelegate#onUserVideoAvailable(java.lang.String, boolean)} 回调
  123. */
  124. Future<void> closeCamera();
  125. /*
  126. * 您可以调用该函数切换前后摄像头
  127. *
  128. * @param isFrontCamera true:切换前置摄像头 false:切换后置摄像头
  129. */
  130. Future<void> switchCamera(bool isFrontCamera);
  131. /*
  132. * 是否静音mic
  133. *
  134. * @param isMute true:麦克风关闭 false:麦克风打开
  135. */
  136. Future<void> setMicMute(bool isMute);
  137. /*
  138. * 是否开启免提
  139. *
  140. * @param isHandsFree true:开启免提 false:关闭免提
  141. */
  142. Future<void> setHandsFree(bool isHandsFree);
  143. }