2015-04-21 2 views
14

Я обнаружил, что мой смартфон (android 4.2.2) не способен генерировать квадратные формы (мне нужно использовать аудиовыход в качестве последовательной линии для передачи данных). В начале я предположил, что это мое приложение, но затем я сделал много важных тестов. Это последние тесты. Надеюсь, вы найдете объяснение этого явления.искажение звука Android на квадратной форме волны

Я создал wav-файл с квадратной формой волны на расстоянии 500 Гц внутри него. Я играю wav-файл на телефоне Android и на яблочном iphone. Я записал и проанализировал сигнал с помощью своего ноутбука (аудиокабель, подключенный к аудиовходу ноутбука).

Затем я повторил тесты с помощью аудиокабеля, подключенного между приемопередатчиком bluetooth и аудиовходом ноутбука. И смартфоны, подключенные через Bluetooth (по одному) к приемопередатчику bluetooth.

ПРИМЕЧАНИЕ. Приемопередающее устройство Bluetooth - это устройство, которое принимает аудиоданные через Bluetooth и дает аудиовыход со стандартным аудиоразъемом.

Это сигнал генерируется Iphone непосредственно подключенного к аудиогнезду: iphone directly connected on the audio jack

Это сигнал генерируется с помощью Bluetooth устройства, принимающего данные от Iphone: signal generated by the bluetooth device receiving data from the iphone

Это сигнал генерируемый устройством Android, напрямую подключенным к аудиоразъему: android device directly connected with the audio jack

Это сигнал, генерируемый устройством Bluetooth, получающим данные от андроид смартфон:

bluetooth device receiving data from the android smartphone

анализами:

-The Bluetooth устройство вводит надрез к полосе пропускания сигнала (как мне кажется приемлемым).

-The iphone имеет очень хорошую аналоговую часть (она выдает очень хорошую квадратную форму волны)

-The андроида устройство имеет очень плохую аналоговую часть (даже если он идеально подходит для воспроизведения музыки)

-The данные, отправленные телефоном android на устройство bluetooth, неверны, фактически полученный сигнал отличается от того, который получил данные, поступающие с iphone.

Я восстановил смартфон до заводского значения по умолчанию, но проблема не была решена. Я также пытался установить kitkat custom rom, но проблема все еще там. Я также пробовал с Nexus 5 (android 5) и samsung S4 mini (android 4.2.2, как у меня), и они действуют как iphone.

Я подозреваю, что проблема связана с звуком студии DTS (я попытался отключить ее и установить ее разными способами без успеха). DTS, кажется, единственное различие в программном обеспечении между моим телефоном и samsung s4 mini.

ВОПРОС: Я могу понять, что аналоговая сторона моего устройства Android не так хороша, как iphone, я также могу предположить, что аналоговая часть моего устройства Android нарушена ... но я не понимаю, почему я Получайте тот же результат, когда я вставляю устройство приемопередатчика bluetooth.

+2

Существует, безусловно, фильтрация как низкочастотных, так и нередко высокочастотных последовательно соединенных конденсаторов, если нигде больше. Существует также, возможно, всякая уродливая обработка, такая как преобразование частоты дискретизации. Но также могут возникнуть проблемы с вашей программой, такие как переполнение буфера на некоторых устройствах. Чтобы действительно диагностировать, пожалуйста, покажите фотографии искаженного выхода, на разных частотах и ​​покрывая несколько циклов квадратной волны. Насколько большой размер вашего буфера? Что возвращает запрос минимального размера буфера на плохое устройство? Включение кода генерации и воспроизведения также будет полезно. –

+0

Вы также можете попробовать создать свой сигнал в виде WAV-файла на ПК с чем-то вроде Audacity или порта вашей программы, который записывает образцы в файл, проверяет, что он воспроизводится по желанию, а затем пытается воспроизвести это на Android-устройство. Это поможет определить, является ли это проблемой с аппаратным или заводским программным обеспечением устройства или с вашей программой. –

+0

привет @ Крис Страттон, это не важно, мое приложение, потому что проблема присутствует и в том случае, если я играю wav-файл из стандартного аудио приложения (тот, который поставляется с Android). Я попробую поставить снимок – Gaucho

ответ

2

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

Существует множество методов сигнализации и модуляции, используемых для отправки данных по аналоговым или аудиоканалам. Вы посмотрели на следующее:

How could you transfer data over an audio line?

Audio Modem: data over sound

Transfering data using audio signal in android

Третье звено описывается использование Frequency-shift keying в Android. Это похоже на очень хорошее решение. Страница wikiepedia для FSK включает в себя следующие комментарии по аудио FSK

Аудио частотная манипуляция (AFSK) представляет собой метод модуляции, посредством которого цифровых данных представляют изменения частоты (пек) в качестве звукового тона , получая кодированный сигнал, подходящий для передачи по радио или телефону . Обычно передаваемый звук чередуется между двумя путями: один, «знак», представляет собой двоичный; другое, «пробел» , представляет собой двоичный нуль. ... AFSK имеет то преимущество, что кодированные сигналы будут проходить через Соединения, связанные с AC, включая большинство оборудования, первоначально разработанного для , носят музыку или речь.

+0

Майкл, большое спасибо, я не знал, что были такие возможности, даже если теперь, когда вы сказали мне, это очевидно что это возможно. Во всяком случае, это требование использовать квадратную форму сигнала, и ваш ответ не соответствует моему запросу. Чтобы узнать, что я пытаюсь сделать, прочитайте следующее: http://stackoverflow.com/questions/29715866/android-ppm-audio-library – Gaucho

+0

в любом случае, разве вы не думаете, что есть какой-то программный компонент, порождающий проблему? почему данные, отправленные по bluetooth, не являются исходными квадратными волнами? проблема не возникает на яблочных устройствах и на nexus5. сегодня вечером я попробую также на телефоне Samsung моей подруги. – Gaucho

+1

Имейте в виду, что человеческий слух ограничен частотами около 20 кГц. Аудиосистемы обычно не предназначены для воспроизведения сигналов, значительно превышающих этот диапазон (нет необходимости, потому что люди все равно не могут его слышать). Квадратные волны имеют гармоники (или высокочастотные компоненты), которые выходят за пределы 20 кГц. Квадратная волна включает в себя частотные компоненты, которые выходят за рамки человеческого слуха и превосходят возможности аудиосистем. См. Http://mathworld.wolfram.com/FourierSeriesSquareWave.html. Аудиосистема просто не предназначена для воссоздания этих сигналов, и от нее не следует ожидать. –

Смежные вопросы