closeCamera method
Implementation
Future<void> closeCamera(String from, {bool needUIDisabled = true, bool needToast = true}) async {
if (!_trtcStreamInfoObs.isCameraAvailable.value) {
return;
}
if (needUIDisabled) {
_trtcStreamInfoObs.updateSelfCameraDeviceDisabled(true);
}
await TRTC.closeCamera(from);
final isCameraAvailable = _trtcStreamInfoObs.isCameraAvailable.value;
var res = await networkService.selfStatusReport(StateReportBody(classId: _config.classId, state: isCameraAvailable ? StateStatusValueEnum.off : StateStatusValueEnum.fail, type: StateTypeEnum.camera));
if (res?.errorCode == 0) {
_membersInfoObs.updateSelfMemberInfoByAction(MemberActionType.cameraClose, isCameraAvailable ? StateStatusValueEnum.off : StateStatusValueEnum.fail);
_trtcStreamInfoObs.updateTRTCStreamInfo(TRTCRoomInfo.fromJson({"userId": _config.userId, "userVideoAvailable": false}), TRTCStreamInfoUpdateType.userVideoAvailableChanged);
TCICLog.info("关闭摄像头成功", actionModule: ActionModule.tcicController.name, actionName: ActionName.closeCamera.name);
if (needToast) {
TCICToast.show(StringEnum.closeCameraSuccess);
}
} else {
TCICLog.error("关闭摄像头失败", actionModule: ActionModule.tcicController.name, actionName: ActionName.closeCamera.name);
if (needToast) {
TCICToast.show(StringEnum.closeCameraFailed);
}
}
if (needUIDisabled) {
_trtcStreamInfoObs.updateSelfCameraDeviceDisabled(false);
}
}