三步走--低功耗蓝牙BLE开发实战

BLE是Android4.3以上加入的新功能,他可以很大程度上节省了设备的功耗,他会在激活的时候进入一个快速的广播段,这时候周围的设备可以搜索到BLE设备,当匹配成功的时候就会建立一个长连接,如果没有匹配成功,他就会在一段时间后自动进入相对慢速的广播段,给周围设备发送的广播频率也会大大减少,直到没有设备与他匹配成功的时候,会自动停止发送广播,处于关闭状态,周围的设备也无法搜索到此BLE设备。

1.开始扫描

BluetoothAdapter.getDefaultAdapter().startLeScan(null, leScanCallback);//开始扫描,就可以一直搜索周围的蓝牙
2.扫描的结果在callback里,new一个callback,回调里的信息都在device里,比如name,mac等等,一般我在这里会去过滤一些mac地址来指定连接哪个BLE设备

//扫描的回调
BluetoothAdapter.LeScanCallback leScanCallback = new BluetoothAdapter.LeScanCallback() {
    @Override
    public void onLeScan(BluetoothDevice device, int rssi, byte[] scanRecord) {
 
        if (isConnecting || isConnected() || TextUtils.isEmpty(device.getName()) || TextUtils.isEmpty(device.getAddress()) ) {
            return;
        }
        if (!nameList.contains(device.getName())) {
 
            nameList.add(device.getName());
            UIUtils.sendBleMes("DEVICENAME", device.getName());
        }

        if(!TextUtils.isEmpty(last_DeviceName)&&last_DeviceName.equals(device.getName())){
 //如果扫描到上次保存到sp的设备,就直接连接
            tryConnect(device);
            return;
        }

        if(tryconnect){
            if(device.getName().equals(connectingName)){
                connectingName = "";
                tryconnect = false;
                tryConnect(device);
            }
        }
    }
};
3.如果上一步中的device经过一系列判断是我们自己的device,那么就执行下一步连接的操作

//尝试连接
private void tryConnect(BluetoothDevice device) {
    isConnecting = true;
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值