在Windows Phone 8中更改系统音量

5

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

请问有人知道如何通过编程来实现这个功能吗?我尝试使用MediaElement或xna MediaPlayer和backgroundAudioPlayer,但没有任何作用。任何帮助将不胜感激! 谢谢!


哇!我不知道开发者是如何做到的。这需要进行某种形式的调查! - Martin Zikmund
1
我已经搜索了几个小时了,我真的以为这是不可能的,但它在应用程序中运行,并且不会干扰播放器控件! - user3188746
1
非常感谢你!谢谢!我当然希望如此 :) 是的,这真的很神奇 :D - user3188746
2
我有一种隐隐的感觉,他们使用了这个:http://msdn.microsoft.com/en-us/library/windowsphone/develop/jj681688(v=vs.105).aspx - DotNetRussell
是的,看起来是这样。另一个具有相同功能的应用程序刚刚出现 - http://www.windowsphone.com/en-us/store/app/volume-manager/b128c4c2-46d3-4343-aa68-8f1ea3e88434 - Martin Zikmund
显示剩余7条评论
2个回答

3

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

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

此外,请阅读MSDN论坛上的以下帖子: MSDN 改变Windows Phone 8音量系统。这种功能可能是使用WASAPI实现的(我个人已经尝试过,但失败了,如果您想要我的代码来尝试它,请在评论中提出。),或者音量应用程序的开发人员可能已经可以访问AudioClientRestricted.h。如果一个人拥有该h文件,则可以在WP8.1下访问系统音量,因此我怀疑开发人员是否使用为OEM指定的h文件,因为它将无法在8.1中运行。

Talking with James Dailey (who works @ MSFT) indicates it is technically possible using WASAPI ISimpleAudioVolume. 如果你阅读该页面底部的评论,会有一条指出必须使用IAudioEndpointVolume
来自 MSFT 的 James Dailey 的附注:
据我所知,在Windows Phone 8.1(WP8.1)上没有很好的方法来操纵全局音频级别。理论上,您可以更改使用默认音频会话“零”的任何应用程序的音频音量。但是,如果应用程序选择使用自定义GUID初始化其音频会话,则无法访问其自定义音频会话的会话音量。再次强调,这是基于我对WASAPI内部工作原理的了解,我从未在手机上实际尝试过。
要操作使用音频会话“零”的应用程序的音频音量,只需使用“{00000000-0000-0000-0000-000000000000}”作为AudioSessionGuid参数初始化IAudioClient即可。然后,您可以使用ISimpleAudioVolume :: SetMasterVolume设置此音频会话的音量。由于我们不支持从托管代码调用WASAPI,因此您需要使用C++ / Cx。

0

我在评论中发布了答案。确实有一个库。 - DotNetRussell

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接