Commit 679d3553170318ef690a920c7157e029206fcf05

Sam Lantinga 2018-10-01T14:52:28

Fixed UnsatisfiedLinkError when initializing the HIDDeviceManager in some cases

diff --git a/android-project/app/src/main/java/org/libsdl/app/HIDDeviceManager.java b/android-project/app/src/main/java/org/libsdl/app/HIDDeviceManager.java
index 8d29cf3..33ddb71 100644
--- a/android-project/app/src/main/java/org/libsdl/app/HIDDeviceManager.java
+++ b/android-project/app/src/main/java/org/libsdl/app/HIDDeviceManager.java
@@ -80,6 +80,14 @@ public class HIDDeviceManager {
     public HIDDeviceManager(Context context) {
         mContext = context;
 
+	// Make sure we have the HIDAPI library loaded with the native functions
+        try {
+            System.loadLibrary("hidapi");
+        } catch (Exception e) {
+            Log.w(TAG, "Couldn't load hidapi: " + e.toString());
+            return;
+        }
+	
         HIDDeviceRegisterCallback(this);
 
         mSharedPreferences = mContext.getSharedPreferences("hidapi", Context.MODE_PRIVATE);
@@ -180,7 +188,11 @@ public class HIDDeviceManager {
     }
 
     protected void shutdownUSB() {
-        mContext.unregisterReceiver(mUsbBroadcast);
+        try {
+            mContext.unregisterReceiver(mUsbBroadcast);
+        } catch (Exception e) {
+            // We may not have registered, that's okay
+        }
     }
 
     protected boolean isHIDDeviceUSB(UsbDevice usbDevice) {