美文网首页移动互联网Android开发经验谈Android技术知识
Android 5 以上版本的低功耗蓝牙(BLE)通讯

Android 5 以上版本的低功耗蓝牙(BLE)通讯

作者: 天兵公园 | 来源:发表于2017-08-06 11:30 被阅读186次

    公司在14年开始做一款智能运动产品,之后集成了蓝牙,与手机app之间可以交换文件和数据,因为这款智能运动产品要长续航和小巧,难免电池容量小,为了降低功耗于是采用了 nRF51822 这款芯片,接下来的大段时间都花在 android 和这款智能设备的通讯上。

    因为和产品间交换的数据内容比较多样,有文件交换,从设备到手机,从手机到设备,除了文件,还有协议,除了协议还有实时数据,所以用到了 BLE 的 UART 服务。

    说说 android 蓝牙的坑,使用蓝牙扫描是需要位置权限的,所以扫描之前要开启 GPS 和蓝牙,而且这个最好不要自己写了,我遇到过打开 GPS 时候, onActivityResult 返回值不一致的问题。所以最好用一些第三方库检测权限。扫描蓝牙设备也出现了一些兼容性问题,在有些手机上一个蓝牙设备都搜索不到,而在其它某些手机却又是正常的,在 6.0 以上正常在 4.4 不正常诸如此类的问题,所以上全球最大的同性交友网站 Gayhub 找一些第三方库想必是极好的。

    FastBLE https://github.com/Jasonchenlijian/FastBle
    Android Bluetooth Low Energy 蓝牙快速开发框架。 使用简单的方式进行搜索、连接、读写、通知的订阅与取消等一系列蓝牙操作,并实时地得到操作反馈。
    这个库作者更新的很频繁,不过 Issues 也很多,这也是我项目用到的库

    BluetoothHelper https://github.com/a-voyager/BluetoothHelper
    看起来使用也很简单,搜索和发送接收数据都有

    Android-BluetoothSPPLibrary https://github.com/akexorcist/Android-BluetoothSPPLibrary
    这个就厉害了,连搜索界面都有了,不用自己写界面 ListView 和 Adapter 这些了。

    Android-Scanner-Compat-Library https://github.com/NordicSemiconductor/Android-Scanner-Compat-Library
    Nordic 官方的库

    如果是与 Nordic 的芯片通讯,那么可以用官方提供的一些列工具:

    Android-nRF-UART https://github.com/NordicSemiconductor/Android-nRF-UART

    主要的功能都在 UartService 这个类的,绑定了这个服务后,会有一个该类的实例,提供 writeRXCharacteristic 方法,这样就很简单的发送数据到智能设备中。接收数据很简单,注册一个 BroadcastReceiver 监听 UartService 发送的广播即可。

    ACTION_GATT_CONNECTED 已连接
    ACTION_GATT_DISCONNECTED 已断开
    ACTION_GATT_SERVICES_DISCOVERED Service 已经发现
    ACTION_DATA_AVAILABLE 数据可用
    EXTRA_DATA 数据
    DEVICE_DOES_NOT_SUPPORT_UART 设备不支持UART
    

    相关文章

      网友评论

      • cc15304cd06b:大哥,有没有一些demo啊,我目前也在做蓝牙开发,用的也是fastble这个库,目前做到了扫描蓝牙,然后显示在listview里面,但是连接这里留不会了,求教啊!
        cc15304cd06b:@天兵公园 好的,感谢
        天兵公园:如果你用的是fastble,连接就很简单了,看文档 https://github.com/Jasonchenlijian/FastBle#连接设备

      本文标题:Android 5 以上版本的低功耗蓝牙(BLE)通讯

      本文链接:https://www.haomeiwen.com/subject/taeglxtx.html