(코드 스위프트 3 업데이트, 스위프트 2 버전은 편집 역사에 찾을 수 있습니다.)
이 내가 (오류가 생략 검사 스위프트에 Change OS X system volume programmatically에 대한 답변과 Setting Mac OSX Volume Programatically using XCode 번역에서 가져온 것입니다) 간결함을 위해 :
필수 프레임 워크 :
import AudioToolbox
가져 오기 기본 출력 장치 :
var defaultOutputDeviceID = AudioDeviceID(0)
var defaultOutputDeviceIDSize = UInt32(MemoryLayout.size(ofValue: defaultOutputDeviceID))
var getDefaultOutputDevicePropertyAddress = AudioObjectPropertyAddress(
mSelector: AudioObjectPropertySelector(kAudioHardwarePropertyDefaultOutputDevice),
mScope: AudioObjectPropertyScope(kAudioObjectPropertyScopeGlobal),
mElement: AudioObjectPropertyElement(kAudioObjectPropertyElementMaster))
let status1 = AudioObjectGetPropertyData(
AudioObjectID(kAudioObjectSystemObject),
&getDefaultOutputDevicePropertyAddress,
0,
nil,
&defaultOutputDeviceIDSize,
&defaultOutputDeviceID)
설정 볼륨 : 많은 인수 필요가 스위프트에 명시 적으로 매개 변수 형식으로 변환 할 수 있기 때문에
var volume = Float32(0.50) // 0.0 ... 1.0
var volumeSize = UInt32(MemoryLayout.size(ofValue: volume))
var volumePropertyAddress = AudioObjectPropertyAddress(
mSelector: AudioObjectPropertySelector(kAudioHardwareServiceDeviceProperty_VirtualMasterVolume),
mScope: AudioObjectPropertyScope(kAudioDevicePropertyScopeOutput),
mElement: AudioObjectPropertyElement(kAudioObjectPropertyElementMaster))
let status2 = AudioObjectSetPropertyData(
defaultOutputDeviceID,
&volumePropertyAddress,
0,
nil,
volumeSize,
&volume)
그것은 좀 더 자세한 해당 C 코드보다.
크레딧을 Set OS X volume in OS X 10.11 using Swift without using the deprecated AudioHardwareServiceSetPropertyData API으로 변경하면 더 이상 사용되지 않는 AudioHardwareServiceSetPropertyData()
대신 AudioObjectSetPropertyData()
을 사용합니다.
차가움. 고마워. 이제 AudioDeviceId와 kAudio로 만든 실수를 봅니다 .... –