Переполнение буфера GsaIOException, нет свободного места

У меня есть приложение MediaPlayer с функцией прямой трансляции. Когда я тестирую приложение с физическим устройством (API 22 Lollipop и API 23 Marshmallow), нет никаких проблем с запуском потока. Сегодня я хочу протестировать приложение с помощью эмулятора (API 25 Nougat). Поток не работает, и я получаю следующую ошибку:

(SourceFile: 139)                                                                                                   в java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133)                                                                                                   в java.util.concurrent.ThreadPoolExecutor $Worker.run(ThreadPoolExecutor.java:607)                                                                                                   в java.lang.Thread.run(Thread.java:761)                                                                                                   at com.google.android.apps.gsa.shared.util.concurrent.a.ad $1.run(SourceFile: 85) 02-23 23: 58: 09.834 2166-3554/com.google.android.googlequicksearchbox: поиск W/ErrorProcessor: onFatalError, ошибка обработки из движка (4)                                                                                               com.google.android.apps.gsa.shared.speech.a.g: Ошибка чтения из входного потока                                                                                                   на com.google.android.apps.gsa.staticplugins.recognizer.i.a.a(SourceFile: 342)                                                                                                   на com.google.android.apps.gsa.staticplugins.recognizer.i.a $1.run(SourceFile: 1367)                                                                                                   в java.util.concurrent.Executors $RunnableAdapter.call(Executors.java:428)                                                                                                   в java.util.concurrent.FutureTask.run(FutureTask.java:237)                                                                                                   на com.google.android.apps.gsa.shared.util.concurrent.a.ak.run(SourceFile: 66)                                                                                                   в java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133)                                                                                                   в java.util.concurrent.ThreadPoolExecutor $Worker.run(ThreadPoolExecutor.java:607)                                                                                                   в java.lang.Thread.run(Thread.java:761)                                                                                                   at com.google.android.apps.gsa.shared.util.concurrent.a.ad $1.run(SourceFile: 85)                                                                                                Вызвано: com.google.android.apps.gsa.shared.exception.GsaIOException: Код ошибки: 393238 | Переполнение буфера, отсутствие свободного места.                                                                                                   на com.google.android.apps.gsa.speech.audio.Tee.g(SourceFile: 2531)                                                                                                   на com.google.android.apps.gsa.speech.audio.ap.read(SourceFile: 555)                                                                                                   в java.io.InputStream.read(InputStream.java:101)                                                                                                   на com.google.android.apps.gsa.speech.audio.al.run(SourceFile: 362)                                                                                                   at com.google.android.apps.gsa.speech.audio.ak $1.run(SourceFile: 471)                                                                                                   в java.util.concurrent.Executors $RunnableAdapter.call(Executors.java:428)                                                                                                   в java.util.concurrent.FutureTask.run(FutureTask.java:237)                                                                                                   на com.google.android.apps.gsa.shared.util.concurrent.a.ak.run(SourceFile: 66)                                                                                                   на com.google.android.apps.gsa.shared.util.concurrent.a.ax.run(SourceFile: 139)                                                                                                   в com.google.android.apps.gsa.shared.util.concurrent.a.ax.run(SourceFile: 139)                                                                                                   в java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133)                                                                                                   в java.util.concurrent.ThreadPoolExecutor $Worker.run(ThreadPoolExecutor.java:607)                                                                                                   в java.lang.Thread.run(Thread.java:761)                                                                                                   at com.google.android.apps.gsa.shared.util.concurrent.a.ad $1.run(SourceFile: 85)

Я могу признать только одно, что, по-моему, важно.

GsaIOException: Код ошибки: 393238 | Переполнение буфера, отсутствие свободного пространства

Но я не знаю, что это могло означать. Может кто-нибудь объяснить, что это за исключение. И где я могу искать код, чтобы найти проблему?

Ответ 1

Я получил ту же проблему, и я сделал следующие вещи, чтобы сделать этот сбой. Несколько api, которые я написал, должны были выделить некоторую память, так как файл нужно разбирать и хранить в этом буфере. Я начал разбирать файл без выделения буфера, поэтому получил это сообщение. Таким образом, вы можете посмотреть на похожий код, где вы могли бы сделать то же самое.

Ответ 2

У меня была аналогичная проблема, для меня она также рушилась на устройствах, с той же ошибкой. Вот как я исправил его для устройств:

<uses-permission android:name="android.permission.RECORD_AUDIO" />

Подробнее здесь: Ошибка Looping на Android-эмуляторе

Чтобы приложение работало на симуляторе, после применения исправления из приведенной выше ссылки мне пришлось создать новый симулятор на основе архитектуры x86 (а не x86_64, как и раньше), и он сработал.

Ответ 3

Я решил это, удалив файлы apk, которые я создал ранее, и они все еще остаются в списке файлов проектов.