在做Android蓝牙串口连接的时候一般会使用
- BluetoothSocket tmp = null;
-
-
- try {
- tmp = device.createRfcommSocketToServiceRecord(MY_UUID);
- } catch (IOException e) {
- Log.e(TAG, "create() failed", e);
- }
然后是tmp赋给BluetoothSocket,接着调用connect方法进行蓝牙设备的连接。
可是 BluetoothSocket 的connect方法本身就会报很多异常错误。
以下根据对蓝牙开发的一点研究可通过以下方法解决:
方法1.先进行蓝牙自动配对,配对成功,通过UUID获得BluetoothSocket,然后执行connect()方法。
方法2.通过UUID获得BluetoothSocket,然后先根据mDevice.getBondState()进行判断是否需要配对,最后执行connnect()方法。
- private class ConnectThread extends Thread {
- String macAddress = "";
-
- public ConnectThread(String mac) {
- macAddress = mac;
- }
-
- public void run() {
- connecting = true;
- connected = false;
- if(mBluetoothAdapter == null){
- mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
- }
- mBluetoothDevice = mBluetoothAdapter.getRemoteDevice(macAddress);
- mBluetoothAdapter.cancelDiscovery();
- try {
- socket = mBluetoothDevice.createRfcommSocketToServiceRecord(uuid);
-