我必须编写一个应用程序,其中包含允许应用程序内蓝牙配对的先决条件。
谷歌搜索,我发现有一种方法可以将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()
返回空值。
您是否遇到过同样的问题?你有解决这个令人讨厌的问题的任何工作解决方案吗?
谢谢大家!
答案 0 :(得分:0)
我现在遇到同样的问题。 getUuid()在获得UUID的问题时返回null。在与我的设备制造商交谈时,他们告诉我,我的设备不支持UUID。 我目前正试图解决这个问题。如果我成功,我会告诉你