iOS 切换听筒与扬声器

/** 1.先设置为外放 */
dispatch_async(dispatch_get_main_queue(), ^{
[[AVAudioSession sharedInstance] overrideOutputAudioPort:AVAudioSessionPortOverrideSpeaker error:nil];
        });
/** 2.判断当前的输出源 */
[self routeChange:nil];

[[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(routeChange:) 
name:AVAudioSessionRouteChangeNotification 
object:[AVAudioSession sharedInstance]];

 
- (void)routeChange:(NSNotification*)notify{
    if(notify){
        NSLog(@"声音声道改变%@",notify);
    }
    AVAudioSessionRouteDescription*route = [[AVAudioSession sharedInstance]currentRoute];
    for (AVAudioSessionPortDescription * desc in [route outputs]) {
        NSLog(@"当前声道%@",[desc portType]);
        NSLog(@"输出源名称%@",[desc portName]);
        if ([[desc portType] isEqualToString:@"Headphones"]) {
            dispatch_async(dispatch_get_main_queue(), ^{
                [[AVAudioSession sharedInstance] overrideOutputAudioPort:AVAudioSessionPortOverrideNone error:nil];
            });
        }else{
            dispatch_async(dispatch_get_main_queue(), ^{
                [[AVAudioSession sharedInstance] overrideOutputAudioPort:AVAudioSessionPortOverrideSpeaker error:nil];
            });
        }        
    }
}

猜你喜欢

转载自blog.csdn.net/youshaoduo/article/details/79154030