如何以编程方式将蓝牙(RN4020)与Android应用程序连接?

时间:2017-03-25 04:19:34

标签: java android android-studio bluetooth

我正在开发一款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();
}

当我尝试按下连接按钮时,我的应用程序卡住了,而且没有响应。

1 个答案:

答案 0 :(得分:0)

为避免配对,您需要选择不安全的UUID rfcomm。

替换:

btSocket = device.createRfcommSocketToServiceRecord(MY_UUID);

btSocket = device.createInsecureRfcommSocketToServiceRecord(MY_UUID);