Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/222.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
基于方波的android音频失真_Android_Audio_Waveform_Distortion - Fatal编程技术网

基于方波的android音频失真

基于方波的android音频失真,android,audio,waveform,distortion,Android,Audio,Waveform,Distortion,我发现我的智能手机(android 4.2.2)无法生成方波(我需要它将音频输出用作串行线进行数据传输)。 起初我以为这是我的申请,但后来我做了很多重要的测试。这些是最新的测试。我希望你能找到这种现象的解释 我生成了一个wav文件,里面有一个500Hz的方形波形。 我在安卓手机和苹果iphone上播放wav文件。 我用笔记本电脑(连接到笔记本电脑音频输入的音频电缆)记录并分析了信号 然后我用连接在蓝牙收发器设备和笔记本电脑音频输入之间的音频电缆重复测试。以及通过蓝牙(一次一个)连接到蓝牙收发器设

我发现我的智能手机(android 4.2.2)无法生成方波(我需要它将音频输出用作串行线进行数据传输)。 起初我以为这是我的申请,但后来我做了很多重要的测试。这些是最新的测试。我希望你能找到这种现象的解释

我生成了一个wav文件,里面有一个500Hz的方形波形。 我在安卓手机和苹果iphone上播放wav文件。 我用笔记本电脑(连接到笔记本电脑音频输入的音频电缆)记录并分析了信号

然后我用连接在蓝牙收发器设备和笔记本电脑音频输入之间的音频电缆重复测试。以及通过蓝牙(一次一个)连接到蓝牙收发器设备的智能手机

注:蓝牙收发器设备是通过蓝牙接收音频数据并通过标准音频插孔提供音频输出的设备

这是直接连接在音频插孔上的iphone生成的信号:

这是蓝牙设备从iphone接收数据时产生的信号:

这是android设备直接与音频插孔连接产生的信号:

这是蓝牙设备从android智能手机接收数据时产生的信号:

分析:

-蓝牙设备减少了信号的带宽(在我看来这是可以接受的)

-iphone有非常好的模拟部分(输出非常好的方波)

-android设备的模拟部分非常糟糕(即使它非常适合音乐播放)

-安卓手机发送到蓝牙设备的数据不正确,事实上获取的信号与从iphone获取的数据不同

我将智能手机恢复为出厂默认值,但问题没有得到解决。 我还试图安装kitkat定制rom,但问题仍然存在。 我还试过Nexus5(安卓5)和三星S4 mini(安卓4.2.2和我的一样),它们的表现就像iphone

我怀疑这个问题与DTS studio声音有关(我尝试禁用它并以不同的方式设置它,但没有成功)。DTS似乎是我的手机和三星s4 mini之间唯一的软件区别


问:我可以理解,我的android设备的模拟部分不如iphone,我也可以假设我的android设备的模拟部分坏了。。。但是我不明白为什么在插入蓝牙收发器设备时没有得到相同的结果。

为什么要使用方波?这是要求吗?方波在数字系统中是有意义的,但作为一种模拟信号,它有各种令人讨厌的特性(如果我记得的话,就像无限频谱)。为什么不在手机音响系统设计的人声范围内使用两种音调

有许多信号和调制技术用于通过模拟或音频信道发送数据。你看过以下任何一项吗

第三个链接描述了在Android中的使用。这看起来是一个很好的解决方案。FSK的WikieMedia页面包括以下关于音频FSK的评论

音频移位键控(AFSK)是一种调制技术,通过 数字数据由信号频率(基音)的变化表示 音频音调,产生适合通过音频传输的编码信号 收音机或电话。通常,传输的音频在 两种音调:一种是“标记”,表示二进制音调;另一个是 “space”表示二进制零。 ... AFSK的优点是编码信号可以通过 交流耦合链路,包括最初设计用于 播放音乐或演讲


在串联电容器中,如果没有其他地方的话,最肯定的是滤波低通和高通。很可能还有各种各样的丑陋处理,比如采样率转换。但您的程序也可能存在问题,例如某些设备上的缓冲区不足。要真正进行诊断,请在不同频率下显示失真输出的图片,并覆盖多个方波周期。你的缓冲区有多大?坏设备上的最小缓冲区大小查询返回什么?包括生成和播放代码也会很有用。你也可以尝试在PC上用Audacity之类的东西将信号创建为.wav文件,或者在程序的某个端口将样本写入文件,验证它是否按需要在那里播放,然后尝试在安卓设备上播放。这将有助于确定这是设备硬件或出厂软件的问题,还是您的程序的问题。嗨@Cris Stratton,这对我的应用程序并不重要,因为如果我从默认音频应用程序(android附带的应用程序)播放wav文件,也会出现问题。我会试着提供一个snapshot@ChrisStratton再读一遍我的问题,我按照你的第二条建议做了。这就是我发疯的原因。我编辑了我的问题。我用这个网站生成了它:迈克尔,非常感谢,我不知道有这样的可能性,即使,现在你告诉我,很明显这是可能的。无论如何,这是一个要求使用方波,你的答案不符合我的要求。要知道我想做什么,请阅读以下内容:请记住,人类的听觉频率仅限于20Khz左右。音频系统通常不被设计为再现远高于此范围的信号(因为人类无论如何都听不到,所以没有必要)。方波的谐波(或高频分量)远远超过20KHz。方波包含的频率成分远远超出了人类的听力和音频系统的能力。看见音频系统的设计目的不是重现这些信号,也不应该期望它重现这些信号