目前有很多人开始进行低功耗蓝牙BLE进行开发,BLE主要应用于可穿戴设备,这个可以查标准协议,就不多说了。
还有一种情况是用BLE实现类似传统蓝牙SPP功能。其实,我个人是不建议用这种方法的,毕竟BLE只是适合于小数据、低频度读取,这样才能做到低功耗。BLE实现SPP功能,还有一个重要原因,是苹果支持SPP需要授权,而BLE不需要授权。
苹果iPhone4s和Android 4.3 之后支持BLE。
使用BLE,一般是从google提供的例子开始,这个例子和传统蓝牙SPP的例子不同,不能两个android手机之间互相发消息。是android手机作为central模式(当然android也只支持这种模式),读取心跳检测器外设。
BLE类似SPPS功能开发中,一般而言,蓝牙模块会提供一个带读写属性的Characteristic用于发送、一个带Notify属性的Characteristic 用于接收。
需要注意的是,如果要发送数据,是写Characteristic ,要在回调函数onCharacteristicWrite中等待写的结果,才能继续写,否则会写失败,所以需要做一个FIFO形式的写缓存队列才能实现可靠的发送数据。
接收数据,在回调函数onCharacteristicChanged中读取可以,需要注意的是,在此函数中,不要用Android发广播或者Log函数,在实际测试中发现,会导致丢包,也就是说google例子中是有问题的。我猜测用轻量级的handler更好,还没详细测试,有测试结果再告诉大家,呵呵。
在传统蓝牙测试中,有一次发现有时候BluetootchChat 例子会连接失败,把手机Wifi关掉,问题解决。看来,在蓝牙信号弱的时候,wifi影响还比较大。
还有一种情况是用BLE实现类似传统蓝牙SPP功能。其实,我个人是不建议用这种方法的,毕竟BLE只是适合于小数据、低频度读取,这样才能做到低功耗。BLE实现SPP功能,还有一个重要原因,是苹果支持SPP需要授权,而BLE不需要授权。
苹果iPhone4s和Android 4.3 之后支持BLE。
使用BLE,一般是从google提供的例子开始,这个例子和传统蓝牙SPP的例子不同,不能两个android手机之间互相发消息。是android手机作为central模式(当然android也只支持这种模式),读取心跳检测器外设。
BLE类似SPPS功能开发中,一般而言,蓝牙模块会提供一个带读写属性的Characteristic用于发送、一个带Notify属性的Characteristic 用于接收。
需要注意的是,如果要发送数据,是写Characteristic ,要在回调函数onCharacteristicWrite中等待写的结果,才能继续写,否则会写失败,所以需要做一个FIFO形式的写缓存队列才能实现可靠的发送数据。
接收数据,在回调函数onCharacteristicChanged中读取可以,需要注意的是,在此函数中,不要用Android发广播或者Log函数,在实际测试中发现,会导致丢包,也就是说google例子中是有问题的。我猜测用轻量级的handler更好,还没详细测试,有测试结果再告诉大家,呵呵。
在传统蓝牙测试中,有一次发现有时候BluetootchChat 例子会连接失败,把手机Wifi关掉,问题解决。看来,在蓝牙信号弱的时候,wifi影响还比较大。