首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

BLE和EasyBle的使用(3)

BLE和EasyBle的使用(3)

设置通知(notify或indicate)

notify和indicate都使用以下方法

    bleManager.notify(bleDevice, serviceUuid, notifyUuid, new BleNotifyCallback() {
                @Override
                public void onCharacteristicChanged(byte[] data, BleDevice device) {
                  
                }
               
                @Override
                public void onNotifySuccess(String notifySuccessUuid, BleDevice device) {
     
                }
     
                @Override
                public void onFail(int failCode, String info, BleDevice device) {
                 
                }
            });

当需要取消notify或indicate时调用以下方法

bleManager.cancelNotify(bleDevice, notifyUuid);

写入特征数据

    bleManager.write(bleDevice, serviceUuid, writeUuid, data, new BleWriteCallback() {
                @Override
                public void onWrite(byte[] data, BleDevice device) {
     
                }
     
                @Override
                public void onFail(int failCode, String info, BleDevice device) {
     
                }
            });

如果一次性写入的数据长度大于MTU即最大传输单元(默认是20字节),则可以使用下列方法进行分批写入

    bleManager.writeByBatch(bleDevice, serviceUuid, writeUuid, data, lengthPerPackage, new  BleWriteByBatchCallback() {
                @Override
                public void writeByBatchSuccess(byte[] data, BleDevice device) {
     
                }
     
                @Override
                public void onFail(int failCode, String info, BleDevice device) {
     
                }
            });

Destroy

当结束BLE通信时不要忘了调用destroy

bleManager.destroy();

其他api

           //获取设备支持的服务信息,如果设备尚未连接上则返回值为null
           bleManager.getDeviceServices(bleDevice);
        
           //读取已连接的远程设备信号
           bleManager.readRssi(bleDevice, bleRssiCallback);
     
           //设置MTU
           bleManager.setMtu(bleDevice, mtu, bleMtuCallback);
     
           //读取特征数据
           bleManager.read(bleDevice, serviceUuid, readUuid, bleReadCallback);
     
           //获取当前连接的设备
           bleManager.getConnectedDevices();
     
           //判断是否已连接上某台设备
           bleManager.isConnected(address);
返回列表