closeMic method
Implementation
Future<void> closeMic(
String from, {
bool needUIDisabled = true,
bool needToast = true,
}) async {
if (needUIDisabled) {
_trtcStreamInfoObs.updateSelfMicDeviceDisabled(true);
}
await TRTC.closeMic(from);
// await TRTC.stopLocalAudio(from);
final isMicAvailable = _trtcStreamInfoObs.isMicAvailable.value;
var res = await networkService.selfStatusReport(
StateReportBody(
classId: _config.classId,
state:
isMicAvailable
? StateStatusValueEnum.off
: StateStatusValueEnum.fail,
type: StateTypeEnum.mic,
),
);
if (res?.errorCode == 0) {
_membersInfoObs.updateSelfMemberInfoByAction(
MemberActionType.micClose,
isMicAvailable ? StateStatusValueEnum.off : StateStatusValueEnum.fail,
);
_trtcStreamInfoObs.updateTRTCStreamInfo(
TRTCRoomInfo.fromJson({
"userId": _config.userId,
"userAudioAvailable": false,
}),
TRTCStreamInfoUpdateType.userAudioAvailableChanged,
);
TCICLog.info(
"关闭麦克风成功",
actionModule: ActionModule.tcicController.name,
actionName: ActionName.closeMic.name,
);
if (needToast) {
TCICToast.show(StringEnum.closeMicSuccess);
}
} else {
TCICLog.error(
"关闭麦克风失败",
actionModule: ActionModule.tcicController.name,
actionName: ActionName.closeMic.name,
);
if (needToast) {
TCICToast.show(StringEnum.closeMicFailed);
}
}
if (needUIDisabled) {
_trtcStreamInfoObs.updateSelfMicDeviceDisabled(false);
}
}