From 3e3e3753178aa7f8d239b540daa4c974b5ccaa3d Mon Sep 17 00:00:00 2001
From: xuxiuxi <xuxiuxi@454eff88-639b-444f-9e54-f578c98de674>
Date: 星期二, 04 七月 2017 12:28:19 +0800
Subject: [PATCH] 

---
 VisitFace/DemoForBsk/app/src/main/res/layout/fragment_device_right_camera2.xml          |    2 
 VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/fragment/RegisterFragment.java |  331 ++++++++++++++++++++++++++++++++++++++++++------------
 VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/service/RegisterMng.java       |   26 +++
 3 files changed, 281 insertions(+), 78 deletions(-)

diff --git a/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/fragment/RegisterFragment.java b/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/fragment/RegisterFragment.java
index d332cb4..5a6a0bd 100644
--- a/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/fragment/RegisterFragment.java
+++ b/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/fragment/RegisterFragment.java
@@ -53,18 +53,23 @@
 import cn.com.basic.face.widget.register.RegisterRightFieldTextView;
 import cn.com.basic.face.dialog.SelectDialog;
 
+import com.facebook.common.file.FileUtils;
 import com.ivsign.android.IDCReader.IDCReaderSDK;
 import com.lidroid.xutils.view.annotation.ViewInject;
 import com.lidroid.xutils.view.annotation.event.OnClick;
 
 import org.xutils.common.util.FileUtil;
+import org.xutils.common.util.IOUtil;
 import org.xutils.http.RequestParams;
 
 import java.io.BufferedOutputStream;
 import java.io.ByteArrayInputStream;
 import java.io.ByteArrayOutputStream;
 import java.io.File;
+import java.io.FileInputStream;
 import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.RandomAccessFile;
 import java.io.Reader;
 import java.text.SimpleDateFormat;
 import java.util.ArrayList;
@@ -132,6 +137,8 @@
 
     private File idCardImageCaptureFile = null;
 
+    private String idCardHeadPhotoPath = "";
+
     private static RegisterFragment instance = new RegisterFragment();
 
     public static RegisterFragment getInstance() {
@@ -169,26 +176,6 @@
 
     @OnClick(R.id.fragment_register_save)
     public void fragment_register_save_click(View v) {
-        readIdCard();
-        //BaseApplication.getInstance().bindService();
-        if (1==1) {
-            return;
-        }
-
-//        RegisterMng.getInstance().add(null);
-//        if (1==1) {
-//            return;
-//        }
-
-        if (!BaseApplication.deviceAvailable) {
-            return;
-        }
-
-//        SurveillanceMng.getInstance().addBitmap(new ArrayList(), new byte[]{1,2,3}, 3, "1");
-//
-//        if (1==1) {
-//            return;
-//        }
         RequestParams params = new RequestParams();
 
         String name = fragment_register_name.getValue();
@@ -324,38 +311,7 @@
         } else {
             params.addBodyParameter("idCardPhoto", writeToFile("idCardPhoto", new byte[]{}));
         }
-
-
-        class ConnectionTask extends AsyncTask<String, Void, String> {
-            private String json = "";
-            @Override
-            protected String doInBackground(String... urls) {
-                try {
-//                    Uploader uploader = new Uploader("", AppApi.BASE_URL + AppApi.REGISTER_ADD);
-//                    json = uploader.upload("", pd);
-                    return json;
-                } catch (Exception e) {
-                    e.printStackTrace();
-                }
-                return null;
-            }
-
-            @Override
-            protected void onPostExecute(String result) {
-                try {
-                    Toast.makeText(BaseApplication.getInstance(),"娣诲姞鎴愬姛", Toast.LENGTH_SHORT).show();
-                    //RegisterFragment.getInstance().resetForm();
-                } catch(Exception e) {
-                    e.printStackTrace();
-                }
-            }
-
-        }
-//        ConnectionTask task = new ConnectionTask();
-//        String[] params1 = new String[2];
-//        task.execute(params1);
-
-        RegisterMng.getInstance().add(params);
+        RegisterMng.getInstance().add(params, idCardHeadPhotoPath);
     }
 
     public void set_fragment_register_surveillance_photo(SurveillanceQueryItem item) {
@@ -476,6 +432,8 @@
         selectedCustomPhotoId = -1;
         selectedSurveillancePhotoId = -1;
 
+        idCardHeadPhotoPath = "";
+
         fragment_register_name.setValue("寰愪慨婧�"+Math.random());
         fragment_register_phone.setValue("13691348767");
         fragment_register_id_num.setValue("36041419292222222");
@@ -484,11 +442,8 @@
         fragment_register_remark.setValue("澶囨敞");
 
         fragment_register_name.setValue("");
-        fragment_register_phone.setValue("");
         fragment_register_id_num.setValue("");
         fragment_register_birthday.setValue("");
-        fragment_register_company.setValue("");
-        fragment_register_remark.setValue("");
 
         fragment_register_gender.setValue("鐢�");
         fragment_register_id_class.setValue("韬唤璇�");
@@ -624,11 +579,56 @@
     @Override
     protected void initData() {
         resetForm();
+        new ReadIdCardThread().start();
+    }
+
+    public void fillFormWithIdCard() {
+        try {
+            fragment_register_name.setValue(idCard_name);
+            fragment_register_id_num.setValue(idCard_idNumber);
+
+            SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
+            SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd");
+
+            fragment_register_birthday.setValue(sdf1.format(sdf.parse(idCard_birth)));
+            fragment_register_gender.setValue(idCard_sex);
+            fragment_register_id_class.setValue("韬唤璇�");
+            BitmapFactory.Options options = new BitmapFactory.Options();
+            options.inPreferredConfig = Bitmap.Config.ARGB_8888;
+            Bitmap bitmap = BitmapFactory.decodeFile(idCardHeadPhotoPath, options);
+            fragment_register_id_card_photo.setImageBitmap(bitmap);
+            fragment_register_id_card_photo_placeholder_image.setVisibility(View.INVISIBLE);
+            fragment_register_id_card_photo_placeholder_text_view.setVisibility(View.INVISIBLE);
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
+
+    private String idCard_name = "";
+    private String idCard_idNumber = "";
+    private String idCard_birth = "";
+    private String idCard_sex = "";
+
+    class ReadIdCardThread extends Thread {
+
+        @Override
+        public void run() {
+            while(true) {
+                try{
+                    Thread.sleep(1000);
+                    readIdCard();
+                } catch (Exception e) {
+                    e.printStackTrace();
+                }
+            }
+        }
     }
 
     public void readIdCard() {
         try {
-            Thread.sleep(100);
+            if (!registerFragmentVisible) {
+                return;
+            }
 
             RFIDReader idCardReader = RFIDReader.getInstance(BaseApplication.getInstance(), "uart");
             idCardReader.setUartDeviceName("/dev/ttyS1");
@@ -643,50 +643,209 @@
             idCardReader.control(ReaderExtra.ID_READ_TEXT_PHOTO, baos);
             String textPhoto = byteArrayToHexString(baos.toByteArray());
             if (textPhoto != null) {
-                String[] decodeInfo = new String[10];
-                StringBuilder imagePath = new StringBuilder();
+                final String[] decodeInfo = new String[10];
+                final StringBuilder imagePath = new StringBuilder();
                 String path = MainActivity.getInstance().getFilesDir().getAbsolutePath();
                 IDCReaderSDK.initialize(path);
                 IDCReaderSDK.decodeSamAck(textPhoto, decodeInfo, imagePath);
-                String name = decodeInfo[0];
-                String sex = decodeInfo[1];
-                String nation = decodeInfo[2];
-                String birth = decodeInfo[3];
-                String address = decodeInfo[4];
-                String idNumber = decodeInfo[5];
-                String office = decodeInfo[6];
-                String validDate = decodeInfo[7] + "-" + decodeInfo[8];
-                String photo = imagePath.toString();
+                idCard_name = decodeInfo[0];
+                idCard_sex = decodeInfo[1];
+                idCard_idNumber = decodeInfo[5];
+                idCard_birth = decodeInfo[3];
+//                final String idCardNation = decodeInfo[2];
+//                final String idCardAddress = decodeInfo[4];
+//                final String idCardIssuingAuthority = decodeInfo[6];
+//                final String idCardValidBegin = decodeInfo[7];
+//                final String idCardValidEnd = decodeInfo[8];
 
-                comparePictures();
+                idCardHeadPhotoPath = imagePath.toString();
+
+                if (fragment_register_surveillance_photo_img == null) {
+//                    MainActivity.getInstance().runOnUiThread(new Runnable() {
+//                        @Override
+//                        public void run() {
+//                            Toast.makeText(BaseApplication.getInstance(),"璇峰厛閫夋嫨浜虹墿鐓х墖", Toast.LENGTH_SHORT).show();
+//                        }
+//                    });
+                    //return;
+                    testComparePicturesWithJpeg();
+                } else {
+                    testComparePicturesWithJpeg();
+                }
             }
         } catch (Exception e) {
             e.printStackTrace();
         }
     }
 
-    private void comparePictures() {
+    private boolean registerFragmentVisible = false;
+
+    @Override
+    public void setMenuVisibility(boolean menuVisible) {
+        super.setMenuVisibility(menuVisible);
+        registerFragmentVisible = menuVisible;
+    }
+
+    private void testComparePicturesWithJpeg() {
 
         RequestParams params = new RequestParams();
 
-        if (fragment_register_surveillance_photo_img != null) {
+        if (idCardHeadPhotoPath != null && !"".equals(idCardHeadPhotoPath)) {
+            BitmapFactory.Options options = new BitmapFactory.Options();
+            options.inPreferredConfig = Bitmap.Config.ARGB_8888;
+            Bitmap bitmap = BitmapFactory.decodeFile(idCardHeadPhotoPath, options);
+
             ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
-            fragment_register_surveillance_photo_img.compress(Bitmap.CompressFormat.JPEG, 100, byteArrayOutputStream);
+            bitmap.compress(Bitmap.CompressFormat.JPEG, 100, byteArrayOutputStream);
             byte[] imageBytes = byteArrayOutputStream.toByteArray();
 
+            params.addBodyParameter("surveillancePhotoW",bitmap.getWidth()+"");
+            params.addBodyParameter("surveillancePhotoH",bitmap.getWidth()+"");
             params.addBodyParameter("surveillancePhoto", writeToFile("surveillancePhoto", imageBytes));
         } else {
+            params.addBodyParameter("surveillancePhotoW", "0");
+            params.addBodyParameter("surveillancePhotoH", "0");
             params.addBodyParameter("surveillancePhoto", writeToFile("surveillancePhoto", new byte[]{}));
         }
 
 
-        if (fragment_register_id_card_photo_img != null) {
+        if (idCardHeadPhotoPath != null && !"".equals(idCardHeadPhotoPath)) {
+
+            BitmapFactory.Options options = new BitmapFactory.Options();
+            options.inPreferredConfig = Bitmap.Config.ARGB_8888;
+            Bitmap bitmap = BitmapFactory.decodeFile(idCardHeadPhotoPath, options);
+
             ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
-            fragment_register_id_card_photo_img.compress(Bitmap.CompressFormat.JPEG, 100, byteArrayOutputStream);
+            bitmap.compress(Bitmap.CompressFormat.JPEG, 100, byteArrayOutputStream);
             byte[] imageBytes = byteArrayOutputStream.toByteArray();
 
+            params.addBodyParameter("idCardPhotoW",bitmap.getWidth()+"");
+            params.addBodyParameter("idCardPhotoH",bitmap.getWidth()+"");
             params.addBodyParameter("idCardPhoto", writeToFile("idCardPhoto", imageBytes));
         } else {
+            params.addBodyParameter("idCardPhotoW","0");
+            params.addBodyParameter("idCardPhotoH","0");
+            params.addBodyParameter("idCardPhoto", writeToFile("idCardHeadPhoto", new byte[]{}));
+        }
+
+        RegisterMng.getInstance().compareSurveillancePhotoAndIdCardPhoto(params);
+    }
+
+    private void testComparePicturesWithBmp() {
+
+        RequestParams params = new RequestParams();
+
+        if (idCardHeadPhotoPath != null && !"".equals(idCardHeadPhotoPath)) {
+            BitmapFactory.Options options = new BitmapFactory.Options();
+            options.inPreferredConfig = Bitmap.Config.ARGB_8888;
+            Bitmap bitmap = BitmapFactory.decodeFile(idCardHeadPhotoPath, options);
+            params.addBodyParameter("surveillancePhotoW", bitmap.getWidth() + "");
+            params.addBodyParameter("surveillancePhotoH", bitmap.getWidth() + "");
+            params.addBodyParameter("surveillancePhoto", writeToFile("surveillancePhoto", readFile(new File(idCardHeadPhotoPath))));
+        } else {
+            params.addBodyParameter("surveillancePhotoW", "0");
+            params.addBodyParameter("surveillancePhotoH", "0");
+            params.addBodyParameter("surveillancePhoto", writeToFile("surveillancePhoto", new byte[]{}));
+        }
+
+
+        if (idCardHeadPhotoPath != null && !"".equals(idCardHeadPhotoPath)) {
+            BitmapFactory.Options options = new BitmapFactory.Options();
+            options.inPreferredConfig = Bitmap.Config.ARGB_8888;
+            Bitmap bitmap = BitmapFactory.decodeFile(idCardHeadPhotoPath, options);
+
+
+            params.addBodyParameter("idCardPhotoW",bitmap.getWidth()+"");
+            params.addBodyParameter("idCardPhotoH",bitmap.getWidth()+"");
+            params.addBodyParameter("idCardPhoto", writeToFile("idCardPhoto", readFile(new File(idCardHeadPhotoPath))));
+        } else {
+            params.addBodyParameter("idCardPhotoW","0");
+            params.addBodyParameter("idCardPhotoH","0");
+            params.addBodyParameter("idCardPhoto", writeToFile("idCardPhoto", new byte[]{}));
+        }
+
+        RegisterMng.getInstance().compareSurveillancePhotoAndIdCardPhoto(params);
+    }
+
+    private void comparePictures() {
+
+        RequestParams params = new RequestParams();
+
+//        if (fragment_register_surveillance_photo_img != null) {
+//            ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
+//            fragment_register_surveillance_photo_img.compress(Bitmap.CompressFormat.PNG, 100, byteArrayOutputStream);
+//            byte[] imageBytes = byteArrayOutputStream.toByteArray();
+//
+//            params.addBodyParameter("surveillancePhotoW",fragment_register_surveillance_photo_img.getWidth()+"");
+//            params.addBodyParameter("surveillancePhotoH",fragment_register_surveillance_photo_img.getHeight()+"");
+//
+//            params.addBodyParameter("surveillancePhoto", writeToFile("surveillancePhoto", imageBytes));
+//        } else {
+//            params.addBodyParameter("surveillancePhotoW","0");
+//            params.addBodyParameter("surveillancePhotoH","0");
+//            params.addBodyParameter("surveillancePhoto", writeToFile("surveillancePhoto", new byte[]{}));
+//        }
+
+        if (idCardHeadPhotoPath != null && !"".equals(idCardHeadPhotoPath)) {
+            BitmapFactory.Options options = new BitmapFactory.Options();
+            options.inPreferredConfig = Bitmap.Config.ARGB_8888;
+            Bitmap bitmap = BitmapFactory.decodeFile(idCardHeadPhotoPath, options);
+
+            ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
+            bitmap.compress(Bitmap.CompressFormat.JPEG, 100, byteArrayOutputStream);
+            byte[] imageBytes = byteArrayOutputStream.toByteArray();
+
+            params.addBodyParameter("surveillancePhotoW",bitmap.getWidth()+"");
+            params.addBodyParameter("surveillancePhotoH",bitmap.getWidth()+"");
+            params.addBodyParameter("surveillancePhoto", writeToFile("surveillancePhoto", imageBytes));
+
+
+            ///////////////////////////////////
+
+
+
+            /////////////////////////////////
+//            BitmapFactory.Options options = new BitmapFactory.Options();
+//            options.inPreferredConfig = Bitmap.Config.ARGB_8888;
+//            Bitmap bitmap = BitmapFactory.decodeFile(idCardHeadPhotoPath, options);
+//            params.addBodyParameter("surveillancePhotoW", bitmap.getWidth() + "");
+//            params.addBodyParameter("surveillancePhotoH", bitmap.getWidth() + "");
+//            params.addBodyParameter("surveillancePhoto", writeToFile("surveillancePhoto", readFile(new File(idCardHeadPhotoPath))));
+        } else {
+            params.addBodyParameter("surveillancePhotoW", "0");
+            params.addBodyParameter("surveillancePhotoH", "0");
+            params.addBodyParameter("surveillancePhoto", writeToFile("surveillancePhoto", new byte[]{}));
+        }
+
+
+        if (idCardHeadPhotoPath != null && !"".equals(idCardHeadPhotoPath)) {
+
+            BitmapFactory.Options options = new BitmapFactory.Options();
+            options.inPreferredConfig = Bitmap.Config.ARGB_8888;
+            Bitmap bitmap = BitmapFactory.decodeFile(idCardHeadPhotoPath, options);
+
+            ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
+            bitmap.compress(Bitmap.CompressFormat.JPEG, 100, byteArrayOutputStream);
+            byte[] imageBytes = byteArrayOutputStream.toByteArray();
+
+            params.addBodyParameter("idCardPhotoW",bitmap.getWidth()+"");
+            params.addBodyParameter("idCardPhotoH",bitmap.getWidth()+"");
+            params.addBodyParameter("idCardPhoto", writeToFile("idCardPhoto", imageBytes));
+
+
+            ///////////////////////////////////
+
+//            BitmapFactory.Options options = new BitmapFactory.Options();
+//            options.inPreferredConfig = Bitmap.Config.ARGB_8888;
+//            Bitmap bitmap = BitmapFactory.decodeFile(idCardHeadPhotoPath, options);
+//
+//
+//            params.addBodyParameter("idCardPhotoW",bitmap.getWidth()+"");
+//            params.addBodyParameter("idCardPhotoH",bitmap.getWidth()+"");
+//            params.addBodyParameter("idCardPhoto", writeToFile("idCardPhoto", readFile(new File(idCardHeadPhotoPath))));
+        } else {
+            params.addBodyParameter("idCardPhotoW","0");
+            params.addBodyParameter("idCardPhotoH","0");
             params.addBodyParameter("idCardPhoto", writeToFile("idCardPhoto", new byte[]{}));
         }
 
@@ -709,7 +868,31 @@
             return new String(hexChars);
         }
     }
-
+    public static byte[] readFile(File file) {
+        // Open file
+        RandomAccessFile f = null;
+        try {
+            f = new RandomAccessFile(file, "r");
+            // Get and check length
+            long longlength = f.length();
+            int length = (int) longlength;
+            if (length != longlength)
+                throw new IOException("File size >= 2 GB");
+            // Read file and return data
+            byte[] data = new byte[length];
+            f.readFully(data);
+            return data;
+        } catch (Exception e){
+            e.printStackTrace();
+        } finally {
+            try {
+                f.close();
+            }catch (Exception e) {
+                e.printStackTrace();
+            }
+        }
+        return new byte[]{};
+    }
 
 
 }
diff --git a/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/service/RegisterMng.java b/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/service/RegisterMng.java
index cba98be..90e48bf 100644
--- a/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/service/RegisterMng.java
+++ b/VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/service/RegisterMng.java
@@ -3,6 +3,7 @@
 import android.widget.Toast;
 
 import cn.com.basic.face.base.BaseApplication;
+import cn.com.basic.face.discern.entity.Device;
 import cn.com.basic.face.fragment.RegisterFragment;
 import cn.com.basic.face.util.AppApi;
 
@@ -11,6 +12,7 @@
 
 import java.io.File;
 import java.io.FileWriter;
+import java.util.List;
 
 import cn.com.basic.face.discern.common.BaseCommonCallBack;
 
@@ -22,7 +24,7 @@
         return instance;
     }
 
-    public void add(RequestParams params) {
+    public void add(RequestParams params, String idCardHeadPhoto) {
         if (!BaseApplication.deviceAvailable) {
             return;
         }
@@ -60,6 +62,7 @@
                 if (!f4.exists()) {
                     f4.createNewFile();
                 }
+
                 FileWriter fw0 = new FileWriter(f0);
                 fw0.write("test1");
                 fw0.close();
@@ -75,6 +78,13 @@
                 params.addBodyParameter("surveillancePhoto", f2);
                 params.addBodyParameter("uploadCustomPhoto", f3);
                 params.addBodyParameter("idCardPhoto", f4);
+                if (idCardHeadPhoto != null && !"".equals(idCardHeadPhoto)) {
+                    File f5 = new File(idCardHeadPhoto);
+                    if (!f5.exists()) {
+                        f5.createNewFile();
+                    }
+                    params.addBodyParameter("idCardHeadPhoto", f5);
+                }
                 x.http().post(params, new BaseCommonCallBack() {
                     @Override
                     public void success() {
@@ -107,7 +117,7 @@
             if (!f2.exists()) {
                 f2.createNewFile();
             }
-            File f4 = new File(path, "idCardPhoto");
+            File f4 = new File(path, "idCardHeadPhoto");
             if (!f4.exists()) {
                 f4.createNewFile();
             }
@@ -122,12 +132,22 @@
             x.http().post(params, new BaseCommonCallBack() {
                 @Override
                 public void success() {
-                    Toast.makeText(BaseApplication.getInstance(),"娴嬭瘯鐩镐技搴�", Toast.LENGTH_SHORT).show();
+                    List<Double> percents = resultBean.getListBeanOfType(Double.class);
+                    if (percents != null && percents.size() > 0) {
+                        double percent = percents.get(0);
+                        if (percent >= 70) {
+                            Toast.makeText(BaseApplication.getInstance(),"璁よ瘉閫氳繃", Toast.LENGTH_SHORT).show();
+                            RegisterFragment.getInstance().fillFormWithIdCard();
+                            return;
+                        }
+                    }
+                    Toast.makeText(BaseApplication.getInstance(),"璁よ瘉澶辫触", Toast.LENGTH_SHORT).show();
                 }
             });
 
         } catch (Exception e) {
             e.printStackTrace();
+            Toast.makeText(BaseApplication.getInstance(),"璁よ瘉澶辫触", Toast.LENGTH_SHORT).show();
         }
 
     }
diff --git a/VisitFace/DemoForBsk/app/src/main/res/layout/fragment_device_right_camera2.xml b/VisitFace/DemoForBsk/app/src/main/res/layout/fragment_device_right_camera2.xml
index 7378e5f..3240f98 100644
--- a/VisitFace/DemoForBsk/app/src/main/res/layout/fragment_device_right_camera2.xml
+++ b/VisitFace/DemoForBsk/app/src/main/res/layout/fragment_device_right_camera2.xml
@@ -108,7 +108,7 @@
                             android:layout_height="match_parent"
                             android:text=""
                             android:layout_alignParentRight="true"
-                            android:id="@+id/fragment_device_right_camera1_resolution_more"
+                            android:id="@+id/fragment_device_right_camera1_resolution_more1"
                             />
                         <ImageView
                             android:layout_width="wrap_content"

--
Gitblit v1.8.0