2019独角兽企业重金招聘Python工程师标准>>>
参考Link:
http://blog.csdn.net/kangear/article/details/40430673
http://stackoverflow.com/questions/7573493/keyevent-keycode-media-next-not-received-unless-audio-is-playing
Android应用层能获取蓝牙耳机事件的办法:
1.如果手机当前显示的是app界面,可以通过activity keyevent获取键值。
2.非当前app界面(别的应用在前面比如:锁屏)均只能通过系统广播:android.intent.action.MEDIA_BUTTON
3.通过手机系统的音量变化监听。
测试情况:
1.音乐播放软件(QQ音乐,酷狗)在音乐没有播放的情况下,锁屏后,用蓝牙无法控制音乐的状态,也就是 快进,快退。QQ音乐在音乐暂停之后,直接无法快进,快退;酷狗,则是在延后一段时间(基本1-3分钟),无法响应蓝牙操作。初步怀疑是酷狗在暂停后播放了空白,维持了一段时间,但不可能长久保持(大家都知道长久其实会耗电)时间之后就彻底不响应了。
(当然这未必能说明就按键没有接收到,或许是音乐业务这块不需要呢)
2.某些手机在锁屏状态下,可以唤醒手机的语音助手功能,但并非所有的手机100%一定会响应。 用了红米手机测试了下当前的蓝牙耳机,不是100%会触发,只是偶尔会有。
我调用了命令su -c getevent 去更底层获取键值,在有音乐播放的状态下,会有值出来,但在没有音乐播放的状态下,双击快退只是偶尔会有键值显示,出现语音助手,并非双击快退一定会出。而双击快进,任何键值都没有显现。
3.本来想通过音量监控按键情况,但在某些耳机,单按音量加或减,只是改变耳机自身的声音,并没有向android系统报告需要增大或者减小音量的。android应用层这里无法得到这个变化。
结论:
手机应用能否获取蓝牙耳机按键,跟系统和蓝牙耳机硬件有关系的。
以上只是推测,精彩在下一页