2013-06-29 30 views
0

我在的Windows Phone 8应用程序下面的代码:麦克风BufferReady事件处理犯规获得的Windows Phone 8应用

 FrameworkDispatcher.Update(); 
     microphone = Microphone.Default; 
     microphone.BufferReady += Device_BufferReady; 
     bStarted = true; 
     tbData.Text = "00:00:00"; 
     m_lDuration = 0; 
     microphone.BufferDuration = TimeSpan.FromMilliseconds(100); 
     baBuffer = new byte[microphone.GetSampleSizeInBytes(microphone.BufferDuration)]; 
     microphone.Start(); 

然而Device_BufferReady从来没有被击中!任何想法,我做错了什么?

+0

你是否在麦克风对象变为空?请检查一次,如果你得到空值,那么请在你的项目中添加'ID_CAP_MICROPHONE'能力 –

+0

不是我真的没有得到空值,是的麦克风能力被添加 – Stacker

回答

0

提供开发中心示例代码(http://code.msdn.microsoft.com/wpapps/Microphone-Sample-b2ebe8b6)作出了为33ms时期,从中调用FrameworkDispatcher.Update()方法使用一个股票的...

 // Timer to simulate the XNA Framework game loop (Microphone is 
     // from the XNA Framework). We also use this timer to monitor the 
     // state of audio playback so we can update the UI appropriately. 
     DispatcherTimer dt = new DispatcherTimer(); 
     dt.Interval = TimeSpan.FromMilliseconds(33); 
     dt.Tick += delegate { try { FrameworkDispatcher.Update(); } catch { } }; 
     dt.Start(); 

你有没有实现这个?

+0

奇怪的是我实现了这个,而不是 public class XNAFrameworkDispatcherService: IApplicationService 但它没有解决问题,但是你的解决方案呢! – Stacker