我目前正在开发一个小项目,在该项目中我需要检查应用程序委托(delegate)是否将系统音量静音。
声音与用户静音/取消静音
的音量一样,需要调用函数。
我发现了一些关于 AudioToolbox 的信息,但我似乎找不到任何有效的东西。
最佳答案
我知道查看默认设备是否静音。首先,您需要查找“默认”音频设备硬件 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;
}
不知道是否有办法在静音状态改变时收到通知。
关于xcode - 检查系统音量是否静音,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29062592/