Windows Phone 7 – 写一个会Record Audio的录音程式
来源:互联网 发布:centos中文输入法 编辑:程序博客网 时间:2024/05/19 16:47
Windows Phone 7 – 写一个会Record Audio的录音程式
过去在唸书的时候总是会看到同学带着录音笔去参加meeting或是上课,担心会漏掉上课的种种内容,随着智慧手机的发展,
有很多App都方便地透过内键的麦克风录下声音,不需在另外带一个设备来录音。然而录音的程式在Windows Mobile时代很容易做到,
透过一些内键的API与取得麦克风的Instance即可以完成功能,那么在WP7内要怎么实作呢?往下便仔细的来介绍有那些API可以使用。
〉Micorsoft.Xna.Framework.Audio:
在WP7裡,要实作一个支援录音的程式,主要是透过Micorsoft.Xna.Framework.Audio裡的Microphone类别,
由于相关多媒体资源存取的功能都纳入在XNA系列裡,相关图片、音乐、影片这些资源要使用到XNA的Dll就对了。
不过这有点扯远了,接下来在介绍撰写一个录音程式前,有几个重要的类别我觉得要先认识一下:
a. Microphone Class:
该类别提供了丰富的属性、方法与事件来透过手机麦克风来撷取声音。在使用前有几个重要的属性(均是唯读):
类别名称说明属性All静态属性,回传目前设备可用的麦克风集合。例如:手机内键的麦克风、蓝芽耳机的麦克风或连接式耳麦。 Default静态属性,回传预设设备使用的麦克风类型。如果回传是null代表该设备不支援麦克风,预设麦克风即为手机的内键麦克风。 BufferDuration设定/取得麦克风撷取声音时,录音资料写入缓衝区对应的容纳时间长度。换句话说,为撷取声音长度达到设定的缓衝大小时,代表已达容纳时间长度需触发BufferReady事件。举个例子说明:当设定「Microphone.BufferDuration = TimeSpan.FromMilliseconds(1000)」代表当麦克风撷取声音长达1秒后,立刻触发BufferReady事件。
BufferDuration可设定容纳时间範围:100毫秒至1000毫秒(1秒)。超过或低于会发生ArgumentOutOfRangeException例外事件。
IsHeadset识别目前设备是否有外接麦克风,不管是接线式或蓝芽耳机,如果有为true;没有为false。 SampleRate回传麦克风撷取声音资料的採样率,以Hertz (Hz)为单位。 State回传麦克风目前运作的状态,值为MicrophoneState列举,包括:Started、Stoped。 方法GetData取得由麦克风撷取声音资料的最新缓衝区资料,以byte array为单位。
该方法为多载的方式,可以指定要撷取的範围(Byte[], start, length)或是整个Byte[]回传。 GetSampleDuration回传指定麦克风录音的资料大小为对应的时间长度。举例来说,录音声音byte array大小为3200,透过「TimeSpan duration = Microphone.GetSampleDuration(totalSize)」指定取得的回传值为约7秒。 GetSampleSizeInBytes回传指定麦克风录音的容纳时间长度对应于Bytes的大小,该回传值代表该录音档案需要byte arrray大小。 Start启动录音程序。 Stop结束录音程序。 事件BufferReady当撷取声音的缓衝被填满后,即触发该事件。代表实作该事件时,可以透过GetData方法取得目前已被写入缓衝的录音资料(byte array)。
由上表可以看出几个重要的属性:
BufferDuration:指定要录音的时间长度,透过TimSpan做为设定的时间长度,以毫秒为单位;
GetSampleSizeInBytes:根据指定的时间长度转换成对于byte arrary的大小;
BufferReady:代表该事件触发时,可以取得真正被录好的binary资料,将binary资料写成档案即可以进行播放。
[注意事项]
在使用Microphone类别进行录音时,有一件事是需要注意的那就是需要去执行:「FrameworkDispatcher.Update();」。
为什么呢?由于在XNA中每33fp就会更新画面一次,但在Silverlight Application并没有这样的机制,为了确保录音的功能
持续的更新状态与进行撷取动作,因此,需要透过指定一个定期执行「FrameworkDispatcher.Update();」的事件。
详细说可参考。
- Windows Phone 7 – 写一个会Record Audio的录音程式
- Record Audio(录音)
- ubuntu skype 录音-Record Audio
- 安装Linux 录音软件 Record Audio
- 安装Linux 录音软件 Record Audio
- 安卓使用Audio Record自定义录音
- windows phone开发学习--录音
- windows phone开发学习--录音
- Windows Phone的录音与回放实现(个人记录)
- 第一篇windows phone 7博客:windows phone 7 上编写录音软件全纪录
- 第一篇windows phone 7博客:windows phone 7 上编写录音软件全纪录
- 微软Windows Phone 7打了一个漂亮的翻身仗
- audio录音在JAVA层的调用
- 在Windows Phone 7当中撰写导航程式WP7 SDK 7.1 (Mango)
- 一个菜鸟的Windows Phone开发日志
- 一个奇怪的程式
- 微软会对 Windows Phone 7 收费吗?
- Record录音简介
- java------集合Map
- 里面有qq农场的WZ132
- SSH 框架下OSCache配置
- 基于大规模语料的新词发现算法
- mysql的TIMESTAMP类型,是否在insert时自动标记时间日期?
- Windows Phone 7 – 写一个会Record Audio的录音程式
- ICE Manual(Documentation for Ice 3.5)---The Ice Protocol(Protocol Compression)
- mysql 远程连接
- MC新手入门(四十五)------游戏网络功能二
- oracle 单表 备份
- ICE Manual(Documentation for Ice 3.5)---The Ice Protocol(Protocol and Encoding Versions)
- Spring MVC学习(七)-------SpringMVC数据类型转换
- android绘制view的过程之一---------计算view大小(measure)
- Android Studio设置主题 和 不支持中文的问题解决方法