android BLE 蓝牙扫描代码,可以直接使用,有问题直接问我

这段代码展示了如何在Android Lollipop及以上版本中实现蓝牙低功耗(BLE)的扫描功能,包括设置扫描回调、扫描定时器以及不同扫描模式的配置。通过ScanSettings和ScanCallback,可以控制扫描行为,如选择高功耗模式、设置回调类型和匹配模式,并根据硬件支持设置报告延迟。
摘要由CSDN通过智能技术生成
//蓝牙扫描部分 ,拿去可以直接使用


        //扫描回调
    @RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
    private ScanCallback scanCallback=new ScanCallback() {
        @Override
        public void onScanResult(int callbackType, ScanResult result) {
            super.onScanResult(callbackType, result);

            bluetoothDeviceList.add(result.getDevice());
            System.out.println("扫描到设备:" + result.getDevice().getName() + "  " + result.getDevice().getAddress() + " " + result.getDevice().getUuids());
        }
    };


    //扫描定时
    @RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
    public    boolean Scandev(boolean isScan, final long ScanTime){

        final ScanSettings.Builder builder = new ScanSettings.Builder()
                //设置高功耗模式
                .setScanMode(SCAN_MODE_LOW_LATENCY);
        //android 6.0添加设置回调类型、匹配模式等
        if(android.os.Build.VERSION.SDK_INT >= 23) {
            //定义回调类型
            builder.setCallbackType(ScanSettings.CALLBACK_TYPE_ALL_MATCHES);
            //设置蓝牙LE扫描滤波器硬件匹配的匹配模式
            builder.setMatchMode(ScanSettings.MATCH_MODE_STICKY);
        }
//芯片组支持批处理芯片上的扫描
        if (bluetoothAdapter.isOffloadedScanBatchingSupported()) {
            //设置蓝牙LE扫描的报告延迟的时间(以毫秒为单位)
            //设置为0以立即通知结果
            builder.setReportDelay(0L);
        }
        ScanSettings mScanSettings=builder.build();

        if(isScan) {
            final Handler handler=new Handler();
            final Runnable runnable=new Runnable() {
                @Override
                public void run() {
                    bluetoothAdapter.getBluetoothLeScanner().stopScan(scanCallback);
                    handler.removeCallbacks(this);
                }
            };
            handler.postDelayed(runnable,ScanTime);
            bluetoothAdapter.getBluetoothLeScanner().stopScan(scanCallback);
            bluetoothAdapter.getBluetoothLeScanner().startScan(null,mScanSettings,scanCallback);


        }else{
            bluetoothAdapter.getBluetoothLeScanner().stopScan(scanCallback);
        }
        return true;
    }

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值