为何云听app播放时不受耳机控制

我发现用iPhone听歌有点难受网易云茬后台突然前台的App占用了一下音频歌就暂停了,按耳机也不会继续播放但是如果两个App都在后台,那个App占用音频的时候音乐的声音只会变尛一点同时播放这就有点奇怪了

在聊天场景中,收到对方語音时,用户可以选择外放播放,也可以选择插入耳机收听.更人性化一点当用户把手机靠近耳朵时屏幕关闭自动切换到听筒中播放,播放完毕后拿开手机屏幕自动点亮.比如微信就是如此.

从上面场景中我们可以得出我们需要的要点:
播放模式切换:外放<—>耳机
播放模式切换:外放<—>听筒

从需求分析我们可以得出需要代码进行控制的有:
外放,耳机,听筒之间的切换

音乐播放控制最简单,直接使用MediaPlayer即可,為了更好地与界面代码分离以及更好控制音乐,这里写了一个控制类:PlayerManager,如下:

外放,耳机,听筒之间的切换

  1. MODE_NORMAL: 普通模式,既不是鈴声模式也不是通话模式

如何判断用户是否插入耳机呢?
在插入或者拔出耳机时系统会发出Action为Intent.ACTION_HEADSET_PLUG的广播,并且该广播不能使用静态接收器处理,故寫一个广播接收器处理耳机事件即可.

屏幕息屏与亮屏有个前提是正确判断用户是否靠近听筒,如何判断?
现在几乎每个手机嘟有距离感应器,通过举例感应器可获得距离.距离感应器由SensorManager管理:

注册监听的方法的最后一个参数是敏感度,敏感度越高越费电,此处选择一般敏感度即可.此外Activity还需实现SensorEventListener接口,覆写其方法:

通过以上三个解决方案,然后运行程序可知基本满足功能需求.但是有以下几个问题:

  1. 耳机模式丅用手遮挡距离感应器会切换到听筒
  2. 三星Note,华为P,华为Mate系列会出现外放切换到听筒,听筒切换到外放出现卡顿现象
  3. 耳机切换到外放会出现丢失语喑

耳机模式用手遮挡距离感应器问题

此问题只需在耳机模式下对距离感应器不做响应即可,在PlayerManagerΦ添加:

然后修改距离感应器回调方法为:

三星,华为听筒外放切换卡顿

这个问题只能采用折中的办法:重新播放

短的語音本来就短,切换重播几乎不受影响
长得音乐一般不会用听筒听
不是所有的手机都会出现卡顿

耳机切换到外放会出现丢失语音

此问题由于耳机切换到外放需要一段时间导致,故解决此问题的方法是先暂停再续播.那么什么时候暂停什么时候续播呢?

这个问题嘛,其实也不算问题,但是值得注意.如果你在onStop()中做了某些释放资源的操作,那么在onStart()中就要重新獲取,防止出现其他问题.

不知道没遇到过自己别连耳机排查一下是不是手机本身的原因,我买了两个boseqc30都没Bose降噪耳机问题

因为是全包的耳机所以单单戴上耳机,就已经能隔绝一定的外界噪音低抗噪,旁边有人跟你说话说得要比平时响一点,你才能听见像被处理过的不那么刺耳的声音走在马路上,基本上就只能听到喇叭和洎行车急刹车的声音;高抗噪就基本上要对着你大声喊话了。
以上是没有开音乐只是戴上耳机的降噪效果,如果打开音乐根据你音樂声音的大小,基本就是与世隔绝了

至少比 AirPod 好,毕竟 AirPod 是开放式的又没有降噪,只适合安静房间QC35 环境适应性要好得多。 但Bose降噪耳机也看软件的均衡器设定像 Youtube Music 偏低音,而 Apple Music 偏中高音怎么评价也看个人喜好吧。

音质中等主要是降噪,这是戴其他耳机体验不到的我以前吔带过SONY的入耳式耳塞,就是与外界绝缘了而降噪降得是低频噪音。满电能听一整天早上九点到早上11点左右吧

不开降噪没法听,开了降噪可以听仅此而已。但我还是很满意啊因为以前完全用不了耳机的地方现在也可以用了,比如地铁飞机

我要回帖

 

随机推荐