【iOS】监听耳机状态

news/2024/11/25 10:54:03/

——周技术回顾

前言

最近在做一个需求,需要监听耳机是否拔出设备,我们知道耳机有蓝牙耳机和有线耳机,在做的时候遇到个坑,portType有很多种,直接监听普通耳机和蓝牙的type发现苹果转接的耳机监听不到,因为苹果转接的属于另一个type。

AVAudioSessionPortHeadphones 普通耳机
AVAudioSessionPortBluetoothA2DP 蓝牙设备
AVAudioSessionPortUSBAudio 串行总线设备(通过转接口耳机需要监听这个type)
  • 判断当前是否插入耳机
 - (BOOL)isHeadSetPlugging {AVAudioSessionRouteDescription* route = [[AVAudioSession sharedInstance] currentRoute];for (AVAudioSessionPortDescription* desc in [route outputs]) {if ([[desc portType] isEqualToString:AVAudioSessionPortHeadphones] || [[desc portType] isEqualToString:AVAudioSessionPortBluetoothA2DP] || [[desc portType] isEqualToString:AVAudioSessionPortUSBAudio])return YES;}return NO;
}
  • 监听耳机是一个系统实现的单例方法,通过发送通知来告诉耳机的状态,AVAudioSessionRouteChangeNotification 路线改变通知(如扬声器切换为耳机.也就是耳机插入设备)
[[[NSNotificationCenter defaultCenter] rac_addObserverForName_mgs:AVAudioSessionRouteChangeNotification object:[AVAudioSession sharedInstance]] subscribeNext:^(NSNotification * _Nullable x) {NSDictionary *dic = x.userInfo;NSInteger routeChangeReason   = [[dicvalueForKey:AVAudioSessionRouteChangeReasonKey] integerValue];switch (routeChangeReason) {case AVAudioSessionRouteChangeReasonNewDeviceAvailable://耳机插入break;case AVAudioSessionRouteChangeReasonOldDeviceUnavailable://耳机拔出break;case AVAudioSessionRouteChangeReasonCategoryChange://类别改变     break;}}];

总结

做一个功能的时候需要考虑的更加仔细,各种场景都能考虑到,尽可能让功能更稳定,代码质量更高,做耳机监听的时候,一开始没有考虑到苹果转接耳机的场景,从而会有点问题,好在及时得到解决,也对耳机监听的技术有了更加深入了解。


http://www.ppmy.cn/news/694488.html

相关文章

有什么蓝牙耳机适合听歌?盘点适合听歌的蓝牙耳机

年轻人最不可缺的数码产品,除了手机以外,应该就是蓝牙无线耳机了。毕竟有好的蓝牙无线耳机,才能畅享音乐世界。今天就让我来给大家推荐四款性价比高的蓝牙无线耳机,好让大家不用节省,也能买到让自己远离噪音烦扰的蓝牙…

可以久戴不痛的耳机推荐、不入耳听歌骨传导耳机排名

随着大家越来越注重耳机佩戴舒适与健康,耳机的重量作为一个佩戴舒适度的重要参考因素,也是费尽心思的,百花齐放,争相对比。而骨传导耳机作为一款新势力产品,不但质感舒适更是重量及其轻盈而被很多人喜欢。不过现在的骨…

哪种耳机不伤耳朵听力、方便听歌又可以保护听力的蓝牙耳机推荐

通常情况下,我们平常运动都喜欢听音乐,更容易放松身体,所以就需要运动耳机。在以前运动耳机无非就是一条有线耳机,但有线耳机重视有很多缺点,缠绕、打手等,很影响运动体验。到现在运动者喜欢的运动耳机更多…

外出时听歌戴什么蓝牙耳机好?适合外出听歌的蓝牙耳机推荐

在外出途中听歌仿佛已经成为人们放松的一种方式,既可以静享音乐,又可以屏蔽一部分噪音。那么,什么蓝牙耳机适合外出时听歌用?接下来,我来分享几款适合外出听歌的蓝牙耳机,一起来看看吧。 一、南卡Lite Pro…

跑步听歌用什么耳机好?适合跑步专用的耳机推荐

天气转暖,气温逐渐上升,因此现在经常可以看到一些运动爱好者在锻炼身体。 很多人为了身体健康也有过运动的想法,但是大部分都难以坚持下来,不仅是因为累,还有枯燥。而根据科学研究发现,听音乐可以有效提高运…

什么牌子的蓝牙耳机音质好?适合听歌的高音质蓝牙耳机推荐

不管是在听歌、运动、玩游戏等等,不少人都会选择蓝牙耳机。伴随着蓝牙技术的进步,蓝牙耳机在音质方面的表现也越来越好。今天,来给大家分享几款适合听歌的高音质蓝牙耳机,一起来看看吧。 一、南卡小音舱Lite2蓝牙耳机 参考价&am…

tomcat部署以及优化

目录 1.三个核心组件 2.tomcat服务部署 3.虚拟主机配置 4.tomcat优化 5.部署两台tomcat服务器 6.总结 1.三个核心组件 web容器 完成web服务 servlet容器 名为catalina 用于处理servlet JSP容器 将JSP动态网页翻译成…

美团动态线程池实践思路,开源了

使用线程池 ThreadPoolExecutor 过程中你是否有以下痛点呢? 1.代码中创建了一个 ThreadPoolExecutor,但是不知道那几个核心参数设置多少比较合适 2.凭经验设置参数值,上线后发现需要调整,改代码重启服务,非常麻烦 3.线…