我正在尝试连接到嵌入式设备,蓝牙引脚为 1234,当我连接到嵌入式板时,它要求我在嵌入式板上输入 000000,而不是要求我从设备输入正确的引脚。我不确定我做错了什么。
public void connectBluetooth() throws IOException{
device = bluetoothAdapter.getRemoteDevice(MAC);
try {
mSocket = device.createRfcommSocketToServiceRecord(MY_UUID);
} catch (IOException e) {
Log.e(tag, "+++++Failed to create RFCOMM connection+++++");
}
try{
mSocket.connect();
Log.e(tag, "+++++connecting+++++");
manageBluetooth manageThread = new manageBluetooth();
manageThread.start();
threadCheck = true;
}catch(IOException e){
Log.e(tag, "+++++Failed to connect+++++");
}
Log.e(tag, "+++++After catch+++++");
}
}
我从manageThread中调入和调出,我也声明了正确的MAC地址。 当然,它应该要求我在手机上输入密码,而不是在嵌入式板上输入密码。
您能解释一下您使用的是哪种嵌入式板吗?
发生配对时,设备会相互指示所需连接的输入/输出可能性。
问题是您的两个设备发出不同的信号。 也许,Android 希望通过密钥输入执行 SPP,而您的嵌入式设备则尝试传统配对。您需要发布更多代码才能获得更清晰的响应。
这是我的场景: - Android是RFCOMM服务器 - 嵌入式板为RFCOMM客户端(发起连接) 想象一下他们没有配对。
新的 RFCOMM 连接不再需要配对,直到其中一个设备的蓝牙适配器失去电源,或者以其他方式删除其链接密钥(取消配对)。 在连接之前,由于 Android RFCOMM 套接字是安全的,因此我的嵌入式板将收到身份验证请求。 因此,对于 Android RFCOMM,在我的项目中,我可以让 Android 仅使用“是/否”(而不是 PIN)进行响应。 (有限的 I/O)
您还可以在无需用户操作的情况下进行即时配对,但这违反了 Android API,不建议这样做。使用aidl文件可以更好地控制Android手机的蓝牙芯片。
别忘了投票!!