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

时间:2016-01-02 05:28:41

标签: .net vb.net audio uwp iot

标题说明了一切,我想获得并设置通用Windows(iot)应用程序的音量级别。

它可以是与我的特定应用程序相关的声级 - 这是理想的;或者它可以是系统声级 - 如果必要/可能。

我正在使用visual studio 2015

我一直在寻找示例/样本,但已经干了。

任何帮助都将不胜感激。

(注意这不是一个重复的问题 - 我想获取和设置通用Windows应用程序的音量级别 - 这不能通过uwp中的COM对象完成 - uwp应用程序也不使用VBScript或JScript)< / p>

5 个答案:

答案 0 :(得分:0)

查看此源代码:https://github.com/File-New-Project/EarTrumpet

它将包含您正在寻找的内容。

答案 1 :(得分:0)

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

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

例如,我有一个视图模型,其中我公开了以下属性,并且我有一个滑块控件的value属性绑定。 (我的滑块的Min为0,其Max为100,这就是为什么我将MediaPlayer的volume属性的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();
        }
    }

如果这不起作用,可以尝试检查并设置系统的音量,因为此方法仅控制应用的音量。

答案 2 :(得分:0)

我一直在寻找同样的东西,我找到了我想要的东西。所以,我觉得有义务在这里发布(和分享)我的发现。

为了控制整个系统音量,您可以使用Sound Global API

ElementSoundPlayer.Volume = 0.5f;
  

应用程序中的所有声音都可以通过音量控制变暗。但是,应用程序内的声音不能比系统音量大。

答案 3 :(得分:0)

实际上它是记录在案的。

您可以使用IAudioEndpointVolume获取或设置音频设备的音量,就像我们以前在桌面应用中使用的那样,文档指出它在Windows应用商店应用中受支持。

要在UWP应用中为特定设备激活此界面,您需要使用ActivateAudioInterfaceAsync功能。有UWP sample codes显示如何使用此函数激活IAudioClient接口。您可以对IAudioEndpointVolume界面执行相同的操作。

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

答案 4 :(得分:0)

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

在C#中查看my code (Gist)如何执行此操作。