我在使用64位JVM的Linux x64中使用Bluecove(bluecove和bluecove-gpl 2.1.1 SNAPSHOT库)在配对过程中尝试对BT设备进行身份验证时遇到麻烦。尽管发现似乎很好,但是在尝试使用已知PIN进行身份验证时,恐怕绝不会,因为绝不会实现此功能。
这是实际进行配对的方法:
public Boolean pairingDevice()
{
//check if authenticated already
if (remoteDevice.isAuthenticated()){
return true;
}
else{
LOG.info("--> Pairing device");
try {
PIN = "111111";
boolean paired = RemoteDeviceHelper.authenticate(remoteDevice, PIN);
//LOG.info("Pair with " + remoteDevice.getFriendlyName(true) + (paired ? " succesfull" : " failed"));
devicePaired = paired;
if (devicePaired)
LOG.info("--> Pairing successful with device " + remoteDevice.getBluetoothAddress());
else
LOG.info("--> Pairing unsuccessful with device " + remoteDevice.getBluetoothAddress());
}
catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
LOG.info("--> Pairing unsuccessful with device " + remoteDevice.getBluetoothAddress());
devicePaired = false;
}
LOG.info("--> Pairing device Finish");
return devicePaired;
}
}
现在拨打
boolean paired = RemoteDeviceHelper.authenticate(remoteDevice, PIN);
以对BluetoothStackBlueZ.authenticateRemoteDevice(长地址,字符串密码)的调用结束:
/*
* (non-Javadoc)
*
* @see com.intel.bluetooth.BluetoothStack#authenticateRemoteDevice(long, java.lang.String)
*/
public boolean authenticateRemoteDevice(long address, String passkey) throws IOException {
return false;
}
如您所见,这始终返回FALSE,这将导致未定义的行为。问题是...我该如何使用Bluecove在Linux中对remoteDevice进行身份验证?
有Bluecove的替代品吗?我听说过相同的代码可以在Windows中使用,但是由于这个原因,我真的不想切换到Windows。
提前致谢,
亚历克斯
最佳答案
对于其他遇到相同问题的人,我已经在多个平台上尝试过此代码:Linux x64,Windows 7 64位,并且从未使用过。
我做了全新的Ubuntu 12.04 32位安装,已安装:
libbluetooth-dev和bluez-utils
完美的工作...所以我的答案是...如果您需要使用Bluecove,请使用32位。不管是什么原因在我的Linux-Windows 64计算机上都不起作用...我不知道,但是不能花更多的时间在我的Linux-Windows 64计算机上。
关于java - Bluecove中的身份验证-Linux x64无法正常工作,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12896056/