功能描述
anyRTC 提供了通话前网络和设备检测的功能,方便你进行音视频通话时,保证通信顺畅。通话前检测从两个角度开展:
- 
网络质量检测:通过检测当前网络质量的上下行,从而判断用户当前的网络质量是否良好。 
- 
设备质量检测:检测摄像头是否正常工作、检测音频设备是否正常录音及播放、设置摄像头方向或者切换音频设备(麦克风和扬声器)等。 
网络质量探测
RTC SDK 提供 startLastmileProbeTest 方法,可在开始通话前进行网络质量探测,向用户反馈上下行网络的带宽、丢包、网络抖动和往返时延数据。
实现方法
该功能需要在用户加入频道前实现,具体步骤流程如下:
- 
调用 startLastmileProbeTest进行网络质量探测,向用户反馈上下行网络的带宽、丢包、网络抖动和往返时延。
- 
启用该方法后,SDK 会依次返回如下 2 个回调: - 
onLastmileQuality:约 2 秒内返回。该回调通过打分反馈上下行网络质量,更贴近主观感受
- 
onLastmileProbeResult:约 30 秒内返回。该回调通过客观数据反馈上下行网络质量,更客观
 
- 
- 
获取到网络质量数据后,调用 stopLastmileProbeTest停止通话前网络质量检测。
如下是通话前网络质量检测图:

示例代码
参考下文示例代码在你的项目中进行通话前网络质量探测。
LastmileProbeConfig _$LastmileProbeConfigFromJson(Map<String, dynamic> json) {
  return LastmileProbeConfig(
    json['probeUplink'] as bool,
    json['probeDownlink'] as bool,
    json['expectedUplinkBitrate'] as int,
    json['expectedDownlinkBitrate'] as int,
  );
}
Map<String, dynamic> _$LastmileProbeConfigToJson(
        LastmileProbeConfig instance) =>
    <String, dynamic>{
      'probeUplink': instance.probeUplink,
      'probeDownlink': instance.probeDownlink,
      'expectedUplinkBitrate': instance.expectedUplinkBitrate,
      'expectedDownlinkBitrate': instance.expectedDownlinkBitrate,
    };
    
    fun mapToLastmileProbeConfig(map: Map<*, *>): LastmileProbeConfig {
    return LastmileProbeConfig().apply {
        (map["probeUplink"] as? Boolean)?.let { probeUplink = it }
        (map["probeDownlink"] as? Boolean)?.let { probeDownlink = it }
        (map["expectedUplinkBitrate"] as? Number)?.let { expectedUplinkBitrate = it.toInt() }
        (map["expectedDownlinkBitrate"] as? Number)?.let { expectedUplinkBitrate = it.toInt() }
    }
}
// 开启回声测试
        fun startEchoTest(params: Map<String, *>, callback: Callback)
// 停止测试
        fun stopEchoTest(callback: Callback)
开发注意事项
- Last-mile 测试必须在加入通话频道之前。在结束测试之前,anyRTC 不建议调用其他 API 方法。
- onLastmileQuality回调第一次报告的结果有一定概率是 unknown, 可通过之后的几次回调获得结果。
- 纯语音产品使用 48 Kbps 的固定探测码率;视频产品会根据当前选定的视频属性调整探测码率。
- 直播场景下,只有角色为主播的用户才能调用 startEchoTest。
- 调用 startEchoTest后必须调用stopEchoTest以结束测试,否则不能进行下一次回声测试,也不能加入频道。

