Search code examples
androidbluetooth-lowenergyuuidcharacteristics

Compare UUID with GattService List


I have used the BluetoothLeGatt example from Android and now I want to load a xml file depending on the UUID of the device I'm connecting with.

I've tried to compare the UUID's with the following code.

mBluetoothLeService.getSupportedGattServices().equals("0003CBBB-0000-1000-8000-00805F9B0131")

With the function:

public List<BluetoothGattService> getSupportedGattServices() {
    if (mBluetoothGatt == null) return null;

    return mBluetoothGatt.getServices();
}

What am I doing wrong?

Here is the error code:

FATAL EXCEPTION: main
                                                                               Process: com.example.android.bluetoothlegatt, PID: 1314
                                                                               java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.android.bluetoothlegatt/com.example.android.bluetoothlegatt.DeviceControlActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'java.util.List com.example.android.bluetoothlegatt.BluetoothLeService.getSupportedGattServices()' on a null object reference
                                                                                   at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2924)
                                                                                   at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2985)
                                                                                   at android.app.ActivityThread.-wrap14(ActivityThread.java)
                                                                                   at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1635)
                                                                                   at android.os.Handler.dispatchMessage(Handler.java:102)
                                                                                   at android.os.Looper.loop(Looper.java:154)
                                                                                   at android.app.ActivityThread.main(ActivityThread.java:6692)
                                                                                   at java.lang.reflect.Method.invoke(Native Method)
                                                                                   at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1468)
                                                                                   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1358)
                                                                                Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'java.util.List com.example.android.bluetoothlegatt.BluetoothLeService.getSupportedGattServices()' on a null object reference
                                                                                   at com.example.android.bluetoothlegatt.DeviceControlActivity.onCreate(DeviceControlActivity.java:483)
                                                                                   at android.app.Activity.performCreate(Activity.java:6912)
                                                                                   at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1126)
                                                                                   at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2877)
                                                                                   at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2985) 
                                                                                   at android.app.ActivityThread.-wrap14(ActivityThread.java) 
                                                                                   at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1635) 
                                                                                   at android.os.Handler.dispatchMessage(Handler.java:102) 
                                                                                   at android.os.Looper.loop(Looper.java:154) 
                                                                                   at android.app.ActivityThread.main(ActivityThread.java:6692) 
                                                                                   at java.lang.reflect.Method.invoke(Native Method) 
                                                                                   at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1468) 
                                                                                   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1358

Solution

  • As per I understand your question :

    List<BluetoothGattService> services = mBluetoothLeService.getSupportedGattServices();
    for (int i = 0; i < services.size(); i++) {
            BluetoothGattService gattService = services.get(i);
     if(gattService.getUuid().toString().equalsIgnoreCase("0003CBBB-0000-1000-8000-00805F9B0131"))
            Log.e("SERVICES : ", "" + gattService.getUuid());
            }
        }