C# 第二次使用第二页时无法使用麦克风
在我应用程序的一个页面中,我通过麦克风录制。 只要我停留在那个页面上,我就可以停下来重新录制 但当我离开页面返回并按record时,麦克风什么也听不到。结果是静音 这是构造函数C# 第二次使用第二页时无法使用麦克风,c#,xna,C#,Xna,在我应用程序的一个页面中,我通过麦克风录制。 只要我停留在那个页面上,我就可以停下来重新录制 但当我离开页面返回并按record时,麦克风什么也听不到。结果是静音 这是构造函数 private byte[] _buffer; private int _passedSecs = 0; private const string RECORDFILE = "newrecording.wav"; private Microphone _mic = Microphone.Default; privat
private byte[] _buffer;
private int _passedSecs = 0;
private const string RECORDFILE = "newrecording.wav";
private Microphone _mic = Microphone.Default;
private MemoryStream _stream = new MemoryStream();
private DispatcherTimer _framework;
public MyPage()
{
InitializeComponent();
_framework = new DispatcherTimer();
_framework.Interval = TimeSpan.FromMilliseconds(33);
_framework.Tick += _framework_Tick;
_mic.BufferReady += _mic_BufferReady;
}
private void _mic_BufferReady(object sender, EventArgs e)
{
_mic.GetData(_buffer);
_stream.Write(_buffer, 0, _buffer.Length);
var isoStore = IsolatedStorageFile.GetUserStoreForApplication();
var targetFile = isoStore.CreateFile(RECORDFILE);
WavHeaderWriter.WriteHeader(targetFile, (int)_stream.Length, 1, _mic.SampleRate);
var dataBuffer = _stream.GetBuffer();
targetFile.Write(dataBuffer, 0, (int)_stream.Length);
targetFile.Flush();
targetFile.Close();
}
这是我的记录
private async void startRecording()
{
_framework.Start();
_mic.BufferDuration = TimeSpan.FromMilliseconds(500);
_buffer = new byte[_mic.GetSampleSizeInBytes(_mic.BufferDuration)];
_stream.SetLength(0);
_mic.Start();
}
我在这里停下来
private void stopRecording()
{
var isoStore = System.IO.IsolatedStorage.IsolatedStorageFile.GetUserStoreForApplication();
IsolatedStorageFileStream _data = isoStore.OpenFile(RECORDFILE, FileMode.Open);
SoundEffect sound = SoundEffect.FromStream(_data);
_data.Close();
sound.Play();
_mic.Stop();
_framework.Stop();
isoStore.Dispose();
}
您应该在
PageNavigatedFrom
事件中取消订阅麦克风事件
(从该页面导航时触发的事件)