如果在Android上面使用AirPods有任何问题可以参考这个文章:点击这里

项目已经上架应用市场啦。
有感兴趣的小伙伴可以去 应用宝/华为应用市场/百度应用市场/安智市场/酷安/PP助手/小米应用市场 等市场搜索AndPods啦!!

支持功能

  1. 电量查看
  2. 设备离耳暂停播放(测试中,有时候会有问题)
  3. 应用保活功能(可以在设置里面做配置)

项目背景

最近买了一个AirPods发现它并没有官方的Android版本的管理APP,iphone系统上面却能得到很好的支持。功能包括电量查看,设备离开耳朵暂停播放。公认的第一好用的蓝牙耳机居然对Android这么不友好。
在GooglePlay发现了一个叫AirBattery的应用。这个应用能支持查看电量,耳机离开耳朵监听。我以为苹果公司可能开源了这一块的协议,然后找遍了谷歌关键字和苹果官方的信息都没看到这一块的信息。
而且GooglePlay上面的这个应用普通版的有广告,并且不能支持状态栏显示电量等信息。只有专业版的才支持这些。嗯?专业版的需要通过谷歌账户1美元。对国人来讲这个是更不友好的一件事情了,首先从GooglePlay下载需要其次支付一美元需要在谷歌账号下绑定信用卡,并且信用卡必须是visa的卡,普通的银联卡不能用。再然后就是手机必须支持google框架,大概劝退了80%的人了。

最后决定尝试自己开发一个,本项目只是给大家提供一个解题的思路。

问题和解决思路

查看了一些值得探讨的问题
连接方式:
1.耳机与手机是作为耳机设备连接。
2.耳机有三个设备,连接时却只有一个设备。
协议相关:
1.官方之前说定制了协议,但是作为耳机设备的协议是不能变的。
第三方支持:
1.在第三方的AirBattery上面需要开启定位权限才能使用。

解决思路:

1.耳机和手机作耳机设备连接是正常的,因为毕竟Iphone要支持通话/接听/音乐播放等功能还是要支持。HFP/HSP/A2DP这三个协议,然后是AirPods耳机支持AAC格式的音频压缩,所以音质会更好。

2.同时只有一个设备连接了手机,辣么可能是通过耳机盒子做了中继,也就是说两个耳机跟耳机盒子都是双向通信的。

3.官方说了协议定制,那可能是盒子和耳机之间有协议定制。也就是说如果是手机与耳机设备通信,只需要与盒子做通信。在耳机离开盒子的时候耳机和盒子就是唤醒的状态。(不得不叹服苹果的技术,能在这么小的穿戴设备做这么复杂的功能)

4.定位权限极有可能是耳机与盒子之间的通信协议

项目难点

开发中遇到的问题和猜测

1.通过耳机设备获取蓝牙耳机的信息,mac地址,名称等。(成功)
2.通过蓝牙耳机协议获取设备电量。(失败,猜测,因为蓝牙耳机协议只支持获取单设备的电量。多设备可能就不支持。)
3.通过ble连接设备。连接失败。(呃。毕竟是蓝牙耳机协议,跟ble不一样。)
4.简单配对模式连接设备,连接失败。(这两个可以看出,主盒子跟手机的通信方式可能不走蓝牙。)

2018年11月27日 17:09:13更新

已经完美拿到Airpods电量等数据。项目开发中,如果有这方面需求的童鞋们可以关注一下这个APP...


2018年12月11日 16:43:07更新

APP测试版本发布

2018年12月17日 15:40:15更新

有个朋友提醒我IOS带的那个双击唤醒siri的功能。如果APP能支持耳机双击唤醒小米/华为的语音助手可能体验上会更好。
我原本以为Android的蓝牙在底层处理完毕后会以广播的形式发送出来,但是貌似不是这么做的。
而是Mediasession来通知底层,控制也是经由框架层。当播放/暂停等状态做改变后才会发出广播。
在实现上,这一块可能需要监听AVRCP协议传输的信息。
问题:
1.能不能直接在协议上做控制。
2.探索其他的途径。
3.最后一个难点是唤起各个厂商的语音助手,因为语音助手其实只是一个应用所以并没有提供唤起的API。
思考解决方案:
1.不能在协议上面直接做控制,这涉及到框架层的修改,并不能适用于市面上的手机。
2.提供了两种功能来做操作,一是使用MediaSession做监听,当播放状态改变的时候就做唤醒小爱同学,相当于APP需要实现播放器,但是这个播放器的控制又会存在很多问题。二就是监听播放器的广播,这个存在的问题是如果音乐播放功能未开启的时候,是无法接收广播的。只有第一种是最佳的解决方案。
3.可以这么做,双击的时候当APP接收到事件,1.调用话筒唤起小爱同学。(需要集成文字转语音功能)2.根据Intent隐式意图唤起语音助手。(目前不知道各大厂商语音助手的隐式意图)
以上。这些日子有点过于劳累,目前暂不处理这个问题,如果有其他人对语音这一块比较熟悉的,欢迎下方留言交流。或者提供一些解决方案。