From 57dfbac311ccaa6900c0450e71460856010a0bad Mon Sep 17 00:00:00 2001
From: zuoxiao <470321431@qq.com>
Date: 星期五, 01 十二月 2023 18:04:09 +0800
Subject: [PATCH] 身份证识别相关资源和代码

---
 app/src/main/res/layout/activity_new_card.xml                        |    2 
 app/src/main/java/com/dayu/recharge/activity/NewCardActivity.java    |   17 
 app/src/main/java/com/dayu/recharge/activity/CameraActivity.java     |  700 ++++++++++++++++++++++++----------------------
 app/src/main/AndroidManifest.xml                                     |    7 
 app/src/main/jniLibs/arm64-v8a/libimageengine.so                     |    0 
 app/src/main/jniLibs/armeabi-v7a/libimageengine.so                   |    0 
 app/src/main/jniLibs/armeabi/libimageengine.so                       |    0 
 /dev/null                                                            |   26 -
 app/src/main/java/com/dayu/recharge/MyApplication.java               |  116 ++++---
 app/src/main/java/com/dayu/recharge/activity/LoginActivity.java      |    3 
 app/src/main/java/com/dayu/recharge/activity/AdminSetupActivity.java |    1 
 app/src/main/jniLibs/armeabi-v7a/libIDCardengine.so                  |    0 
 app/src/main/jniLibs/arm64-v8a/libIDCardengine.so                    |    0 
 app/src/main/jniLibs/armeabi/libIDCardengine.so                      |    0 
 app/build.gradle                                                     |    7 
 15 files changed, 448 insertions(+), 431 deletions(-)

diff --git a/app/build.gradle b/app/build.gradle
index 7817996..e6cc0a7 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -10,11 +10,10 @@
         targetSdk 26
         versionCode 1
         versionName "1.0"
-
         testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
 
-        ndk{
-            abiFilters 'armeabi-v7a'
+        ndk {
+            abiFilters "arm64-v8a","armeabi","armeabi-v7a"
         }
 
     }
@@ -50,6 +49,8 @@
     //room鏁版嵁搴�
     implementation "androidx.room:room-runtime:2.3.0"
     implementation "androidx.room:room-ktx:2.3.0"
+    implementation files('libs\\ccimg_20170424.jar')
+    implementation files('libs\\ccidcard_20211231.jar')
     runtimeOnly("androidx.room:room-common:2.3.0")
     annotationProcessor "androidx.room:room-compiler:2.3.0"
 
diff --git a/app/src/androidTest/java/com/dayu/recharge/ExampleInstrumentedTest.java b/app/src/androidTest/java/com/dayu/recharge/ExampleInstrumentedTest.java
deleted file mode 100644
index dbe2ace..0000000
--- a/app/src/androidTest/java/com/dayu/recharge/ExampleInstrumentedTest.java
+++ /dev/null
@@ -1,26 +0,0 @@
-package com.dayu.recharge;
-
-import android.content.Context;
-
-import androidx.test.platform.app.InstrumentationRegistry;
-import androidx.test.ext.junit.runners.AndroidJUnit4;
-
-import org.junit.Test;
-import org.junit.runner.RunWith;
-
-import static org.junit.Assert.*;
-
-/**
- * Instrumented test, which will execute on an Android device.
- *
- * @see <a href="http://d.android.com/tools/testing">Testing documentation</a>
- */
-@RunWith(AndroidJUnit4.class)
-public class ExampleInstrumentedTest {
-    @Test
-    public void useAppContext() {
-        // Context of the app under test.
-        Context appContext = InstrumentationRegistry.getInstrumentation().getTargetContext();
-        assertEquals("com.dayu.recharge", appContext.getPackageName());
-    }
-}
\ No newline at end of file
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 3b5c3b1..19dc692 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -33,6 +33,7 @@
     <!--鐢ㄤ簬鐢宠璋冪敤A-GPS妯″潡-->
     <uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS"></uses-permission>
     <uses-permission android:name="android.permission.CAMERA" />
+
     <uses-feature android:name="android.hardware.camera" />
     <application
         android:name=".MyApplication"
@@ -94,7 +95,7 @@
             android:launchMode="singleTop">
             <intent-filter>
                 <action android:name="android.nfc.action.ACTION_NDEF_DISCOVERED" />
-                <category android:name="android.intent.category.DEFAULT"/>
+                <category android:name="android.intent.category.DEFAULT" />
                 <data android:mimeType="text/plain" />
             </intent-filter>
         </activity>
@@ -117,7 +118,9 @@
         <activity android:name=".activity.IdentifyingActivity" />
         <activity android:name=".activity.ReplacementActivity" />
         <activity android:name=".activity.RechargeDetail" />
-        <activity android:name=".activity.CameraActivity"/>
+        <activity
+            android:name=".activity.CameraActivity"
+            android:screenOrientation="landscape" />
 
 
         <meta-data
diff --git a/app/src/main/java/com/dayu/recharge/MyApplication.java b/app/src/main/java/com/dayu/recharge/MyApplication.java
index 41f25f0..7414711 100644
--- a/app/src/main/java/com/dayu/recharge/MyApplication.java
+++ b/app/src/main/java/com/dayu/recharge/MyApplication.java
@@ -74,6 +74,9 @@
 
     /**
      * 鍒濆鍖朎asySocket
+     *
+     * @param isCreate   褰撳墠宸茶繛鎺ユ湇鍔″櫒鍚庢槸鍚﹂噸鏂拌繛鎺�
+     * @param createBack
      */
     public void initEasySocket(boolean isCreate, SocketNet.CreateBack createBack) {
         try {
@@ -84,6 +87,7 @@
                 ipBean.setIp("dayuyanjiuyuan.top");
                 ipBean.setPort(8888);
             }
+
             if (ipBean != null) {
                 try {
                     //澶勭悊褰撹繛鎺ヤ笂IP鍚庝慨鏀筰p涓嶇敓鏁堥棶棰�
@@ -149,76 +153,76 @@
                 && !TextUtils.isEmpty(addressCode)) {
 
             Log.i("initMachineRequestBean", "寮�濮嬫敞鍐岃澶�");
-                if (EasySocket.getInstance().getDefconnection() != null) {
-                    isDoInitMachine = true;
-                    InitMachineRequestBean initMachineRequestBean = new InitMachineRequestBean();
-                    initMachineRequestBean.setControl("01");
-                    //130107200008	112	闈掓硥灞呭浼�
-                    initMachineRequestBean.setAddress(addressCode);
-                    initMachineRequestBean.setXuLie(SocketUtil.getXuLie(this));
-                    initMachineRequestBean.setAFN("91");
-                    SocketNet.getInstance().sendTestMessage(initMachineRequestBean.pack(), new SocketCallBack() {
-                        @Override
-                        public void onSocketResponse(SocketData readData) {
+            if (EasySocket.getInstance().getDefconnection() != null) {
+                isDoInitMachine = true;
+                InitMachineRequestBean initMachineRequestBean = new InitMachineRequestBean();
+                initMachineRequestBean.setControl("01");
+                //130107200008	112	闈掓硥灞呭浼�
+                initMachineRequestBean.setAddress(addressCode);
+                initMachineRequestBean.setXuLie(SocketUtil.getXuLie(this));
+                initMachineRequestBean.setAFN("91");
+                SocketNet.getInstance().sendTestMessage(initMachineRequestBean.pack(), new SocketCallBack() {
+                    @Override
+                    public void onSocketResponse(SocketData readData) {
 
-                            if (CRC8.isCRC8(readData.getOriginDataBytes())) {
-                                //鏍¢獙CRC鎴愬姛
-                                InitMachineBackBean initMachineBackBean = new InitMachineBackBean();
-                                String initCode = HexUtil.bytesToHex(Arrays.copyOfRange(readData.getBodyBytes(), 2, 18));
-                                //纭鏀跺埌娉ㄥ唽鍙锋姤鏂�
-                                ConfirmMachineRequestBean confirmMachineRequestBean = new ConfirmMachineRequestBean();
-                                confirmMachineRequestBean.setControl("01");
-                                //130107200008	112	闈掓硥灞呭浼�
-                                confirmMachineRequestBean.setAddress(addressCode);
-                                confirmMachineRequestBean.setXuLie(SocketUtil.getXuLie(MyApplication.this));
-                                confirmMachineRequestBean.setAFN("92");
-                                confirmMachineRequestBean.setInitCode(initCode);
-                                Log.i("Socket", "纭娉ㄥ唽鎶ユ枃");
-                                SocketNet.getInstance().sendTestMessage(confirmMachineRequestBean.pack(), new SocketCallBack() {
+                        if (CRC8.isCRC8(readData.getOriginDataBytes())) {
+                            //鏍¢獙CRC鎴愬姛
+                            InitMachineBackBean initMachineBackBean = new InitMachineBackBean();
+                            String initCode = HexUtil.bytesToHex(Arrays.copyOfRange(readData.getBodyBytes(), 2, 18));
+                            //纭鏀跺埌娉ㄥ唽鍙锋姤鏂�
+                            ConfirmMachineRequestBean confirmMachineRequestBean = new ConfirmMachineRequestBean();
+                            confirmMachineRequestBean.setControl("01");
+                            //130107200008	112	闈掓硥灞呭浼�
+                            confirmMachineRequestBean.setAddress(addressCode);
+                            confirmMachineRequestBean.setXuLie(SocketUtil.getXuLie(MyApplication.this));
+                            confirmMachineRequestBean.setAFN("92");
+                            confirmMachineRequestBean.setInitCode(initCode);
+                            Log.i("Socket", "纭娉ㄥ唽鎶ユ枃");
+                            SocketNet.getInstance().sendTestMessage(confirmMachineRequestBean.pack(), new SocketCallBack() {
 
-                                    @Override
-                                    public void onSocketResponse(SocketData readData) {
-                                        isDoInitMachine = false;
-                                        if (CRC8.isCRC8(readData.getOriginDataBytes())) {
-                                            byte stateByte = readData.getBodyBytes()[2];
-                                            String state = BcdUtil.bcdToStr(stateByte);
-                                            //BCD鐮�00鎴愬姛01澶辫触(娉ㄥ唽鍙蜂笉鏄湇鍔″櫒杩斿洖淇℃伅)
-                                            if (state.equalsIgnoreCase("00")) {
-                                                //淇濆瓨璁惧娉ㄥ唽鍙�
-                                                if (!TextUtils.isEmpty(initCode)){
-                                                    DeviceNumberUtils.setDeviceNumber(initCode);
-                                                }
-                                                Log.i(TAG, "onSuccess: 璁惧娉ㄥ唽鍙凤細" + initCode);
-//                                            WSHelper.getInstance(MyApplication.this).put("initCode", initCode);
-                                                ToastUtil.show("鍏呭�肩鐞嗘敞鍐屾姤鏂囪幏鍙栨垚鍔�");
-                                            } else {
-                                                //鏍¢獙CRC閿欒
-                                                ToastUtil.show("纭鏀跺埌娉ㄥ唽鎶ユ枃鐘舵�佸け璐�");
+                                @Override
+                                public void onSocketResponse(SocketData readData) {
+                                    isDoInitMachine = false;
+                                    if (CRC8.isCRC8(readData.getOriginDataBytes())) {
+                                        byte stateByte = readData.getBodyBytes()[2];
+                                        String state = BcdUtil.bcdToStr(stateByte);
+                                        //BCD鐮�00鎴愬姛01澶辫触(娉ㄥ唽鍙蜂笉鏄湇鍔″櫒杩斿洖淇℃伅)
+                                        if (state.equalsIgnoreCase("00")) {
+                                            //淇濆瓨璁惧娉ㄥ唽鍙�
+                                            if (!TextUtils.isEmpty(initCode)) {
+                                                DeviceNumberUtils.setDeviceNumber(initCode);
                                             }
+                                            Log.i(TAG, "onSuccess: 璁惧娉ㄥ唽鍙凤細" + initCode);
+//                                            WSHelper.getInstance(MyApplication.this).put("initCode", initCode);
+                                            ToastUtil.show("鍏呭�肩鐞嗘敞鍐屾姤鏂囪幏鍙栨垚鍔�");
                                         } else {
                                             //鏍¢獙CRC閿欒
-                                            ToastUtil.show("纭鏀跺埌娉ㄥ唽鎶ユ枃鏍¢獙CRC閿欒");
+//                                                ToastUtil.show("纭鏀跺埌娉ㄥ唽鎶ユ枃鐘舵�佸け璐�");
                                         }
+                                    } else {
+                                        //鏍¢獙CRC閿欒
+                                        ToastUtil.show("纭鏀跺埌娉ㄥ唽鎶ユ枃鏍¢獙CRC閿欒");
                                     }
+                                }
 
-                                    @Override
-                                    public void onSocketError(int code, String msg) {
+                                @Override
+                                public void onSocketError(int code, String msg) {
 
-                                    }
-                                });
-                            } else {//鏍¢獙CRC閿欒
-                                ToastUtil.show("鍏呭�肩鐞嗘敞鍐屾姤鏂囨牎楠孋RC閿欒");
-                            }
+                                }
+                            });
+                        } else {//鏍¢獙CRC閿欒
+                            ToastUtil.show("鍏呭�肩鐞嗘敞鍐屾姤鏂囨牎楠孋RC閿欒");
                         }
+                    }
 
-                        @Override
-                        public void onSocketError(int code, String msg) {
+                    @Override
+                    public void onSocketError(int code, String msg) {
 
-                        }
-                    });
+                    }
+                });
 
-                }
             }
+        }
 
     }
 
diff --git a/app/src/main/java/com/dayu/recharge/activity/AdminSetupActivity.java b/app/src/main/java/com/dayu/recharge/activity/AdminSetupActivity.java
index 7c47f40..e480ff3 100644
--- a/app/src/main/java/com/dayu/recharge/activity/AdminSetupActivity.java
+++ b/app/src/main/java/com/dayu/recharge/activity/AdminSetupActivity.java
@@ -13,6 +13,7 @@
 import com.dayu.recharge.dbBean.AdminDataBean;
 import com.dayu.recharge.dbBean.IpBean;
 import com.dayu.recharge.utils.TipUtil;
+import com.easysocket.EasySocket;
 import com.example.pickerviewlibrary.picker.TeaPickerView;
 import com.example.pickerviewlibrary.picker.entity.PickerData;
 import com.example.pickerviewlibrary.picker.listener.OnPickerClickListener;
diff --git a/app/src/main/java/com/dayu/recharge/activity/CameraActivity.java b/app/src/main/java/com/dayu/recharge/activity/CameraActivity.java
index 8ac11bb..b6d9e72 100644
--- a/app/src/main/java/com/dayu/recharge/activity/CameraActivity.java
+++ b/app/src/main/java/com/dayu/recharge/activity/CameraActivity.java
@@ -21,6 +21,7 @@
 import android.widget.TextView;
 import android.widget.Toast;
 
+
 import com.dayu.recharge.R;
 import com.dayu.recharge.view.ViewfinderView;
 import com.yunmai.cc.idcard.controler.CameraManager;
@@ -28,399 +29,422 @@
 import com.yunmai.cc.idcard.controler.OcrManager;
 import com.yunmai.cc.idcard.vo.IdCardInfoNew;
 
+import java.io.UnsupportedEncodingException;
+
+
 /**
  * 瑙嗛璇嗗埆绫�
- * 
+ *
  * @author fangcm 2013-03-18
- * 
  */
 
-public class CameraActivity extends BaseActivity implements SurfaceHolder.Callback {
+public class CameraActivity extends Activity implements SurfaceHolder.Callback {
 
-	private final String TAG = "cc_idcard";
+    private final String TAG = "cc_idcard";
 
-	private TextView tvTips;
-	private SurfaceView sv_preview;
-	private SurfaceHolder surfaceHolder;
-	private CameraManager cameraManager;
-	private boolean autoFoucs = true;
-	private ViewfinderView finderView;
-	private OcrManager ocrManager;
-	private Rect rect;
-	private boolean cameraError = false;
-	// private boolean over = false;
+    private TextView tvTips;
+    private SurfaceView sv_preview;
+    private SurfaceHolder surfaceHolder;
+    private CameraManager cameraManager;
+    private boolean autoFoucs = true;
+    private ViewfinderView finderView;
+    private OcrManager ocrManager;
+    private Rect rect;
+    private boolean cameraError = false;
+    // private boolean over = false;
 
-	private Button btnFlash, btnCancel;
-	private ImageView imgTips;
-	private ImageView iv, ivHead;
-	private int typeFront = 1;// 0涓嶅尯鍒� 锛�1姝i潰锛�2鑳岄潰
+    private Button btnFlash, btnCancel;
+    private ImageView imgTips;
+    private ImageView iv, ivHead;
+    private int typeFront = 0;// 0涓嶅尯鍒� 锛�1姝i潰锛�2鑳岄潰
 
-	@Override
-	protected void onCreate(Bundle savedInstanceState) {
-		// TODO Auto-generated method stub
-		super.onCreate(savedInstanceState);
-		setContentView(R.layout.camera);
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        // TODO Auto-generated method stub
+        super.onCreate(savedInstanceState);
+        setContentView(R.layout.camera);
 
-		typeFront = this.getIntent().getIntExtra("typeFront", 0);
-		initView();
-		cameraManager = new CameraManager(getBaseContext(), mHandler);
-		mCameraOpenThread.start();
-		try {
-			mCameraOpenThread.join();
-			mCameraOpenThread = null;
-		} catch (Exception e) {
-			// TODO Auto-generated catch block
-			e.printStackTrace();
-			cameraError = true;
-		}
-		if (cameraError) {
-			Toast.makeText(getBaseContext(), "鐓х浉鏈烘湭鍚姩锛�", Toast.LENGTH_SHORT).show();
-			finish();
-			return;
-		}
-		setParameters();
+        typeFront = this.getIntent().getIntExtra("typeFront", 0);
+        initView();
+        cameraManager = new CameraManager(getBaseContext(), mHandler);
+        mCameraOpenThread.start();
+        try {
+            mCameraOpenThread.join();
+            mCameraOpenThread = null;
+        } catch (Exception e) {
+            // TODO Auto-generated catch block
+            e.printStackTrace();
+            cameraError = true;
+        }
+        if (cameraError) {
+            Toast.makeText(getBaseContext(), "鐓х浉鏈烘湭鍚姩锛�", Toast.LENGTH_SHORT).show();
+            finish();
+            return;
+        }
+        setParameters();
 
-	}
+    }
 
-	private Thread mCameraOpenThread = new Thread(new Runnable() {
-		@Override
-		public void run() {
-			try {
-				cameraManager.openCamera();
-			} catch (Exception e) {
-				// TODO Auto-generated catch block
-				e.printStackTrace();
-				cameraError = true;
-			}
-		}
-	});
+    private Thread mCameraOpenThread = new Thread(new Runnable() {
+        @Override
+        public void run() {
+            try {
+                cameraManager.openCamera();
+            } catch (Exception e) {
+                // TODO Auto-generated catch block
+                e.printStackTrace();
+                cameraError = true;
+            }
+        }
+    });
 
-	private void setParameters() {
+    private void setParameters() {
 
-		WindowManager manager = (WindowManager) getSystemService(Context.WINDOW_SERVICE);
-		Display display = manager.getDefaultDisplay();
-		int wWidth = display.getWidth();
-		int wHeight = display.getHeight();
+        WindowManager manager = (WindowManager) getSystemService(Context.WINDOW_SERVICE);
+        Display display = manager.getDefaultDisplay();
+        int wWidth = display.getWidth();
+        int wHeight = display.getHeight();
 
-		cameraManager.setCameraFlashModel(Camera.Parameters.FLASH_MODE_OFF);
+        cameraManager.setCameraFlashModel(Camera.Parameters.FLASH_MODE_OFF);
 
-		float ps = wWidth * 1.0f / wHeight;
-		cameraManager.setPreviewSize(ps);
+        float ps = wWidth * 1.0f / wHeight;
+        cameraManager.setPreviewSize(ps);
 
-		int pWidth = cameraManager.getPreviewWidth();
-		int pHeight = cameraManager.getPreviewHeight();
-		if (pWidth == 0 || pHeight == 0) {
-			Toast.makeText(getBaseContext(), "鐓х浉鏈烘湭鍚姩锛侊紒", Toast.LENGTH_SHORT).show();
-			finish();
-			return;
-		}
-		Log.i(TAG, pWidth + "<--------W----Preview-----H------->" + pHeight);
-		Log.i(TAG, wWidth + "<--------W----WindowManager-----H------->" + wHeight);
+        int pWidth = cameraManager.getPreviewWidth();
+        int pHeight = cameraManager.getPreviewHeight();
+        if (pWidth == 0 || pHeight == 0) {
+            Toast.makeText(getBaseContext(), "鐓х浉鏈烘湭鍚姩锛侊紒", Toast.LENGTH_SHORT).show();
+            finish();
+            return;
+        }
+        Log.i(TAG, pWidth + "<--------W----Preview-----H------->" + pHeight);
+        Log.i(TAG, wWidth + "<--------W----WindowManager-----H------->" + wHeight);
 
-		int tempWidth = pWidth;
-		int tempHeidht = pHeight;
-		float x = 100.0f;
-		int tempW = pWidth;
-		int tempH = pHeight;
-		if (wWidth > pWidth && wHeight > pHeight) {
-			while (wWidth > tempW && wHeight > tempH) {
-				x++;
-				Log.d(TAG, "---xx----->" + x / 100.0);
-				tempW = (int) (pWidth * x / 100.0);
-				tempH = (int) (pHeight * x / 100.0);
-				if (wWidth > tempW && wHeight > tempH) {
-					tempWidth = tempW;
-					tempHeidht = tempH;
-				}
-			}
-			Log.d(TAG, "<------11--wWidth > pWidth && wHeight > pHeight------>");
-		} else {
-			while (tempWidth > wWidth || tempHeidht > wHeight) {
-				x--;
-				Log.d(TAG, "---xx----->" + x / 100.0);
-				tempWidth = (int) (pWidth * x / 100.0);
-				tempHeidht = (int) (pHeight * x / 100.0);
-			}
-			Log.d(TAG, "<-----22---tempWidth > wWidth || tempHeidht > wHeight------>");
-		}
+        int tempWidth = pWidth;
+        int tempHeidht = pHeight;
+        float x = 100.0f;
+        int tempW = pWidth;
+        int tempH = pHeight;
+        if (wWidth > pWidth && wHeight > pHeight) {
+            while (wWidth > tempW && wHeight > tempH) {
+                x++;
+                Log.d(TAG, "---xx----->" + x / 100.0);
+                tempW = (int) (pWidth * x / 100.0);
+                tempH = (int) (pHeight * x / 100.0);
+                if (wWidth > tempW && wHeight > tempH) {
+                    tempWidth = tempW;
+                    tempHeidht = tempH;
+                }
+            }
+            Log.d(TAG, "<------11--wWidth > pWidth && wHeight > pHeight------>");
+        } else {
+            while (tempWidth > wWidth || tempHeidht > wHeight) {
+                x--;
+                Log.d(TAG, "---xx----->" + x / 100.0);
+                tempWidth = (int) (pWidth * x / 100.0);
+                tempHeidht = (int) (pHeight * x / 100.0);
+            }
+            Log.d(TAG, "<-----22---tempWidth > wWidth || tempHeidht > wHeight------>");
+        }
 
-		Log.d(TAG, tempWidth + "<--------W----setParameters-----H------->" + tempHeidht);
-		// tempWidth = 854;
-		// tempHeidht = 480;
-		ViewGroup.LayoutParams lp = sv_preview.getLayoutParams();
-		lp.width = tempWidth;
-		lp.height = tempHeidht;
-		sv_preview.getHolder().setFixedSize(tempWidth, tempHeidht);
-		sv_preview.setLayoutParams(lp);
+        Log.d(TAG, tempWidth + "<--------W----setParameters-----H------->" + tempHeidht);
+        // tempWidth = 854;
+        // tempHeidht = 480;
+        ViewGroup.LayoutParams lp = sv_preview.getLayoutParams();
+        lp.width = tempWidth;
+        lp.height = tempHeidht;
+        sv_preview.getHolder().setFixedSize(tempWidth, tempHeidht);
+        sv_preview.setLayoutParams(lp);
 
-		surfaceHolder = sv_preview.getHolder();
-		surfaceHolder.addCallback(CameraActivity.this);
-		surfaceHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
+        surfaceHolder = sv_preview.getHolder();
+        surfaceHolder.addCallback(CameraActivity.this);
+        surfaceHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
 
-		float[] img = finderView.initFinder(tempWidth, tempHeidht, mHandler, typeFront);
+        float[] img = finderView.initFinder(tempWidth, tempHeidht, mHandler, typeFront);
 
-		imgTips.setY(img[0]);
-		imgTips.setX(img[1]);
+        imgTips.setY(img[0]);
+        imgTips.setX(img[1]);
 
-	}
+    }
 
-	private void initView() {
-		sv_preview = (SurfaceView) findViewById(R.id.camera_sv);
-		finderView = (ViewfinderView) findViewById(R.id.camera_finderView);
-		tvTips = (TextView) findViewById(R.id.tv_tips);
-		btnCancel = (Button) findViewById(R.id.bt_cancel);
-		btnFlash = (Button) findViewById(R.id.bt_flash);
-		imgTips = (ImageView) findViewById(R.id.iv_tips);
-		switch (typeFront) {
-		case 0:
-			imgTips.setVisibility(View.GONE);
-			break;
-		case 1:
-			imgTips.setBackgroundResource(R.mipmap.people_face);
-			break;
-		case 2:
-			imgTips.setBackgroundResource(R.mipmap.emblem);
-			break;
+    private void initView() {
+        sv_preview = (SurfaceView) findViewById(R.id.camera_sv);
+        finderView = (ViewfinderView) findViewById(R.id.camera_finderView);
+        tvTips = (TextView) findViewById(R.id.tv_tips);
+        btnCancel = (Button) findViewById(R.id.bt_cancel);
+        btnFlash = (Button) findViewById(R.id.bt_flash);
+        imgTips = (ImageView) findViewById(R.id.iv_tips);
+        switch (typeFront) {
+            case 0:
+                imgTips.setVisibility(View.GONE);
+                break;
+            case 1:
+                imgTips.setBackgroundResource(R.mipmap.people_face);
+                break;
+            case 2:
+                imgTips.setBackgroundResource(R.mipmap.emblem);
+                break;
 
-		default:
-			break;
-		}
+            default:
+                break;
+        }
 
-		btnFlash.setOnClickListener(listener);
-		btnCancel.setOnClickListener(listener);
-	}
+        btnFlash.setOnClickListener(listener);
+        btnCancel.setOnClickListener(listener);
+    }
 
-	private boolean isFlashOn = false;
+    private boolean isFlashOn = false;
 
-	private OnClickListener listener = new OnClickListener() {
+    private OnClickListener listener = new OnClickListener() {
 
-		@Override
-		public void onClick(View v) {
-			// TODO Auto-generated method stub
-			switch (v.getId()) {
-			case R.id.bt_cancel:
-				setResult(998);
-				finish();
-				break;
-			case R.id.bt_flash:
-				if (isFlashOn) {
-					try {
-						if (cameraManager.closeFlashlight()) {
-							btnFlash.setBackgroundDrawable(getResources().getDrawable(R.mipmap.flash_on_s));
-							isFlashOn = false;
-						}
-					} catch (Exception e) {
-						// TODO: handle exception
-					}
+        @Override
+        public void onClick(View v) {
+            // TODO Auto-generated method stub
+            switch (v.getId()) {
+                case R.id.bt_cancel:
+                    setResult(998);
+                    finish();
+                    break;
+                case R.id.bt_flash:
+                    if (isFlashOn) {
+                        try {
+                            if (cameraManager.closeFlashlight()) {
+                                btnFlash.setBackgroundDrawable(getResources().getDrawable(R.mipmap.flash_on_s));
+                                isFlashOn = false;
+                            }
+                        } catch (Exception e) {
+                            // TODO: handle exception
+                        }
 
-				} else {
-					try {
-						if (cameraManager.openFlashlight()) {
-							btnFlash.setBackgroundDrawable(getResources().getDrawable(R.mipmap.flash_off_s));
-							isFlashOn = true;
-						}
-					} catch (Exception e) {
-						// TODO: handle exception
-					}
+                    } else {
+                        try {
+                            if (cameraManager.openFlashlight()) {
+                                btnFlash.setBackgroundDrawable(getResources().getDrawable(R.mipmap.flash_off_s));
+                                isFlashOn = true;
+                            }
+                        } catch (Exception e) {
+                            // TODO: handle exception
+                        }
 
-				}
-				break;
+                    }
+                    break;
 
-			default:
-				break;
-			}
-		}
-	};
+                default:
+                    break;
+            }
+        }
+    };
 
-	private Handler mHandler = new Handler() {
+    private Handler mHandler = new Handler() {
 
-		@Override
-		public void handleMessage(Message msg) {
-			// TODO Auto-generated method stub
-			super.handleMessage(msg);
-			switch (msg.what) {
-			case OcrConstant.TAKE_PREVIEW_DATA_OK:
+        @Override
+        public void handleMessage(Message msg) {
+            // TODO Auto-generated method stub
+            super.handleMessage(msg);
+            switch (msg.what) {
+                case OcrConstant.TAKE_PREVIEW_DATA_OK:
+                    Log.d("yxl", "TAKE_PREVIEW_DATA_OK");
+                    if (ocrManager == null) {
+                        ocrManager = new OcrManager(mHandler, CameraActivity.this);
+                        try {
+                            rect = cameraManager.getViewfinder(finderView.getFinder());
+                        } catch (Exception e) {
+                            // TODO: handle exception
+                            return;
+                        }
 
-				if (ocrManager == null) {
-					ocrManager = new OcrManager(mHandler, CameraActivity.this);
-					try {
-						rect = cameraManager.getViewfinder(finderView.getFinder());
-					} catch (Exception e) {
-						// TODO: handle exception
-						return;
-					}
+                    }
 
-				}
-
-				byte[] data_p = (byte[]) msg.obj;
-				if (data_p != null && data_p.length > 0) {
-					// if(over){
-					// return;
-					// }
-					ocrManager.recognIDCard(data_p, cameraManager.getPreviewWidth(), cameraManager.getPreviewHeight(),
-							rect, 0, typeFront);
-					mHandler.sendEmptyMessageDelayed(OcrConstant.START_AUTOFOCUS, 100);
-				} else {
-					finderView.setLineRect(0);
-					Toast.makeText(getBaseContext(), "鐩告満鍑虹幇闂锛岃閲嶅惎鎵嬫満锛�", Toast.LENGTH_SHORT).show();
-					mHandler.sendEmptyMessageDelayed(OcrConstant.START_AUTOFOCUS, 500);
-				}
-				break;
-			case OcrConstant.RECOGN_OK:
-				mHandler.removeMessages(OcrConstant.TAKE_PREVIEW_DATA_OK);
-				mHandler.removeMessages(OcrConstant.START_AUTOFOCUS);
+                    byte[] data_p = (byte[]) msg.obj;
+                    if (data_p != null && data_p.length > 0) {
+                        // if(over){
+                        // return;
+                        // }
+                        ocrManager.recognIDCard(data_p, cameraManager.getPreviewWidth(), cameraManager.getPreviewHeight(),
+                                rect, 0, typeFront);
+                        mHandler.sendEmptyMessageDelayed(OcrConstant.START_AUTOFOCUS, 100);
+                    } else {
+                        finderView.setLineRect(0);
+                        Toast.makeText(getBaseContext(), "鐩告満鍑虹幇闂锛岃閲嶅惎鎵嬫満锛�", Toast.LENGTH_SHORT).show();
+                        mHandler.sendEmptyMessageDelayed(OcrConstant.START_AUTOFOCUS, 500);
+                    }
+                    break;
+                case OcrConstant.RECOGN_OK:
+                    Log.d("yxl", "RECOGN_OK");
+                    mHandler.removeMessages(OcrConstant.TAKE_PREVIEW_DATA_OK);
+                    mHandler.removeMessages(OcrConstant.START_AUTOFOCUS);
 //				String imgPath = "/sdcard/aidtest.jpg";
 //				String headPath = "/sdcard/aidheadtest.jpg";
 
-				byte[] headPath = new byte[2048 * 1024 * 3];
-				byte[] imgPath = new byte[2048 * 1024 * 3];
-				int[] headRect = new int[8];
-				int[] imgRect = new int[8];
+                    byte[] headPath = new byte[2048 * 1024 * 2];
+                    byte[] imgPath = new byte[2048 * 1024 * 2];
+                    int[] headRect = new int[8];
+                    int[] imgRect = new int[8];
 
-				IdCardInfoNew idCardInfo = ocrManager.getResultToByte(imgPath, imgRect, headPath, headRect);
+                    IdCardInfoNew idCardInfo = ocrManager.getResultToByte(imgPath, imgRect, headPath, headRect);
+                    try {
+                        String OCRResult = new String(idCardInfo.getCharInfo(), "gbk");
+                        Intent intent = new Intent();
+                        intent.putExtra("OCRResult", OCRResult);
+                        setResult(RESULT_OK, intent);
+                    } catch (UnsupportedEncodingException e) {
+                        throw new RuntimeException(e);
+                    }
 //				IdCardInfo idCardInfo = ocrManager.getResult(imgPath, headPath);
-				Intent data2 = new Intent();
-				data2.putExtra("idcardinfo", idCardInfo);
-				setResult(200, data2);
+//				AppDemo.setResult(idCardInfo);
+//				Intent data2 = new Intent();
+//				data2.putExtra("idcardinfo", idCardInfo);
+//				setResult(200, data2);
+                    finish();
+                    break;
+                case OcrConstant.REPEAT_AUTOFOCUS:
+                    Log.d("yxl", "REPEAT_AUTOFOCUS");
 
-				finish();
+                    cameraManager.autoFoucs();
+                    mHandler.sendEmptyMessageDelayed(OcrConstant.REPEAT_AUTOFOCUS, 2000);
+                    break;
+                case OcrConstant.RECOGN_EG_TIME_OUT:
+                    Log.d("yxl", "RECOGN_EG_TIME_OUT");
+                    Toast.makeText(getBaseContext(), "寮曟搸杩囨湡锛岃灏藉揩鏇存柊锛�", Toast.LENGTH_LONG).show();
+                    finish();
+                    break;
+                case OcrConstant.RECOGN_EG_LICENSE:
+                    Log.d("yxl", "RECOGN_EG_LICENSE");
 
-				break;
-			case OcrConstant.REPEAT_AUTOFOCUS:
-				cameraManager.autoFoucs();
-				mHandler.sendEmptyMessageDelayed(OcrConstant.REPEAT_AUTOFOCUS, 2000);
-				break;
-			case OcrConstant.RECOGN_EG_TIME_OUT:
-				Toast.makeText(getBaseContext(), "寮曟搸杩囨湡锛岃灏藉揩鏇存柊锛�", Toast.LENGTH_LONG).show();
-				finish();
-				break;
-			case OcrConstant.RECOGN_EG_LICENSE:
-				int ret = -1;
-				if (msg.obj != null) {
-					ret = (Integer) msg.obj;
-				}
-				Toast.makeText(getBaseContext(), "鎺堟潈澶辫触-->" + ret, Toast.LENGTH_LONG).show();
-				finish();
-				break;
-			case OcrConstant.RECOGN_EG_INIT_ERROR:
-				Toast.makeText(getBaseContext(), "寮曟搸鍒濆鍖栧け璐ワ紒", Toast.LENGTH_LONG).show();
-				finish();
-				break;
-			case OcrConstant.START_AUTOFOCUS:
-				if (autoFoucs) {
-					cameraManager.autoFoucs();
-					autoFoucs = false;
-					mHandler.sendEmptyMessageDelayed(OcrConstant.START_AUTOFOCUS, 500);
-					mHandler.sendEmptyMessageDelayed(OcrConstant.REPEAT_AUTOFOCUS, 1500);
-				} else {
-					cameraManager.autoFocusAndPreviewCallback();
-				}
-				break;
-			case OcrConstant.RECOGN_LINE_IN_RECT:
-				int restult = (Integer) msg.obj;
-				finderView.setLineRect(restult);
-				break;
-			case OcrConstant.RECOGN_TIPS:
-				int tips = (Integer) msg.obj;
-				switch (tips) {
-				case 1000:
-					tvTips.setText("璇峰皢韬唤璇佺疆浜庢鍖哄煙\r\n灏濊瘯瀵归綈杈圭紭");
-					break;
-				case 1001:
-					tvTips.setText("璺濈绋嶈繎锛岃灏濊瘯杩滅偣");
-					break;
-				case 1002:
-					tvTips.setText("璺濈绋嶈繙锛岃灏濊瘯闈犺繎");
-					break;
-				case 1003:
-					// tvTips.setText("鍥惧儚妯$硦锛岃璋冩暣璺濈");
-					break;
-				case 1004:
-					tvTips.setText("鍥惧儚鍊炬枩锛岃淇濇寔姘村钩鎷嶆憚");
-					break;
-				case 1005:
-					tvTips.setText("璇峰皢韬唤璇佺疆浜庢鍖哄煙\r\n灏濊瘯瀵归綈杈圭紭");
-					break;
-				case 1006:
-					tvTips.setText("璇峰皢韬唤璇佹闈㈣嚦浜庢鍖哄煙");
-					break;
-				case 1007:
-					tvTips.setText("璇峰皢韬唤璇佸弽闈㈣嚦浜庢鍖哄煙");
-					break;
+                    int ret = -1;
+                    if (msg.obj != null) {
+                        ret = (Integer) msg.obj;
+                    }
+                    Toast.makeText(getBaseContext(), "鎺堟潈澶辫触-->" + ret, Toast.LENGTH_LONG).show();
+                    finish();
+                    break;
+                case OcrConstant.RECOGN_EG_INIT_ERROR:
+                    Log.d("yxl", "RECOGN_EG_INIT_ERROR");
 
-				default:
-					break;
-				}
+                    Toast.makeText(getBaseContext(), "寮曟搸鍒濆鍖栧け璐ワ紒", Toast.LENGTH_LONG).show();
+                    finish();
+                    break;
+                case OcrConstant.START_AUTOFOCUS:
+                    Log.d("yxl", "START_AUTOFOCUS");
 
-				break;
-			default:
-				cameraManager.initDisplay();
-				mHandler.sendEmptyMessageDelayed(OcrConstant.START_AUTOFOCUS, 500);
-				Toast.makeText(getBaseContext(), "<>" + msg.what, Toast.LENGTH_SHORT).show();
-				break;
-			}
-		}
+                    if (autoFoucs) {
+                        cameraManager.autoFoucs();
+                        autoFoucs = false;
+                        mHandler.sendEmptyMessageDelayed(OcrConstant.START_AUTOFOCUS, 500);
+                        mHandler.sendEmptyMessageDelayed(OcrConstant.REPEAT_AUTOFOCUS, 1500);
+                    } else {
+                        cameraManager.autoFocusAndPreviewCallback();
+                    }
+                    break;
+                case OcrConstant.RECOGN_LINE_IN_RECT:
+                    Log.d("yxl", "RECOGN_LINE_IN_RECT");
 
-	};
+                    int restult = (Integer) msg.obj;
+                    finderView.setLineRect(restult);
+                    break;
+                case OcrConstant.RECOGN_TIPS:
+                    Log.d("yxl", "RECOGN_TIPS");
+                    int tips = (Integer) msg.obj;
+                    switch (tips) {
+                        case 1000:
+                            tvTips.setText("璇峰皢韬唤璇佺疆浜庢鍖哄煙\r\n灏濊瘯瀵归綈杈圭紭");
+                            break;
+                        case 1001:
+                            tvTips.setText("璺濈绋嶈繎锛岃灏濊瘯杩滅偣");
+                            break;
+                        case 1002:
+                            tvTips.setText("璺濈绋嶈繙锛岃灏濊瘯闈犺繎");
+                            break;
+                        case 1003:
+                            // tvTips.setText("鍥惧儚妯$硦锛岃璋冩暣璺濈");
+                            break;
+                        case 1004:
+                            tvTips.setText("鍥惧儚鍊炬枩锛岃淇濇寔姘村钩鎷嶆憚");
+                            break;
+                        case 1005:
+                            tvTips.setText("璇峰皢韬唤璇佺疆浜庢鍖哄煙\r\n灏濊瘯瀵归綈杈圭紭");
+                            break;
+                        case 1006:
+                            tvTips.setText("璇峰皢韬唤璇佹闈㈣嚦浜庢鍖哄煙");
+                            break;
+                        case 1007:
+                            tvTips.setText("璇峰皢韬唤璇佸弽闈㈣嚦浜庢鍖哄煙");
+                            break;
 
-	@Override
-	public void surfaceCreated(SurfaceHolder holder) {
-		// TODO Auto-generated method stub
-		Log.d(TAG, "surfaceCreated");
-		if (!cameraManager.cameraOpened()) {
-			cameraManager.openCamera();
-			setParameters();
-		}
-	}
+                        default:
+                            break;
+                    }
 
-	@Override
-	public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {
-		// TODO Auto-generated method stub
-		if (holder.getSurface() == null) {
-			Log.d(TAG, "holder.getSurface() == null");
-			return;
-		}
-		Log.v(TAG, "surfaceChanged. w=" + width + ". h=" + height);
-		surfaceHolder = holder;
-		cameraManager.setPreviewDisplay(surfaceHolder);
-		cameraManager.initDisplay();
-		mHandler.sendEmptyMessageDelayed(OcrConstant.START_AUTOFOCUS, 500);
+                    break;
+                default:
+                    Log.d("yxl", "default");
+                    cameraManager.initDisplay();
+                    mHandler.sendEmptyMessageDelayed(OcrConstant.START_AUTOFOCUS, 500);
+                    Toast.makeText(getBaseContext(), "<>" + msg.what, Toast.LENGTH_SHORT).show();
+                    break;
+            }
+        }
 
-	}
+    };
 
-	@Override
-	public void surfaceDestroyed(SurfaceHolder holder) {
-		// TODO Auto-generated method stub
-		Log.d(TAG, "surfaceDestroyed");
-		try {
-			cameraManager.closeCamera();
-		} catch (Exception e) {
-			// TODO: handle exception
-		}
+    @Override
+    public void surfaceCreated(SurfaceHolder holder) {
+        // TODO Auto-generated method stub
+        Log.d(TAG, "surfaceCreated");
+        if (!cameraManager.cameraOpened()) {
+            cameraManager.openCamera();
+            setParameters();
+        }
+    }
 
-		surfaceHolder = null;
-	}
+    @Override
+    public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {
+        // TODO Auto-generated method stub
+        if (holder.getSurface() == null) {
+            Log.d(TAG, "holder.getSurface() == null");
+            return;
+        }
+        Log.v(TAG, "surfaceChanged. w=" + width + ". h=" + height);
+        surfaceHolder = holder;
+        cameraManager.setPreviewDisplay(surfaceHolder);
+        cameraManager.initDisplay();
+        mHandler.sendEmptyMessageDelayed(OcrConstant.START_AUTOFOCUS, 500);
 
-	private void finishAll() {
-		if (cameraManager != null) {
-			try {
-				cameraManager.closeCamera();
-			} catch (Exception e) {
-				// TODO: handle exception
-			}
+    }
 
-		}
+    @Override
+    public void surfaceDestroyed(SurfaceHolder holder) {
+        // TODO Auto-generated method stub
+        Log.d(TAG, "surfaceDestroyed");
+        try {
+            cameraManager.closeCamera();
+        } catch (Exception e) {
+            // TODO: handle exception
+        }
 
-	}
+        surfaceHolder = null;
+    }
 
-	@Override
-	protected void onDestroy() {
-		// TODO Auto-generated method stub
-		super.onDestroy();
-		mHandler.removeMessages(OcrConstant.TAKE_PREVIEW_DATA_OK);
-		mHandler.removeMessages(OcrConstant.START_AUTOFOCUS);
-		finishAll();
+    private void finishAll() {
+        if (cameraManager != null) {
+            try {
+                cameraManager.closeCamera();
+            } catch (Exception e) {
+                // TODO: handle exception
+            }
 
-	}
+        }
+
+    }
+
+    @Override
+    protected void onDestroy() {
+        // TODO Auto-generated method stub
+        super.onDestroy();
+        mHandler.removeMessages(OcrConstant.TAKE_PREVIEW_DATA_OK);
+        mHandler.removeMessages(OcrConstant.START_AUTOFOCUS);
+        finishAll();
+
+    }
 
 }
diff --git a/app/src/main/java/com/dayu/recharge/activity/LoginActivity.java b/app/src/main/java/com/dayu/recharge/activity/LoginActivity.java
index 91b0873..ad9cd1f 100644
--- a/app/src/main/java/com/dayu/recharge/activity/LoginActivity.java
+++ b/app/src/main/java/com/dayu/recharge/activity/LoginActivity.java
@@ -54,7 +54,8 @@
     }
 
     private void getPermission() {
-        PermissionX.init(LoginActivity.this).permissions(Manifest.permission.READ_PHONE_STATE,
+        PermissionX.init(LoginActivity.this).permissions(
+                Manifest.permission.READ_PHONE_STATE,
                         Manifest.permission.READ_EXTERNAL_STORAGE,
                         Manifest.permission.WRITE_EXTERNAL_STORAGE)
                 .onExplainRequestReason((scope, deniedList) -> {
diff --git a/app/src/main/java/com/dayu/recharge/activity/NewCardActivity.java b/app/src/main/java/com/dayu/recharge/activity/NewCardActivity.java
index 8beda8e..0fb0508 100644
--- a/app/src/main/java/com/dayu/recharge/activity/NewCardActivity.java
+++ b/app/src/main/java/com/dayu/recharge/activity/NewCardActivity.java
@@ -62,6 +62,7 @@
         setData();
         initView();
 //        LibraryInitOCR.initOCR(NewCardActivity.this);
+//        registerForActivityResult()
     }
 
     private void initView() {
@@ -135,7 +136,7 @@
     private void startCamera() {
         Intent intent = new Intent(NewCardActivity.this, CameraActivity.class);
         intent.putExtra("typeFront", 1);
-        startActivityForResult(intent, 110);
+        startActivityForResult(intent, SCAN_IDCARD_REQUEST);
     }
 
     @Override
@@ -160,9 +161,17 @@
 //                    sb.append(String.format("鏁翠綋鐓х墖 = %s\n", jo.opt("imgPath")));
 //                    sb.append(String.format("澶村儚璺緞 = %s\n", jo.opt("headPath")));
 
-                        newCardBinding.newCardName.setText(jo.opt("name").toString());
-                        newCardBinding.newCardId.setText(jo.opt("num").toString());
-                        newCardBinding.newCardIdTip.setVisibility(View.VISIBLE);
+                        String name = jo.getJSONObject("Name").opt("value").toString();
+                        String idNumber = jo.getJSONObject("Num").opt("value").toString();
+                        this.runOnUiThread(new Runnable() {
+                            @Override
+                            public void run() {
+                                newCardBinding.newCardName.setText(name);
+                                newCardBinding.newCardId.setText(idNumber);
+                                newCardBinding.newCardIdTip.setVisibility(View.VISIBLE);
+                            }
+                        });
+
 
                     } catch (JSONException e) {
                         throw new RuntimeException(e);
diff --git a/app/libs/arm64-v8a/libIDCardengine.so b/app/src/main/jniLibs/arm64-v8a/libIDCardengine.so
similarity index 90%
rename from app/libs/arm64-v8a/libIDCardengine.so
rename to app/src/main/jniLibs/arm64-v8a/libIDCardengine.so
index 7139f54..958f16d 100644
--- a/app/libs/arm64-v8a/libIDCardengine.so
+++ b/app/src/main/jniLibs/arm64-v8a/libIDCardengine.so
Binary files differ
diff --git a/app/libs/arm64-v8a/libimageengine.so b/app/src/main/jniLibs/arm64-v8a/libimageengine.so
similarity index 100%
rename from app/libs/arm64-v8a/libimageengine.so
rename to app/src/main/jniLibs/arm64-v8a/libimageengine.so
Binary files differ
diff --git a/app/libs/armeabi-v7a/libIDCardengine.so b/app/src/main/jniLibs/armeabi-v7a/libIDCardengine.so
similarity index 93%
rename from app/libs/armeabi-v7a/libIDCardengine.so
rename to app/src/main/jniLibs/armeabi-v7a/libIDCardengine.so
index f0a171c..f69253d 100644
--- a/app/libs/armeabi-v7a/libIDCardengine.so
+++ b/app/src/main/jniLibs/armeabi-v7a/libIDCardengine.so
Binary files differ
diff --git a/app/libs/armeabi-v7a/libimageengine.so b/app/src/main/jniLibs/armeabi-v7a/libimageengine.so
similarity index 100%
rename from app/libs/armeabi-v7a/libimageengine.so
rename to app/src/main/jniLibs/armeabi-v7a/libimageengine.so
Binary files differ
diff --git a/app/libs/armeabi/libIDCardengine.so b/app/src/main/jniLibs/armeabi/libIDCardengine.so
similarity index 93%
rename from app/libs/armeabi/libIDCardengine.so
rename to app/src/main/jniLibs/armeabi/libIDCardengine.so
index c716cd2..1427fe8 100644
--- a/app/libs/armeabi/libIDCardengine.so
+++ b/app/src/main/jniLibs/armeabi/libIDCardengine.so
Binary files differ
diff --git a/app/libs/armeabi/libimageengine.so b/app/src/main/jniLibs/armeabi/libimageengine.so
similarity index 100%
rename from app/libs/armeabi/libimageengine.so
rename to app/src/main/jniLibs/armeabi/libimageengine.so
Binary files differ
diff --git a/app/src/main/res/layout/activity_new_card.xml b/app/src/main/res/layout/activity_new_card.xml
index 36c573e..f4c747f 100644
--- a/app/src/main/res/layout/activity_new_card.xml
+++ b/app/src/main/res/layout/activity_new_card.xml
@@ -101,7 +101,7 @@
                 style="@style/newCardLL"
                 android:layout_width="wrap_content"
                 android:layout_height="wrap_content"
-                android:text="鎵弿鍚庤鏍稿韬唤淇℃伅鏃犺"
+                android:text="璇锋牳瀵硅韩浠戒俊鎭棤璇�"
                 android:textColor="#FF4500"
                 android:visibility="gone" />
 

--
Gitblit v1.8.0