您的位置:首页 > 编程语言

耳机 插入/拔出 代码监测

2014-04-03 20:17 24 查看
播放器音频时候关于检测耳机的插入、拔出,网络上面虽然有很多代码,但是也有朋友问具体怎么做,实例项目用到,分享如下:

用代码来监测,具体思路流程如下:

先在init里面添加观察者:

[notificationCenter addObserver:self
                               selector:@selector(continuePlaying)
                                   name:@"PLAY"
                                 object:nil];


在viewdidload里面添加监听

AudioSessionAddPropertyListener(kAudioSessionProperty_AudioRouteChange,
//                                    audioRouteChangeListenerCallback,(__bridge void *)(self));


之后实现这个监听回调方法:

void audioRouteChangeListenerCallback (void *inUserData,
                                       AudioSessionPropertyID inID,
                                       UInt32 inDataSize,
                                       const void *inData)
{
    UInt32 propertySize = sizeof(CFStringRef);
    AudioSessionInitialize(NULL, NULL, NULL, NULL);
    CFStringRef state = nil;
    AudioSessionGetProperty(kAudioSessionProperty_AudioRoute
                            ,&propertySize,&state);
    
    NSString *stateStr = (__bridge NSString *)state;
    if ([stateStr isEqualToString:@"Speaker"]) {
        [[NSNotificationCenter defaultCenter] postNotificationName:@"PLAY" object:nil];
    }
}

-(void)continuePlaying
{
    if (playBtn.selected) {
        [player.moviePlayer play];
    }
}


通过通知的方法让耳机拔出后继续播放,原因是在插入耳机后可以正常收听,但是拔出后没有继续播放,而是静音,所以要在监测拔出耳机后继续播放,用了通知功能。

但是有个问题,这种监听方式已经被 7.0 弃用了,目前没找到代替方法,有知道的朋友记得分享回复我啊,谢了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: