检查系统音量是不是静音

Posted

技术标签:

【中文标题】检查系统音量是不是静音【英文标题】:Check if system volume is muted检查系统音量是否静音 【发布时间】:2015-03-15 15:45:52 【问题描述】:

我目前正在做一个小项目,我需要检查系统音量是否从 App Delegate 静音。

就像用户mute's/unmute's需要调用函数的音量一样。

我发现了一些关于 AudioToolbox 的东西,但我似乎找不到任何有用的东西。

【问题讨论】:

【参考方案1】:

我知道要查找默认设备是否已静音。首先,您需要查找“默认”音频设备硬件 ID。这可以完成一次并存储在您的程序中。

    var propAddr = AudioObjectPropertyAddress(
        mSelector: AudioObjectPropertySelector(kAudioHardwarePropertyDefaultOutputDevice),
        mScope: AudioObjectPropertyScope(kAudioObjectPropertyScopeGlobal),
        mElement: AudioObjectPropertyElement(kAudioObjectPropertyElementMaster))

    var defaultAudioHardwareID : AudioDeviceID = 0
    var propSize = UInt32(sizeof(uint32))

    let status = AudioHardwareServiceGetPropertyData(AudioObjectID(kAudioObjectSystemObject), &propAddr, 0 , nil, &propSize, &defaultAudioHardwareID)

之后,您可以查看设备是否静音。

    var propAddr = AudioObjectPropertyAddress(
        mSelector: AudioObjectPropertySelector(kAudioDevicePropertyMute),
        mScope: AudioObjectPropertyScope(kAudioObjectPropertyScopeOutput),
        mElement: AudioObjectPropertyElement(kAudioObjectPropertyElementMaster))

    var isMuted: uint32 = 0
    var propSize = UInt32(sizeof(uint32))

    let status = AudioHardwareServiceGetPropertyData(defaultAudioHardwareID, &propAddr, 0, nil, &propSize, &isMuted)


    if isMuted != 0 
        // Do stuff here
        return;
    

不知道有没有办法在静音状态改变时得到通知。

【讨论】:

超级,这正是我所需要的。只需要找到静音状态变化的事件监听器... 我收到此错误:Use of unresolved identifier 'sizeof' @Egghead 你有想过这个吗?

以上是关于检查系统音量是不是静音的主要内容,如果未能解决你的问题,请参考以下文章

微信来消息没声音,怎样才能有声音呢?

Discord.js - 检查用户是不是静音/静音更改

小米手机的媒体声音没了怎么办

为啥电脑没有声音了?

铃声音量滑块,快速

FFmpeg 检查音频通道是不是静音