package com.afunx.ble.blelitelib.connector; import android.annotation.TargetApi; import android.bluetooth.BluetoothAdapter; import android.bluetooth.BluetoothDevice; import android.bluetooth.BluetoothGatt; import android.bluetooth.BluetoothGattCallback; import android.content.Context; import android.os.Build; import com.afunx.ble.blelitelib.log.BleLiteLog; import java.lang.reflect.Constructor; import java.lang.reflect.Field; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; /* loaded from: classes.dex */ public class BleConnectCompat { private static final String TAG = "BleConnectCompat"; private final Context context; public BleConnectCompat(Context context) { this.context = context; } private BluetoothGatt connectGattCompat(BluetoothGattCallback bluetoothGattCallback, BluetoothDevice bluetoothDevice, boolean z) { BleLiteLog.v(TAG, "Connecting without reflection"); return Build.VERSION.SDK_INT >= 23 ? bluetoothDevice.connectGatt(this.context, z, bluetoothGattCallback, 2) : bluetoothDevice.connectGatt(this.context, z, bluetoothGattCallback); } private boolean connectUsingReflection(BluetoothGatt bluetoothGatt, BluetoothGattCallback bluetoothGattCallback, boolean z) throws NoSuchMethodException, InvocationTargetException, IllegalAccessException, NoSuchFieldException { BleLiteLog.v(TAG, "Connecting using reflection"); setAutoConnectValue(bluetoothGatt, z); Method declaredMethod = bluetoothGatt.getClass().getDeclaredMethod("connect", Boolean.class, BluetoothGattCallback.class); declaredMethod.setAccessible(true); return ((Boolean) declaredMethod.invoke(bluetoothGatt, true, bluetoothGattCallback)).booleanValue(); } private BluetoothGatt connectUsingReflectionx(BluetoothDevice bluetoothDevice, BluetoothGattCallback bluetoothGattCallback, boolean z) throws NoSuchMethodException, InvocationTargetException, IllegalAccessException, NoSuchFieldException { BleLiteLog.v(TAG, "Connecting using reflection"); Method declaredMethod = bluetoothDevice.getClass().getDeclaredMethod("connectGatt", Context.class, Boolean.TYPE, BluetoothGattCallback.class, Integer.TYPE); declaredMethod.setAccessible(true); return (BluetoothGatt) declaredMethod.invoke(bluetoothDevice, this.context, true, bluetoothGattCallback, 2); } @TargetApi(23) private BluetoothGatt createBluetoothGatt(Object obj, BluetoothDevice bluetoothDevice) throws IllegalAccessException, InvocationTargetException, InstantiationException { Constructor constructor = BluetoothGatt.class.getDeclaredConstructors()[0]; constructor.setAccessible(true); BleLiteLog.v(TAG, "Found constructor with args count = \" + bluetoothGattConstructor.getParameterTypes().length"); return constructor.getParameterTypes().length == 4 ? (BluetoothGatt) constructor.newInstance(this.context, obj, bluetoothDevice, 2) : (BluetoothGatt) constructor.newInstance(this.context, obj, bluetoothDevice); } private Object getIBluetoothGatt(Object obj) throws NoSuchMethodException, InvocationTargetException, IllegalAccessException { if (obj == null) { return null; } return getMethodFromClass(obj.getClass(), "getBluetoothGatt").invoke(obj, new Object[0]); } private Object getIBluetoothManager() throws NoSuchMethodException, InvocationTargetException, IllegalAccessException { BluetoothAdapter defaultAdapter = BluetoothAdapter.getDefaultAdapter(); if (defaultAdapter == null) { return null; } return getMethodFromClass(defaultAdapter.getClass(), "getBluetoothManager").invoke(defaultAdapter, new Object[0]); } private Method getMethodFromClass(Class cls, String str) throws NoSuchMethodException { Method declaredMethod = cls.getDeclaredMethod(str, new Class[0]); declaredMethod.setAccessible(true); return declaredMethod; } private void setAutoConnectValue(BluetoothGatt bluetoothGatt, boolean z) throws NoSuchFieldException, IllegalAccessException { Field declaredField = bluetoothGatt.getClass().getDeclaredField("mAutoConnect"); declaredField.setAccessible(true); declaredField.setBoolean(bluetoothGatt, z); } public BluetoothGatt connectGatt(BluetoothDevice bluetoothDevice, boolean z, BluetoothGattCallback bluetoothGattCallback) { int i; if (bluetoothDevice == null) { return null; } if (Build.VERSION.SDK_INT >= 24 || !z) { return connectGattCompat(bluetoothGattCallback, bluetoothDevice, false); } String str = Build.PRODUCT; if (str != null && str.toUpperCase().contains("LenovoTB3".toUpperCase()) && (i = Build.VERSION.SDK_INT) >= 21 && i < 23) { return connectGattCompat(bluetoothGattCallback, bluetoothDevice, false); } try { BleLiteLog.v(TAG, "Trying to connectGatt using reflection."); if (Build.VERSION.SDK_INT >= 21 && Build.VERSION.SDK_INT < 23) { return connectUsingReflectionx(bluetoothDevice, bluetoothGattCallback, z); } Object iBluetoothGatt = getIBluetoothGatt(getIBluetoothManager()); if (iBluetoothGatt == null) { BleLiteLog.v(TAG, "Couldn't get iBluetoothGatt object"); return connectGattCompat(bluetoothGattCallback, bluetoothDevice, true); } BluetoothGatt createBluetoothGatt = createBluetoothGatt(iBluetoothGatt, bluetoothDevice); if (createBluetoothGatt == null) { BleLiteLog.v(TAG, "Couldn't create BluetoothGatt object"); return connectGattCompat(bluetoothGattCallback, bluetoothDevice, true); } if (!connectUsingReflection(createBluetoothGatt, bluetoothGattCallback, true)) { BleLiteLog.v(TAG, "Connection using reflection failed, closing gatt"); createBluetoothGatt.close(); } return createBluetoothGatt; } catch (IllegalAccessException | IllegalArgumentException | InstantiationException | NoSuchFieldException | NoSuchMethodException | InvocationTargetException unused) { BleLiteLog.v(TAG, "Error during reflection"); return connectGattCompat(bluetoothGattCallback, bluetoothDevice, true); } } }