From 682caa4cef47046184e860d86ebb8467c11e032f Mon Sep 17 00:00:00 2001 From: zuoxiao <470321431@qq.com> Date: 星期四, 16 十一月 2023 15:54:25 +0800 Subject: [PATCH] 生成excl的修改 --- app/src/main/java/com/dayu/recharge/activity/MyActivity.java | 14 +- app/src/main/res/layout/activity_new_card.xml | 36 +++++-- app/src/main/java/com/dayu/recharge/activity/NewCardActivity.java | 79 +++++++++++++++ app/src/main/res/values/styles.xml | 2 app/src/main/java/com/dayu/recharge/utils/ExcelUtil.java | 32 ++---- app/src/main/AndroidManifest.xml | 1 app/src/main/java/com/dayu/recharge/activity/BaseActivity.java | 4 gradle.properties | 22 +-- app/src/main/res/mipmap-xhdpi/icon_scan.png | 0 app/src/main/java/com/dayu/recharge/net/SocketNet.java | 2 app/src/main/res/layout/activity_test.xml | 21 ++++ app/libs/ocr-library.aar | 0 app/build.gradle | 34 +++--- 13 files changed, 176 insertions(+), 71 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 70a8e5a..02c2efb 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -27,35 +27,37 @@ viewBinding { enabled = true; } +// repositories { +// flatDir { +// dirs 'libs' +// } +// } } dependencies { - implementation fileTree(include: ['*.jar'], dir: 'libs') -// implementation 'androidx.appcompat:appcompat:1.6.1' -// implementation 'com.google.android.material:material:1.10.0' + implementation fileTree(include: ['*.jar','*.aar'], dir: 'libs') + implementation 'com.android.support:appcompat-v7:28.0.0' + implementation 'com.android.support.constraint:constraint-layout:1.1.3' + implementation 'androidx.core:core-ktx:1.8.0' + implementation 'androidx.appcompat:appcompat:1.5.0' //room鏁版嵁搴� implementation "androidx.room:room-runtime:2.3.0" implementation "androidx.room:room-ktx:2.3.0" runtimeOnly("androidx.room:room-common:2.3.0") annotationProcessor "androidx.room:room-compiler:2.3.0" -// implementation 'com.android.support:appcompat-v7:28.0.0' -// implementation('com.jakewharton:butterknife:9.0.0') { -// exclude group: 'com.android.support:annotations-v7:28.0.0'; -// exclude group: 'android.arch.core:common:1.1.1' -// } -// implementation project(path: ':pickerviewlibrary') -// implementation files('libs\\AMap_Location_V6.2.0_20221026.jar') -// annotationProcessor('com.jakewharton:butterknife-compiler:9.0.0') { -// exclude group: 'android.arch.core:common:1.1.1' -// } -// implementation 'com.android.support:support-v4:28.0.0-alpha1' -// implementation 'org.xutils:xutils:3.8.5' -// implementation files('libs/core-3.3.0.jar') implementation 'com.google.zxing:core:3.4.1' implementation group: 'net.sourceforge.jexcelapi', name: 'jxl', version: '2.6.12' implementation 'com.wang.avi:library:2.1.3' implementation project(':pickerviewlibrary') implementation project(':easysocket') implementation 'com.tencent.bugly:crashreport:latest.release' +// 澶勭悊鍥剧墖 +// implementation (name: 'ocr-library', ext: 'aar') + //鏉冮檺 + implementation ('com.guolindev.permissionx:permissionx:1.7.1'){ + exclude group: 'androidx.core'; + exclude group: 'androidx.appcompat'; + exclude group: 'androidx.annotation'; + } } \ No newline at end of file diff --git a/app/libs/ocr-library.aar b/app/libs/ocr-library.aar new file mode 100644 index 0000000..43f4663 --- /dev/null +++ b/app/libs/ocr-library.aar Binary files differ diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index c4679d7..5ca0db9 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -63,6 +63,7 @@ <activity android:name=".activity.NewCardActivity" android:exported="true" + android:screenOrientation="portrait" android:launchMode="singleTop"> <intent-filter> <action android:name="android.nfc.action.TAG_DISCOVERED" /> diff --git a/app/src/main/java/com/dayu/recharge/activity/BaseActivity.java b/app/src/main/java/com/dayu/recharge/activity/BaseActivity.java index e6e62f7..3fefb90 100644 --- a/app/src/main/java/com/dayu/recharge/activity/BaseActivity.java +++ b/app/src/main/java/com/dayu/recharge/activity/BaseActivity.java @@ -4,6 +4,8 @@ import android.os.Bundle; import android.view.View; +import androidx.appcompat.app.AppCompatActivity; + import com.dayu.recharge.R; import com.dayu.recharge.dao.AppDatabase; import com.dayu.recharge.dao.BaseDaoSingleton; @@ -13,7 +15,7 @@ * Created by zuoxiao on 2018/12/20. */ -public class BaseActivity extends Activity { +public class BaseActivity extends AppCompatActivity { public TitleBar titleBar = null; public AppDatabase baseDao; diff --git a/app/src/main/java/com/dayu/recharge/activity/MyActivity.java b/app/src/main/java/com/dayu/recharge/activity/MyActivity.java index 18d07ee..b8e0b6f 100644 --- a/app/src/main/java/com/dayu/recharge/activity/MyActivity.java +++ b/app/src/main/java/com/dayu/recharge/activity/MyActivity.java @@ -124,11 +124,11 @@ } List listData = new ArrayList(); try { -// if (isRechargeList) { -// listData = SqLite_DB_Utile.getInit(MyActivity.this).selector(RechargeBean.class).where("date", ">=", beginTime).and("date", "<=", endTime).findAll(); -// } else { -// listData = SqLite_DB_Utile.getInit(MyActivity.this).selector(UserCardBean.class).where("date", ">=", beginTime).and("date", "<=", endTime).findAll(); -// } + if (isRechargeList) { + listData = baseDao.rechargeDao().findByTime(beginTime, endTime); + } else { + listData = baseDao.userCardDao().findByTime(beginTime, endTime); + } } catch (Exception e) { e.printStackTrace(); } @@ -139,10 +139,10 @@ return; } if (isRechargeList) { - title = new String[]{"鏉戝彿", "鐢ㄦ埛鍚�", "鎴峰彿", "鍏呭�兼棩鏈�", "鍏呭�奸噾棰濓紙鍏冿級", "鍓╀綑閲戦锛堝厓锛�"}; + title = new String[]{"璁惧搴忓垪鍙�", "鐢ㄦ埛鍚�", "韬唤璇佸彿", "鍏呭�兼棩鏈�", "鍏呭�奸噾棰濓紙鍏冿級", "鍓╀綑閲戦锛堝厓锛�"}; fileName = file.toString() + "/" + ExcelUtil.outRechargePathName; } else { - title = new String[]{"鏉戝彿", "鐢ㄦ埛鍚�", "鎴峰彿", "娉ㄥ唽鏃ユ湡", "鐢佃瘽", "姘存潈鍐呮按閲�", "浜╂暟", "鐘舵��"}; + title = new String[]{"璁惧搴忓垪鍙�", "鐢ㄦ埛鍚�", "韬唤璇佸彿", "娉ㄥ唽鏃ユ湡", "鐢佃瘽"}; fileName = file.toString() + "/" + ExcelUtil.outUserPathName; } ExcelUtil.initExcel(fileName, title); 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 f7edf95..67a3395 100644 --- a/app/src/main/java/com/dayu/recharge/activity/NewCardActivity.java +++ b/app/src/main/java/com/dayu/recharge/activity/NewCardActivity.java @@ -1,5 +1,6 @@ package com.dayu.recharge.activity; +import android.Manifest; import android.app.Dialog; import android.app.ProgressDialog; import android.content.Intent; @@ -8,6 +9,7 @@ import android.view.LayoutInflater; import android.view.View; +import com.msd.ocr.idcard.LibraryInitOCR; import com.dayu.recharge.MyApplication; import com.dayu.recharge.card.UserCard; import com.dayu.recharge.databinding.ActivityNewCardBinding; @@ -26,6 +28,10 @@ import com.dayu.recharge.utils.SocketUtil; import com.dayu.recharge.utils.ToastUtil; import com.dayu.recharge.utils.WSHelper; +import com.permissionx.guolindev.PermissionX; + +import org.json.JSONException; +import org.json.JSONObject; import java.util.Arrays; @@ -37,7 +43,7 @@ */ public class NewCardActivity extends BaseNfcActivity { - + public static final int SCAN_IDCARD_REQUEST = 1; UserCardBean userCardBean; Dialog dialog; @@ -54,9 +60,19 @@ setContentView(newCardBinding.getRoot()); setData(); initView(); + LibraryInitOCR.initOCR(NewCardActivity.this); } private void initView() { + //韬唤璇佽瘑鍒� + newCardBinding.newCardScanBtn.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + + rxPermission(); + } + }); + newCardBinding.newCardRegistBtn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { @@ -97,6 +113,67 @@ }); } + private void rxPermission() { + PermissionX.init(NewCardActivity.this).permissions(Manifest.permission.CAMERA) + .onExplainRequestReason((scope, deniedList) -> { + +// val message = "PermissionX闇�瑕佹偍鍚屾剰浠ヤ笅鏉冮檺鎵嶈兘姝e父浣跨敤" + }) + .request((allGranted, grantedList, deniedList) -> { + if (allGranted) {//鎵�鏈夌敵璇风殑鏉冮檺閮藉凡閫氳繃 + startCamera(); + } else {//鎮ㄦ嫆缁濅簡濡備笅鏉冮檺锛�$deniedList + + + } + }); + } + + + private void startCamera() { + + Bundle bundle = new Bundle(); + bundle.putBoolean("saveImage", false); + bundle.putInt("requestCode", SCAN_IDCARD_REQUEST); + bundle.putInt("type", 0); //0韬唤璇�, 1椹鹃┒璇� + LibraryInitOCR.startScan(NewCardActivity.this, bundle); + } + + @Override + protected void onActivityResult(int requestCode, int resultCode, Intent data) { + super.onActivityResult(requestCode, resultCode, data); + if (resultCode == RESULT_OK){ + switch (requestCode) { + case SCAN_IDCARD_REQUEST: + String result = data.getStringExtra("OCRResult"); + try { + JSONObject jo = new JSONObject(result); + +// sb.append(String.format("姝i潰 = %s\n", jo.opt("type"))); +// sb.append(String.format("濮撳悕 = %s\n", jo.opt("name"))); +// sb.append(String.format("鎬у埆 = %s\n", jo.opt("sex"))); +// sb.append(String.format("姘戞棌 = %s\n", jo.opt("folk"))); +// sb.append(String.format("鏃ユ湡 = %s\n", jo.opt("birt"))); +// sb.append(String.format("鍙风爜 = %s\n", jo.opt("num"))); +// sb.append(String.format("浣忓潃 = %s\n", jo.opt("addr"))); +// sb.append(String.format("绛惧彂鏈哄叧 = %s\n", jo.opt("issue"))); +// sb.append(String.format("鏈夋晥鏈熼檺 = %s\n", jo.opt("valid"))); +// 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); + + } catch (JSONException e) { + throw new RuntimeException(e); + } + break; + } + } + + } + private void setData() { try { diff --git a/app/src/main/java/com/dayu/recharge/net/SocketNet.java b/app/src/main/java/com/dayu/recharge/net/SocketNet.java index 1c497a1..b3c4c18 100644 --- a/app/src/main/java/com/dayu/recharge/net/SocketNet.java +++ b/app/src/main/java/com/dayu/recharge/net/SocketNet.java @@ -132,7 +132,7 @@ // isConnected = false; Log.i("SocketActionListener", "socket杩炴帴澶辫触"); if (isTest) { - ToastUtil.show(mContext, "杩炴帴澶辫触,璇锋鏌ョ綉缁�"); +// ToastUtil.show(mContext, "杩炴帴澶辫触,璇锋鏌ョ綉缁�"); } else { if (myCallBack != null) { myCallBack.onSocketError(-1, "socket杩炴帴澶辫触,璇锋鏌ョ綉缁�"); diff --git a/app/src/main/java/com/dayu/recharge/utils/ExcelUtil.java b/app/src/main/java/com/dayu/recharge/utils/ExcelUtil.java index e270cca..e508bd9 100644 --- a/app/src/main/java/com/dayu/recharge/utils/ExcelUtil.java +++ b/app/src/main/java/com/dayu/recharge/utils/ExcelUtil.java @@ -129,27 +129,19 @@ List<String> list = new ArrayList<>(); if (objList.get(j) instanceof RechargeBean) { RechargeBean projectBean = (RechargeBean) objList.get(j); -// list.add(projectBean.getVillageNum()); -// list.add(projectBean.getUserName()); -// list.add(projectBean.getUserNum()); -// list.add(DateUtil.dateToStamp(projectBean.getDate(), DateUtil.type2)); -// list.add(projectBean.getMorny()); -// list.add(projectBean.getBalance()); + list.add(projectBean.getSerial()); + list.add(projectBean.getUserName()); + list.add(projectBean.getUserId()); + list.add(DateUtil.dateToStamp(projectBean.getDate(), DateUtil.type2)); + list.add(projectBean.getMorny()); + list.add(projectBean.getBalance()); } else { -// UserCardBean userCardBean = (UserCardBean) objList.get(j); -// list.add(userCardBean.getVillageNum()); -// list.add(userCardBean.getUserName()); -// list.add(userCardBean.getUserNum()); -// list.add(DateUtil.dateToStamp(userCardBean.getDate(), DateUtil.type2)); -// list.add(userCardBean.getPhone()); -// list.add(userCardBean.getWaterNum()); -// list.add(userCardBean.getMushu()); -// if (userCardBean.getSt() == 0) { -// list.add("绌洪棽"); -// } else { -// list.add("浣跨敤"); -// } - + UserCardBean userCardBean = (UserCardBean) objList.get(j); + list.add(userCardBean.getSerial()); + list.add(userCardBean.getUserName()); + list.add(userCardBean.getUserID()); + list.add(DateUtil.dateToStamp(userCardBean.getDate(), DateUtil.type2)); + list.add(userCardBean.getPhone()); } for (int i = 0; i < list.size(); i++) { diff --git a/app/src/main/res/layout/activity_new_card.xml b/app/src/main/res/layout/activity_new_card.xml index 99120f5..de64059 100644 --- a/app/src/main/res/layout/activity_new_card.xml +++ b/app/src/main/res/layout/activity_new_card.xml @@ -47,7 +47,8 @@ <LinearLayout style="@style/newCardLL" android:layout_width="match_parent" - android:layout_height="wrap_content"> + android:layout_height="wrap_content" + android:orientation="horizontal"> <TextView android:layout_width="wrap_content" @@ -57,13 +58,21 @@ <EditText android:id="@+id/newCard_name" - android:layout_width="match_parent" + android:layout_width="0dp" android:layout_height="wrap_content" - + android:layout_weight="1" android:textSize="@dimen/new_card_size" /> + <ImageView + android:id="@+id/newCard_scanBtn" + android:layout_width="45dp" + android:layout_height="45dp" + android:visibility="gone" + android:padding="10dp" + android:src="@mipmap/icon_scan" /> </LinearLayout> + <LinearLayout style="@style/newCardLL" android:layout_width="match_parent" @@ -79,21 +88,29 @@ android:id="@+id/newCard_id" android:layout_width="match_parent" android:layout_height="wrap_content" - android:inputType="numberSigned" android:digits="0123456789Xx" - - android:maxLength="18" + android:inputType="numberSigned" + android:maxLength="18" android:textSize="@dimen/new_card_size" /> </LinearLayout> + <TextView + android:id="@+id/newCard_idTip" + style="@style/newCardLL" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="鎵弿鍚庤鏍稿韬唤淇℃伅鏃犺" + android:textColor="#FF4500" + android:visibility="gone" /> + <LinearLayout style="@style/newCardLL" - android:visibility="gone" android:layout_width="match_parent" - android:layout_height="wrap_content"> + android:layout_height="wrap_content" + android:visibility="gone"> <TextView android:layout_width="wrap_content" @@ -130,10 +147,7 @@ android:layout_height="wrap_content" android:inputType="number" android:maxLength="11" - android:textSize="@dimen/new_card_size" /> - - </LinearLayout> diff --git a/app/src/main/res/layout/activity_test.xml b/app/src/main/res/layout/activity_test.xml new file mode 100644 index 0000000..ab7ceba --- /dev/null +++ b/app/src/main/res/layout/activity_test.xml @@ -0,0 +1,21 @@ +<?xml version="1.0" encoding="utf-8"?> +<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:orientation="vertical"> + + + <TextView + android:id="@+id/testBtn" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="娴嬭瘯" /> + + <ImageView + android:id="@+id/img" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:visibility="gone" + android:scaleType="fitCenter" /> + +</LinearLayout> \ No newline at end of file diff --git a/app/src/main/res/mipmap-xhdpi/icon_scan.png b/app/src/main/res/mipmap-xhdpi/icon_scan.png new file mode 100644 index 0000000..be8820e --- /dev/null +++ b/app/src/main/res/mipmap-xhdpi/icon_scan.png Binary files differ diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml index 666b988..c10f817 100644 --- a/app/src/main/res/values/styles.xml +++ b/app/src/main/res/values/styles.xml @@ -1,7 +1,7 @@ <resources> <!-- Base application theme. --> - <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar"> + <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar"> <!-- Customize your theme here. --> <item name="colorPrimary">@color/colorPrimary</item> <item name="colorPrimaryDark">@color/colorPrimaryDark</item> diff --git a/gradle.properties b/gradle.properties index 3e927b1..65220be 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,21 +1,17 @@ -# Project-wide Gradle settings. -# IDE (e.g. Android Studio) users: -# Gradle settings configured through the IDE *will override* -# any settings specified in this file. -# For more details on how to configure your build environment visit +## For more details on how to configure your build environment visit # http://www.gradle.org/docs/current/userguide/build_environment.html +# # Specifies the JVM arguments used for the daemon process. # The setting is particularly useful for tweaking memory settings. -org.gradle.jvmargs=-Xmx2048m -Dfile.encoding=UTF-8 +# Default value: -Xmx1024m -XX:MaxPermSize=256m +# org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8 +# # When configured, Gradle will run in incubating parallel mode. # This option should only be used with decoupled projects. More details, visit # http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects # org.gradle.parallel=true -# AndroidX package structure to make it clearer which packages are bundled with the -# Android operating system, and which are packaged with your app's APK -# https://developer.android.com/topic/libraries/support-library/androidx-rn +#Thu Nov 16 14:03:50 CST 2023 +android.enableJetifier=true +android.nonTransitiveRClass=true android.useAndroidX=true -# Enables namespacing of each library's R class so that its R class includes only the -# resources declared in the library itself and none from the library's dependencies, -# thereby reducing the size of the R class for that library -android.nonTransitiveRClass=true \ No newline at end of file +org.gradle.jvmargs=-Xmx2048m -Dfile.encoding\=UTF-8 -- Gitblit v1.8.0