美文网首页
如何使用android原生BLE蓝牙进行操作?

如何使用android原生BLE蓝牙进行操作?

作者: 努力深耕Android的小透明 | 来源:发表于2018-10-01 09:41 被阅读67次

    一.BLE蓝牙简介

    之前的涉及的物联网项目中使用的: BLE 低功耗蓝牙(蓝牙4.0), 支持android 4.3以上的手机
    主从关系: BLE低功耗蓝牙只能做从端设备 ,一个蓝牙主端设备,可同时与7个蓝牙从端设备进行通讯

    二.好处: 为什么用低功耗蓝牙 ?

    1)低功耗
    低功耗的原理:
    1\低功耗蓝牙仅使用了3个广播通道,传统蓝牙技术采用 16~32 个频道
    2\每次广播开启时间也由传统的 22.5ms 减少到 0.6~1.2ms(毫秒)

    2)传输距离极大提高
    传统蓝牙传输距离为 2~10m,而蓝牙4.0的有效传输距离可达到 60~100m

    3)安全性
    使用AES-128 CCM加密算法进行数据包加密和认证。
    更多BLE蓝牙的解析参考博客 : BLE4.0教程一 蓝牙协议连接过程与广播分析

    三.原生蓝牙的使用流程

    1)准备工作

    添加权限
    打开蓝牙
    1.先拿到BluetoothManager bluetoothManager = (BluetoothManager) getSystemService(Context.BLUETOOTH_SERVICE);
    2.再拿到BluetoothAdapter bluetoothAdapter = bluetoothManager.getAdapter();
    判断是否打开蓝牙
    未打开弹出 系统弹框 ,除了 魅族手机 是打开系统设置

    if (mBluetoothAdapter == null || !mBluetoothAdapter.isEnabled()) { 
        Intent enableBtIntent = new     Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE); 
        startActivityForResult(enableBtIntent, REQUEST_ENABLE_BT);
     }
    

    2)扫描

    设备/手机都是蓝牙信号

    bluetoothAdapter .startLeScan( BluetoothAdapter.LeScanCallback);
    

    在回调方法中:

     public void onLeScan(BluetoothDevice device广播里的设备信息, int rssi信号量, byte[] scanRecord 广播里面的信息) {…..}
    

    一般在扫描的过程中,我们还会设置 设备过滤原则(因为我只想要搜索到我们想要的设备,忽略无关设备)
    如:从 scanRecord -- beacon -- beacon.type == 0xFF代表Manufacture,通过与嵌入式软件定义 自己的 Manufacture值即可

    2)连接

    用BluetoothDevice得到BluetoothGatt:

    BluetoothGatt gatt = device.connectGatt(this, true, gattCallback);
    

    断连:

    gatt.disconnect();(断开连接后务必记得gatt.close();)
    

    关键问题:连接后一般要做什么事?

    1.认证 设备双方都清楚对方的身份

    ( 必须在刚连接成功后2秒内app写一个值给设备,否则会被设备断开连接)

    2.启动各种必要的通知 writeDescriptor +Notify

    四.主要操作

    1.Write 写

    主要是读写 characteristic
    gatt.wirteCharacteristic(mCurrentcharacteristic);

    2.Read 读

    gatt.readCharacteristic(characteristic);

    3.Notify 打开通知,设备上报给我

    bluetoothGatt.setCharacteristicNotification(data, true);

    真实工作中使用的蓝牙库BlueToothKit请参考我的另一篇博客:
    android蓝牙入门知识和优秀蓝牙第三方库BluetoothKit的使用

    相关文章

      网友评论

          本文标题:如何使用android原生BLE蓝牙进行操作?

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