2011-05-03 32 views
2

有人可以帮助。当我通过单击按钮调用RequestDeviceAccess时,它总是返回false。Silverlight 4 RequestDeviceAccess()总是返回null。没有对话

下面是代码

公共部分类的MainPage:用户控件 { 私人AudioCaptureDevice _audioDevice; 私人CaptureSource _captureSource; private AudioFormat _format; private MemoryAudioSink _sink;

public MainPage() 
    { 
     InitializeComponent(); 

     _audioDevice = CaptureDeviceConfiguration.GetDefaultAudioCaptureDevice(); 

     if (_audioDevice == null) 
     { 
      return; 
     } 

     _captureSource = new CaptureSource() { AudioCaptureDevice = _audioDevice }; 
     _format = _captureSource.AudioCaptureDevice.SupportedFormats.FirstOrDefault(p => p.WaveFormat == WaveFormatType.Pcm && p.BitsPerSample == 16 && p.SamplesPerSecond == 8000 && p.Channels == 1); 
     _captureSource.AudioCaptureDevice.DesiredFormat = _format; 
    } 

    private bool EnsureAudioAccess() 
    { 
     return CaptureDeviceConfiguration.AllowedDeviceAccess || CaptureDeviceConfiguration.RequestDeviceAccess(); 
    } 

    private void btnStartCapture_Click(object sender, RoutedEventArgs e) 
    { 
     if (!EnsureAudioAccess()) return; 

     _sink = new MemoryAudioSink(); 
     _sink.CaptureSource = _captureSource; 
     _captureSource.Start(); 

     this.media1.SetSource(_sink.BackingStream); 
     this.media1.Play(); 
    } 

} 

回答

1

我遇到了同样的问题,整理出来通过删除如下核查之前设置的所有断点:

return CaptureDeviceConfiguration.AllowedDeviceAccess || CaptureDeviceConfiguration.RequestDeviceAccess(); 

我也不得不试图调用saveFileDialog.ShowDialog时,类似的问题()方法,在其上设置断点。删除了断点和瞧。

希望它有帮助!

1

在调试模式下,它总是返回false。在Release上运行项目。 Ctrl + F5