break-word; white-space: normal; letter-spacing: normal; color: #000000; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px;">本文转载自:http://bbs.9tech.cn/topic-364762-1.html
很高兴也很无奈的做一个BLE的项目,高兴的是BLE是未来的一种趋势,有了这个经验以后可以混口饭吃,无奈的是身为一个Android developer android系统对ble的支持实在是太差了。在经历了三星的4.1,4.2 和最新的4.3之后生出了一种前所未有的迫切想转行IOS的想法,因为Android的ble真是太要命了。发了这么多牢骚,活还是要干的。这篇博客主要是为了记录一下开发情况以及过程,便于以后开发的时候查看,有兴趣的同学也可以瞅瞅。
首先是现在BLE的开发情况(截止到今天2013-11-08),现在Android ble开发一般分为四个版本:
1、三星的4.0 和 4.1系统 。这个版本的ble开发没有官方的支持,只是三星说我的某些手机支持ble。然后民间的一些大神们开发反编译三星的rom,找到了一系列的三星未开放的关于ble的方法。可以通过反射调用也可以通过导入一些反编译的jar包(基本没用就不上传了)来调用。但是经过1一个半月的折磨,终于发现连接太不稳定了,根本就不能拿来当产品。
2、MOTO放出的sdk。这个版本我没有接触过不知道怎么样,不多说只是提一下。
3、三星的4.2系统。大概是看到程序猿们太辛苦了(只是自己YY而已),三星放出了官方的SDK。但是这个sdk只支持三星自己的4.2的手机。三星虽然出货多但是android阵营的手机品牌实在是太多了三星的4.2又太少,加上当时有传闻google4.3很快就要发布,包含4.3的API。所以这个版本的ble我没做过,不过貌似做这个版本的人还不少。
4、万众期待的Android4.3。这个版本是现在最流行的,因为是google官方的所以只要是每个手机官方的4.3系统都可以用BLE的API。有的同学会刷4.3的系统也可以开发,这是因为rom里面包含了适合手机蓝牙的驱动。如果你的手机用了一款很偏的蓝牙芯片,而rom里面又没有这款芯片的驱动 ,那么恭喜你----4.3的API依然不好用。但是目前来看大多数手机还是没问题的像小米三星等。
介绍完了BLE的情况,就可以选择版本开发了。很多人想做通用版的,但是本人技术有限做不了通用版的。所以如果有哪位大神偶尔看到这篇blog而且已经做出通用版的了,请让我抱个大腿!
除去各个版本不谈,ble的开发还是比较简单的,但是还是要大体了解BT4.0关于Low Energy的一些协议(GATT)。一个BLE设备包含很多的服务(BLUETOOTHSERVICE),每个服务又包含很多的特征(characteristic),每个characteristic包含3个value。characteristic可以是可读写的、只读、只写、或者通知类型,还有一个什么类型我忘了- -!因为我从来没用到过。每个服务和characteristic都有一个UUID来唯一确定,所有想要开发BLE必须知道你想要用哪个服务的那个characteristic也就是要知道对应的UUID。很多人说我传的demo不好用,就是因为UUID都不换成自己设备的。
具体流程就是 scan(搜索) --> connect(连接) --> discoverService(发现ble设备的服务)--> 遍历service里的characteristic -->读写characteristic。
由于每个版本的方法名称不一样实现逻辑不一样,就不给大家写代码了只发两个版本的demo,但是走的流程都是一样的。
三星的4.0 4.1demo看看就好 基本没人用了
SamsungDemo1
这个demo要改UUID
Android4.3demo 这个demo是4.3的可以研究一下,包含了读写以及通知
android4.3
关于android4.3 还有两点要说的:
1、最好做到从手机端发出去的每个命令之间最好sleep一段时间。
2、android端与设备保持连接可能要占用cpu,所以设备端中断最好不要太频繁
乱七八糟的先写到这,有时间好好整理一下。有什么进度也会更新过来。