2011-05-10 254 views
4

我试图在monououch中播放声音文件,但在一两秒钟后就会中断。这里是我用来播放声音的代码:Monotouch声音无法正常播放

SoundFileName = filename; 
var sound = SystemSound.FromFile(filename); 
sound.PlaySystemSound(); 

这是我试图播放的MP3文件。我再次听到它,然后它被切断。之后我添加了一个thread.sleep()行,然后它会一直播放。

但这并不理想,因为我播放的mp3文件的长度可能会有所不同。任何帮助将不胜感激。谢谢。

回答

6

您需要在窗体或类级别声明sound对象。在您发布的示例中,sound仅限于该函数的范围,因此只要方法结​​束,该变量就会超出范围,并在声音播放完毕之前放置。 Thread.sleep工作原因是该呼叫阻止该方法结束一段时间(并因此阻止sound超出范围)。

+0

甜,谢谢。当我回家时我会试试这个。 – Shaz 2011-05-10 16:06:55

+0

完美运作。谢谢! – Shaz 2011-05-11 00:09:59

+0

非常感谢,被困在MT积极的GC :( – 2013-05-30 00:13:29

0

您可能也想看看这个问题:Playing a sound with MonoTouch

我不认为SystemSound旨在开放时间的MP3的使用。

+0

iOS中的AVAudioPlayer(我假设是MonoTouch包装的)与.NET中的SoundPlayer相同 - 它在开始播放之前预先加载整个文件,这意味着它对于歌曲长度的MP3也不是很理想。我不知道,也许MonoTouch通过包装一个不同的iPhone API来实现'SoundPlayer'(至少有3个可以选择我所知道的)? – MusiGenesis 2011-05-10 01:08:35