Android手机麦克端的数据采集与显示
摘 要: 以Android平台为基础,设计了一种通过Android手机的麦克端采集数据信号的方案,不仅扩展了数据采集的方法,同时也把Android平台应用到工程领域中。关键词: Android;嵌入式;麦克;数据采集;数据显示
Android是一个开放、自由的移动终端平台,其开放性保证了该平台不存在任何阻碍移动产业创新的专有权障碍,一经推出就深受业内人士的认可。随着电子科技的发展,Android平台不仅仅应用于移动互联网上的开发,在工程上的开发前景也得到了广泛的关注[1]。 Android平台使用Java语言进行开发,支持SQLite数据库、2D/3D图形加速、多媒体播放和摄像头等硬件设备,并设置了丰富的应用程序,如电子邮件客户端、闹钟、Web浏览器、计数器、通信录和MP3播放器等。Android采用了软件堆层(Software Stack)的架构,共分为4层:第一层是Linux内核,提供由操作系统内核管理的底层基础功能;第二层是中间件层,由函数库和Android运行时所需的虚拟机构成;第三层是应用程序框架层,提供了Android平台基本的管理功能和组件重用机制;第四层是应用程序层,提供了一系列核心应用程序[2]。数据信号的采集一般是通过USB、蓝牙、WiFi等方法,而本文是通过Android手机的麦克端来采集数字信号,从而实现了一种新型的数据采集的方法。1 硬件系统设计1.1 硬件结构 Android手机的麦克端不能接收任意频率的信号,只能接收频率在20 Hz~20 kHz范围内(即达到音频信号的范围)的信号,因为只有音频信号才能被人耳听到,才能被麦克采集到。本文采集的信号是一电压信号,而电压信号不能直接被Android手机的麦克端接收。因此在硬件系统设计中,需要把电压信号转换成频率范围在20 Hz~20 kHz之间的频率信号,即达到音频信号的标准。电压信号转换成频率信号的方法有很多,本文采用V/F转换器LM331实现把电压信号转换成频率在20 Hz~20 kHz范围内的音频信号,其硬件框图。
经调整电路后的频率信号就是标准的音频信号了,但信号并不能直接连接到送话器让Android手机的麦克端接收,因为不能保证周围绝对安静, 误差会很大,而是要把音频信号与耳机中的送话器线相连,再把耳机与Android手机相连,这样就可以大大减少失真的程度。1.2 V/F转换器LM331模块 LM331是美国NS公司生产的性价比较高的集成芯片,它是当前最简单的一种高精度V/F转换器,将电压信号转换成脉冲频率信号,输出频率严格正比于输入电压。LM331为双列直插式8引脚芯片,线性度好,最大非线性失真小于0.01%,工作频率为0.1 Hz时仍有较好的线性;变换精度高,分辨率可达16位;外接电路简单,只需接入几个外部元件就可方便地构成V/F转换器,并且容易保持转换精度。LM331在4.0 V的电压供电的情况下,就可在整个工作温度范围内高精度地工作[3]。V/F转换电路。
2 音频格式 音频的格式有很多种,但在Android的API中与音频有关的包是android.media,其中有两个类是与音频采集有关的,分别是MediaRecorder和AudioRecord。用Media-Recorder采集的音频信号经过压缩编码后变成的声音数据为AMR格式。但因为数据是被压缩的,所以在读取数据时,要面临解压缩的问题。而用AudioRecord采集音频可以直接获得无压缩的PCM数据,即可以直接读取音频数据,数据不再需要解压缩。基于AudioRecord的方便性与实用性,本文采用AudioRecord来采集音频信号。 脉冲编码调制PCM(Pulse Code Modulation)是将音频数字化的最好途径,声音经过麦克风,转换成一系列电压变化的信号。要将这样的信号转换成PCM格式,要使用声道数、采样位数和采样频率3个参数来表示声音:(1)声道数可分为单声道和立体声,单声道即用一个传声器拾取声音,用一个扬声器来播放声音;而立体声则是由两个传声器轮流拾取声音,用两个扬声器来播放声音。(2)采样位数即采样值,它是用来衡量声音动态波动变化的一个参数,其值越大,分辨率就越高,在
Android提供的API中,所提供的分辨率有8 bit和16 bit两种。(3)采样频率(即取样频率)指的是每秒钟采得声音样本的次数,采样频率越高,声音的质量也就越好,声音的还原越真实,同时它占用的资源也比较多。通常选用的采样频率一般有11 025 Hz、22 050 Hz和44 100 Hz。11 025 Hz、8 bit的声音称为