2011-05-03 30 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