2011-12-13 53 views
4

我正在創建一個小型警報,在開始警報之前,必須將揚聲器音量設置爲最大值。每件事都在起作用,但我不知道揚聲器的最大價值是多少。你們有人知道嗎,或者知道我在哪裏可以找到它?什麼是最大聲級

這裏是我設置的揚聲器的音量:

defaultDevice.AudioEndpointVolume.MasterVolumeLevel = 1; 

BR

+0

我猜最大將是100? –

+0

這與WPF或.net-4.0無關,所以我刪除了這些標籤。你在使用什麼音頻庫? –

+0

應該是11.這樣,如果有人把它一直在10,但希望它有點大聲,他們可以把它變成11. /脊柱Tap。 – PaulG

回答

4

隨着你的提示,我找到了答案。我的問題的正確答案是:

defaultDevice.AudioEndpointVolume.MasterVolumeLevel = defaultDevice.AudioEndpointVolume.VolumeRange.MaxdB; 

感謝您的幫助

2

看一看IAudioEndpointVolume::GetVolumeRange API。它會以分貝爲單位給出音量範圍。

+0

嘿,我有這兩個音頻設備'私人只讀MMDeviceEnumerator devEnum =新MMDeviceEnumerator(); 私人只讀MMDevice defaultDevice;'但我找不到getVolumeRange - 只有一個VolumeRange,我不知道如何使用。你能給我一個例子嗎? – Sulby

+0

剛剛得到它我自己 – Sulby

1

如果您使用的是IAudioEndpointVolume接口,則它具有一個GetVolumeRange方法,以分貝爲單位獲取音量範圍。

+0

嘿,我有這兩個音頻設備'私人只讀MMDeviceEnumerator devEnum =新的MMDeviceEnumerator(); 私人只讀MMDevice defaultDevice;'但我找不到getVolumeRange - 只有一個VolumeRange,我不知道如何使用。你能給我一個例子嗎? – Sulby

+0

剛剛得到它我自己 – Sulby

+1

你所看到的是C++和C#之間的區別。聯機文檔適用於C++,它沒有屬性,因此使用Get和Set前綴。在C#中,相同的方法變成屬性,所以Get/Set前綴對你來說是隱藏的。 – Polyfun