在Android中以编程方式配对BluetoothDevice - 连接问题

时间:2014-07-03 13:01:20

标签: android reflection bluetooth uuid

我必须编写一个应用程序,其中包含允许应用程序内蓝牙配对的先决条件。

谷歌搜索,我发现有一种方法可以将BluetoothDevice与API级别< 19:

Method createBondMethod = BluetoothDevice.class.getMethod("createBond");
Boolean paired = (Boolean) createBondMethod.invoke(device);
if (paired.booleanValue()) {
    Log.i(LOGTAG, "Pairing bluetooth device succeded.");

} else {
    Log.i(LOGTAG, "Pairing bluetooth device failed.");
}

这是一个非常hacky的解决方案,对私有方法的反思从来都不是一个好的解决方案......但它似乎是唯一可用的解决方案。

我试过了..我设法将平板电脑与另一台蓝牙设备配对(它既不是智能手机也不是平板电脑......)。

配对两台设备后,我需要创建一个BluetoothSocket并连接它。

问题来了:

BluetoothSocket socket = null;
try {
    final UUID uuid = this.mDevice.getUuids()[0].getUuid();
    socket = this.mDevice.createRfcommSocketToServiceRecord(uuid);
    socket.connect();
    Log.e(LOGTAG, "Connected to the socket");
    this.onBluetoothDeviceConnected(socket, this.mDevice);
    return;
} catch (Exception e) {
    // handling exception
}

我的this.mDevice是配对设备,它不是空的..但它没有UUID,实际上方法BluetoothDevice.getUuids()返回空值。

您是否遇到过同样的问题?你有解决这个令人讨厌的问题的任何工作解决方案吗?

谢谢大家!

1 个答案:

答案 0 :(得分:0)

我现在遇到同样的问题。 getUuid()在获得UUID的问题时返回null。在与我的设备制造商交谈时,他们告诉我,我的设备不支持UUID。 我目前正试图解决这个问题。如果我成功,我会告诉你