0

我提交了一个后台音频应用程序进行认证,但失败了,原因有两个,我不知道为什么。

原因一:

此应用无法正确响应播放、暂停或播放/暂停事件中的至少一个。

我了解需要满足 、 和 的事件,并且已经在代码中这样做(并在它们正在工作的平板电脑和本地设备上进行了测试MediaControlPlay。但是,由于停止媒体流并重新启动它需要比预期更长的时间,我同时使用了“暂停”和“停止”。PauseStopPlayPauseMediaElement.Pause()

我读了另一篇在认证阶段遇到类似问题的帖子。有人建议MediaElement.PlaybackRate = 0;改用。但是,这对于长时间的暂停并不理想,因为流不会继续前进。

我想知道的是我这样做是否正确?对于我的所有MediaControl活动,我已确保该MediaControl.IsPlaying属性也已正确设置。

此外,它失败的另一个原因是:

应用在 Windows ACK 中的性能测试失败。有关详细信息,请参阅以下链接:运行的测试用例:http: //msdn.microsoft.com/en-us/library/windows/apps/hh920274.aspx

我已经针对 ACK 运行了我的应用程序,一切都通过了。我唯一能想到的是,suspend mode当按下硬件(或屏幕上的)媒体控制暂停按钮时,应用程序没有进入。我在App_Suspending事件中放置了一个调试器,但它从来没有命中。

由于描述太模糊,我不确定这是否是问题所在。但如果是这种情况,我能知道如何强制应用进入暂停模式吗?我尝试在Window.Current班级和Application.Current班级中寻找,但无济于事。

谢谢!

4

2 回答 2

0

在发布应用程序近 10 次尝试后,我终于找到了问题的根源,这也感谢微软人员的一些猜测工作。

我的应用程序将在应用程序启动后自动开始MediaElement流式传输。支持后台的音频将阻止应用程序通过 WACK,因为它永远不会进入挂起模式!

因此,为了通过商店的 WACK,我不得不删除自动启动功能,现在应用程序在商店中!(呼)。

于 2013-01-26T07:20:40.480 回答
0

对于您的第一个问题,请确保您的媒体元素已准备好使用:

while (CurrentTrack.CurrentState == MediaElementState.Opening || CurrentTrack.CurrentState == MediaElementState.Buffering)
{
   await Task.Delay(100);
}

CurrentTrack.Play();

此外,当视图卸载时,您必须停止您的媒体元素。

问候。

于 2013-01-24T10:05:54.443 回答