在Windows Phone 8中更改系统卷

时间:2014-01-13 02:36:48

标签: c# windows-phone volume

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

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

2 个答案:

答案 0 :(得分:3)

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

他们指向以下页面进行投票以允许此功能:Windows Phone Dev User Voice

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

与James Dailey(谁工作@ MSFT)交谈表明在技术上可以使用WASAPI AudioClientRestricted.h如果您在该页面的底部阅读@,则表示您必须使用ISimpleAudioVolume

James Dailey @ MSFT补充说明:

  

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

答案 1 :(得分:0)

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