누군가가이 문제를 해결할 수 있기를 바랍니다. Silverlight 응용 프로그램에서 XNA를 사용하여 오디오를 녹음하는 예제를 발견했습니다. 그러나 그것은 처음으로 작동합니다. 나는 별도의 WP7 페이지에 모든 녹음 기능을 가지고 있으며 작동하지 않는 페이지를 연속적으로 방문합니다. 내가 알 수있는 가장 좋은 것은 microphone.start가 호출되고 있지만 micophone.status가 중지 된 상태입니다. 이상한 점은 BufferReady가 계속 호출되고 해당 함수 내의 코드가 모두 실행되고 있지만 마이크가 실제로 시작하지 않고 실제로 일어나고 있다는 것입니다. 앱을 종료하고 처음 방문했을 때 다시 방문하면 모든 것이 정상적으로 작동하지만 페이지를 다시 방문하면 다시 방문하지 않습니다.Windows Phone 7 오디오 녹음 문제
void microphone_BufferReady(object sender, EventArgs e)
{
this.Dispatcher.BeginInvoke(() =>
{
microphone.GetData(buffer);
stream.Write(buffer, 0, buffer.Length);
TimeSpan tsTemp = timer.Elapsed;
TextBlockSeconds.Text = tsTemp.Hours.ToString().PadLeft(2, '0') + ":" + tsTemp.Minutes.ToString().PadLeft(2, '0') + ":" + tsTemp.Seconds.ToString().PadLeft(2, '0');
if(timer.Elapsed.Seconds >5)
DoStop();
});
}
private void ButtonRecord_Click(object sender, RoutedEventArgs e)
{
DisableRecordButton();
timer = new Stopwatch();
timer.Start();
stream = new MemoryStream();
TextBlockSeconds.Text = "00:00:00";
TextBlockStatus.Text = "Recording: ";
microphone.BufferDuration = TimeSpan.FromMilliseconds(500);
buffer = new byte[microphone.GetSampleSizeInBytes(microphone.BufferDuration)];
microphone.BufferReady += new EventHandler<EventArgs>(microphone_BufferReady);
microphone.Start();
}
private void DoStop()
{
if (timer.IsRunning)
timer.Stop();
if (microphone.State == MicrophoneState.Started)
{
microphone.Stop();
TextBlockStatus.Text = "Stopped: Ready to save";
}
else
{
TextBlockStatus.Text = "Ready: ";
}
TextBlockSeconds.Text = string.Empty;
EnableRecordButton();
}
업데이트 ... 문제점을 발견했지만 해결책이 없습니다. 마이크에 전화를 걸었습니다. 타이머에서 코드를 통해 정지합니다 (녹음 된 오디오를 5 초로 제한 할 수 있음). 수동 중지 버튼을 클릭했을 때 실행되는 똑같은 코드입니다. 수동 중지 버튼을 클릭하면 모든 것이 정상적으로 작동하고 페이지를 다시 방문하면 모든 것이 정상적으로 진행될 수 있습니다. 타이머에서 코드에서 정지가 호출되면 다음에 페이지를 방문하면 작동하지 않습니다. 그래서 수동 중지 버튼만으로 구현했지만 실제로 자동으로 (그리고 실제 문제가 무엇인지 알기 위해) 좋았을 것입니다.
우리가하는 일을 볼 수 있도록 코드를 게시하십시오. –