From 015d93f76b446e3ec3c0dbcc582b77f9e4694ff8 Mon Sep 17 00:00:00 2001 From: xuxiuxi <xuxiuxi@454eff88-639b-444f-9e54-f578c98de674> Date: 星期五, 07 七月 2017 11:32:30 +0800 Subject: [PATCH] --- VisitFace/DemoForBsk/app/src/main/java/cn/com/basic/face/fragment/RegisterFragment.java | 379 +++++++++++++++++++++++++++++++++++++++++++++++------- 1 files changed, 330 insertions(+), 49 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 2962278..a267a48 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 @@ -1,6 +1,7 @@ package cn.com.basic.face.fragment; import android.app.Activity; +import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.graphics.Bitmap; @@ -21,6 +22,8 @@ import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; +import com.bit.rfid.RFIDReader; +import com.bit.rfid.ReaderExtra; import com.bsk.zhangbo.demoforbsk.R; import cn.com.basic.face.adapter.SurveillanceFragment; @@ -50,16 +53,24 @@ 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; import java.util.Date; @@ -126,6 +137,8 @@ private File idCardImageCaptureFile = null; + private String idCardHeadPhotoPath = ""; + private static RegisterFragment instance = new RegisterFragment(); public static RegisterFragment getInstance() { @@ -163,20 +176,6 @@ @OnClick(R.id.fragment_register_save) public void fragment_register_save_click(View v) { -// 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(); @@ -312,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) { @@ -464,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"); @@ -472,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("韬唤璇�"); @@ -612,6 +579,320 @@ @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(2000); + readIdCard(); + } catch (Exception e) { + e.printStackTrace(); + } + } + } + } + + public void readIdCard() { + try { + if (!registerFragmentVisible || !RegisterFragment.getInstance().isVisible()) { + return; + } + + RFIDReader idCardReader = RFIDReader.getInstance(BaseApplication.getInstance(), "uart"); + idCardReader.setUartDeviceName("/dev/ttyS4"); + ByteArrayInputStream type = new ByteArrayInputStream("uart".getBytes()); + idCardReader.control(ReaderExtra.CONNECT, type); + + idCardReader.open("id_card"); + String cardId = byteArrayToHexString(idCardReader.getUid()); + + idCardReader.open("id_sam"); + ByteArrayOutputStream baos = new ByteArrayOutputStream(); + idCardReader.control(ReaderExtra.ID_READ_TEXT_PHOTO, baos); + String textPhoto = byteArrayToHexString(baos.toByteArray()); + if (textPhoto != null) { + 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); + 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]; + + 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 boolean registerFragmentVisible = false; + + @Override + public void setMenuVisibility(boolean menuVisible) { + super.setMenuVisibility(menuVisible); + registerFragmentVisible = menuVisible; + } + + private void testComparePicturesWithJpeg() { + + 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); + + 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)); + } 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)); + } 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[]{})); + } + + RegisterMng.getInstance().compareSurveillancePhotoAndIdCardPhoto(params); + } + + protected static final char[] a = new char[]{'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'}; + public static String byteArrayToHexString(byte[] bytes) { + if(bytes == null) { + return null; + } else { + char[] hexChars = new char[bytes.length * 2]; + + for(int j = 0; j < bytes.length; ++j) { + int v = bytes[j] & 255; + hexChars[j * 2] = a[v >>> 4]; + hexChars[j * 2 + 1] = a[v & 15]; + } + + 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[]{}; + } + + } -- Gitblit v1.8.0