private void AudioRecorder_StateChanged(object sender, RecorderStateChangedEventArgs e) { Console.WriteLine("[AudioRecorder_StateChanged] " + e.PreviousState + " --> " + e.CurrentState); switch (e.CurrentState) { case RecorderState.Idle: _state = AudioRecordState.Idle; break; case RecorderState.Paused: _state = AudioRecordState.Paused; break; case RecorderState.Ready: _state = AudioRecordState.Ready; break; case RecorderState.Recording: _state = AudioRecordState.Recording; break; } stateCallbacks(sender, (AudioRecordState)e.PreviousState, (AudioRecordState)e.CurrentState); }
public AudioRecordService() { _state = AudioRecordState.Init; numbering = 0; // Create an audio recorder if (_recorder == null) { // find out the available audio codec and file format RecorderAudioCodec AudioCodec = RecorderAudioCodec.Amr; foreach (RecorderAudioCodec codec in Recorder.GetSupportedAudioCodecs()) { //Console.WriteLine("RecorderAudioCodec : " + codec); foreach (RecorderFileFormat format in codec.GetSupportedFileFormats()) { //Console.WriteLine(" RecorderFileFormat : " + format); if (format == AudioFileFormat) { AudioCodec = codec; break; } } } // Console.WriteLine("+++ Selected AudioCodec : " + AudioCodec + " Format : " + AudioFileFormat); // 2017-12-08: Todo need to roll back.. //_recorder = new AudioRecorder(AudioCodec, AudioFileFormat); //RecorderAudioCodec audioCodec, RecorderFileFormat fileFormat _recorder = new AudioRecorder(AudioCodec, AudioFileFormat); _recorder.StateChanged += AudioRecorder_StateChanged; _recorder.RecordingStatusChanged += AudioRecorder_RecordingStatusChanged; _recorder.RecordingLimitReached += AudioRecorder_RecordingLimitReached; _recorder.ErrorOccurred += AudioRecorder_ErrorOccurred; AudioRecorder.DeviceStateChanged += AudioRecorder_DeviceStateChanged; _recorder.Interrupting += AudioRecorder_Interrupting; //audioRecorder.ApplyAudioStreamPolicy(new AudioStreamPolicy(AudioStreamType.Media)); //audioRecorder.AudioChannels = 2; _recorder.AudioDevice = RecorderAudioDevice.Mic; _recorder.AudioBitRate = 128000; _recorder.AudioSampleRate = AMC_CODEC_AUDIO_SAMPLE_RATE; if (_recorder.State != RecorderState.Idle) { Console.WriteLine("AudioRecordService() : Invalid State (" + _recorder.State + ")" + "...may retry?"); } _recorder.Prepare(); if (_recorder.State != RecorderState.Ready) { Console.WriteLine("AudioRecordService() : Invalid State (" + _recorder.State + ")" + "...may retry?"); } try { SystemStorage internalStorage = StorageManager.Storages.Where(s => s.StorageType == StorageArea.Internal).FirstOrDefault(); var SoundsDir = internalStorage.GetAbsolutePath(DirectoryType.Sounds); audioStoragePath = Path.Combine(SoundsDir, "DotnetVoiceMemo"); // Create directory to save audio files Directory.CreateDirectory(audioStoragePath); } catch (Exception e) { Toast.DisplayText(e.Message + " - DotnetVoiceMemo directory creation failed."); } } }