2011-02-18 77 views
2

我正在嘗試爲我的iPhone應用程序添加揚聲器功能。我已經創建了錄音功能,但是當我播放錄製的音頻時,它只能播放到手機耳機。當耳機連接時,您如何強制音頻從iPhone揚聲器中出來?

我需要的是要對揚聲器播放錄製的文件,即使連接耳機。我怎麼能重新路由音頻來做到這一點?

+0

如何我創建了一個設置,同時獲得用戶如果想使用揚聲器或耳機...感謝..對不起,我錯過了這部分...:P – shy 2011-02-18 04:24:08

回答

7

你需要使用AudioSessionSetProperty覆蓋默認的音頻性能。看看這樣的事情,強制所有的音頻去揚聲器(請注意,如果插入耳機,甚至會發生這種情況)。

OSStatus err = 0; 
UInt32 audioRouteOverride = kAudioSessionOverrideAudioRoute_Speaker; 
err = AudioSessionSetProperty(kAudioSessionProperty_OverrideAudioRoute,sizeof(audioRouteOverride),&audioRouteOverride); 

爲了檢測耳機,試試這個(這是字面上複製/粘貼代碼關的另一SO發佈,所以買者自負,但它爲我的作品):

/** 
* Tells us if the headset is plugged in 
*/ 
- (BOOL) headsetIsPluggedIn 
{ 
    BOOL returnVal = NO; 

    UInt32 routeSize = sizeof(CFStringRef); 
    CFStringRef route = NULL; 
    OSStatus error = AudioSessionGetProperty(kAudioSessionProperty_AudioRoute, &routeSize, &route); 
    if (!error && (route != NULL) && ([(NSString*)route rangeOfString:@"Head"].location != NSNotFound)) 
    { 
    CFRelease(route); 
    returnVal = YES; 
    } 
    return returnVal; 
} 

編輯:關於CFRelease是否合適的評論中有一些討論。任何核心基金會的核心專家都很重視?

+0

如何我創建了一個設置,同時獲得用戶是否想使用揚聲器或耳機...感謝..對不起,我錯過了這部分...:P – shy 2011-02-18 04:23:26

相關問題