在macOS的音频设备管理中,是使用AudioObjectID来唯一标识一个音频设备的。而对于系统来说,同时只能有一个声音输入和输出设备。
1. 如何获取系统默认的声音输出设备:
UInt32 defaultOutputDeviceID;
UInt32 size = sizeof(UInt32);
OSStatus ret = AudioHardwareGetProperty(kAudioHardwarePropertyDefaultOutputDevice,
&size,
&defaultOutputDeviceID);
if (ret != noErr) {
NSLog(@"get default output device error: %i", ret);
}
2. 如何获取系统默认的声音输入设备:
UInt32 defaultInputDeviceID;
UInt32 size = sizeof(UInt32);
OSStatus ret = AudioHardwareGetProperty(kAudioHardwarePropertyDefaultInputDevice,
&size,
&defaultInputDeviceID);
if (ret != noErr) {
NSLog(@"get default input device error: %i", ret);
}
假如应用需要临时修改系统默认的声音输入和输出设备,就可以通过以上两种办法获取默认输入和输出声音设备ID,然后将系统默认设备修改为自己指定的设备(可以是虚拟声音设备、蓝牙耳机、USB麦克风等),在功能使用结束之后再还原到之前保存的系统默认设备。
3. 如何设置系统默认声音输出设备:
UInt32 size = sizeof(UInt32);
OSStatus ret = AudioHardwareSetProperty(kAudioHardwarePropertyDefaultOutputDevice,
size,
&deviceID);
if (noErr != ret)
{
NSLog(@"set default output device error: %i", ret);
}
4. 如何设置系统默认声音输入设备:
UInt32 size = sizeof(UInt32);
OSStatus ret = AudioHardwareSetProperty(kAudioHardwarePropertyDefaultInputDevice,
size,
&deviceID);
if (noErr != ret)
{
NSLog(@"set default input device error: %i", ret);
}