Problem while disconnecting BLE device!

0 votes

I'm running Android Things on my Pi and I connected it with a Bluetooth Low-Energy device using the method 'connectGatt()'. But I just can't seem to disconnect it!
I'm finally forced to kill the application and when I reopen it to enable the broadcasting mode for visibility, it tells me that the app was not disconnected properly.

I'm sharing my code snippet for the disconnectivity of the device if anybody could tell me if I've missed out on something or done some mistakes in it:

private void disconnectDevice() {
    gatt.disconnect();
}
//I've closed the connection here

private BluetoothGattCallback gattCallback = new BluetoothGattCallback() {
    @Override
    public void onConnectionStateChange(BluetoothGatt gatt, int status, int newState) {
        switch (newState) {
            case BluetoothProfile.STATE_CONNECTED:
                Log.d("BLED-GATT", "STATE_CONNECTED");
                setUIConnectionStatus("Discover services on device...", Color.YELLOW);
                checkEnableAddButton(simpleTrackEditText.getText().toString());
                gatt.discoverServices();
                break;
            case BluetoothProfile.STATE_DISCONNECTED:
                Log.d("BLED-GATT", "STATE_DISCONNECTED");
                setUIConnectionStatus("Not Connected!", Color.RED);
                gatt.close();
                break;
            default:
                Log.d("BLED-GATT", "STATE_OTHER");
        }
    }
}

The entire things executes but neither does my broadcasting mode change and nor does my device disconnect. 

Please Help! 

Thanks in Advance. :)  

Jul 17, 2018 in IoT (Internet of Things) by DataKing99
• 8,100 points
110 views

1 answer to this question.

Your answer

Your name to display (optional):
Privacy: Your email address will only be used for sending these notifications.
0 votes

I think that's because of the way they've paired. And, everytime you reopen, the broadcasting mode simultaneously attempts connecting to that same device, again and again, making your application have too many connections open at the same time and delaying the search for new devices. 
I have a similar code running for mine. I've just added a "!isConnected()". Try this: 

/**
 * Connects to the device. Does nothing if already connected.
 * @param macAddress the address of the device.
 */
private void connectDevice(String macAddress) {
    if (!isConnected()) {
        device = bluetoothAdapter.getRemoteDevice(macAddress);

        if (device == null) {
            this.sendToast("Device Not Available");
        } else {
            Log.d("BLED", "Connecting...");
            gatt = device.connectGatt(this, true, gattCallback);
        }
    }
}
Lemme know if it solved your problem!

answered Jul 17, 2018 by nirvana
• 3,040 points

Related Questions In IoT (Internet of Things)

0 votes
1 answer

Customize menu based on BLE device Authentication

You may dynamically change contents of the ...READ MORE

answered Aug 7, 2018 in IoT (Internet of Things) by anonymous2
• 4,260 points
17 views
0 votes
1 answer
0 votes
1 answer

Publishing commands to device in IBM IoT using MQTT in Java

If you are publishing from an application, ...READ MORE

answered Jul 27, 2018 in IoT (Internet of Things) by anonymous2
• 4,260 points
318 views
0 votes
1 answer
0 votes
1 answer

Android Ble GATT_ERROR 133 getting often with samsung devices

I tried the following code #!/usr/bin/python import ibmiotf.device from time ...READ MORE

answered Jul 18, 2018 in IoT (Internet of Things) by anonymous2
• 4,260 points
106 views
0 votes
1 answer

Java No Class Def Found error

I solved this issue by updating my ...READ MORE

answered Oct 8, 2018 in IoT (Internet of Things) by anonymous2
• 4,260 points
98 views
0 votes
1 answer

Use of .driver-metadata file in Android Things?

If I'm not wrong, it could be ...READ MORE

answered Oct 12, 2018 in IoT (Internet of Things) by nirvana
• 3,040 points
29 views
0 votes
1 answer

Detecting BLE beacons that are not ibeacons on IOS

You'll have to understand that CoreLocation is ...READ MORE

answered Aug 1, 2018 in IoT (Internet of Things) by nirvana
• 3,040 points
27 views

© 2018 Brain4ce Education Solutions Pvt. Ltd. All rights Reserved.
"PMP®","PMI®", "PMI-ACP®" and "PMBOK®" are registered marks of the Project Management Institute, Inc. MongoDB®, Mongo and the leaf logo are the registered trademarks of MongoDB, Inc.