【发布时间】:2015-06-29 00:02:20
【问题描述】:
我发现我的智能手机 (android 4.2.2) 无法生成方波(我需要它使用音频输出作为串行线进行数据传输)。 一开始我以为这是我的应用程序,但后来我做了很多重要的测试。这些是最新的测试。我希望你能找到这个现象的解释。
我生成了一个 wav 文件,其中包含 500Hz 的方波。 我在安卓手机和苹果 iPhone 上播放 wav 文件。 我用笔记本(连接笔记本音频输入的音频线)记录并分析了信号。
然后我用连接在蓝牙收发器设备和笔记本音频输入之间的音频线重复了测试。并且智能手机通过蓝牙(一次一个)连接到蓝牙收发设备。
注意:蓝牙收发设备是一种通过蓝牙接收音频数据并通过标准音频插孔提供音频输出的设备。
这是直接连接在音频插孔上的 iphone 产生的信号:
这是蓝牙设备从 iphone 接收数据产生的信号:
这是android设备直接连接音频插孔产生的信号:
这是蓝牙设备从安卓智能手机接收数据产生的信号:
分析:
-蓝牙设备会降低信号带宽(在我看来这是可以接受的)。
-iphone的模拟部分非常好(输出非常好的方波)
-android 设备的模拟部分非常糟糕(即使它非常适合音乐播放)
-android 手机发送到蓝牙设备的数据不正确,实际上获取的信号与从 iphone 获取的数据不同。
我将智能手机恢复为出厂默认设置,但问题仍未解决。 我也尝试安装 kitkat 自定义 rom,但问题仍然存在。 我还尝试使用 Nexus 5 (android 5) 和 samsung S4 mini (android 4.2.2 like mine),它们的行为就像 iphone。
我怀疑问题与 DTS 工作室声音有关(我尝试禁用它并以不同的方式设置它但没有成功)。 DTS 似乎是我的手机和三星 s4 mini 之间唯一的软件差异。
问题:我可以理解我的 android 设备的模拟部分不如 iphone,我也可以假设我的 android 设备的模拟部分坏了......但我不明白我为什么不这样做'当我插入蓝牙收发设备时获得相同的结果。
【问题讨论】:
-
如果没有其他地方,肯定会在串联电容器中同时过滤低通和高通。很可能还有各种丑陋的处理,例如采样率转换。但是您的程序也可能存在问题,例如某些设备上的缓冲区不足。要真正诊断,请显示失真输出的图片,在各种频率下,并覆盖方波的多个周期。你的缓冲区有多大?坏设备上的最小缓冲区大小查询返回什么?包含生成和播放代码也会很有用。
-
您也可以尝试在 PC 上使用 Audacity 或将样本写入文件的程序端口将您的信号创建为 .wav 文件,验证它是否按需要在那里播放,然后试图在 Android 设备上播放。这将有助于确定是设备的硬件或出厂软件有问题,还是您的程序有问题。
-
嗨@Cris Stratton,我的应用程序并不重要,因为如果我从默认音频应用程序(android 提供的那个)播放 wav 文件,也会出现问题。我会尝试提供快照
-
@ChrisStratton 再次阅读了我的问题,我按照您的第二条消息的建议做了。这就是为什么我要疯了。我编辑了我的问题..
标签: android audio waveform distortion