2014-12-14 5 views
4

현재 볼륨 키로 설정할 수있는 사용자 시스템 오디오 값의 값을 성공적으로 반환하는 코드가 있습니다.Mac 오디오 레벨을 얻는 방법?

그러나 내가 원한 것은 스피커가 재생하는 오디오의 가치입니다. 따라서 사용자가 Netflix를보고 캐릭터가 비명을 지르는 경우 캐릭터가 속삭이는 것보다 값이 더 높아집니다. 지금이

코드 :

+ (AudioDeviceID)defaultOutputDeviceID { 
    OSStatus status = noErr; 

    AudioDeviceID outputDeviceID = kAudioObjectUnknown; 

    AudioObjectPropertyAddress propertyAOPA; 
    propertyAOPA.mElement = kAudioObjectPropertyElementMaster; 
    propertyAOPA.mScope = kAudioObjectPropertyScopeGlobal; 
    propertyAOPA.mSelector = kAudioHardwarePropertyDefaultSystemOutputDevice; 

    UInt32 propertySize = sizeof(outputDeviceID); 

    if (!AudioHardwareServiceHasProperty(kAudioObjectSystemObject, &propertyAOPA)) { 
     NSLog(@"Cannot find default output device!"); 
     return outputDeviceID; 
    } 

    status = AudioHardwareServiceGetPropertyData(kAudioObjectSystemObject, &propertyAOPA, 0, NULL, &propertySize, &outputDeviceID); 

    if(status) { 
     NSLog(@"Cannot find default output device!"); 
    } 

    return outputDeviceID; 
} 

+ (float)volume { 
    OSStatus status = noErr; 

    AudioDeviceID outputDeviceID = [[self class] defaultOutputDeviceID]; 

    if (outputDeviceID == kAudioObjectUnknown) { 
     NSLog(@"Unknown device"); 
     return 0.0; 
    } 

    AudioObjectPropertyAddress propertyAOPA; 
    propertyAOPA.mElement = kAudioObjectPropertyElementMaster; 
    propertyAOPA.mScope = kAudioDevicePropertyScopeOutput; 
    propertyAOPA.mSelector = kAudioHardwareServiceDeviceProperty_VirtualMasterVolume; 

    Float32 outputVolume; 
    UInt32 propertySize = sizeof(outputVolume); 

    if (!AudioHardwareServiceHasProperty(outputDeviceID, &propertyAOPA)) { 
     NSLog(@"No volume returned for device 0x%0x", outputDeviceID); 
     return 0.0; 
    } 

    status = AudioHardwareServiceGetPropertyData(outputDeviceID, &propertyAOPA, 0, NULL, &propertySize, &outputVolume); 

    if (status) { 
     NSLog(@"No volume returned for device 0x%0x", outputDeviceID); 
     return 0.0; 
    } 

    if (outputVolume < 0.0 || outputVolume > 1.0) 
     return 0.0; 

    return outputVolume; 
} 
+0

[현재 오디오 출력 장치의 현재 사운드 레벨을 어떻게 얻을 수 있습니까?] (http://stackoverflow.com/questions/11893555/how-can- i-get-the-current-sound-level-of-current-audio-output-device), [이 튜토리얼도 도움이 될 수 있습니다.] (http://www.raywenderlich.com/36475/how-to- 아이 - 오 - 뮤직 비주얼 라이저) – davidcondrey

+0

정확히 같은 질문은 아닙니다. 오디오 레벨 자체를 찾고 있습니다. 시스템 오디오 레벨이 아닙니다. 그 대답의 코드는 정직하게 나에게 많은 도움이되지 못했습니다. –

답변

1

볼륨 레벨을 취득하고 (로 최대 볼륨을 설정합니다.) 원하는대로 그것을 설정하고 사용자가 원래 볼륨 레벨로 다시 다시 되돌립니다. 자세한 내용은 아래 링크를 참조하십시오. https://stackoverflow.com/a/27743599/1351327
희망이 있으면 도움이 될 것입니다. (애플이 귀하의 애플 리케이션을 거부 할 것입니다 조심하십시오)

+0

Mac에서도 사용할 수 있습니까? –

+0

나는 i-phone 용으로 만 테스트하고 사용하기 때문에 Mac 용으로 작동하는지 모르겠다. – ondermerol

관련 문제