美文网首页
iOS开发: 音频会话线路改变

iOS开发: 音频会话线路改变

作者: 伯wen | 来源:发表于2016-12-22 10:20 被阅读95次

    线路改变

    • 在iOS设备上添加或移除音频输入、输出线路时, 会发生线路改变, 有多重原因会导致线路变化, 比如用户插入耳机或断开USB麦克风
    • 当这些事情发生时, 音频会根据情况<a>改变输入或输出路线</a>, 同时AVAudioSession会广播一个描述该变化的通知给所有相关的监听器
    • 线路变化时AVAudioSession会发出<a>AVAudioSessionRouteChangeNotification</a>通知
    • 在系统默认的情况下, 音频播放, 插上耳机后线路改变, 在耳机中播放, 当用户拔出耳机后, 音频又会在手机上播放
    • 我们可以通过监听线路改变, 控制当耳机拔出后停止音乐播放的行为

    具体代码

    • 添加音频会话发出的通知
    // 会话线路改变通知
        [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(handleRouteChange:) name:AVAudioSessionRouteChangeNotification object:nil];
    
    • 当线路改变时触发方法
    /**
     音频会话线路变化通知
     */
    - (void)handleRouteChange:(NSNotification *)notification
    {
        // 通知信息
        NSDictionary *info = notification.userInfo;
        // 获取线路信息
        AVAudioSessionRouteChangeReason reason = [info[AVAudioSessionRouteChangeReasonKey] unsignedIntegerValue];
        // 当耳机拔出后触发
        if (reason == AVAudioSessionRouteChangeReasonOldDeviceUnavailable) {
            // 自定义的一个播放器, 当耳机拔出后停止播放音乐
            [self.player pause];
        }
    }
    

    相关文章

      网友评论

          本文标题:iOS开发: 音频会话线路改变

          本文链接:https://www.haomeiwen.com/subject/hsvcvttx.html