被玩坏了的 Android Bluetooth

这里的一切都是站在一个上层应用开发者的角度去理解蓝牙,做一些形象的比喻,帮助理解整个蓝牙通信流程。(PS:初稿需要修改)

比划下协议栈

协议栈这个东西按照字面意思解:
协议表示事先已经约定好了
表示分层的意识
协议栈表示 已经约定好的分层通信模型

stack.png

一个简单的例子:
应用层 这里定义里通俗的通信语言(假设应用层发送 Hello
逻辑链路层这里表示已经经过事先约定好的模型处理过的上传数据(Hello已经处理为0x48,0x65,0x6C,0x6C,0x6F
物理层这里表示传输的物理媒介,例如电缆,无线电等(这里已经变成了带有高低电平的无线波信号)

蓝牙通信模型

蓝牙通信的模型其实可以看成一个标准的B\S架构。
即存在蓝牙服务端和蓝牙客户端。

HeadSet Profile

蓝牙耳机协议:
服务端: 带有蓝牙功能的手机
客户端: 蓝牙耳机

打电话时手机通过蓝牙发送音频信号给蓝牙耳机。

Synchronization Profile

这个协议可以传输文件。
服务端: 蓝牙手机A
客户端: 蓝牙手机B

手机A通过蓝牙分享一个文件到手机B。

总结:

Bluetooth定义了9种应用(usage)Profile。
CTP Profile: Cordless Telephone Profile,无绳电话。
IP Profile: Intercom Profile,这是在两个设备之间建立语音连接,换句话说,把两个昂贵的蓝牙设备变成廉价的对讲机。
HS Profile: HeadSet Profile,用于连接耳机。
DNP Profile: Dial-up Networking Profile,用于为PC提供拨号网络功能。
FP Profile: Fax Profile,传真功能。
LAP Profile: LAN Access Profile,使用PPP协议建立局域网。
OPP Profile: Object Push Profile,用于设备之间传输数据对象。
FTP Profile: File Transfer Profile,用于文件传输。
SP Profile: Synchronization Profile,用于不同的Bluetooth设备同步,保持数据的一致性。
Bluetooth定义了4种是基本的Profile,这些Profile会被其它的Profile使用。
GAP Profile: Generic Access Profile,该Profile保证不同的Bluetooth产品可以互相发现对方并建立连接。
SDAP Profile: Service Discovery Application Profile,通过该Profile,一个Bluetooth设备可以找到其它Bluetooth设备提供的服务,以及查询相关的信息。
SPP Profile: Serial Port Profile,模拟串口通讯
GOEP Profile: Generic Object Exchange Profile,通用对象交换。这个Profile的名字有些费解,它定义的是数据的传输,包括同步,文件传输,或者推送其它的数据。你可以把它理解为内容无关的传输层协议,可以被任何应用用来传输自己定义的数据对象
。

蓝牙的Profile都可以看成B\S架构。 GAP可能不太好用B\S解释。

说说蓝牙协议栈如何实现的

有了上面的知识, 再去理解下协议栈是来干什么的。

服务端

启动一个监听,监听的话肯定需要一个内容, 蓝牙标准化了这个内容, 使用UUID表示。
HCRPrintServiceClass_UUID = '{00001126-0000-1000-8000-00805F9B34FB}'

客户端

发起一个请求, 请求总需要一个目标, 这个目标就是UUID.

协议栈

就是起到一个封装解析并传递数据的作用。

举个例子:(服务端【B】 客户端【C】)
1:C发给B: 01
2:B收到, 协议栈去解析01(假设是询问服务端是否准备就绪)
3:B返回C:01
4:C收到, 协议栈去解析01(假设是表示服务端准备就绪)
5:C认为B已经OK, 继续发送数据

Android Bluedroid

Bluedroid是Android上的蓝牙协议栈, 这个协议栈, 默认已经实现了很多的基础的Profile。
OPP, PBAP 这两个协议是纯上层 Bluetooth.apk 实现的。
原理也很简单, APP启动一个 BluetoothServerSocket 监听相应的UUID, 假设请求到来的话, 直接把数据转到上传APP层处理。

蓝牙玩个新花样

有了上面的知识后, 自己就可以实现一个手机上未实现的Profile。
我这里实现了一个

#蓝牙串口服务
SerialPortServiceClass_UUID = '{00001101-0000-1000-8000-00805F9B34FB}'

这个东西实现之后, 就可以把手机当成一个蓝牙打印机使用了, 已经成功的连接了各大外卖平台, 可以让它们把数据直接发送到手机上。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,716评论 4 364
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,558评论 1 294
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 109,431评论 0 244
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,127评论 0 209
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,511评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,692评论 1 222
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,915评论 2 313
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,664评论 0 202
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,412评论 1 246
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,616评论 2 245
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,105评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,424评论 2 254
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,098评论 3 238
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,096评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,869评论 0 197
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,748评论 2 276
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,641评论 2 271

推荐阅读更多精彩内容

  • 蓝牙 注:本文翻译自https://developer.android.com/guide/topics/conn...
    RxCode阅读 8,468评论 11 99
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 170,569评论 25 707
  • 低功耗蓝牙(BLE)设备的通信基本协议是 GATT, 要操作 BLE 设备,第一步就是要连接设备,其实就是连接 B...
    风雨byt阅读 3,715评论 1 11
  • 9.1 10/31 9.3 10/27 9.5 10/25
    Hancock_3阅读 115评论 0 0
  • 在万年历上 写下日程 如一张精巧的蛛网 日子在穿堂风里 颤栗地铺开 铺开在老房子的 雕梁画栋间 梁上的燕子飞走又飞...
    陌西突围阅读 220评论 5 12