Я разрабатываю приложение .net Maui с .NET 8 SDK, и я испытываю периодические проблемы, записывая звук на iOS. Я управляю записи из класса C# с помощью нативного API Avaudiorecorder через привязки или собственные вызовы. Иногда он записывает без проблем, а в других случаях он просто не начинает записывать или не сбоимого молча. Предлагается более стабильная реализация, но проблема сохраняется, поэтому она кажется не связанной с моей прямой реализацией. Есть рекомендации или решения?
спасибо < /p>
public class AudioRecorderService : IAudioRecorderService
{
AVAudioRecorder recorder;
string audioFilePath;
public bool IsRecording => recorder?.Recording ?? false;
bool IAudioRecorderService.IsRecording { get => IsRecording; set => throw new NotImplementedException(); }
public void StartRecording()
{
try
{
ResetAudioSession();
var session = AVAudioSession.SharedInstance();
session.SetCategory(AVAudioSessionCategory.Record, AVAudioSessionCategoryOptions.DefaultToSpeaker);
session.SetActive(true);
var audioSettings = new AudioSettings
{
SampleRate = 44100.0,
Format = AudioFormatType.LinearPCM,
NumberChannels = 1,
AudioQuality = AVAudioQuality.High,
LinearPcmBitDepth = 16,
LinearPcmFloat = false,
LinearPcmBigEndian = false,
LinearPcmNonInterleaved = false
};
var documents = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
audioFilePath = Path.Combine(documents, "audio_record.wav");
// Elimina el archivo anterior si existe (por corrupción u otro error)
if (System.IO.File.Exists(audioFilePath))
System.IO.File.Delete(audioFilePath);
var url = NSUrl.FromFilename(audioFilePath);
recorder = AVAudioRecorder.Create(url, audioSettings, out NSError error);
if (error != null)
{
Console.WriteLine($"Error initializing recorder: {error.LocalizedDescription}");
return;
}
recorder.PrepareToRecord();
recorder.Record();
}
catch (Exception ex)
{
Console.WriteLine($"Exception in StartRecording: {ex.Message}");
}
}
private void ResetAudioSession()
{
try
{
var session = AVAudioSession.SharedInstance();
// Try to deactivate any existing session
session.SetActive(false);
session = AVAudioSession.SharedInstance(); // Re-obtain instance just in case
recorder?.Stop();
recorder?.Dispose();
recorder = null;
}
catch (Exception ex)
{
Console.WriteLine($"Error resetting audio session: {ex.Message}");
}
}
public void StopRecording()
{
recorder?.Stop();
recorder?.Dispose();
recorder = null;
}
public string GetAudioFilePath()
{
return audioFilePath;
}
}
Подробнее здесь: https://stackoverflow.com/questions/796 ... n-net-maui
Аудиозапись периодически терпит неудачу на iOS с использованием Avaudiorecorder в .net maui (.net 8) ⇐ IOS
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение