如何为通用 Windows 应用程序获取和设置音频音量级别

7
标题已经说得很清楚了,我想要获取并设置通用Windows (iot) 应用程序的音频音量水平。它可以是与我的特定应用程序相关的声音水平 - 这将是理想的; 或者它可以是系统声音水平 - 如果必要/可能的话。我正在使用Visual Studio 2015。
我一直在搜索示例/样本,但是没有找到。任何帮助都将不胜感激。
(值得注意的是,这不是重复的问题 - 我想要获取并设置通用Windows应用程序的音频音量级别 - 这不能通过uwp中的COM对象完成 - uwp应用程序也不使用VBScript或JScript)

无法从通用 Windows 应用程序访问任意 COM 对象 - 参考:https://dev59.com/bVwY5IYBdhLWcg3w7rn6 - Rob
@Rob-你链接的答案是正确的。 - WiredPrairie
@Codexer - UWP应用程序不使用VBScript或JScript。 - WiredPrairie
通常(至少这是我总是找到解决方案的方式),在C++代码中可以找到C#中不可用的内容,例如系统字体、系统类型(7英寸或更大),明天我可以看看是否有类似的东西。 - Juan Pablo Garcia Coello
5个回答

1

不需要制作WinRT组件。相反,您可以使用P/Invoke来访问win32音频接口。

查看我的代码(Gist)以了解如何在C#中实现此操作。


0

实际上已经有文档记录了这个。

你可以使用IAudioEndpointVolume来获取或设置音频设备的音量,就像我们在桌面应用程序中所做的那样,文档说明它支持Windows Store应用程序。

为了在UWP应用程序中为特定设备激活此接口,您需要使用ActivateAudioInterfaceAsync函数。有UWP示例代码展示如何使用此函数来激活IAudioClient接口。您可以使用相同的方法来激活IAudioEndpointVolume接口。

最后,目前此API仅在C++中可用。如果您想从C#或VB UWP应用程序执行此操作,可以在C++CX中创建一个RuntimeComponent,为您的应用程序提供此功能。


0

1
我尝试深入研究,但无法编写所需的代码。当我深入研究时,我发现了与naudio相匹配的代码;但我也无法让naudio在Windows IoT平台上工作-它不想枚举声音设备。 <抱怨>我简直不敢相信改变音频音量这么简单的事情竟然如此难以解决。</抱怨> - Rob

0

我也曾经在寻找同样的东西,最终找到了我需要的答案。因此,我觉得有义务在这里发布(并分享)我的发现。

如果你想要控制整个系统的音量,可以使用全局声音 API来实现。

ElementSoundPlayer.Volume = 0.5f;

应用程序中的所有声音都可以通过音量控制进行调整。但是,应用程序中的声音无法比系统音量更大。

0

您可以使用MediaPlayer Volume属性控制自己应用程序的音频音量。它不控制整个系统音量,但允许您设置自己应用程序的音量。

https://msdn.microsoft.com/en-us/library/windows/apps/windows.media.playback.mediaplayer.volume.aspx

例如,我有一个视图模型,在其中公开以下属性,并将其绑定到滑块控件的值属性。 (我的滑块的最小值为0,最大值为100,这就是为什么我将MediaPlayer的音量属性的0-1值转换为0-100范围的原因。)
(注意:我还有一个“BackgroundAudioService”单例来包装对后台音频MediaPlayer的引用,就像GitHub上的UWP示例后台音频项目所示,但它只是对MediaPlayer的引用。)
    public double Volume
    {
        get
        {   
            this.volume = (BackgroundAudioService.Instance.CurrentPlayer.Volume * 100);
            return this.volume;
        }

        set
        {
            this.volume = value;
            BackgroundAudioService.Instance.CurrentPlayer.Volume = (this.volume / 100);
            this.RaisePropertyChanged();
        }
    }

如果这个方法不起作用,可以尝试检查和设置系统音量,因为这种方法只控制应用程序的音量。

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