windows phone 7 通過麥克風錄音,並且播放

來源:互聯網
上載者:User
 
//類比XNA的架構(凡是在wp7中應用xna的都必須先類比此類)
public class XNAAsyncDispatcher : IApplicationService         {             private DispatcherTimer frameworkDispatcherTimer;             public XNAAsyncDispatcher(TimeSpan dispatchInterval)             {                 this.frameworkDispatcherTimer = new DispatcherTimer();                 this.frameworkDispatcherTimer.Tick += new EventHandler(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();            }      }
在App 建構函式裡寫this.ApplicationLifetimeObjects.Add(new XNAAsyncDispatcher(TimeSpan.FromMilliseconds(50)));當程式激動時就開始類比XNA GameTimer
//後代代碼using System;using System.Collections.Generic;using System.Linq;using System.Net;using System.Windows;using System.Windows.Controls;using System.Windows.Documents;using System.Windows.Input;using System.Windows.Media;using System.Windows.Media.Animation;using System.Windows.Shapes;using Microsoft.Phone.Controls;using System.IO;using Microsoft.Xna.Framework.Audio;namespace Wp7_錄音{    public partial class MainPage : PhoneApplicationPage    {        // Constructor        public MainPage()        {            InitializeComponent();            mic.BufferReady += Default_BufferReady;                        SoundEffect.MasterVolume = 1.0f;           }        MemoryStream ms;        Microphone mic = Microphone.Default;                   // Wire up an event handler so we can empty the buffer when full                 // Crank up the volume to max                    // When the buffer's ready we need to empty it                // We'll copy to a MemoryStream                // We could push into IsolatedStorage etc               void Default_BufferReady(object sender, EventArgs e)                {                         byte[] buffer = new byte[1024];            int bytesRead = 0;                          while ((bytesRead = mic.GetData(buffer, 0, buffer.Length)) > 0)                             ms.Write(buffer, 0, bytesRead);                }                   // The user wants to start recording. If we've already made                  // a recording, close that MemoryStream and create a new one.                // Start recording on the default device.                 private void start_Click(object sender, RoutedEventArgs e)                 {                         if (ms != null)                ms.Close();                          ms = new MemoryStream();                          mic.Start();               }                  // The user wants to stop recording. Checks the microphone               // is stopped. Reset the MemoryStream position.                 // Play back the recording. Pitch is based on slider value                private void stop_Click(object sender, RoutedEventArgs e)                 {                        if (mic.State != MicrophoneState.Stopped)                                mic.Stop();                         ms.Position = 0;                           SoundEffect se =  new SoundEffect(ms.ToArray(), mic.SampleRate, AudioChannels.Mono);                     //se.Play(1.0f, (float)slider1.Value, 0.0f);                se.Play();        }     }}

本執行個體UI就兩個Button  一個start 一個stop, 還有一個滑動條  Silder.

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.