169 похожих чатов

Добрый день, можно ли как-то запустить запись AudioRecord в сервисе

без запуска activity? Жалуется что uninitialized

17 ответов

24 просмотра

а как требует инитить?

Mr- Автор вопроса

java.lang.IllegalStateException: startRecording() called on an uninitialized AudioRecord

ну, так. в доках написано должно быть как инитить его

Mr- Автор вопроса

recorder = AudioRecord(MediaRecorder.AudioSource.MIC, RECORDER_SAMPLERATE, RECORDER_CHANNELS, RECORDER_AUDIO_ENCODING, BufferElements2Rec * BytesPerElement); recorder.startRecording() сделал как написано, если перед этим запустить активити - всё ок. Не работает если запускается только сервис

а уже гуглил ? че говорят? audioRecord init in service

Уверены, что обращаетесь к нему после инициализации? Попробуйте перенести инициализацию в by lazy, чтобы быть уверенным

Mr- Автор вопроса

да, обложил логгером, пробовал выносить инициализацию в блок init и пробовал в application создавать

В init не надо. Именно в by lazy

Mr- Автор вопроса

то же самое, единственное, перед ошибкой есть ещё строки: E/IAudioFlinger: createRecord returned error -1 E/AudioRecord: createRecord_l(113): AudioFlinger could not create record track, status: -1 E/AudioRecord-JNI: Error creating AudioRecord instance: initialization check failed with status -1. E/android.media.AudioRecord: Error code -20 when initializing native AudioRecord object. после этого идёт ошибка инициализации

Ну тогда не могу подсказать, не работал с AudioRecord. Видимо не нравится ему работа в сервисе.

я не совсем понял. Вы не можете запустить AudioRecord в сервисе что ли?

Mr- Автор вопроса

не могу запустить в сервисе без предварительно запущенной активити

Привет, запускаешь сервис привязываешь уведомление, отвязываешь от активити

он не будет стопиться дройдом потом

Mr- Автор вопроса

этот кейс всё ещё предполагает явный вызов activity, сейчас foreground сервис запускается при старте системы (в новых версиях вызов активити при запуске запрещён)

https://www.dev2qa.com/how-to-start-android-service-automatically-at-boot-time/ попробуй через броадкаст ресивер словить старт и в нем сервис запустить, а в сервисе уведомление показать

Mr- Автор вопроса

с автозапуском проблем нет. Проблема в том, что в запущенном при старте системы foreground сервисе не инициализируется AudioRecord. Я предполагаю что проблема в том, что под капотом там используется ActivityThread, а в моём случае никакая activity не создаётся

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта