2013-03-31 2 views

답변

2
bool usingInternalSpeakers() 
{ 
    AudioDeviceID defaultDevice = 0; 
    UInt32 defaultSize = sizeof(AudioDeviceID); 

    const AudioObjectPropertyAddress defaultAddr = { 
     kAudioHardwarePropertyDefaultOutputDevice, 
     kAudioObjectPropertyScopeGlobal, 
     kAudioObjectPropertyElementMaster 
    }; 

    AudioObjectGetPropertyData(kAudioObjectSystemObject, &defaultAddr, 0, NULL, &defaultSize, &defaultDevice); 

    AudioObjectPropertyAddress property; 
    property.mSelector = kAudioDevicePropertyDataSource; 
    property.mScope = kAudioDevicePropertyScopeOutput; 
    property.mElement = kAudioObjectPropertyElementMaster; 

    UInt32 data; 
    UInt32 size = sizeof(UInt32); 
    AudioObjectGetPropertyData(defaultDevice, &property, 0, NULL, &size, &data); 

    return data == 'ispk'; 
} 


int main(int argc, const char * argv[]) 
{ 


    if (usingInternalSpeakers()) 
     printf("I'm using the speakers!"); 
    else 
     printf("i'm using the headphones!"); 
    return 0; 
}