我提交了一个后台音频应用程序进行认证,但由于两个原因而失败,我无法弄清楚原因。
原因一:
此应用程序无法正确响应至少一个播放, 暂停或播放/暂停事件。
我知道需要满足Play
、Pause
、Stop
和PlayPause
的MediaControl
事件,并且已经在代码中这样做了(并在平板电脑和本地设备上进行了测试)。但是,由于停止媒体流并重新启动它需要比预期更长的时间,因此我对"暂停"和"停止"都使用了MediaElement.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
班上寻找,但无济于事。
谢谢!
对于您的第一个问题,请确保您的媒体元素已准备好使用以下方法播放:
while (CurrentTrack.CurrentState == MediaElementState.Opening || CurrentTrack.CurrentState == MediaElementState.Buffering)
{
await Task.Delay(100);
}
CurrentTrack.Play();
此外,您必须在视图卸载时停止媒体元素。
问候。
在发布该应用程序近 10 次尝试后,我终于找到了问题的根源,这要归功于 Microsoft 的人们的一些猜测工作。
我的应用将在应用启动后自动启动MediaElement
流式传输。支持后台的音频将阻止应用程序通过 WACK,因为它永远不会进入挂起模式!
因此,为了通过商店的WACK,我不得不删除自动启动功能,现在该应用程序已在商店中!(噗)。