Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

BluetoothDevice.ConnectGatt() with transport parameter

I just started with Android and set up an API 21 project in Android Studio using Bluetooth LE.

Digging into BluetoothDevice shows me two signatures of ConnectGatt() method:

public BluetoothGatt connectGatt(Context context, boolean autoConnect,
                                 BluetoothGattCallback callback)

and

public BluetoothGatt connectGatt(Context context, boolean autoConnect,
                                 BluetoothGattCallback callback, int transport)

I'd like to use the second one but the build fails:

Error:(127, 26) error: method connectGatt in class BluetoothDevice cannot be applied to given types; required: Context,boolean,BluetoothGattCallback found: Context,boolean,BluetoothGattCallback,int reason: actual and formal argument lists differ in length

It seems the compiler settings don't match the source code in Android Studio.

How can I fix this?

like image 942
Christian W Avatar asked Jan 10 '23 05:01

Christian W


1 Answers

If you want to use hidden API's you can invoke the method you want to use. But you have to bear in mind that a hidden API can change at any point. You have to use it at your own risk.

Here is an example code how to use the hidden connectGatt() method.

        Method connectGattMethod;
        BluetoothGatt connectGatt;

        try {
            connectGattMethod = device.getClass().getMethod("connectGatt", Context.class, boolean.class, BluetoothGattCallback.class, int.class);
        } catch (NoSuchMethodException e) {
          //NoSuchMethod
        }

        try {
            connectGatt = (BluetoothGatt) connectGattMethod.invoke(device, this, false, mBluetoothGattCallback, 2); // (2 == LE, 1 == BR/EDR)
        } catch (IllegalAccessException e) {
            //IllegalAccessException
        } catch (IllegalArgumentException e) {
            //IllegalArgumentException
        } catch (InvocationTargetException e) {
            //InvocationTargetException
        }
like image 189
Failster Avatar answered Jan 18 '23 07:01

Failster