蓝牙扫描设备

Posted

技术标签:

【中文标题】蓝牙扫描设备【英文标题】:Bluetooth scanning for devices 【发布时间】:2016-09-16 21:07:13 【问题描述】:

我的代码有问题:

private ScanCallback mLeScanCallback = new ScanCallback()
    //Callback when a BLE advertisement has been found.
    @Override
    public void onScanResult(int callbackType, final android.bluetooth.le.ScanResult result) 
        super.onScanResult(callbackType, result);

       new Thread()
           @Override
           public void run() 
               final BluetoothDevice device = result.getDevice();

               runOnUiThread(new Runnable() 
                   @Override
                   public void run() 
                       if (device != null)
                           mDevices.add(device);
                       
                   
               );
           
       .start();

    

    //Callback when batch results are delivered.
    @Override
    public void onBatchScanResults(List<android.bluetooth.le.ScanResult> results) 
        super.onBatchScanResults(results);
    

    //Callback when scan could not be started.
    @Override
    public void onScanFailed(int errorCode) 
        super.onScanFailed(errorCode);
    

目前我正在使用此代码来获取扫描结果。这是基于:https://github.com/RedBearLab/Android/blob/master/Examples/Chat/src/com/redbear/chat/Main.java#L138

基于的应用程序的 API 级别较低,而我的应用程序的 API 级别较高。所以我把它改成了 on startScan() 方法。

老实说,我被卡住了,因为当我运行应用程序时,我没有收到任何错误。我检查了 mDevices 数组是否为空,它是。这意味着代码不会将设备添加到数组中,或者我的应用程序没有专门找到任何设备。

任何帮助将不胜感激。

激活扫描代码

private void scanDevice()
    new Thread() 
        @Override
        public void run()
            BTScanner.startScan(mLeScanCallback);

            try 
                Thread.sleep(SCAN_PERIOD);
             catch (InterruptedException e)
                e.printStackTrace();
            

            BTScanner.stopScan(mLeScanCallback);
        


    .start();

【问题讨论】:

【参考方案1】:

发现问题。它与获取扫描结果的 ACCESS_COARSE_LOCATION 或 ACCESS_FINE_LOCATION 的权限有关。

【讨论】:

我已经添加了权限,但我没有得到设备名称

以上是关于蓝牙扫描设备的主要内容,如果未能解决你的问题,请参考以下文章

如何使用核心蓝牙 sdk 扫描蓝牙设备?

蓝牙扫描仪未发现设备

Swift:为啥我的 iOS 不能扫描其他蓝牙设备

蓝牙扫描设备

蓝牙 LE 不扫描设备

蓝牙 扫描周围的蓝牙设备