Question

I am developing an Android app which connects to the BLE devices, Device does connect most of the time and i am able to capture the readings. But sometime after many connects disconnects, Bluetooth On/Off, my BluetoothGattCallback class method

onServicesDiscovered(BluetoothGatt gatt, int status)

with status 0 [which means GATT_SUCCESS].

now when i try to get the BluetoothGattService like:

BluetoothGattService service = gatt.getService(getServiceUUID());

it return null, so that i am unable to perform next steps. Please help me to find the problem.

Was it helpful?

Solution

You have to first discover all services for the given device, otherwise when you run BluetoothGattService service = gatt.getService(getServiceUUID()); it will return null.

I would recommend you add the onServicesDiscovered function and use gatt.discoverServices(); instead.

@Override
    // New services discovered
    public void onServicesDiscovered(BluetoothGatt gatt, int status) {
        if (status == BluetoothGatt.GATT_SUCCESS) {
            for (BluetoothGattService gattService : gattServices) {
                Log.i(TAG, "Service UUID Found: " + gattService.getUuid().toString());
            }
        }
    }

OTHER TIPS

hello because of bluetooth low energy is unstable . and as your question define that you get call back function with 0 status code. then instead of using getServivce(UUID). you can use getServices() method to discover avaliable services. this might be uuid issue!! Maybe you've got the UUID wrong..

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top