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);
}
}