From b7810d6eb66b1ba0b45d2b17463205163a026e2f Mon Sep 17 00:00:00 2001 From: Cameron Gutman Date: Wed, 5 Jun 2019 20:23:22 -0700 Subject: [PATCH] Use the newly public InputDevice.isExternal() function on Android Q --- .../binding/input/ControllerHandler.java | 28 +++++++++++-------- 1 file changed, 17 insertions(+), 11 deletions(-) diff --git a/app/src/main/java/com/limelight/binding/input/ControllerHandler.java b/app/src/main/java/com/limelight/binding/input/ControllerHandler.java index 89267a03..4becbb62 100644 --- a/app/src/main/java/com/limelight/binding/input/ControllerHandler.java +++ b/app/src/main/java/com/limelight/binding/input/ControllerHandler.java @@ -335,17 +335,23 @@ public class ControllerHandler implements InputManager.InputDeviceListener, UsbD } private static boolean isExternal(InputDevice dev) { - try { - // Landroid/view/InputDevice;->isExternal()Z is on the light graylist in Android P - return (Boolean)dev.getClass().getMethod("isExternal").invoke(dev); - } catch (NoSuchMethodException e) { - e.printStackTrace(); - } catch (IllegalAccessException e) { - e.printStackTrace(); - } catch (InvocationTargetException e) { - e.printStackTrace(); - } catch (ClassCastException e) { - e.printStackTrace(); + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) { + // Landroid/view/InputDevice;->isExternal()Z is officially public on Android Q + return dev.isExternal(); + } + else { + try { + // Landroid/view/InputDevice;->isExternal()Z is on the light graylist in Android P + return (Boolean)dev.getClass().getMethod("isExternal").invoke(dev); + } catch (NoSuchMethodException e) { + e.printStackTrace(); + } catch (IllegalAccessException e) { + e.printStackTrace(); + } catch (InvocationTargetException e) { + e.printStackTrace(); + } catch (ClassCastException e) { + e.printStackTrace(); + } } // Answer true if we don't know