Java 如何通过编程方式将蓝牙(RN4020)与Android应用程序连接?
我正在开发一个Android应用程序,它将通过蓝牙设备(RN4020)与目标处理器(ARM处理器)板进行通信。 由于每个蓝牙模块的配对PIN码都是随机的,因此我只希望应用程序源代码将应用程序与该RN4020模块连接起来(不需要手动配对,因为我不知道配对PIN码)。 另外,我只想知道RN4020模块的UUID,我试着通过一些Android应用程序找到UUID,它显示了十多个UUID。我对选择合适的UUID感到困惑 这是我的密码:Java 如何通过编程方式将蓝牙(RN4020)与Android应用程序连接?,java,android,android-studio,bluetooth,Java,Android,Android Studio,Bluetooth,我正在开发一个Android应用程序,它将通过蓝牙设备(RN4020)与目标处理器(ARM处理器)板进行通信。 由于每个蓝牙模块的配对PIN码都是随机的,因此我只希望应用程序源代码将应用程序与该RN4020模块连接起来(不需要手动配对,因为我不知道配对PIN码)。 另外,我只想知道RN4020模块的UUID,我试着通过一些Android应用程序找到UUID,它显示了十多个UUID。我对选择合适的UUID感到困惑 这是我的密码: private static String address = "0
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();
}
当我试图按下连接按钮时,我的应用程序卡住了,没有响应。为了避免配对,您需要使用不安全的UUID rfcomm 替换:
btSocket = device.createRfcommSocketToServiceRecord(MY_UUID);
与
亲爱的先生,更换上述代码后,代码保持不变,且未连接到硬件。你能推荐一些其他的源代码吗!!!!!!上面的代码只是根据您的请求解决了蓝牙套接字安全性的配对降级问题。我不知道没有logcat还有什么东西无法连接。请在问题中编辑并添加您的logcat,以检查IOException正在捕获什么。当我尝试在mobile中运行应用程序时,它显示为NULL。BluetoothDevice=mBluetoothAdapter.getRemoteDevice(地址);mmDevice=设备;Toast.makeText(getApplicationContext(),“连接已建立”+mmDevice.getName(),Toast.LENGTH_SHORT).show();对于上面的代码,它显示:“Connection madenull”。抱歉,这不是诊断连接异常的完整日志。我只能猜测您提供了错误的MAC或UUID或两者的组合,但由于您提供的信息很差,我很容易猜错。您最初的问题在下面的回答中得到了回答:降低BT套接字的安全性是避免显式配对的方法。对于您的连接问题,请添加一个带有完整日志的新问题,否则没有人能够知道您的问题以帮助您。
btSocket = device.createInsecureRfcommSocketToServiceRecord(MY_UUID);