Fix issue 1) not recognizes some usb device, 2) reconnect when ffmpeg encoder error
[rtmpclient.git] / app / src / main / java / ai / suanzi / rtmpclient / UsbMonitor.java
index f1e06f0..9076a9b 100644 (file)
@@ -3,12 +3,10 @@ package ai.suanzi.rtmpclient;
 import android.hardware.usb.UsbManager;
 import android.content.Context;
 import android.hardware.usb.UsbDevice;
-import android.hardware.usb.UsbDeviceConnection;
 
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.Iterator;
-import java.util.ListIterator;
 import java.util.List;
 import org.apache.log4j.Logger;
 import android.app.PendingIntent;
@@ -49,8 +47,13 @@ public class UsbMonitor {
             //mUsbManager.requestPermission(device, mPermissionIntent);
     }
 
+    public void unregisterReceiver (){
+        mContext.unregisterReceiver(mUsbReceiver);
+
+    }
+
     private boolean isUvcCamera(UsbDevice device){
-        return (device.getDeviceProtocol() == 1 && device.getProductName().contains("Camera"));
+        return device.getProductName().toLowerCase().contains("camera") || (device.getDeviceProtocol() == 1);
     }
 
     public boolean hasUsbCamera(){
@@ -90,7 +93,7 @@ public class UsbMonitor {
                     gLogger.error(device.toString());
                     if(isUvcCamera(device)) {
                         mUsbCameraList.remove(device);
-                        mListener.onCameraConnected();
+                        mListener.onCameraDisconnected();
                     }
                 }
             } else if (UsbManager.ACTION_USB_DEVICE_ATTACHED.equals(action)) {
@@ -99,7 +102,7 @@ public class UsbMonitor {
                 gLogger.error(device.toString());
                 if(isUvcCamera(device)) {
                     mUsbCameraList.add(device);
-                    mListener.onCameraDisconnected();
+                    mListener.onCameraConnected();
                 }
             }
         }