I am using flutter sound lite library what I wanna do is to record the sound and then play the recorded sound so i wrote the following code
importing the library
import 'package:flutter_sound_lite/public/flutter_sound_recorder.dart';
Class to record the sound start_recorder.dart
class SoundRecorder{
FlutterSoundRecorder? _audioRecorder;
bool _isRecorderInitialised= false;
bool isRecording=false;
//init method
Future init() async{
_audioRecorder= FlutterSoundRecorder();
final status= await Permission.microphone.request();
if(status!= PermissionStatus.granted){
throw RecordingPermissionException('Microphone permission not granted');
}
await _audioRecorder!.openAudioSession();
_isRecorderInitialised=true;
}
//dispose method
void dispose(){
if(!_isRecorderInitialised) return;
_audioRecorder!.closeAudioSession();
_audioRecorder=null;
_isRecorderInitialised=false;
}
//record method to record sound
Future _record() async{
if(!_isRecorderInitialised) return;
try{
await _audioRecorder!.startRecorder(toFile:pathToSaveAudio );
}
catch (e)
{
throw e;
}
}
//stop method to stop recording sound
Future _stop() async {
if(!_isRecorderInitialised) return;
await _audioRecorder!. startRecorder();
}
Future toggleRecording() async{
if(_audioRecorder!.isStopped){
isRecording=true;
await _record();
}
else{
isRecording=false;
await _stop();
}
}
}
Main.dart
now in main state elevatedButton is a child of a container
Container(
child: ElevatedButton.icon(
style: ElevatedButton.styleFrom(
minimumSize: Size(175, 50),
primary: primary,
onPrimary: onPrimary
),
icon: Icon(icon),
label: Text(
text,
style: TextStyle(fontSize: 16,fontWeight: FontWeight.bold),
),
onPressed: () async{
final isRecording= await recorder.toggleRecording();
setState(() {
});
},
),
)
when i start recorder it turn button red and icon to stop icon but when i click back it doesnt get into actual position and in log it gives an error Unhandled Exception: Instance of '_RecorderRunningException'
logs
V/AutofillManager(26337): requestHideFillUi(null): anchor = null
I/flutter (26337): ┌───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
I/flutter (26337): │ #0 FlutterSoundRecorder.startRecorder (package:flutter_sound_lite/public/flutter_sound_recorder.dart:635:13)
I/flutter (26337): │ #1 SoundRecorder._record (package:speech_app/api/start_recorder.dart:27:29)
I/flutter (26337): ├┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄
I/flutter (26337): │ FS:---> startRecorder
I/flutter (26337): └───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
I/flutter (26337): ┌───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
I/flutter (26337): │ #0 FlutterSoundRecorder._startRecorder (package:flutter_sound_lite/public/flutter_sound_recorder.dart:659:13)
I/flutter (26337): │ #1 FlutterSoundRecorder.startRecorder.<anonymous closure> (package:flutter_sound_lite/public/flutter_sound_recorder.dart:637:13)
I/flutter (26337): ├┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄
I/flutter (26337): │ FS:---> _startRecorder.
I/flutter (26337): └───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
D/AudioRecordExtImpl(26337): AudioRecordExtImpl init
D/AudioRecordExtImpl(26337): audiorecordTest
D/AudioRecord(26337): set(): inputSource 0, sampleRate 16000, format 0x1, channelMask 0x10, frameCount 1280, notificationFrames 0, sessionId 0, transferType 0, flags 0, identity AttributionSourceState{pid: -1, uid: 10375, packageName: com.speech.app.speech_app, attributionTag: (null), token: , renouncedPermissions: [], next: []}uid -1, pid -1
D/AudioRecord(26337): set(): mSessionId 0
D/AudioRecord(26337): start(2854): sync event 0 trigger session 0
I/System.out(26337): ---> writeAudioDataToFile
W/System.err(26337): java.io.FileNotFoundException: audio_example.wav: open failed: EROFS (Read-only file system)
W/System.err(26337): at libcore.io.IoBridge.open(IoBridge.java:574)
W/System.err(26337): at java.io.FileOutputStream.<init>(FileOutputStream.java:236)
W/System.err(26337): at java.io.FileOutputStream.<init>(FileOutputStream.java:125)
W/System.err(26337): at com.dooboolab.TauEngine.FlautoRecorderEngine.writeAudioDataToFile(FlautoRecorderEngine.java:70)
W/System.err(26337): at com.dooboolab.TauEngine.FlautoRecorderEngine._startRecorder(FlautoRecorderEngine.java:247)
W/System.err(26337): at com.dooboolab.TauEngine.FlautoRecorder.startRecorder(FlautoRecorder.java:300)
W/System.err(26337): at com.dooboolab.fluttersound.FlutterSoundRecorder.startRecorder(FlutterSoundRecorder.java:261)
W/System.err(26337): at com.dooboolab.fluttersound.FlutterSoundRecorderManager.onMethodCall(FlutterSoundRecorderManager.java:106)
W/System.err(26337): at io.flutter.plugin.common.MethodChannel$IncomingMethodCallHandler.onMessage(MethodChannel.java:262)
W/System.err(26337): at io.flutter.embedding.engine.dart.DartMessenger.invokeHandler(DartMessenger.java:295)
W/System.err(26337): at io.flutter.embedding.engine.dart.DartMessenger.lambda$dispatchMessageToQueue$0$io-flutter-embedding-engine-dart-DartMessenger(DartMessenger.java:319)
W/System.err(26337): at io.flutter.embedding.engine.dart.DartMessenger$$ExternalSyntheticLambda0.run(Unknown Source:12)
W/System.err(26337): at android.os.Handler.handleCallback(Handler.java:938)
W/System.err(26337): at android.os.Handler.dispatchMessage(Handler.java:99)
W/System.err(26337): at android.os.Looper.loopOnce(Looper.java:233)
W/System.err(26337): at android.os.Looper.loop(Looper.java:344)
W/System.err(26337): at android.app.ActivityThread.main(ActivityThread.java:8212)
W/System.err(26337): at java.lang.reflect.Method.invoke(Native Method)
W/System.err(26337): at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:584)
W/System.err(26337): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1034)
W/System.err(26337): Caused by: android.system.ErrnoException: open failed: EROFS (Read-only file system)
W/System.err(26337): at libcore.io.Linux.open(Native Method)
W/System.err(26337): at libcore.io.ForwardingOs.open(ForwardingOs.java:563)
W/System.err(26337): at libcore.io.BlockGuardOs.open(BlockGuardOs.java:274)
W/System.err(26337): at libcore.io.ForwardingOs.open(ForwardingOs.java:563)
W/System.err(26337): at android.app.ActivityThread$AndroidOs.open(ActivityThread.java:8094)
W/System.err(26337): at libcore.io.IoBridge.open(IoBridge.java:560)
W/System.err(26337): ... 19 more
I/flutter (26337): ┌───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
I/flutter (26337): │ #0 FlutterSoundRecorder.startRecorderCompleted (package:flutter_sound_lite/public/flutter_sound_recorder.dart:249:13)
I/flutter (26337): │ #1 MethodChannelFlutterSoundRecorder.channelMethodCallHandler (package:flutter_sound_platform_interface/method_channel_flutter_sound_recorder.dart:74:22)
I/flutter (26337): ├┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄
I/flutter (26337): │ ---> startRecorderCompleted: true
I/flutter (26337): └───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
I/flutter (26337): ┌───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
I/flutter (26337): │ #0 FlutterSoundRecorder.startRecorderCompleted (package:flutter_sound_lite/public/flutter_sound_recorder.dart:258:13)
I/flutter (26337): │ #1 MethodChannelFlutterSoundRecorder.channelMethodCallHandler (package:flutter_sound_platform_interface/method_channel_flutter_sound_recorder.dart:74:22)
I/flutter (26337): ├┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄
I/flutter (26337): │ <--- startRecorderCompleted: true
I/flutter (26337): └───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
I/flutter (26337): ┌───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
I/flutter (26337): │ #0 FlutterSoundRecorder._startRecorder (package:flutter_sound_lite/public/flutter_sound_recorder.dart:750:13)
I/flutter (26337): │ #1 <asynchronous suspension>
I/flutter (26337): ├┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄
I/flutter (26337): │ FS:<--- _startRecorder.
I/flutter (26337): └───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
I/flutter (26337): ┌───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
I/flutter (26337): │ #0 FlutterSoundRecorder.startRecorder (package:flutter_sound_lite/public/flutter_sound_recorder.dart:647:13)
I/flutter (26337): │ #1 <asynchronous suspension>
I/flutter (26337): ├┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄
I/flutter (26337): │ FS:<--- startRecorder
I/flutter (26337): └───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────