耳机 插入/拔出 代码监测

来源:互联网 发布:网络114登录 编辑:程序博客网 时间:2024/05/02 07:05

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

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

先在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 弃用了,目前没找到代替方法,有知道的朋友记得分享回复我啊,谢了。



0 0
原创粉丝点击