左晓为主开发手持机充值管理机
zuoxiao
2023-12-01 57dfbac311ccaa6900c0450e71460856010a0bad
身份证识别相关资源和代码
6 文件已重命名
8个文件已修改
1个文件已删除
109 ■■■■■ 已修改文件
app/build.gradle 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/androidTest/java/com/dayu/recharge/ExampleInstrumentedTest.java 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/AndroidManifest.xml 5 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/dayu/recharge/MyApplication.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/dayu/recharge/activity/AdminSetupActivity.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/dayu/recharge/activity/CameraActivity.java 46 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/dayu/recharge/activity/LoginActivity.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/dayu/recharge/activity/NewCardActivity.java 15 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/jniLibs/arm64-v8a/libIDCardengine.so 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/jniLibs/arm64-v8a/libimageengine.so 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/jniLibs/armeabi-v7a/libIDCardengine.so 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/jniLibs/armeabi-v7a/libimageengine.so 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/jniLibs/armeabi/libIDCardengine.so 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/jniLibs/armeabi/libimageengine.so 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/layout/activity_new_card.xml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/build.gradle
@@ -10,11 +10,10 @@
        targetSdk 26
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
        ndk{
            abiFilters 'armeabi-v7a'
            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"
app/src/androidTest/java/com/dayu/recharge/ExampleInstrumentedTest.java
File was deleted
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"
@@ -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
app/src/main/java/com/dayu/recharge/MyApplication.java
@@ -74,6 +74,9 @@
    /**
     * 初始化EasySocket
     *
     * @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后修改ip不生效问题
@@ -193,7 +197,7 @@
                                                ToastUtil.show("充值管理注册报文获取成功");
                                            } else {
                                                //校验CRC错误
                                                ToastUtil.show("确认收到注册报文状态失败");
//                                                ToastUtil.show("确认收到注册报文状态失败");
                                            }
                                        } else {
                                            //校验CRC错误
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;
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,14 +29,16 @@
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";
@@ -53,7 +56,7 @@
    private Button btnFlash, btnCancel;
    private ImageView imgTips;
    private ImageView iv, ivHead;
    private int typeFront = 1;// 0不区分 ,1正面,2背面
    private int typeFront = 0;// 0不区分 ,1正面,2背面
    @Override
    protected void onCreate(Bundle savedInstanceState) {
@@ -240,7 +243,7 @@
            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 {
@@ -267,34 +270,47 @@
                }
                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];
                    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);
                    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");
                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");
                int ret = -1;
                if (msg.obj != null) {
                    ret = (Integer) msg.obj;
@@ -303,10 +319,14 @@
                finish();
                break;
            case OcrConstant.RECOGN_EG_INIT_ERROR:
                    Log.d("yxl", "RECOGN_EG_INIT_ERROR");
                Toast.makeText(getBaseContext(), "引擎初始化失败!", Toast.LENGTH_LONG).show();
                finish();
                break;
            case OcrConstant.START_AUTOFOCUS:
                    Log.d("yxl", "START_AUTOFOCUS");
                if (autoFoucs) {
                    cameraManager.autoFoucs();
                    autoFoucs = false;
@@ -317,10 +337,13 @@
                }
                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:
@@ -354,6 +377,7 @@
                break;
            default:
                    Log.d("yxl", "default");
                cameraManager.initDisplay();
                mHandler.sendEmptyMessageDelayed(OcrConstant.START_AUTOFOCUS, 500);
                Toast.makeText(getBaseContext(), "<>" + msg.what, Toast.LENGTH_SHORT).show();
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) -> {
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());
                        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);
app/src/main/jniLibs/arm64-v8a/libIDCardengine.so
Binary files differ
app/src/main/jniLibs/arm64-v8a/libimageengine.so
Binary files differ
app/src/main/jniLibs/armeabi-v7a/libIDCardengine.so
Binary files differ
app/src/main/jniLibs/armeabi-v7a/libimageengine.so
Binary files differ
app/src/main/jniLibs/armeabi/libIDCardengine.so
Binary files differ
app/src/main/jniLibs/armeabi/libimageengine.so
Binary files differ
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" />