私は誰かがこれを手伝ってくれることを願っています。 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();
}
更新... 問題は見つかりましたが解決策は見つかりませんでした。私はタイマーのコードを介してmicrophone.stopを呼び出していたので(録音されたオーディオを5秒に制限することができた)手動停止ボタンがクリックされたときに実行するのとまったく同じコード。手動停止ボタンをクリックするとすべて正常に動作し、ページを再訪問しても問題ありません。タイマーのコードで停止が呼び出されたときには、次にページにアクセスしても機能しませんでした。だから私は手動停止ボタンだけで実装しましたが、本当にそれを自動的に(そして本当の問題が何であるかを知るために)うれしく思います。
あなたのしていることを見ることができるようにコードを投稿してください。 –