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