Запись звука с различных внутренних устройств в Android (через нелегальный API)

Мне было интересно, можно ли записывать аудиоданные из других источников, таких как система, FM-радио, Bluetooth-гарнитура и т. Д. Мне особенно нравится захватывать звук с FM-радио и уже исследовал все возможности, включая попытку обнюхивать сырье Bluetooth-связь между телефоном и радиоустройством без везения. Очень плохо, что Android позволяет записывать аудио с MIC.

Я посмотрел исходный код Android и не смог найти бэкдор, чтобы позволить мне сделать это, не укореняя устройство. По крайней мере, знаете ли вы, как использовать другие устройства (возможно, получить доступ к каким-либо / dev / audio ) через NDK или даже лучше – Java (возможно, Reflection?), Чтобы обмануть систему для захвата аудиопотока, скажем, FM радио. (В моем случае я пытаюсь разработать приложение для HTC Desire)

PS. И для тех из вас, кто против использования недокументированных API, пожалуйста, не публикуйте здесь – я пишу приложение, которое будет для моего личного использования, или даже если я когда-нибудь опубликую его, я буду предупреждать пользователя о возможных несовместимостях.

Я потратил довольно много времени на расшифровку звукового стека, и я думаю, вы можете попытаться захватить libaudio. У вас возникнут проблемы с непосредственным обращением к аппаратным средствам (/ dev / *), поскольку многие устройства используют проприетарные аудио драйверы. В этом отношении нет никакого правила.

Однако уровень абстракции звука (HAL), предоставляемый /system/lib/libaudio.so, должен раскрывать API, описанный в http://source.android.com/porting/audio.html

Система Android, и особенно audioflinger, использует этот libaudio HAL для поиска доступных устройств, обработки маршрутизации и, конечно, для чтения / записи данных PCM.

Таким образом, вы могли бы захватить взаимодействие между звуковым проигрывателем и libaudio, переименованием позже и предоставлением собственного libaudio, который украсит реальный. Таким образом, вы должны иметь возможность регистрировать то, что происходит, и, возможно, перехватывать FM-радиовыход, при условии, что это не напрямую обрабатывается аппаратным обеспечением.

Конечно, все это требует укоренения. Прошу прокомментировать, если вам удастся это сделать, это меня интересует.

Intereting Posts
Как загрузить HttpResponse в файл? Показывать дату в текущем регионе Ошибка: подозрительное пространство имен и префиксная комбинация при попытке создания подписанного APK OnDragListener – есть ли библиотека совместимости для уровней Android <11? Проблема с подключением к Интернету в Интернете Курсор Edittext все еще мигает после закрытия мягкой клавиатуры Как построить APK и отдельные библиотеки, которые приложение загружает динамически Как вертикально выравнивать текст в TextView с помощью Compound Drawable Специальное кодирование символов HTML TabWidget не заполняет HorizontalScrollView Как получить битмап из drawable, определенного в xml? Как получить данные Instagram от пользователя на Android? Как получить размер изображения, хранящегося в байтовом массиве в KB VectorDrawableCompat и Canvas вращаются, извлекаемые исчезают на 90/270 градусов Как добавить теги в трассировки стека Android?