首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > 移动开发 >

怎么在WP7下录制音频

2012-11-08 
如何在WP7上录制音频 这篇文章展示了如何在Windows Phone 7上录制音频。简介通过windows phone设备的麦克风

如何在WP7上录制音频
怎么在WP7下录制音频 怎么在WP7下录制音频怎么在WP7下录制音频这篇文章展示了如何在Windows Phone 7上录制音频。
简介
通过windows phone设备的麦克风来录制音频是非常容易的。Microsoft.Xna.Framework.Audio.Microphone支持这项功能:
    Start-从话筒中捕捉音频
    Stop-停止从话筒中捕捉音频
    GetData-将数据从话筒中转换到缓冲区中 
下面的示例代码假设在应用程序网页上有三个按钮- start, stop和 play。
参考和初始化
在Silverlight应用程序中使用话筒,我们提到了Microsoft.Xna.Framework,我们将它们加入到应用程序网页中来实施录制。
using System.IO;using System.Windows.Threading;using Microsoft.Xna.Framework;using Microsoft.Xna.Framework.Audio;
并声明下面这些变量:
Microphone microphone = Microphone.Default;    byte[] buffer;    MemoryStream stream = new MemoryStream();    SoundEffect sound;
开始录制
下面这些代码显示了如何使用话筒来录制音频:
private void recordButton_Click(object sender, RoutedEventArgs e){    microphone.BufferDuration = TimeSpan.FromMilliseconds(1000);    buffer = new byte[microphone.GetSampleSizeInBytes(microphone.BufferDuration)];    microphone.Start();}
停止录制
停止录制音频的代码:
private void stopButton_Click(object sender, RoutedEventArgs e){    if (microphone.State == MicrophoneState.Started)    {        microphone.Stop();    }}
捕获缓存区中的记录
为了捕获缓存区中的记录,我们需要在页面中的构造函数里添加事件处理程序。
microphone.BufferReady += new EventHandler<EventArgs>(microphone_BufferReady);
并使用下面的event handler 代码
void  microphone_BufferReady(object sender, EventArgs e){    microphone.GetData(buffer);    stream.Write(buffer, 0, buffer.Length);}
播放录制的音频
在录制完成后进行播放
private void playButton_Click(object sender, RoutedEventArgs e){    sound = new SoundEffect(stream.ToArray(), microphone.SampleRate, AudioChannels.Mono);    sound.Play();}
最后但并非不重要
为了使我们上述所介绍的代码能够运行,我们需要做更多的工作,当我们在Silverlight应用程序中使用XNA Game Studio,我们就需要模拟Game循环来使我们的程序能够正常的实施。定义下面的App.class XNAAsyncDispatcher类并将它添加到App()构造函数的下一行。
ApplicationLifetimeObjects.Add(new XNAAsyncDispatcher(TimeSpan.FromMilliseconds(50))); public class XNAAsyncDispatcher : IApplicationService{    private DispatcherTimer _frameworkDispatcherTimer;    public XNAAsyncDispatcher(System.TimeSpan dispatchInterval)    {        FrameworkDispatcher.Update();        this._frameworkDispatcherTimer = new DispatcherTimer();        this._frameworkDispatcherTimer.Tick += newEventHandler(frameworkDispatcherTimer_Tick);        this._frameworkDispatcherTimer.Interval = dispatchInterval;    }    void IApplicationService.StartService(ApplicationServiceContext context)    {        this._frameworkDispatcherTimer.Start();    }      void IApplicationService.StopService()    {        this._frameworkDispatcherTimer.Stop();    }      void frameworkDispatcherTimer_Tick(object sender, EventArgs e)    {        FrameworkDispatcher.Update();   }}
 怎么在WP7下录制音频 怎么在WP7下录制音频

热点排行