내 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