播放歌曲,导致WP7在手机上崩溃,但在模拟器上不崩溃


13

我正在尝试在开始播放的游戏中实现歌曲,并通过XNA 4.0在Windows Phone 7上不断循环播放。在模拟器上,这可以正常工作,但是当部署到手机上时,它只是在返回主屏幕之前仅显示黑屏。这是有问题的恶意代码,将其注释掉可使该应用在手机上正常运行:

// in the constructor fields
private Song song;

// in the LoadContent() method
song = Content.Load<Song>("song");

// in the Update() method
if (MediaPlayer.GameHasControl && MediaPlayer.State != MediaState.Playing)
{
    MediaPlayer.Play(song);
}

歌曲文件本身是2:53长的2.28mb .wma文件,比特率为106kbps。

再次,这在模拟器上完美运行,但根本不在手机上运行。感谢您的任何帮助,您可以提供!


4
尝试坚持尝试并检查您遇到的异常。那应该有助于获得一些帮助。
Ray Dey

好建议。引发的异常是“ System.InvalidOperationException:歌曲播放失败,请确认歌曲不受DRM保护。” 另外,我尝试使用编码为MP3的歌曲并获得了相同的结果(在模拟器中工作,在手机中不工作)。附带的问题:是否有一种简单的方法可以在电话上打印/保存调试文本。我唯一的选择是在屏幕上绘制文本,嘿。
Michael Zehnich 2011年

Answers:


13

我们想通了。该信息可在线获得,但确实隐藏得很清楚,因此我将在此处发布以作充分的评估。

基本上,如果将手机连接到计算机并且Zune软件正在运行,它将锁定手机上的媒体,这意味着应用程序中的MediaPlayers将永远无权播放歌曲。

为了使其正常工作,用户必须断开电话的连线(即拔下USB线),或使用专门为调试而设计的Windows Phone Connect工具:http:// msdn。 microsoft.com/en-us/library/gg180729%28v=VS.92%29.aspx-我还没有尝试过该工具,但是解除捆绑就像一个魅力。

另外,如果应用没有播放歌曲的权限,除非处理了异常,否则它将崩溃,因此请确保使用try / catch块。捕获的异常可以简单地忽略。


1
啊,DRM的乐趣。
Jari Komppa)

1
令人高兴的是,正如我想象的那样,令人烦恼的是很多开发人员遇到了这个问题。
Ray Dey

2

Michael Zehnich的答案确实是正确的。但是我偶然发现了另一个导致相同异常的问题。

对我来说,问题是我在WMAppManifest.xml中缺少ID_CAP_MEDIALIB功能。

<Capability Name="ID_CAP_MEDIALIB"/>

希望这可以帮助。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.