我正在尝试连接到嵌入式设备,而蓝牙引脚是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地址。 当然应该让我在手机上输入引脚而不是嵌入式主板上的引脚。
答案 0 :(得分:0)
您能解释一下您使用的是哪种嵌入式主板吗?
当pairing发生时,设备会相互指示所需连接的输入/输出可能性。
问题是你的两个设备发出不同的信号。 也许,Android希望使用密钥输入执行SPP,而您的嵌入式设备会尝试传统配对。您需要发布更多代码才能获得更清晰的响应。
这是我的情景: - Android是RFCOMM服务器 - 嵌入式主板是RFCOMM客户端(启动连接) 想象一下,他们没有配对。
新的RFCOMM连接将不再需要配对,直到其中一个设备的蓝牙适配器失去其电源,或者以某种其他方式(未成对)删除其链接密钥。 在连接之前,由于Android RFCOMM插槽是安全的,我的嵌入式主板将收到验证请求。 因此,对于Android RFCOMM,在我的项目中,我可以让Android仅响应“是/否”(不是PIN)。 (有限的I / O)
您还可以即时配对,无需用户操作,但这违反了Android API,不推荐使用。使用aidl文件可以更好地控制Android手机的蓝牙芯片。
别忘了投票!!