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