我正在开发一款Android应用程序,它将通过蓝牙设备(RN4020)与目标微处理器(ARM处理器)板进行通信。 由于每个蓝牙模块的对PIN是随机的,我只想要应用程序源代码将应用程序与RN4020模块连接(不需要手动配对,因为我不知道对PIN)。 另外,我只想知道RN4020模块的UUID,我试图通过一些Android应用程序找到UUID,它显示了十多个UUID。我很困惑选择合适的UUID。
这是我的代码:
private static String address = "00:1E:C0:19:DB:A6";
private static final UUID MY_UUID = UUID.fromString("00002A00-0000-1000-8000-00805F9B34FB");
connect.setOnClickListener(new View.OnClickListener()
{
public void onClick(View V)
{
Toast.makeText(getApplicationContext(), "Connecting to ... RN4020_D694", Toast.LENGTH_SHORT).show();
if (mBluetoothAdapter.isEnabled())
Connect();
}
});
public void Connect() {
BluetoothDevice device = mBluetoothAdapter.getRemoteDevice(address);
Toast.makeText(getApplicationContext(), "Connecting to ... " + device, Toast.LENGTH_SHORT).show();
mBluetoothAdapter.cancelDiscovery();
try {
btSocket = device.createRfcommSocketToServiceRecord(MY_UUID);
btSocket.connect();
Toast.makeText(getApplicationContext(), "Connection made", Toast.LENGTH_SHORT).show();
} catch (IOException e) {
try {
btSocket.close();
} catch (IOException e2) {
changingText.setText("Unable to end the connection");
}
Log.d(TAG, "Socket creation failed");
}
beginListenForData();
}
当我尝试按下连接按钮时,我的应用程序卡住了,而且没有响应。
答案 0 :(得分:0)
为避免配对,您需要选择不安全的UUID rfcomm。
替换:
btSocket = device.createRfcommSocketToServiceRecord(MY_UUID);
与
btSocket = device.createInsecureRfcommSocketToServiceRecord(MY_UUID);