本文已授权微信公众号《码农修仙儿》独家发布
蓝牙这个专题,很值得深入研究,但又不是一篇两篇能说的清除,所以决定连载~~~ 不知道能坚持多久
在研究蓝牙源码之前,先来看看蓝牙大致都有什么功能。蓝牙模块支持什么功能完全由蓝牙所支持的蓝牙协议而确定,所以先从蓝牙协议看起
转载请注明出处,本文出自带你解锁蓝牙skill
作者为fanfan
# 1,蓝牙是什么 蓝牙是设备间的一种短距离的无线近场通信。对通信距离,通讯速率,频段等都有相关的规定,具体可自行百度百科。
生活中最常见的诸如蓝牙耳机,蓝牙音箱,智能家居也有很多蓝牙(但对距离和速率有一定的限制)。
- 可以利用蓝牙从别的手机设备上导入联系人信息
- 可以利用蓝牙进行设备间的文件传输
- 可以利用蓝牙在其他设备上播放媒体音频
- 可以利用蓝牙在其他设备上播放手机音频(蓝牙通话)
- 可以利用蓝牙读取其他设备上的短彩信
- 可以利用蓝牙开启网络共享,共享互联网
- 可以利用蓝牙实现对某个设备的输入控制,比如蓝牙鼠标,蓝牙键盘
蓝牙之所以可以实现上述这些功能,是因为在蓝牙中规定了蓝牙协议,来提供一些接口供开发商使用。
协议是什么??协议是说在通信过程中设备所遵循的一种规则
为了更方便的了解蓝牙是什么,我们就借助蓝牙协议来看一看蓝牙到底能干什么??
2,Android各版本与蓝牙profile关系
首先明确一下,目前市面上的Android机的源码大致跟三方面有关系(只考虑蓝牙profile)
- Google推出的各Android系统:所支持的蓝牙协议profile均是开启状态
- 芯片提供商(常见的诸如高通)修改后的Android源码–开发中称之为base代码:新增或者修改某些蓝牙profile
- 开发商拿到base代码进行进一步加工:新增或者修改某些profile
所以至于你所使用的手机是否支持某个协议就要从这三方面来看了。Android源码中会告诉你某个原生的Android系统所支持的蓝牙profile,芯片提供商也会给你一个相关的蓝牙文档告诉你目前base代码中所支持的蓝牙profile。 但是不同的芯片提供商会有不同的修改,也就是说要说Android版本和蓝牙profile一一对应这句话对也不对,只能说原生的Android版本和蓝牙profile一一对应。 所以本文从Android源码的角度分析各Android版本与蓝牙profile。(选几个代表性的Android版本进行分析)
profile\Android版本 | Android2.1 | Android4.4 | Android5.0.0 | Android6.0.0 | Android7.1.1 |
---|---|---|---|---|---|
API | 7(ECLAIR_MR1) | 19(KITKAT) | 21(LOLLIPOP) | 23(M) | 25(N) |
发布时间 | 2010-01 | 2013-10 | 2014-11 | 2015 | 2016 |
OppProfile | ✔ | ✔ | ✔ | ✔ | |
PanProfile | ✔ | ✔ | ✔ | ✔ | |
PbapServerProfile | ✔ | ✔ | ✔ | ✔ | |
PbapClientProfile |