扫描 BLE 设备不工作

Scanning BLE device not working

我正在尝试使用

扫描 BLE 设备
mBluetoothAdapter.startLeScan(this);

(我知道它对于较新的版本来说已经过时了,但只是为了看看它是否适用于我的 phone [4.4],我正在使用它)。因此它开始扫描然后继续前进而不会出现错误但未检测到任何设备。 OnLEScan 事件也被触发,但其中的设备参数为空。我的 LE 设备就在那里并已连接。

在谷歌搜索中,我发现如果蓝牙适配器没有 UUID,就会发生这种情况。 如何设置 UUID? OnLeScan called/fired 是什么时候?还有其他解决办法吗?

我的回调代码在这里

//BluetoothAdapte.LEScanCallBack on MainActivity
@Override
public void onLeScan(BluetoothDevice device, int rssi, byte[] scanRecord){
    Log.i(TAG, "New LE Device: " + device.getName() + "@" + rssi);
    if(Device_Name.equals(device.getName())){
            mDevices.put(device.hashCode(), device);
            invalidateOptionsMenu();
        }
}
  • 使用此代码,因为它将让您深入了解所有数据 在您的 BLE 设备中可用(将在日志中显示数据)。
  • UUID基本由设备厂商提供,不能自行设置。
  • 例如:我正在使用 BLE Beacons,它的制造商为我提供了 API,它帮助我获取了它的 UUID。
  • 有时,设备本身有一个特殊的 ID(在我的例子中是工厂 ID),它可以帮助您检索您的 UUID,也可以从制造商的网站或 API。

    BluetoothAdapter bluetoothAdapter;
    BluetoothLeScanner bluetoothLeScanner;
    
    
    
    bluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
    bluetoothLeScanner = bluetoothAdapter.getBluetoothLeScanner();
    
    
    
        bluetoothLeScanner.startScan(new ScanCallback() {
            @Override
            public void onScanResult(int callbackType, ScanResult result) {
                super.onScanResult(callbackType, result);
    
                String s = "\nRssi : "+result.getRssi()+"" +
                        "\nName (Get Device) : "+result.getDevice().getName()+"" +
                        "\nBytes"+result.getScanRecord().getBytes()+"" +
                        "\nGet Device : " + result.getDevice()+"" +
                        "\nAddress : "+result.getDevice().getAddress()+"" +
                        "\nService UUIds : "+result.getScanRecord().getServiceUuids().get(0)+"" +       //Unique
                        "\nName (Scan Record) : "+result.getScanRecord().getDeviceName()+"" +
                        "\nUuids device : "+result.getDevice().getUuids()+"" +
                        "\nDescribe contents : "+result.describeContents();
    
                //This will show you all the data in logs.
                Log.e("All Data",s);
    
    
    
            }
    
            @Override
            public void onBatchScanResults(List<ScanResult> results) {
                super.onBatchScanResults(results);
            }
    
            @Override
            public void onScanFailed(int errorCode) {
                super.onScanFailed(errorCode);
            }
        });
    
    }
    

Android 4.4 不兼容,我用的是 android 5.1 设备,它运行得很好!