在Windows Phone 8中更改系统卷

到目前为止,我认为从您的应用程序更改系统卷是不可能的,直到最近一个名为Quite Hours的新应用程序( http://www.windowsphone.com/en-us/store/app/quiet-hours/f347a36b-80c0 -430f-8631-e55046ee5a2a )实际上是以非常简洁的方式做到了这一点。

有没有人请以编程方式知道如何做到这一点? 我尝试使用MediaElement或xna MediaPlayer和backgroundAudioPlayer,但没有任何效果。 任何帮助,将不胜感激! 谢谢!

OP中提到的应用程序的开发人员能够在WP8.0下更改系统卷。 显然,他们使用的任何方法现在都已在WP8.1下被禁用。 以下应用程序现在显示不再适用于Windows Phone 8.1的免责声明: 安静时间和卷管理器

他们指向以下页面进行投票以允许此function: Windows Phone Dev用户语音

另外,请阅读MSDN论坛上的以下主题: MSDN更改系统卷Windows Phone 8 。 这个function很可能是使用WASAPI实现的(我已经亲自尝试过,但是失败了,它不起作用,如果你想让我的代码尝试它就发表评论。),或者卷应用程序的开发人员可能有权访问AudioClientRestricted.h 。 如果有一个h文件,那么可以访问WP8.1下的系统卷,所以我不知道开发人员是否使用了为OEM指定的h文件,因为它可以在8.1版本中运行。

与James Dailey(谁工作@ MSFT)交谈表明在技术上可以使用WASAPI ISimpleAudioVolume如果你读@页面的底部有一条注释表明你必须使用IAudioEndpointVolume

James Dailey @ MSFT补充说明:

AFAIK没有很好的方法来操纵Windows Phone 8.1(WP8.1)上的全局音频级别。 从理论上讲,您可以更改使用默认音频会话“零”的任何应用程序的音量。 但是,如果应用程序选择使用自定义GUID初始化其音频会话,则无法访问其自定义音频会话的会话卷。 根据我对WASAPI内部运作的了解,这也是理论上的。 我从来没有在手机上试过它。
要使用音频会话“零”操作应用程序的音频音量,您只需使用AudioSessionGuid参数“{00000000-0000-0000-0000-000000000000}”初始化您的IAudioClient。 然后,您可以使用ISimpleAudioVolume :: SetMasterVolume设置此音频会话的音量。 您将需要使用C ++ / Cx,因为我们不支持从托管代码调用WASAPI。

目前没有可用于控制系统卷的API。 但是,您可以控制应用程序元素中的卷(通过类MediaElement,BackgroundAudioAgent)。 您还可以使用XNA API控制应用程序的音效音量。 请参阅http://msdn.microsoft.com/en-us/library/bb195052%28v=xnagamestudio.30%29.aspx