ios - 调用时在 Xcode ios 8.1 中启用和禁用扬声器

标签 ios iphone xcode audio

我需要在从应用调用时启用扬声器。我可以成功启用它,但无法禁用它。

我正在使用这个方法:

[[UIDevice currentDevice] setProximityMonitoringEnabled:NO];
NSLog(@"%d",enable);

UInt32 route;
route = enable ? kAudioSessionOverrideAudioRoute_Speaker :
kAudioSessionOverrideAudioRoute_None;

AudioSessionSetProperty (kAudioSessionProperty_OverrideAudioRoute,
                         sizeof(route), &route);

提前致谢。

最佳答案

AudioSessionSetProperty 已弃用。 https://developer.apple.com/library/ios/documentation/audiotoolbox/reference/audiosessionservicesreference/index.html#//apple_ref/c/func/AudioSessionSetProperty

- (void)setAudioOutputSpeaker:(BOOL)enabled
{
    AVAudioSession *session =   [AVAudioSession sharedInstance];
    NSError *error;
    [session setCategory:AVAudioSessionCategoryPlayAndRecord error:&error];
    [session setMode:AVAudioSessionModeVoiceChat error:&error];
    if (enabled) // Enable speaker
    {
        [session overrideOutputAudioPort:AVAudioSessionPortOverrideSpeaker error:&error];
    }
    else // Disable speaker
    {
        [session overrideOutputAudioPort:AVAudioSessionPortOverrideNone error:&error];
    }
    [session setActive:YES error:&error];
}

关于ios - 调用时在 Xcode ios 8.1 中启用和禁用扬声器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27246539/

相关文章:

ios - 在 viewDidLoad 中设置 UITabBar 类型的选项卡栏中的默认项目(不是 UITabBarViewController)

iphone - 程序在 dequeueReusableCellWithIdentifier : 处崩溃

iphone - 如果调用新代码,则运行较低版本IOS的用户将如何处理?

iphone - SELECT 中的 OPTION 元素太长且破坏了移动布局

ios - 使用背景上下文时无法在不同上下文中的对象之间建立关系

ios - 在设备控制台中查看 os_log 消息

ios - iPhone 6s 没有接收到 UIButtons 上的任何触摸

ios - 将 AVPlayerItem 保存到文档目录

ios - 有没有办法看到每次调用NSLog的时候以及NSLog的内容?

ios - 使用 if else 条件语句在 Xcode/swift 中显示特定的 View Controller