我正在嘗試爲我的iPhone應用程序添加揚聲器功能。我已經創建了錄音功能,但是當我播放錄製的音頻時,它只能播放到手機耳機。當耳機連接時,您如何強制音頻從iPhone揚聲器中出來?
我需要的是要對揚聲器播放錄製的文件,即使連接耳機。我怎麼能重新路由音頻來做到這一點?
我正在嘗試爲我的iPhone應用程序添加揚聲器功能。我已經創建了錄音功能,但是當我播放錄製的音頻時,它只能播放到手機耳機。當耳機連接時,您如何強制音頻從iPhone揚聲器中出來?
我需要的是要對揚聲器播放錄製的文件,即使連接耳機。我怎麼能重新路由音頻來做到這一點?
你需要使用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是否合適的評論中有一些討論。任何核心基金會的核心專家都很重視?
如何我創建了一個設置,同時獲得用戶是否想使用揚聲器或耳機...感謝..對不起,我錯過了這部分...:P – shy 2011-02-18 04:23:26
如何我創建了一個設置,同時獲得用戶如果想使用揚聲器或耳機...感謝..對不起,我錯過了這部分...:P – shy 2011-02-18 04:24:08