shy*_*shy 2 iphone cocoa-touch core-audio
我正在尝试为我的某个iPhone应用添加扬声器功能.我已经创建了录制功能,但是当我播放录制的音频时,它只播放到手机耳机.
我需要的是即使连接了耳机,也要在扬声器上播放录制的文件.我怎样才能重新路由音频来做到这一点?
您需要使用覆盖默认音频属性AudioSessionSetProperty.看看这样的东西强制所有音频都去扬声器(请注意,如果插入耳机,甚至会发生这种情况).
OSStatus err = 0;
UInt32 audioRouteOverride = kAudioSessionOverrideAudioRoute_Speaker;
err = AudioSessionSetProperty(kAudioSessionProperty_OverrideAudioRoute,sizeof(audioRouteOverride),&audioRouteOverride);
Run Code Online (Sandbox Code Playgroud)
要检测耳机,试试这个(这是从另一个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;
}
Run Code Online (Sandbox Code Playgroud)
编辑:评论中有一些关于CFRelease是否合适的讨论.任何铁杆核心基金会专家都在关注吗?
| 归档时间: |
|
| 查看次数: |
3968 次 |
| 最近记录: |