From cc39c7a0cbc98fb1b5ecff29a12e88a41dce3a81 Mon Sep 17 00:00:00 2001 From: Sam Lantinga Date: Fri, 2 Nov 2018 17:25:00 -0700 Subject: [PATCH] Fixed bug 4320 - Android remove reflection for HIDDeviceBLESteamController Sylvain Uneeded use of reflection to access connectGatt method in HIDDeviceBLESteamController.java The method is API 23 https://developer.android.com/reference/android/bluetooth/BluetoothDevice.html#connectGatt(android.content.Context,%20boolean,%20android.bluetooth.BluetoothGattCallback,%20int) --- .../libsdl/app/HIDDeviceBLESteamController.java | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/android-project/app/src/main/java/org/libsdl/app/HIDDeviceBLESteamController.java b/android-project/app/src/main/java/org/libsdl/app/HIDDeviceBLESteamController.java index 4cf114a29..51538faed 100644 --- a/android-project/app/src/main/java/org/libsdl/app/HIDDeviceBLESteamController.java +++ b/android-project/app/src/main/java/org/libsdl/app/HIDDeviceBLESteamController.java @@ -12,12 +12,11 @@ import android.bluetooth.BluetoothGattService; import android.os.Handler; import android.os.Looper; import android.util.Log; +import android.os.*; //import com.android.internal.util.HexDump; import java.lang.Runnable; -import java.lang.reflect.InvocationTargetException; -import java.lang.reflect.Method; import java.util.Arrays; import java.util.LinkedList; import java.util.UUID; @@ -186,10 +185,13 @@ class HIDDeviceBLESteamController extends BluetoothGattCallback implements HIDDe // Because on Chromebooks we show up as a dual-mode device, it will attempt to connect TRANSPORT_AUTO, which will use TRANSPORT_BREDR instead // of TRANSPORT_LE. Let's force ourselves to connect low energy. private BluetoothGatt connectGatt(boolean managed) { - try { - Method m = mDevice.getClass().getDeclaredMethod("connectGatt", Context.class, boolean.class, BluetoothGattCallback.class, int.class); - return (BluetoothGatt) m.invoke(mDevice, mManager.getContext(), managed, this, TRANSPORT_LE); - } catch (Exception e) { + if (Build.VERSION.SDK_INT >= 23) { + try { + return mDevice.connectGatt(mManager.getContext(), managed, this, TRANSPORT_LE); + } catch (Exception e) { + return mDevice.connectGatt(mManager.getContext(), managed, this); + } + } else { return mDevice.connectGatt(mManager.getContext(), managed, this); } }