|
@@ -1,5 +1,7 @@
|
|
|
package org.libsdl.app;
|
|
|
|
|
|
+import android.app.Activity;
|
|
|
+import android.app.AlertDialog;
|
|
|
import android.app.PendingIntent;
|
|
|
import android.bluetooth.BluetoothAdapter;
|
|
|
import android.bluetooth.BluetoothDevice;
|
|
@@ -8,6 +10,7 @@ import android.bluetooth.BluetoothProfile;
|
|
|
import android.util.Log;
|
|
|
import android.content.BroadcastReceiver;
|
|
|
import android.content.Context;
|
|
|
+import android.content.DialogInterface;
|
|
|
import android.content.Intent;
|
|
|
import android.content.IntentFilter;
|
|
|
import android.content.SharedPreferences;
|
|
@@ -98,17 +101,39 @@ public class HIDDeviceManager {
|
|
|
}
|
|
|
};
|
|
|
|
|
|
- private HIDDeviceManager(Context context) {
|
|
|
+ private HIDDeviceManager(final Context context) {
|
|
|
mContext = context;
|
|
|
|
|
|
// Make sure we have the HIDAPI library loaded with the native functions
|
|
|
try {
|
|
|
SDL.loadLibrary("hidapi");
|
|
|
- } catch (Exception e) {
|
|
|
+ } catch (Throwable e) {
|
|
|
Log.w(TAG, "Couldn't load hidapi: " + e.toString());
|
|
|
+
|
|
|
+ AlertDialog.Builder builder = new AlertDialog.Builder(context);
|
|
|
+ builder.setCancelable(false);
|
|
|
+ builder.setTitle("SDL HIDAPI Error");
|
|
|
+ builder.setMessage("Please report the following error to the SDL maintainers: " + e.getMessage());
|
|
|
+ builder.setNegativeButton("Quit", new DialogInterface.OnClickListener() {
|
|
|
+ @Override
|
|
|
+ public void onClick(DialogInterface dialog, int which) {
|
|
|
+ try {
|
|
|
+ // If our context is an activity, exit rather than crashing when we can't
|
|
|
+ // call our native functions.
|
|
|
+ Activity activity = (Activity)context;
|
|
|
+
|
|
|
+ activity.finish();
|
|
|
+ }
|
|
|
+ catch (ClassCastException cce) {
|
|
|
+ // Context wasn't an activity, there's nothing we can do. Give up and return.
|
|
|
+ }
|
|
|
+ }
|
|
|
+ });
|
|
|
+ builder.show();
|
|
|
+
|
|
|
return;
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
HIDDeviceRegisterCallback();
|
|
|
|
|
|
mSharedPreferences = mContext.getSharedPreferences("hidapi", Context.MODE_PRIVATE);
|