app/src/main/java/com/dayu/recharge/MyApplication.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
app/src/main/java/com/dayu/recharge/activity/AdminSetupActivity.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
app/src/main/java/com/dayu/recharge/activity/BaseNfcActivity.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
app/src/main/java/com/dayu/recharge/activity/HomeActivity.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
app/src/main/java/com/dayu/recharge/activity/LoginActivity.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
app/src/main/java/com/dayu/recharge/activity/SysIpActivity.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
app/src/main/java/com/dayu/recharge/dao/BaseDaoSingleton.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
app/src/main/java/com/dayu/recharge/net/SocketNet.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
app/src/main/java/com/dayu/recharge/utils/DeviceNumberUtils.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
app/src/main/java/com/dayu/recharge/MyApplication.java
@@ -1,6 +1,7 @@ package com.dayu.recharge; import android.app.Application; import android.nfc.Tag; import android.os.Handler; import android.os.Message; import android.text.TextUtils; @@ -9,6 +10,7 @@ import com.dayu.recharge.dao.BaseDaoSingleton; import com.dayu.recharge.dbBean.DeviceNumber; import com.dayu.recharge.dbBean.IpBean; import com.dayu.recharge.utils.DeviceNumberUtils; import com.dayu.recharge.utils.ToastUtil; import com.easysocket.EasySocket; import com.easysocket.config.EasySocketOptions; @@ -34,7 +36,7 @@ import java.util.TimerTask; public class MyApplication extends Application { public static String TAG = "MyApplication"; public static MyApplication myApplication; private String address; @@ -52,7 +54,8 @@ myApplication = this; isAidl = true; AidlUtil.getInstance().connectPrinterService(this); initEasySocket(false, null); // initEasySocket(false, null); CrashReport.initCrashReport(getApplicationContext(), "45551598b8", true); } @@ -144,86 +147,79 @@ if (!TextUtils.isEmpty(ip) && !TextUtils.isEmpty(String.valueOf(port)) && !TextUtils.isEmpty(addressCode)) { 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"); // Log.i("Socket", "注册报文"); SocketNet.getInstance().sendTestMessage(initMachineRequestBean.pack(), new SocketCallBack() { @Override public void onSocketResponse(SocketData readData) { if (CRC8.isCRC8(readData.getOriginDataBytes())) { //校验CRC成功 InitMachineBackBean initMachineBackBean = new InitMachineBackBean(); 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) { 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")) { //保存设备注册号 DeviceNumber deviceNumber = BaseDaoSingleton.getInstance(MyApplication.myApplication).deviceNumberDao().findFirst(); if (deviceNumber != null) { deviceNumber.setDeviceRegistrationNumber(initCode); } else { deviceNumber = new DeviceNumber(); deviceNumber.setDeviceRegistrationNumber(initCode); } BaseDaoSingleton.getInstance(MyApplication.myApplication).deviceNumberDao().insert(deviceNumber); @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("充值管理注册报文获取成功"); ToastUtil.show("充值管理注册报文获取成功"); } else { //校验CRC错误 ToastUtil.show("确认收到注册报文状态失败"); } } else { //校验CRC错误 ToastUtil.show("确认收到注册报文状态失败"); ToastUtil.show("确认收到注册报文校验CRC错误"); } } 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("充值管理注册报文校验CRC错误"); } }); } else {//校验CRC错误 ToastUtil.show("充值管理注册报文校验CRC错误"); } } } @Override public void onSocketError(int code, String msg) { @Override public void onSocketError(int code, String msg) { } }); } }); } } } } private void createSocket(String ip, int port) { app/src/main/java/com/dayu/recharge/activity/AdminSetupActivity.java
@@ -61,20 +61,17 @@ adminBinding.adminAddressCode.setText(adminData.getAddressCode()); adminData.setSerial(adminBinding.adminSerial.getText().toString()); baseDao.adminDao().insert(adminData); MyApplication.myApplication.initEasySocket(false, null); setData(); IpBean ipBean = MyApplication.myApplication.ipBean; if (ipBean != null) { MyApplication.myApplication.initMachineRequestBean(ipBean.getIp(), ipBean.getPort(), adminData.getAddressCode()); } TipUtil.show(AdminSetupActivity.this, "设置成功", new TipUtil.TipListener() { @Override public void onCancle() { AdminSetupActivity.this.finish(); } }); setData(); IpBean ipBean = baseDao.ipDao().findFirst(); if (ipBean != null) { MyApplication.myApplication.initMachineRequestBean(ipBean.getIp(), ipBean.getPort(), adminData.getAddressCode()); } } else { TipUtil.show(AdminSetupActivity.this, "输入的数字不能超过16777215"); } app/src/main/java/com/dayu/recharge/activity/BaseNfcActivity.java
@@ -112,12 +112,12 @@ } @Override protected void onDestroy() { super.onDestroy(); if (mNfcAdapter != null) mNfcAdapter.disableReaderMode(this); } // @Override // protected void onDestroy() { // super.onDestroy(); // if (mNfcAdapter != null) // mNfcAdapter.disableReaderMode(this); // } /** * 检测工作,判断设备的NFC支持情况 app/src/main/java/com/dayu/recharge/activity/HomeActivity.java
@@ -35,25 +35,10 @@ homeBinding = ActivityHomeBinding.inflate(LayoutInflater.from(this)); setContentView(homeBinding.getRoot()); initView(); getPermission(); rushState(); } private void getPermission() { PermissionX.init(HomeActivity.this).permissions(Manifest.permission.READ_PHONE_STATE) .onExplainRequestReason((scope, deniedList) -> { // val message = "PermissionX需要您同意以下权限才能正常使用" }) .request((allGranted, grantedList, deniedList) -> { if (allGranted) {//所有申请的权限都已通过 } else {//您拒绝了如下权限:$deniedList } }); } public void rushState() { if (MyApplication.myApplication.isConncet) { app/src/main/java/com/dayu/recharge/activity/LoginActivity.java
@@ -1,14 +1,22 @@ package com.dayu.recharge.activity; import android.Manifest; import android.content.Intent; import android.os.Bundle; import android.view.LayoutInflater; import android.view.View; import android.widget.Toast; import androidx.appcompat.app.AppCompatActivity; import com.dayu.recharge.MyApplication; import com.dayu.recharge.dao.BaseDaoSingleton; import com.dayu.recharge.databinding.ActivityLoginBinding; import com.dayu.recharge.dbBean.PassWordBean; import com.dayu.recharge.utils.WSMD5; import com.permissionx.guolindev.PermissionX; import java.io.File; /** @@ -17,7 +25,7 @@ * Date: 2023-11-10 19:52 * Description: 登录界面 */ public class LoginActivity extends BaseActivity { public class LoginActivity extends AppCompatActivity { ActivityLoginBinding binding; PassWordBean passWordBean; @@ -27,11 +35,7 @@ super.onCreate(savedInstanceState); binding = ActivityLoginBinding.inflate(LayoutInflater.from(this)); setContentView(binding.getRoot()); try { passWordBean = baseDao.loginPsDao().findFirst(); } catch (Exception e) { e.printStackTrace(); } getPermission(); initView(); } @@ -48,4 +52,29 @@ } }); } private void getPermission() { PermissionX.init(LoginActivity.this).permissions(Manifest.permission.READ_PHONE_STATE, Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE) .onExplainRequestReason((scope, deniedList) -> { }) .request((allGranted, grantedList, deniedList) -> { if (allGranted) {//所有申请的权限都已通过 MyApplication.myApplication.initEasySocket(false, null); try { File file = new File(BaseDaoSingleton.SqlitePath); if (!file.exists()) { file.mkdirs(); } passWordBean = BaseDaoSingleton.getInstance(this).loginPsDao().findFirst(); } catch (Exception e) { e.printStackTrace(); } } else {//您拒绝了如下权限:$deniedList } }); } } app/src/main/java/com/dayu/recharge/activity/SysIpActivity.java
@@ -52,7 +52,7 @@ String oldIp = ipBean.getIp(); int oldPort = ipBean.getPort(); if (!oldIp.equals(ipBinding.ip.getText().toString())|| oldPort != Integer.valueOf(ipBinding.port.getText().toString())) { DeviceNumberUtils.setDeviceNumber(""); // DeviceNumberUtils.setDeviceNumber(""); } } if (ipBean == null) { @@ -64,9 +64,9 @@ AdminDataBean adminData = baseDao.adminDao().findFirst(); //修改IP后重新连接 MyApplication.myApplication.initEasySocket(false, null); if (adminData != null) { MyApplication.myApplication.initMachineRequestBean(ipBean.getIp(), ipBean.getPort(), adminData.getAddressCode()); } // if (adminData != null) { // MyApplication.myApplication.initMachineRequestBean(ipBean.getIp(), ipBean.getPort(), adminData.getAddressCode()); // } Toast.makeText(SysIpActivity.this, "保存成功", Toast.LENGTH_LONG).show(); } }); app/src/main/java/com/dayu/recharge/dao/BaseDaoSingleton.java
@@ -1,11 +1,14 @@ package com.dayu.recharge.dao; import android.content.Context; import android.os.Environment; import android.os.FileUtils; import androidx.room.Room; import com.dayu.recharge.utils.MyFileUtil; import java.io.File; /** * Copyright (C), 2023, @@ -16,19 +19,21 @@ public class BaseDaoSingleton { public static AppDatabase baseDao; public static AppDatabase AsynchBaseDao; //MyFileUtil.SqlitePath + public static String SqlitePath = Environment.getExternalStorageDirectory().getAbsolutePath() + File.separator + "dayu" + File.separator + "data" + File.separator; //MyFileUtil.SqlitePath + public static AppDatabase getInstance(Context context) { if (baseDao == null) { baseDao = Room.databaseBuilder( context, AppDatabase.class, "ConfigurationData" SqlitePath + "ConfigurationData" ).allowMainThreadQueries().build(); } return baseDao; } public static AppDatabase getAsynchInstance(Context context){ public static AppDatabase getAsynchInstance(Context context) { if (AsynchBaseDao == null) { AsynchBaseDao = Room.databaseBuilder( app/src/main/java/com/dayu/recharge/net/SocketNet.java
@@ -2,6 +2,7 @@ import android.content.Context; import android.os.Handler; import android.text.TextUtils; import android.util.Log; import com.dayu.recharge.activity.HomeActivity; @@ -94,28 +95,22 @@ */ @Override public void onSocketConnSuccess(SocketAddress socketAddress) { Log.i("SocketActionListener", "连接成功"); Log.i("SocketActionListener1111", "连接成功"); MyApplication.myApplication.isConncet = true; rushState(); DeviceNumber initCode = BaseDaoSingleton.getInstance(MyApplication.myApplication).deviceNumberDao().findFirst(); if (initCode == null && !MyApplication.myApplication.isDoInitMachine) { new Handler().postDelayed(new Runnable() { @Override public void run() { AdminDataBean adminData = BaseDaoSingleton.getInstance(MyApplication.myApplication).adminDao().findFirst(); Log.i("SocketActionListener1111", "isDoInitMachine==" + MyApplication.myApplication.isDoInitMachine + ""); if (!MyApplication.myApplication.isDoInitMachine) { Log.i("SocketActionListener1111", "isDoInitMachine"); if (MyApplication.myApplication.ipBean != null && adminData != null) { if (!TextUtils.isEmpty(adminData.getAddressCode())) { Log.i("SocketActionListener1111", "initMachineRequestBean"); MyApplication.myApplication.initMachineRequestBean(MyApplication.myApplication.ipBean.getIp(), MyApplication.myApplication.ipBean.getPort(), adminData.getAddressCode()); AdminDataBean adminData = BaseDaoSingleton.getInstance(MyApplication.myApplication).adminDao().findFirst(); if (MyApplication.myApplication.ipBean != null && adminData != null) { MyApplication.myApplication.initMachineRequestBean(MyApplication.myApplication.ipBean.getIp(), MyApplication.myApplication.ipBean.getPort(), adminData.getAddressCode()); } } }, 500); } } // if (dataMessage != null) { // EasySocket.getInstance().upMessage(dataMessage); // } rushState(); } /** @@ -176,8 +171,12 @@ }; private void rushState() { if (HomeActivity.homeActivity != null) { HomeActivity.homeActivity.rushState(); try { if (HomeActivity.homeActivity != null) { HomeActivity.homeActivity.rushState(); } } catch (Exception e) { e.printStackTrace(); } } app/src/main/java/com/dayu/recharge/utils/DeviceNumberUtils.java
@@ -13,6 +13,7 @@ */ public class DeviceNumberUtils { // 获取充值机设备序列号 public static String getDeviceNumber() { DeviceNumber deviceNumber = BaseDaoSingleton.getInstance(MyApplication.myApplication).deviceNumberDao().findFirst(); if (deviceNumber != null) { @@ -22,7 +23,7 @@ } } // 设置充值机设备序列号 public static void setDeviceNumber(String deviceRegistrationNumber) { DeviceNumber deviceNumber = BaseDaoSingleton.getInstance(MyApplication.myApplication).deviceNumberDao().findFirst(); if (deviceNumber != null) {