public void StartRecorder(string id)
		{
			StopRecorder();
			Status = AudioRecorderStatus.Starting;

			WorkerThread = new RecorderThread(this, id);
			WorkerThread.Name = "RecorderThread";
			WorkerThread.Start();

			Log.Debug(Tag, "Recorder started.");
		}
		public AudioRecorderEventArgs(AudioRecorderStatus status, string audioFilePath = "", int counter = -1)
		{
			Status = status;
			AudioFilePath = audioFilePath;
			Counter = counter;
		}
		private void Stopped()
		{
			Status = AudioRecorderStatus.Stopped;
		}
		private void RecorderInitializationError()
		{
			Status = AudioRecorderStatus.RecorderInitializationError;
		}
		private void CheckingSamples()
		{
			Status = AudioRecorderStatus.CheckingSamples;
		}
		private void CheckSuccessful()
		{
			Status = AudioRecorderStatus.CheckSuccessful;
		}
		private void RecordingFailed()
		{
			Status = AudioRecorderStatus.RecordingFailed;
		}
		private void CheckFailed()
		{
			Status = AudioRecorderStatus.CheckFailed;
		}
		private void StoppedRecording()
		{
			Status = AudioRecorderStatus.StoppedRecording;
		}
		private void RecordingSuccessful(string returnFilePath)
		{
			_audioFilePath = returnFilePath;
			Status = AudioRecorderStatus.RecordingSuccessful;
		}
		private void UpdateRecordingCounter(int recordingCountdown)
		{
			_counter = recordingCountdown;
			Status = AudioRecorderStatus.UpdateRecordingCounter;
		}
		private void Recording()
		{
			Status = AudioRecorderStatus.Recording;
		}
		private void FinishedPreparing()
		{
			Status = AudioRecorderStatus.FinishedPreparing;
		}
		private void UpdatePrepareCounter(int prepareCountdown)
		{
			_counter = prepareCountdown;
			Status = AudioRecorderStatus.UpdatePrepareCounter;
		}
		private void Preparing()
		{
			Status = AudioRecorderStatus.Preparing;
		}