Skip to content Skip to sidebar Skip to footer

Android Bluetooth Accept() / Connect() With Already Paired Devices

I am having trouble connecting two Android devices via Bluetooth, which happens only when they have been paired before. I am running one as the server and the other as the client.

Solution 1:

In the client when I attempt to make a connection to a bonded device, I simply called it on the BluetoothDevice I found in BluetoothAdapter.getBondedDevices(). This does NOT work.

In order to properly establish the Bluetooth connection, I had to do something similar to the pseudocode below:

BluetoothDevicebonded= a device from BluetoothAdapter.getBondedDevices();
BluetoothDeviceactual= BluetoothAdapter.getRemoteDevice(bonded.getAddress());

BluetoothSocketsocket= actual.createRfcommSocketToServiceRecord(SOME_UUID);
socket.connect();

I arrived this answer by following exactly the Bluetooth chat example: Bluetooth Chat Service. Why it doesn't work on the device from getBondedDevices() is beyond me. Maybe someone with more intimate knowledge of Android can answer that.

Solution 2:

Solution 3:

privatestatic BluetoothSocket mSocket;
BluetoothDeviceselectDevice=null;

voidconnectDevice(){
    if(mSocket == null) {
        //Log.d(TAG, "Socket is null");
        UUID SPP_UUID = UUID
                .fromString("8ce255c0-200a-11e0-ac64-0800200c9a66");
        Set<BluetoothDevice> bondedDevices = BluetoothAdapter
                .getDefaultAdapter().getBondedDevices();
        //Log.d(TAG, "Size: " + bondedDevices.size());/**
         * Select your divice form paired devices
         */for (BluetoothDevice bluetoothDevice : bondedDevices) {
            selectDevice = bluetoothDevice;
            //Log.d(TAG, bluetoothDevice.getName()+" "+bluetoothDevice.getAddress());
        }

        if(selectDevice.getBondState() == selectDevice.BOND_BONDED) {
            //Log.d(TAG, selectDevice.getName());try {
                mSocket = selectDevice.createInsecureRfcommSocketToServiceRecord(SPP_UUID);
            } catch (IOException e1) {
                // TODO Auto-generated catch block//Log.d(TAG, "socket not created");
                e1.printStackTrace();
            }
            try {
                mSocket.connect();
            } catch (IOException e) {
                try {
                    mSocket.close();
                    //Log.d(TAG, "Cannot connect");
                } catch (IOException e1) {
                    //Log.d(TAG, "Socket not closed");
                    e1.printStackTrace();
                }
            }
   }

Post a Comment for "Android Bluetooth Accept() / Connect() With Already Paired Devices"