Mediarecorder выдает исключение, если старт-стоп происходит быстроAndroid

Форум для тех, кто программирует под Android
Ответить Пред. темаСлед. тема
Anonymous
 Mediarecorder выдает исключение, если старт-стоп происходит быстро

Сообщение Anonymous »

У меня есть Mediarecorder, подключенный к кнопке, где я записываю, пока кнопка нажата, и останавливается, когда кнопка отпускается. Код работает нормально:

Код: Выделить всё

            mediaRecorder = new MediaRecorder();
mediaRecorder.Reset();
mediaRecorder.SetAudioSource(AudioSource.Mic);
mediaRecorder.SetOutputFormat(OutputFormat.AacAdts);
mediaRecorder.SetAudioEncoder(AudioEncoder.Aac);
mediaRecorder.SetAudioSamplingRate(16000);
mediaRecorder.SetOutputFile(storagePath);

mediaRecorder.Prepare();
mediaRecorder.Start();
Однако я обнаружил, что пользователи не знают, что кнопку нужно держать нажатой, поэтому они просто нажимают кнопку, что приводит к срабатыванию mediaRecorder.Stop(). выполнить относительно быстро. Это вызывает исключение:

Код: Выделить всё

Java.Lang.RuntimeException: stop failed.
at Java.Interop.JniEnvironment.InstanceMethods.CallVoidMethod(JniObjectReference instance, JniMethodInfo method, JniArgumentValue* args) in /Users/runner/work/1/s/xamarin-android/external/Java.Interop/src/Java.Interop/obj/Release/net7.0/JniEnvironment.g.cs:line 20370
at Java.Interop.JniPeerMembers.JniInstanceMethods.InvokeVirtualVoidMethod(String encodedMember, IJavaPeerable self, JniArgumentValue* parameters) in /Users/runner/work/1/s/xamarin-android/external/Java.Interop/src/Java.Interop/Java.Interop/JniPeerMembers.JniInstanceMethods_Invoke.cs:line 66
at Android.Media.MediaRecorder.Stop() in /Users/runner/work/1/s/xamarin-android/src/Mono.Android/obj/Release/net8.0/android-34/mcw/Android.Media.MediaRecorder.cs:line 2477
Я также могу смоделировать эту ошибку, синхронно выполнив подготовку, запуск и остановку. Однако я не понимаю, почему выдается исключение, потому что подготовка, запуск и остановка должны выполняться один за другим после выполнения каждой строки - поэтому теоретически подготовка и запуск завершаются до того, как достигается остановка.mediaRecorder.Prepare();
mediaRecorder.Start();
mediaRecorder.Stop();
У MediaPlayer есть событие OnPrepared, которое Я могу подключиться, чтобы убедиться, что подготовка завершена. С другой стороны, MediaRecorder, к сожалению, не имеет такого события.
Как мне избежать этой проблемы с помощью функции «Остановить выдачу исключения»?

Подробнее здесь: https://stackoverflow.com/questions/790 ... op-quickly
Реклама
Ответить Пред. темаСлед. тема

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

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

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

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

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Mediarecorder выдает исключение, если старт-стоп происходит быстро
    Anonymous » » в форуме Android
    0 Ответы
    14 Просмотры
    Последнее сообщение Anonymous
  • Как установить стоп-лосс для стоп-ордера во фьючерсах KuCoin?
    Anonymous » » в форуме Python
    0 Ответы
    35 Просмотры
    Последнее сообщение Anonymous
  • ODP.Net OracleConnection.Открытый холодный старт очень медленный
    Anonymous » » в форуме C#
    0 Ответы
    20 Просмотры
    Последнее сообщение Anonymous
  • Зеркальный API. Быстрый старт PHP — подписка на уведомления об ответах?
    Anonymous » » в форуме Php
    0 Ответы
    15 Просмотры
    Последнее сообщение Anonymous
  • HikariPool-1 — Старт завершен
    Anonymous » » в форуме JAVA
    0 Ответы
    21 Просмотры
    Последнее сообщение Anonymous

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