将BLE设备名称与字符串进行比较

时间:2017-12-27 20:01:14

标签: java android bluetooth-lowenergy

我正在编写android程序来扫描BLE设备。如果扫描设备的名称为" Pvz2 ",那么我想调用一个函数。

当我尝试将最近扫描的设备名称与先前定义的字符串进行比较时,一切都会正常运行但应用程序崩溃。可能是什么问题?

final String vardas1="Pvz2";

private ScanCallback mScanCallback = new ScanCallback() {
    @Override
    public void onScanResult(int callBackType, ScanResult result) {
        super.onScanResult(callBackType, result);
        BluetoothDevice btDevice = result.getDevice();
        String name = btDevice.getName();  
        if (result.getScanRecord() != null && Sc_on) {
            if (name.equals(vardas1))
                // Here I would call the function but this point is never reached
            }
        }                    
        ...

崩溃的Stacktrace:

Stacktrace

1 个答案:

答案 0 :(得分:0)

您正在获取NPE获取设备名称。

String name = btDevice.getName(); // <-- this returns null, since sometimes is not possible to determine the name
if (result.getScanRecord() != null && Sc_on) {
   if (name.equals(vardas1)) { // <-- null.equals crashes

您必须始终假设您可以获得空名称。