美文网首页
android ble蓝牙开发(一)

android ble蓝牙开发(一)

作者: 小梦想家北冥有鱼 | 来源:发表于2017-05-07 23:55 被阅读0次

    目前,对于传说中的智能家居来说,了解ble蓝牙知识必不可少;低功耗蓝牙从4.3版本开始,可以使用它来发现设备(ScanBlutTooth),查询服务和读写特写。蓝牙底层是基于GATT协议,我们要操作蓝牙读取是要了解Api中BluetoothGATT类,里面包含Service(服务),Characteristic(特征值),Descriptor(属性);在连接后想做读写的操作,需要特定的Service_UUID,uuid是什么呢,是唯一统一标识符,每一个标识符是128位,例如这样的格式

    uuid格式

    怎么理解深层次蓝牙?蓝牙底部由 Service,Characteristic,Descriptor组成,他们可以由不同的uuid表示,一个Service由多个Characteristic,而Characteristic有多个Descriptor组成,从而构成一个服务,假如这个服务,这个Service表是蓝牙灯的信息,那么Characteristic可以是色温,色差,那么Descriptor就是里面一个属性值,可以是代表argb值;连接蓝牙有几个步骤:

    1.蓝牙权限

    在AndroidManifest.xml文件中添加权限

    2.scanBlueTooth 扫描蓝牙设备

    一般在Activity、Fragment使用蓝牙场景中,将附近的蓝牙在扫描过后添加到BlueTooth列表;

    (1).获取蓝牙服务,得到blueAdaper,再在开始扫描:

    检测蓝牙是否开启

    (2).开始扫描,开启扫描,这里的TimeOut是默认扫描15s,因为蓝牙扫描是很耗费电量以及性能,恩,电量是一定的,但性能我不知道,也许是我瞎编的;15s后结束扫描动作;

    开始扫描蓝牙设备

    (3).startScan,扫描是要通过BluetoothAdapter开启扫描过程

    startScan()具体实现

    (4).将扫描到的蓝牙设备添加到列表当中,以供连接选择;

    leScanCallBack回调;

    3.连接蓝牙

    (1),通过Mac地址,在使用BluetoothAdapter获取Device,再使用Device连接

    蓝牙模块 获取服务 连接蓝牙模块要实现bluetoothGatt回调,这里表示是否连接上

    4.获取服务

    5.收发数据

    (1)收取数据

    需要判断characteristic的uuid是否与通讯协议一致,如果一致,那么从gatt当中读取数据

    读,收取数据

    (2)写数据

    写数据

    (3)一般而言,收取通知是从这里,被动的收取从蓝牙模块发送的数据,根据协议不同,dealData各有所不同;其中注意需要判断uuid;rssi是蓝牙信息强度,值是负数,如果值越大,那么信息强度越强;

    6.固件升级

    待续;

    相关文章

      网友评论

          本文标题:android ble蓝牙开发(一)

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