Аудиозапись периодически терпит неудачу на iOS с использованием Avaudiorecorder в .net maui (.net 8)IOS

Программируем под IOS
Ответить
Anonymous
 Аудиозапись периодически терпит неудачу на iOS с использованием Avaudiorecorder в .net maui (.net 8)

Сообщение Anonymous »

Я разрабатываю приложение .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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «IOS»