2012-11-28 51 views

回答

1

我解決了它下面給出:

AVAudioSession *audioSession = [AVAudioSession sharedInstance]; 
    NSError *err; 

    // close down our current session... 
    [audioSession setActive:NO error:nil]; 
    AudioSessionAddPropertyListener(kAudioSessionProperty_AudioRouteChange, &AudioSessionManager_audioRouteChangedListener, self); 


    void AudioSessionManager_audioRouteChangedListener (void *inClientData, AudioSessionPropertyID inID, UInt32 inDataSize, const void *inData) 
    { 
     NSLog(@"AudioSessionManager_audioRouteChangedListener"); 
     MyAppDelegate *instance = (MyAppDelegate *)inClientData; 
     CFDictionaryRef routeChangeDictionary = inData; 


     // extract the route change reason... 

     CFNumberRef routeChangeReasonRef = CFDictionaryGetValue (routeChangeDictionary, CFSTR(kAudioSession_AudioRouteChangeKey_Reason)); 
     SInt32 routeChangeReason = kAudioSessionRouteChangeReason_Unknown; 
     if (routeChangeReasonRef) 
      CFNumberGetValue (routeChangeReasonRef, kCFNumberSInt32Type, &routeChangeReason); 

     // extract the old route.. 

     CFStringRef newRoute; 
     if ([[[UIDevice currentDevice] systemVersion] doubleValue] >= 5.0) 
     { 
      newRoute = CFDictionaryGetValue(routeChangeDictionary, @"OutputDeviceDidChange_NewRoute"); 
     } 
     else 
     { 
      newRoute = CFDictionaryGetValue(routeChangeDictionary, @"OutputDeviceDidChange_NewRoute"); 
     } 


     CFStringRef oldRoute; 
     oldRoute = CFDictionaryGetValue(routeChangeDictionary, @"OutputDeviceDidChange_OldRoute"); 
     NSLog(@"newRouteString:%@ oldRoute:%@",newRoute,oldRoute); 

     [instance onAudioRouteChangedWithReason:routeChangeReason newRoute:(NSString *)newRoute oldRoute:(NSString *)oldRoute]; 
    } 
1

在下面的代碼中,檢查「micConnected」的值以查看是否連接了耳機。

AudioSessionInitialize(NULL, NULL, NULL, NULL);  
UInt32 propertySize, micConnected; 
    AudioSessionGetProperty(kAudioSessionProperty_AudioInputAvailable, &propertySize, &micConnected); 
+0

我解決它使用下面的代碼: –