startRecording method
Implementation
startRecording(BuildContext context) async {
if (playingChat != null) {
playingChat!.mediaChatMessage!.isPlaying = false;
playingChat = null;
// player.stop();
chatList.refresh();
}
var busyStatus = !profile.isGroupProfile.checkNull()
? await Mirrorfly.isBusyStatusEnabled()
: false;
if (!busyStatus.checkNull()) {
if (context.mounted) {
AppPermission.askNotificationPermission(context).then((value) async {
// var permission = await AppPermission.getStoragePermission(context: context);
var permission = await AppPermission.checkAndRequestPermissions(
permissions: [Permission.microphone],
permissionIcon: audioPermission,
permissionContent: Constants.audioPermission,
permissionPermanentlyDeniedContent:
Constants.microPhonePermissionDenied,
context: context);
if (permission) {
// if (await record.hasPermission()) {
record = AudioRecorder();
timerInit("00:00");
isAudioRecording(Constants.audioRecording);
startTimer();
await record.start(
const RecordConfig(),
path:
"$audioSavePath/audio_${DateTime.now().millisecondsSinceEpoch}.m4a",
// ///If Change the Encode Format, kindly keep in mind to check the iOS record and send Audio.
// encoder: AudioEncoder.aacLc,
// bitRate: 128000,
// samplingRate: 44100,
);
Future.delayed(const Duration(seconds: 300), () {
if (isAudioRecording.value == Constants.audioRecording) {
stopRecording();
}
});
// }
}
});
}
} else {
//show busy status popup
if (context.mounted) showBusyStatusAlert(startRecording, context);
}
}