Browse Source

新中新待测试

Shangyp 11 months ago
parent
commit
b0689771f9

+ 3 - 0
app/src/main/java/com/telpo/facenormal/USBroadcastReceiver.java

@@ -6,6 +6,7 @@ import android.content.Intent;
 import android.hardware.usb.UsbManager;
 
 import com.telpo.facenormal.bean.WebSocketEvent;
+import com.telpo.facenormal.utile.SharedPreferencesUtils;
 
 import org.greenrobot.eventbus.EventBus;
 
@@ -19,8 +20,10 @@ public class USBroadcastReceiver extends BroadcastReceiver {
         // TODO Auto-generated method stub
         String action = intent.getAction();
         if (UsbManager.ACTION_USB_DEVICE_ATTACHED.equals(action)) {//插入广播监听
+            SharedPreferencesUtils.setParam(arg0,"ACTION_USB_DEVICE",true);
             EventBus.getDefault().post(new WebSocketEvent(-1,"USBReceiveSignal"));
         }else if (UsbManager.ACTION_USB_DEVICE_DETACHED.equals(action)){//拔出广播监听
+            SharedPreferencesUtils.setParam(arg0,"ACTION_USB_DEVICE",false);
             EventBus.getDefault().post(new WebSocketEvent(-1,"ENUSBReceiveSignal"));
         }
 

+ 1 - 1
app/src/main/java/com/telpo/facenormal/WiegandReceiver.java

@@ -30,7 +30,7 @@ public class WiegandReceiver extends BroadcastReceiver {
                         byte[] data = intent.getExtras().getByteArray("data");
                         AppLogUtils.i(true,"韦根信号返回",""+new Gson().toJson(data));
                         long timestamp = System.currentTimeMillis();//获取毫秒值的数据戳
-                        String  TimeDetails= (String) SharedPreferencesUtils.getParam(context,"TimeDetail", String.valueOf(0));
+                        String  TimeDetails= (String) SharedPreferencesUtils.getParam(context,"TimeDetail", 0+"");
                         if (TimeDetails==null||TimeDetails.equals("0")){
                             TimeDetails= String.valueOf(timestamp);
                             SharedPreferencesUtils.setParam(context,"TimeDetail", String.valueOf(timestamp));

+ 33 - 27
app/src/main/java/com/telpo/facenormal/activity/MainActivity.java

@@ -426,14 +426,15 @@ import static com.telpo.facenormal.utile.Config.CheckList;
         }
     };
     //新中新身份证阅读器
-    IDCardReaderThread idCardReaderThread;
+//    IDCardReaderThread idCardReaderThread;
     final int UPDATE_READER_STATUS = 0x40;
      private Handler newIdCardStrarHandler = new Handler();
      private Runnable newIdCardStrarRunnable = new Runnable() {
          @Override
          public void run() {
              if(Config.getAuthenticationBean().getData().get(0).isUseIdcard()){
-                 idCardReaderThread.read();
+//                 idCardReaderThread.read();
+                 IDCardReaderThread.getInstance().read();
              }
          }
      };
@@ -450,18 +451,20 @@ import static com.telpo.facenormal.utile.Config.CheckList;
                     break;
                 case DeviceConnectManager.MESSAGE_CONNECTFAILED:
                     AppLogUtils.e(true, "newIdCardHandler_新中新身份证阅读器",devName + "新版身份证阅读器连接失败");
-                    if (idCardReaderThread!=null){
-                        idCardReaderThread.close();
-                    }
+//                    if (idCardReaderThread!=null){
+//                        idCardReaderThread.close();
+//                    }
+                    IDCardReaderThread.close();
                     newIdCardStrarHandler.removeCallbacks(newIdCardStrarRunnable);
                     newIdCardStrarHandler.removeCallbacksAndMessages(null);
                     newIdCardStrarHandler.postDelayed(newIdCardStrarRunnable,5*1000);
                     break;
                 case DeviceConnectManager.MESSAGE_DISCONNECTED:
                     AppLogUtils.i(true, "newIdCardHandler_新中新身份证阅读器",devName + "新版身份证阅读器连接断开");
-                    if (idCardReaderThread!=null){
-                        idCardReaderThread.close();
-                    }
+//                    if (idCardReaderThread!=null){
+//                        idCardReaderThread.close();
+//                    }
+                    IDCardReaderThread.close();
                     break;
                 case DeviceConnectManager.MESSAGE_RECONNECT_DEVICE:
                     AppLogUtils.i(true, "newIdCardHandler_新中新身份证阅读器",devName + "新版身份证阅读器重新连接");
@@ -480,7 +483,7 @@ import static com.telpo.facenormal.utile.Config.CheckList;
                     AppLogUtils.i(true, "newIdCardHandler_新中新身份证阅读器","新版身份证阅读器停止读卡");
                     break;
                 case UPDATE_READER_STATUS:
-                    AppLogUtils.i(false, "newIdCardHandler_新中新身份证阅读器","身份证读卡耗时等信息  " + idCardReaderThread.getReadStatus());
+                    AppLogUtils.i(false, "newIdCardHandler_新中新身份证阅读器","身份证读卡耗时等信息  " + IDCardReaderThread.getInstance().getReadStatus());
                     break;
             }
             super.handleMessage(msg);
@@ -795,11 +798,13 @@ import static com.telpo.facenormal.utile.Config.CheckList;
         if (networkChangeReceiver != null) {
             unregisterReceiver(networkChangeReceiver);
         }
-            if (idCardReaderThread!=null) {
-                idCardReaderThread.stop();
-                idCardReaderThread.close();
-                idCardReaderThread = null;
-            }
+        IDCardReaderThread.stop();
+        IDCardReaderThread.close();
+//            if (idCardReaderThread!=null) {
+//                idCardReaderThread.stop();
+//                idCardReaderThread.close();
+//                idCardReaderThread = null;
+//            }
         newIdCardHandler.removeCallbacksAndMessages(null);
             if (idcardConverterSDK!=null){
                 idcardConverterSDK.dispose();
@@ -964,17 +969,18 @@ import static com.telpo.facenormal.utile.Config.CheckList;
             }else {
                 //新中新
                 DeviceConnectManager.getInstance().resetReader(ReaderInterfaceFactory.READER_USB);
-                idCardReaderThread = new IDCardReaderThread();
-                idCardReaderThread.setActivityAndHandler(this, newIdCardHandler);
-                idCardReaderThread.open(null);
+//                idCardReaderThread = new IDCardReaderThread();
+                IDCardReaderThread.getInstance().setActivityAndHandler(this, newIdCardHandler);
+                IDCardReaderThread.getInstance().open(null);
                 new Handler().postDelayed(new Runnable() {
                     @Override
                     public void run() {
-                        if (Config.getAuthenticationBean().getData().get(0).isUseIdcard()) {
-                            idCardReaderThread.read();
-                        } else {
-                            idCardReaderThread.stop();
-                        }
+//                        if (Config.getAuthenticationBean().getData().get(0).isUseIdcard()) {
+//                            idCardReaderThread.read();
+//                        } else {
+//                            idCardReaderThread.stop();
+//                        }
+                        IDCardReaderThread.getInstance().read();
                     }
                 },2000);
 
@@ -2934,13 +2940,13 @@ import static com.telpo.facenormal.utile.Config.CheckList;
                     e.printStackTrace();
                 }
             }
-        } else if (eve.getMsg().equals("DEUSBReceiveSignal")) {
+        } else if (eve.getMsg().equals("ENUSBReceiveSignal")) {
             AppLogUtils.e(true, "USB广播信号","接收到USB拔出广播信号");
             if (!(Build.MODEL.indexOf("F2")!=-1|(Build.MODEL.indexOf("TPS980")!=-1))&&
                     !Config.getAuthenticationBean().getData().get(0).getUserOutputMode().equals("AnalogSignal")){
                 try {
-                    idCardReaderThread.stop();
-                    idCardReaderThread.close();
+                    IDCardReaderThread.stop();
+                    IDCardReaderThread.close();
                 } catch (Exception e) {
                     throw new RuntimeException(e);
                 }
@@ -3925,10 +3931,10 @@ import static com.telpo.facenormal.utile.Config.CheckList;
     class MyTimer extends Thread {
         @Override
         public void run() {
-            if (idCardReaderThread==null){
+            if (IDCardReaderThread.getInstance()==null){
                 return;
             }
-            while (idCardReaderThread.isReading()) {
+            while (IDCardReaderThread.getInstance().isReading()) {
                 newIdCardHandler.obtainMessage(UPDATE_READER_STATUS).sendToTarget();
                 try {
                     Thread.sleep(500);

+ 0 - 1
app/src/main/java/com/telpo/facenormal/utile/Config.java

@@ -269,7 +269,6 @@ public class Config {
         } catch (Exception e) {
             e.printStackTrace();
         }
-        AppLogUtils.i(false,"设备类型",Build.MODEL);
         //紫鹏设备
         if (Build.MODEL.equals("A50R3")||Build.MODEL.indexOf("HYIP1000")!=-1||Build.MODEL.indexOf("A10")!=-1){
             serial = Build.SERIAL;

+ 41 - 28
idCard/src/main/java/com/synjones/idcardusb_reader/IDCardReaderThread.java

@@ -22,34 +22,43 @@ import com.synjones.multireaderlib.MultiReader;
  * Created by zhaodianbo on 2016-3-23.
  */
 public class IDCardReaderThread {
-    MultiReader reader;//底层协议封装
-    IDcardReader idreader;//身份证协议封装
-    ReadIDCardThread readIDCardThread;
-    boolean isReading;
-    public volatile boolean stopRead = false;
-    boolean isConnectErr=false;
+    static MultiReader reader;//底层协议封装
+    static IDcardReader idreader;//身份证协议封装
+    static ReadIDCardThread readIDCardThread;
+    static boolean isReading;
+    public static volatile boolean stopRead = false;
+    static boolean isConnectErr=false;
 
   //  private MediaPlayer mediaPlayer;
 
-    Handler handler;
-    Context context;
-    boolean hasConnect=false;
-    DeviceConnectManager deviceConnectManager= DeviceConnectManager.getInstance();
-    final String TAG="idcardReaderThread";
+    static Handler handler;
+    static Context context;
+    static boolean hasConnect=false;
+    static DeviceConnectManager deviceConnectManager= DeviceConnectManager.getInstance();
+    static final String TAG="idcardReaderThread";
     public static final int MESSAGE_DISPLAY_IDCARD =0x30;
     public static final int MESSAGE_STOP_READ =0x31;
     public static final int MESSAGE_START_READ=0x32;
 
-    int readTimes=0;
-    int successTimes=0;
-    long startReadTime=0;
-
-    public IDCardReaderThread(){
+    static int readTimes=0;
+    static int successTimes=0;
+    static long startReadTime=0;
+    private volatile static IDCardReaderThread mInstance;
+    private IDCardReaderThread() {
         reader= MultiReader.getReader();
     }
+    public static IDCardReaderThread getInstance() {
+        if (mInstance == null) {
+        synchronized (IDCardReaderThread.class) {
+            if (mInstance == null) {
+            mInstance = new IDCardReaderThread();
+            }
+        }
+    }
+        return mInstance;
+    }
 
-
-    public void setDataTransInterface(DataTransInterface dataTransInterface){
+    public static void setDataTransInterface(DataTransInterface dataTransInterface){
         reader.setDataTransInterface(dataTransInterface);
         hasConnect= (dataTransInterface!=null);
     }
@@ -69,10 +78,14 @@ public class IDCardReaderThread {
         return deviceConnectManager.isOpen();
     }
 
-    public void close(){
-        stop();
-        deviceConnectManager.close();
-        LocalBroadcastManager.getInstance(context).unregisterReceiver(deviceConnectResultReceiver);
+    public static void close(){
+        try {
+            stop();
+            deviceConnectManager.close();
+            LocalBroadcastManager.getInstance(context).unregisterReceiver(deviceConnectResultReceiver);
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
     }
 
     private void registerDeviceConnectResultReceiver() {
@@ -83,7 +96,7 @@ public class IDCardReaderThread {
     }
 
 
-    BroadcastReceiver deviceConnectResultReceiver = new BroadcastReceiver() {
+    static BroadcastReceiver deviceConnectResultReceiver = new BroadcastReceiver() {
         @Override
         public void onReceive(Context context, Intent intent) {
             if(!intent.getAction().equals(DeviceConnectManager.ACTION_DEVICE_CONNECT_RESULT))
@@ -130,7 +143,7 @@ public class IDCardReaderThread {
     }
 
 
-    DeviceConnectManager.OpenHandler onOpen(){
+    static DeviceConnectManager.OpenHandler onOpen(){
         return new DeviceConnectManager.OpenHandler() {
             @Override
             public void onDeviceOpend() {
@@ -141,7 +154,7 @@ public class IDCardReaderThread {
         };
     }
 
-    public void stop(){
+    public static void stop(){
         if(readIDCardThread!=null) {
             readIDCardThread.cancel();
         }
@@ -149,7 +162,7 @@ public class IDCardReaderThread {
     }
 
 
-    public boolean isReading(){
+    public static boolean isReading(){
         if(readIDCardThread==null) return false;
         return  readIDCardThread.isAlive();
     }
@@ -162,7 +175,7 @@ public class IDCardReaderThread {
     }
 
 
-    class ReadIDCardThread extends Thread{
+   static class ReadIDCardThread extends Thread{
         int pauseTimes=0;
         int recvErrTimes=0;
 
@@ -265,7 +278,7 @@ public class IDCardReaderThread {
 //        }
     }
     
-    private void mySleep(long t){
+    private static void mySleep(long t){
         try {
             Thread.sleep(t);
         } catch (InterruptedException e) {

+ 6 - 4
idCard/src/main/java/com/synjones/otg/OtgInterface.java

@@ -121,10 +121,12 @@ public class OtgInterface implements ReaderInterface {
             if (UsbManager.ACTION_USB_DEVICE_ATTACHED.equals(action)) {
                 Log.i("USBOTG", "lib:ACTION_USB_DEVICE_ATTACHED");
             } else if (UsbManager.ACTION_USB_DEVICE_DETACHED.equals(action)) {
-                String deviceName = device.getDeviceName();
-                if ((usbInterfaceAdapter != null) && (usbInterfaceAdapter.getDevName().equals(deviceName))) {
-                    close();
-                    mHandler.obtainMessage(DeviceConnectManager.MESSAGE_DISCONNECTED).sendToTarget();
+                if (device != null && device.getDeviceName() != null){
+                    String deviceName = device.getDeviceName();
+                    if ((usbInterfaceAdapter != null) && (usbInterfaceAdapter.getDevName().equals(deviceName))) {
+                        close();
+                        mHandler.obtainMessage(DeviceConnectManager.MESSAGE_DISCONNECTED).sendToTarget();
+                    }
                 }
                 Log.i("USBOTG", "ACTION_USB_DEVICE_DETACHED");
             } else if (action.equals(UsbInterfaceAdapter.ACTION_SYNJONES_USB_PERMISSION)) {

+ 9 - 0
idCard/src/main/java/com/synjones/otg/UsbInterfaceAdapter.java

@@ -440,6 +440,9 @@ public class UsbInterfaceAdapter implements DataTransInterface {
      * 清空读缓冲区
      */
     public void cleanRead() {
+        if (usbDeviceConnection == null){
+            return;
+        }
         while ((readlen = usbDeviceConnection.bulkTransfer(uein, recv_buf, recv_buf.length, readTimeOut)) > 0) {
 
         }
@@ -469,6 +472,9 @@ public class UsbInterfaceAdapter implements DataTransInterface {
         while(datalen>0){
             byte sendBuf[]=new byte[Math.min(64,datalen)];
             System.arraycopy(data,offset,sendBuf,0,sendBuf.length);
+            if (usbDeviceConnection == null){
+                return;
+            }
             int ret = usbDeviceConnection.bulkTransfer(ueout, sendBuf, sendBuf.length, writeTimeOut);
             sendcount+=ret;
             offset+=sendBuf.length;
@@ -479,6 +485,9 @@ public class UsbInterfaceAdapter implements DataTransInterface {
 
     @Override
     public int recvData(byte[] recvbuf, int offset) {
+        if (usbDeviceConnection == null){
+            return -1;
+        }
         byte buffer[]=new byte[64];
         readlen = usbDeviceConnection.bulkTransfer(uein, buffer, 64, readTimeOut);
         if(readlen<=0) return readlen;