我刚从android开始,使用bluetooth le在android studio中建立了一个api 21项目。
深入BluetoothDevice可以看到connectgatt()方法的两个签名:
public BluetoothGatt connectGatt(Context context, boolean autoConnect,
BluetoothGattCallback callback)
和
public BluetoothGatt connectGatt(Context context, boolean autoConnect,
BluetoothGattCallback callback, int transport)
我想使用第二个,但构建失败:
错误:(127,26)错误:Bluetooth设备类中的方法connectgatt
无法应用于给定类型;必需:
找到上下文,布尔值,BluetoothGattCallback:
context,boolean,bluetoothgattcallback,int原因:实际和形式
参数列表的长度不同
编译器设置似乎与android studio中的源代码不匹配。
我该怎么解决?
最佳答案
如果要使用隐藏api,可以调用要使用的方法。
但您必须记住,隐藏的api可以随时更改。
你必须自己承担风险使用它。
下面是一个如何使用hidden connectgatt()方法的示例代码。
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
}