从配对设备捕获特定 MAC 地址

问题描述 投票:0回答:1

大家

这里是新的。

我在比较配对设备的 MAC 地址时遇到问题。如果我的应用程序发现某个 MAC 地址已与其配对,我希望我的应用程序执行某些操作。

这是我的java课程的一部分:

Boolean pair_status = false;

Set<BluetoothDevice> pairedDevices = BTAdapter.getBondedDevices();
if (pairedDevices.size() > 0) {
    for (BluetoothDevice device : pairedDevices) {
        if (device.getAddress() == String.valueOf(R.string.BT_MWAddress)) {
            pair_status = true;
        }
    }
}

这是我的字符串初始化:

<string name="BT_MWAddress">28:A3:91:E6:A1:50</string>

我可以看到该设备已与我的手机配对。

我尝试将条件语句更改为以下内容,但仍然得到相同的结果。

  • String.valueOf(device.getAddress()) == String.valueOf(R.string.BT_MWAddress)
  • device.getAddress() == "28:A3:91:E6:A1:50"
  • String.valueOf(device.getAddress()) == "28:A3:91:E6:A1:50"
  • String.valueOf(device.getAddress()) == "28:A3:91:E6:A1:50"

我所做的另一项检查是更改我的代码,如下所示以进行故障排除。并且

pair_status
始终更新为
-1
。将
pair_status
发布到 TextView 中。

int pair_status = 0;

Set<BluetoothDevice> pairedDevices = BTAdapter.getBondedDevices();
if (pairedDevices.size() > 0) {
    for (BluetoothDevice device : pairedDevices) {
        if (device.getAddress() == String.valueOf(R.string.BT_MWAddress)) {
            pair_status = 1;
        } else {
            pair_status = -1;
        }
    }
}
java android bluetooth android-bluetooth pairing
1个回答
0
投票

我不熟悉蓝牙配对,但可能与您比较字符串的方式有关。字符串在 java 中是不可变的,因此 == 将比较内存位置。您可以尝试使用 .equals 方法,该方法将比较字符串中的实际字符而不是内存位置。

如果这不起作用,您可以打印 2 个地址吗?

© www.soinside.com 2019 - 2024. All rights reserved.