蓝牙开发总结1

参考资料:http://www.cnblogs.com/savagemorgan/p/3722657.html Android4.3 蓝牙BLE初步

http://www.cnblogs.com/zdz8207/category/434664.html 谈谈几个月以来开发android蓝牙4.0 BLE低功耗应用的感受

http://item.taobao.com/item.htm?spm=a1z09.2.9.13.5EVeNE&id=36373854308&_u=hfm125r918e&qq-pf-to=pcqq.c2c#userconsent# 蓝牙模块

http://blog.csdn.net/jimoduwu/article/details/21604215 Android BLE 蓝牙低功耗教程,中央BluetoothGatt和周边BluetoothGattServer的实现

http://blog.csdn.net/woshasanguo/article/details/41082395 android ble蓝牙开发略解 (写的不错)

 

  1. 首先需要明白一些概念

    蓝牙2.0 vs 蓝牙4.0,主要的区别在于协议变了,4.0主打省电策略,与其他相比,这个更省电。而且,最坑的不是这个,最坑的是蓝牙2.0 只能与蓝牙2.0 通讯,蓝牙4.0与蓝牙4.0通讯。

    协议不一样,无法直接通讯。

在开发手机与单片机通过蓝牙通讯的过程中,我们要知道,其实手机和单片机也是一样,2.0的蓝牙无法同4.0的蓝牙通讯。

还有一点就是,手机间,蓝牙通讯一般用系统自带的app进行开发,而不是用我们自己开发的app,这是因为手机没有root,无法用手机的 app进行相互的通讯。

所以,现在市面上都是,手机蓝牙4.0 与模块蓝牙4.0 之间的通讯。

  1. 蓝牙相关概念:

    GATT、ATT: 这两者都是BLE间小数据传输的协议规范,都是通用的。

    Characteristic: 数据类型,它包括一个value和0至多个value的描述。

    Descriptor: 对上面的描述,例如范围、计量单位等。

    Service:Characteristic的集合,例如一个service可能包含多个ch,一个ch也可能包含多个des.

     

 

3、数据的传递问题:

一定要搞清,数据的流向问题:

程序结构:

在DeviceScanActivity当中,数据怎么回传回来?数据在这个里面通过Intent传到这个这里。

在DeviceControlActivity当中,数据是这样的:

各种回调之后,数据在device里面,我们现在的目的是要发送数据,要发送数据就是需要

mNotifyCharacteristic

它怎么得到:

 

 

 

 

 

从上到下,我们可以看到,我们想要得到的其实就是mDeviceAddress,而此已经得到了。只需要从下往上找即可找到。

mBluetoothLeService
				

 

  1. 概念还是概念

    BLE分为三部分ServiceCharacteristicDescriptor,这三部分都由UUID作为唯一标示符。一个蓝牙4.0的终端可以包含多个Service,一个Service可以包含多个Characteristic,一个Characteristic包含一个Value和多个Descriptor,一个Descriptor包含一个Value

     

     

    第二大块,分析的有点复杂。

    上面的每一个部分都有唯一的UUID,而且对于某个固定的设备其UUID是固定的,但是设备那么多,我们如何确定是那个设备呢?

    如下面所示:

    上面是对于某个固定的设备是有用的,但是对于不是固定的设备就很难说了。

     

也就是说,对于某些相同的设备,gatt都不一样,而gatt下面的 services,character,descriptor都有相同的UUID。

gatt是通过 设备mac获取到的,其函数 connectgatt。

一个设备一个gatt,换设备就要换gatt。

其实我们也可以做成下面这样,一个设备对应多个services,一个service 可能对应着多个characteristic,相同设备的相同服务(service)

和属性(characteristic)的UUID相同。

 

20150818 日补充内容:

 

上面讲的内容是发送数据的部分,一直没有讲接收数据的模块。对于数据的接收,我们是放在广播里面的。

代码很短,这个目前没测试过。后期可以先拿蓝牙模块做做实验,确定下。

 

 

突然忘了,我这里选用的蓝牙模块是 CC41-A。

淘宝店地址:https://item.taobao.com/item.htm?spm=a1z09.2.9.13.5EVeNE&id=36373854308&_u=hfm125r918e&qq-pf-to=pcqq.c2c&mt=&spm=a1z09.2.9.13.5EVeNE&_u=hfm125r918e&qq-pf-to=pcqq.c2c

 

posted on 2015-07-21 19:52  zhuxuekui3  阅读(422)  评论(0编辑  收藏  举报