diff --git a/examplemultipleports/src/main/java/com/felhr/examplemultipleports/UsbService.java b/examplemultipleports/src/main/java/com/felhr/examplemultipleports/UsbService.java index 4f5d04d..dae18a6 100644 --- a/examplemultipleports/src/main/java/com/felhr/examplemultipleports/UsbService.java +++ b/examplemultipleports/src/main/java/com/felhr/examplemultipleports/UsbService.java @@ -157,6 +157,8 @@ public class UsbService extends Service implements SerialPortCallback { @Override public void onDestroy() { super.onDestroy(); + if(builder != null) + builder.unregisterListeners(context); UsbService.SERVICE_CONNECTED = false; } @@ -232,8 +234,10 @@ public class UsbService extends Service implements SerialPortCallback { public void handleMessage(Message msg) { int port = msg.arg1; byte[] data = (byte[]) msg.obj; - UsbSerialDevice serialDevice = serialPorts.get(port); - serialDevice.getOutputStream().write(data); + if(port <= serialPorts.size()-1) { + UsbSerialDevice serialDevice = serialPorts.get(port); + serialDevice.getOutputStream().write(data); + } } }; Looper.loop(); diff --git a/usbserial/src/main/java/com/felhr/usbserial/SerialPortBuilder.java b/usbserial/src/main/java/com/felhr/usbserial/SerialPortBuilder.java index ef5b503..923cdf7 100644 --- a/usbserial/src/main/java/com/felhr/usbserial/SerialPortBuilder.java +++ b/usbserial/src/main/java/com/felhr/usbserial/SerialPortBuilder.java @@ -146,6 +146,13 @@ public class SerialPortBuilder { return false; } + public void unregisterListeners(Context context){ + if(broadcastRegistered){ + context.unregisterReceiver(usbReceiver); + broadcastRegistered = false; + } + } + private PendingUsbPermission createUsbPermission(Context context, UsbDeviceStatus usbDeviceStatus){ PendingIntent mPendingIntent = PendingIntent.getBroadcast(context, 0, new Intent(ACTION_USB_PERMISSION), 0); PendingUsbPermission pendingUsbPermission = new PendingUsbPermission();