Может ли приложение использовать микрофон для двух разных задач одновременно?

В настоящее время я изучаю приложение PortSIP (ссылка здесь ), чтобы совершать звонки. Я хочу иметь возможность записывать то, что я говорю. Я успешно могу записывать с помощью микрофона, когда нет разговора. Но как только вызов инициализирован, получатель не слышит мой голос.

Есть ли способ заставить это работать??

Ответы (1)

Могут ли два приложения использовать микрофон одновременно?

Насколько я знаю: по умолчанию, так же, как два разных приложения не могут одновременно использовать камеру, тот же принцип применим и к микрофону. Поскольку драйверы этих аппаратных средств отвечают только на один вызов от одного пользователя за раз. Конечно, вы можете создать приложение, которое получает входные данные с микрофона, а затем действует как вещатель, чтобы делиться входными данными с другими приложениями. Но сам микрофон не рассчитан на двух пользователей одновременно. Так как приложение «Телефон» тоже пользовательское, то микрофон предусмотрен только для него. При этом моя информация может быть устаревшей. Или могут быть способы обмана в этом случае. Пользователь Micheal из этого вопроса о переполнении стека говорит:

Точно не помню, откуда взялось ограничение, но на одной из платформ, с которыми я работал, у нас был обходной путь в виде разделителя потоков. Этот класс был написан поставщиком платформы (поэтому он был проприетарным) и был частью libaudioflinger IIRC. Он будет управлять входным аудиопотоком и передавать аудиоданные всем клиентам (приложениям), которые хотят записывать аудио. Так что это можно сделать, если у вас есть возможность создать свой собственный Android ROM, но это не тривиально.

Так это возможно? Ага. Но кажется мне излишне болезненным. Тем не менее, как я уже сказал, примите мои слова как недоверие, так как мои знания Android не очень актуальны.

Может ли приложение использовать микрофон для двух разных целей? Приложение состоит из разных компонентов. Пользователь телефона использует пользовательские интерфейсы (действия) для запуска процессов, которые происходят в фоновом режиме (службы), и все службы выполняют свои функции. Тем не менее, все они принадлежат одному и тому же процессу, который имеет определенный UID, заданный Android. Как только данный UID получает входную информацию с камеры, микрофона и т. д., он может одновременно использовать ее для разных служб. Это решать приложению.