且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

如何通过内置的耳机扬声器播放音频

更新时间:2021-11-22 00:03:10

我可以使用AVAudioSession和ProximityMonitering

I could do it using AVAudioSession and ProximityMonitering

- (void)viewDidLoad {
    [super viewDidLoad];

    [UIDevice currentDevice].proximityMonitoringEnabled = YES;

    if ([UIDevice currentDevice].proximityMonitoringEnabled == YES) {
        [[NSNotificationCenter defaultCenter] addObserver:self
                                               selector:@selector(proximityChanged:)
                                                     name:@"UIDeviceProximityStateDidChangeNotification"
                                               object:[UIDevice currentDevice]];
    }
}


- (void) proximityChanged:(NSNotification *)notification {
    UIDevice *device = [notification object];
    NSLog(@"In proximity: %i", device.proximityState);

    if(device.proximityState == 0){
        [audioSession  overrideOutputAudioPort:AVAudioSessionPortOverrideSpeaker error:nil];
    }
    else{
        [audioSession  overrideOutputAudioPort:AVAudioSessionPortOverrideNone error:nil];
    }
}

播放音频

audioSession = [AVAudioSession sharedInstance];
[audioSession setCategory:AVAudioSessionCategoryPlayAndRecord error:nil];
[audioSession setActive:YES error:nil];

AVAudioSessionPortDescription *routePort = audioSession.currentRoute.outputs.firstObject;
NSString *portType = routePort.portType;

NSLog(@"PortType %@", portType);

if ([portType isEqualToString:@"Receiver"]) {
    [audioSession  overrideOutputAudioPort:AVAudioSessionPortOverrideSpeaker error:nil];
}