From 167a296a3183774dffdbbb28a8edb6fce472ef11 Mon Sep 17 00:00:00 2001 From: admin Date: Fri, 8 Nov 2024 14:03:47 +0800 Subject: [PATCH] 1.1.7 release --- app/build.gradle | 4 +- .../main/java/com/rehome/dywoa/Contans.java | 28 +-- .../rehome/dywoa/ui/activity/HomeActivity.kt | 139 ++++++++--- .../rehome/dywoa/ui/activity/LoginActivity.kt | 23 +- .../ui/activity/sbxdjgl/SjcjFragment.java | 2 +- .../dywoa/ui/activity/sbxdjgl/WjFragment.java | 5 +- .../dywoa/utils/MqttSSLPublishServer.java | 223 ++++++++++++++++++ .../com/rehome/dywoa/utils/NetworkUtil.java | 48 +++- .../java/com/rehome/dywoa/utils/RSAUtils.java | 4 +- 9 files changed, 401 insertions(+), 75 deletions(-) create mode 100644 app/src/main/java/com/rehome/dywoa/utils/MqttSSLPublishServer.java diff --git a/app/build.gradle b/app/build.gradle index 876d0e8..af09d30 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -10,8 +10,8 @@ android { applicationId "com.rehome.dywoa" minSdk 24 targetSdk 34 - versionCode 17 - versionName "1.1.6" + versionCode 18 + versionName "1.1.7" multiDexEnabled true testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" //每个应用拥有不同的authorities,防止相同的在同一个手机上无法同时安装 diff --git a/app/src/main/java/com/rehome/dywoa/Contans.java b/app/src/main/java/com/rehome/dywoa/Contans.java index dc404a9..cc8263d 100644 --- a/app/src/main/java/com/rehome/dywoa/Contans.java +++ b/app/src/main/java/com/rehome/dywoa/Contans.java @@ -3,25 +3,25 @@ package com.rehome.dywoa; public class Contans { - public static String IP = "http://192.168.2.115:8601/"; - public static String IP_INTRANET = "http://192.168.2.115:8601/"; - public static String IP_EXTRANET = "http://192.168.2.115:8601/"; - public static String SIS_TOKEN_IP = "https://sis.dywzhny.com.cn/"; - public static String BI_TOKEN_IP = "https://bi.dywzhny.com.cn/"; +// public static String IP = "http://192.168.2.115:8601/"; +// public static String IP_INTRANET = "http://192.168.2.115:8601/"; +// public static String IP_EXTRANET = "http://192.168.2.115:8601/"; +// public static String SIS_TOKEN_IP = "https://sis.dywzhny.com.cn/"; +// public static String BI_TOKEN_IP = "https://bi.dywzhny.com.cn/"; //APP登录接口厂内服务器IP -// public static String IP = "https://app.dywzhny.com.cn/"; -// //app内网 -// public static String IP_INTRANET = "https://app.dywzhny.com.cn/"; -// //app外网 -// public static String IP_EXTRANET = "https://app.dywzhny.com.cn/"; -// //SIS系统厂内IP -// public static String SIS_TOKEN_IP = "https://sis.dywzhny.com.cn/"; -// //BI -// public static String BI_TOKEN_IP = "https://bi.dywzhny.com.cn/"; + public static String IP = "https://app.dywzhny.com.cn/"; + //app内网 + public static String IP_INTRANET = "https://app.dywzhny.com.cn/"; + //app外网 + public static String IP_EXTRANET = "https://app.dywzhny.com.cn/"; + //SIS系统厂内IP + public static String SIS_TOKEN_IP = "https://sis.dywzhny.com.cn/"; + //BI + public static String BI_TOKEN_IP = "https://bi.dywzhny.com.cn/"; diff --git a/app/src/main/java/com/rehome/dywoa/ui/activity/HomeActivity.kt b/app/src/main/java/com/rehome/dywoa/ui/activity/HomeActivity.kt index bcdde5e..0891126 100644 --- a/app/src/main/java/com/rehome/dywoa/ui/activity/HomeActivity.kt +++ b/app/src/main/java/com/rehome/dywoa/ui/activity/HomeActivity.kt @@ -65,6 +65,8 @@ import com.rehome.dywoa.ui.fragment.HomeFragment import com.rehome.dywoa.ui.fragment.MineFragment import com.rehome.dywoa.utils.GsonUtils import com.rehome.dywoa.utils.HttpListener +import com.rehome.dywoa.utils.MqttSSLPublishServer +import com.rehome.dywoa.utils.NetworkUtil import com.rehome.dywoa.utils.NoProgresshttpUtils import com.rehome.dywoa.utils.RSAUtils import com.rehome.dywoa.utils.SPUtils @@ -105,9 +107,14 @@ class HomeActivity : BaseActivityOaToolbarViewBinding() { private lateinit var queueNoHttp: RequestQueue + //定时器 + private var timerCheckServerConnectStatus: Timer? = null + //定时器 private var timer: Timer? = null + private var mqttPublishServer: MqttSSLPublishServer? = null + private var manager: DownloadManager? = null @@ -126,6 +133,10 @@ class HomeActivity : BaseActivityOaToolbarViewBinding() { username = App.getInstance().userInfo.manid initTimer() + if (NetworkUtil.canNetWorkConnect(context)&&NetworkUtil.isISPNetWorkConnect(context)) { + initMqtt() + } + initToolbar("首页") binding.toolbarView.topLl.visibility = View.GONE StatusBarUtil.setColor(this, ContextCompat.getColor(context, R.color.app_status_bar)) @@ -229,13 +240,46 @@ class HomeActivity : BaseActivityOaToolbarViewBinding() { getXjZhTjDropDown("lx"); } + private fun initMqtt() { + ////开启MQTT推送服务 + mqttPublishServer = MqttSSLPublishServer(context) + try { + timer = Timer() + timer!!.schedule(object : TimerTask() { + override fun run() { +// if (NetworkUtil.canNetWorkConnect(context)) { +// showLog("canNetWorkConnect") +// }else{ +// showLog("no NetWorkConnect") +// } +// +// if (NetworkUtil.isWifiNetWorkConnect(context)) { +// showLog("isWifiNetWorkConnect") +// }else{ +// showLog("no isWifiNetWorkConnect") +// } +// +// if (NetworkUtil.isISPNetWorkConnect(context)) { +// showLog("isISPNetWorkConnect") +// }else{ +// showLog("no isISPNetWorkConnect") +// } + mqttPublishServer!!.start() + } + }, 1000, 60000) + // 设定指定的时间time,此处为10000毫秒 + } catch (e: java.lang.Exception) { + e.printStackTrace() + } + } + //巡检项目删除过期数据 private fun deleteXjExpirePlan(){ val xjdListAll = DataSupport.where("download = ? and username = ?", "1", username).find(Xjjh::class.java) if(xjdListAll!=null&&xjdListAll.size>0){ for (xjdPlanItem in xjdListAll) { - showLog("-----xjdListAll-----") - showLog(GsonUtils.GsonString(xjdPlanItem)) + //showLog("-----xjdListAll-----") + //showLog(GsonUtils.GsonString(xjdPlanItem)) if(!TextUtils.isEmpty(xjdPlanItem.et)){ //格式化日期的对象(转化成习惯的时间格式) val sdFormat = SimpleDateFormat("yyyy-MM-dd HH:mm") @@ -244,9 +288,9 @@ class HomeActivity : BaseActivityOaToolbarViewBinding() { val date = sdFormat.parse(xjdPlanItem.et) val calendarOne = Calendar.getInstance() calendarOne.time = date - showLog(sdFormat.format(calendarOne.time)) - showLog("--------") - showLog(sdFormat.format(calendar.time)) +// showLog(sdFormat.format(calendarOne.time)) +// showLog("--------") +// showLog(sdFormat.format(calendar.time)) if (Calendar.getInstance().after(calendarOne)) { showLog("删除巡检旧数据") DataSupport.deleteAll( @@ -265,7 +309,7 @@ class HomeActivity : BaseActivityOaToolbarViewBinding() { xjdPlanItem.zxid,username ) }else{ - showLog("之前") + //showLog("之前") } } } @@ -277,8 +321,8 @@ class HomeActivity : BaseActivityOaToolbarViewBinding() { val djjhListAll = DataSupport.where("download = ? and username = ?", "1", username).find(Djjh::class.java) if(djjhListAll!=null&&djjhListAll.size>0){ for (djjhItem in djjhListAll) { - showLog("-----djjhListAll-----") - showLog(GsonUtils.GsonString(djjhListAll)) + //showLog("-----djjhListAll-----") + //showLog(GsonUtils.GsonString(djjhListAll)) if(!TextUtils.isEmpty(djjhItem.dqsj)){ //格式化日期的对象(转化成习惯的时间格式) val sdFormat = SimpleDateFormat("yyyy-MM-dd HH:mm") @@ -287,9 +331,9 @@ class HomeActivity : BaseActivityOaToolbarViewBinding() { val date = sdFormat.parse(djjhItem.dqsj) val calendarOne = Calendar.getInstance() calendarOne.time = date - showLog(sdFormat.format(calendarOne.time)) - showLog("--------") - showLog(sdFormat.format(calendar.time)) +// showLog(sdFormat.format(calendarOne.time)) +// showLog("--------") +// showLog(sdFormat.format(calendar.time)) if (Calendar.getInstance().after(calendarOne)) { showLog("删除点检旧数据") DataSupport.deleteAll( @@ -311,7 +355,7 @@ class HomeActivity : BaseActivityOaToolbarViewBinding() { username ) }else{ - showLog("之前") + //showLog("之前") } } } @@ -366,10 +410,10 @@ class HomeActivity : BaseActivityOaToolbarViewBinding() { override fun onResume() { super.onResume() badgeView_me.badgeCount = AllNum - if (timer == null) { + if (timerCheckServerConnectStatus == null) { try { - timer = Timer() - timer?.schedule(object : TimerTask() { + timerCheckServerConnectStatus = Timer() + timerCheckServerConnectStatus?.schedule(object : TimerTask() { override fun run() { //检查服务器连接状态 checkServerConnectStatus() @@ -380,6 +424,24 @@ class HomeActivity : BaseActivityOaToolbarViewBinding() { e.printStackTrace() } } + if (NetworkUtil.canNetWorkConnect(context)&&NetworkUtil.isISPNetWorkConnect(context)) { + if (mqttPublishServer == null) { + mqttPublishServer = MqttSSLPublishServer(context) + } + if (timer == null) { + try { + timer = Timer() + timer!!.schedule(object : TimerTask() { + override fun run() { + mqttPublishServer!!.start() + } + }, 1000, 60000) + // 设定指定的时间time,此处为10000毫秒 + } catch (e: Exception) { + e.printStackTrace() + } + } + } } override fun onRestart() { @@ -390,8 +452,15 @@ class HomeActivity : BaseActivityOaToolbarViewBinding() { override fun onDestroy() { super.onDestroy() + if (timerCheckServerConnectStatus != null) { + timerCheckServerConnectStatus?.cancel() + } + if (mqttPublishServer != null) { + mqttPublishServer!!.destroyAll() + mqttPublishServer = null + } if (timer != null) { - timer?.cancel() + timer!!.cancel() } } @@ -537,8 +606,8 @@ class HomeActivity : BaseActivityOaToolbarViewBinding() { private fun initTimer() { try { - timer = Timer() - timer?.schedule(object : TimerTask() { + timerCheckServerConnectStatus = Timer() + timerCheckServerConnectStatus?.schedule(object : TimerTask() { override fun run() { //检查服务器连接状态 checkServerConnectStatus() @@ -1021,7 +1090,7 @@ class HomeActivity : BaseActivityOaToolbarViewBinding() { DataSupport.deleteAll(Gzlx::class.java) DataSupport.saveAll(gzlxQxData.data) }else{ - showLog("gzlxList size == 0") + //showLog("gzlxList size == 0") DataSupport.saveAll(gzlxQxData.data) } } @@ -1065,23 +1134,23 @@ class HomeActivity : BaseActivityOaToolbarViewBinding() { override fun onSucceed(what: Int, response: Response?) { val result = response?.get() - showLog(result) + //showLog(result) //专业 if(type=="zy"){ val zyXjZhTjData = GsonUtils.GsonToBean(result, ZyXjTjDropDownData::class.java) if (zyXjZhTjData != null&&zyXjZhTjData.state == 1) { if (zyXjZhTjData.data != null&&zyXjZhTjData.data.size > 0) { - showLog(zyXjZhTjData.data.size.toString()) + //showLog(zyXjZhTjData.data.size.toString()) val xjZyList = DataSupport.findAll(ZyXjTjDropDown::class.java) if(xjZyList!=null&&xjZyList.size>0){ - showLog("xjZyList size > 0") - showLog(GsonUtils.GsonString(xjZyList)) - showLog(xjZyList.size.toString()) +// showLog("xjZyList size > 0") +// showLog(GsonUtils.GsonString(xjZyList)) +// showLog(xjZyList.size.toString()) DataSupport.deleteAll(ZyXjTjDropDown::class.java) DataSupport.saveAll(zyXjZhTjData.data) }else{ - showLog("xjZyList size == 0") + //showLog("xjZyList size == 0") DataSupport.saveAll(zyXjZhTjData.data) } } @@ -1092,16 +1161,16 @@ class HomeActivity : BaseActivityOaToolbarViewBinding() { val zcData = GsonUtils.GsonToBean(result, ZcXjTjDropDownData::class.java) if (zcData != null&&zcData.state == 1) { if (zcData.data != null&&zcData.data.size > 0) { - showLog(zcData.data.size.toString()) + //showLog(zcData.data.size.toString()) val zcList = DataSupport.findAll(ZcXjTjDropDown::class.java) if(zcList!=null&&zcList.size>0){ - showLog("zcList size > 0") - showLog(GsonUtils.GsonString(zcList)) - showLog(zcList.size.toString()) +// showLog("zcList size > 0") +// showLog(GsonUtils.GsonString(zcList)) +// showLog(zcList.size.toString()) DataSupport.deleteAll(ZcXjTjDropDown::class.java) DataSupport.saveAll(zcData.data) }else{ - showLog("jzList size == 0") + //showLog("jzList size == 0") DataSupport.saveAll(zcData.data) } } @@ -1112,16 +1181,16 @@ class HomeActivity : BaseActivityOaToolbarViewBinding() { val lxData = GsonUtils.GsonToBean(result, LxXjTjDropDownData::class.java) if (lxData != null&&lxData.state == 1) { if (lxData.data != null&&lxData.data.size > 0) { - showLog(lxData.data.size.toString()) + //showLog(lxData.data.size.toString()) val lxList = DataSupport.findAll(LxXjTjDropDown::class.java) if(lxList!=null&&lxList.size>0){ - showLog("lxList size > 0") - showLog(GsonUtils.GsonString(lxList)) - showLog(lxList.size.toString()) +// showLog("lxList size > 0") +// showLog(GsonUtils.GsonString(lxList)) +// showLog(lxList.size.toString()) DataSupport.deleteAll(LxXjTjDropDown::class.java) DataSupport.saveAll(lxData.data) }else{ - showLog("lxList size == 0") + //showLog("lxList size == 0") DataSupport.saveAll(lxData.data) } } diff --git a/app/src/main/java/com/rehome/dywoa/ui/activity/LoginActivity.kt b/app/src/main/java/com/rehome/dywoa/ui/activity/LoginActivity.kt index 0d4a5d8..46e9644 100644 --- a/app/src/main/java/com/rehome/dywoa/ui/activity/LoginActivity.kt +++ b/app/src/main/java/com/rehome/dywoa/ui/activity/LoginActivity.kt @@ -198,9 +198,9 @@ class LoginActivity : BaseActivityOaToolbarViewBinding() { } if (isApkInDebug(context)) { - //测试 - binding.etUsername.setText("371522") - binding.etPassword.setText("A000000a.") + //李梓雄 +// binding.etUsername.setText("371522") +// binding.etPassword.setText("A000000a.") //ceshi1 // binding.etUsername.setText("ceshi1") @@ -237,8 +237,6 @@ class LoginActivity : BaseActivityOaToolbarViewBinding() { } - //http://10.25.188.126:8600/apkFiles/release/dywoaapp.apk - //https://oa.dywzhny.com.cn/apkFiles/release/dywoaapp.apk binding.btnLogin.setOnClickListener(View.OnClickListener { @@ -610,6 +608,7 @@ class LoginActivity : BaseActivityOaToolbarViewBinding() { private fun appLogin() { + showLog("appLogin") val json: String = getPhoneInfo() //val json: String = "Ms97MbjVaypr+CF04BTQ+Y7hbYp+orLZbXM2u+I+PZKSPSSaqR1dcuM3tsig3UpJ7s2qEw5DsJcVd0t4eJM79ABUFWW/0Nplhx37+6jR2YVaSJgA30L0O2FbuyG7SOjP0qfISNaN1L8eC3a7W5oFPpHxkZdxUf5sxJIQHA2c6lCI+Mo/BUgU1MgTIjM3puiWx99mvxOyl9k2oLZUjcjMOygzNUYYD21SQYQ6dtvdVz3iAtqeJ+0EVCtScPXePG/CH/s0Ti/VS54/KSrlRVfdn5s2pHqw5fd2BZX+ZGtIWTGpWb+Wt1ZtrPXPdv/r1Zx84Zcw0EqKicieeuYpfUH+eg=="; @@ -690,15 +689,7 @@ class LoginActivity : BaseActivityOaToolbarViewBinding() { Contans.ISSCBM, if (userInfo.isScBm == null) "" else userInfo.isScBm ) -// if (userInfo.isScBm == null) { -// Log.i("app", "userInfo.isScBm is null") -// } else { -// if (userInfo.isScBm.equals("1")) { -// Log.i("app", "当前登录用户是生产部门") -// } else { -// Log.i("app", "当前登录用户不是生产部门") -// } -// } + Contans.PERMISSIONSRESULT = userInfo.permissionsResult SPUtils.put( context, @@ -722,8 +713,6 @@ class LoginActivity : BaseActivityOaToolbarViewBinding() { nowStr ) -// userInfo.manid="371520" -// userInfo.usernames="王子俊" // if(DataPassUtils.checkCanLogin()){ // showLog("之前") @@ -802,7 +791,7 @@ class LoginActivity : BaseActivityOaToolbarViewBinding() { // return json // showLog(json.length.toString()); - showLog(json); + //showLog(json); showLog(jsonEncrypt); return jsonEncrypt } diff --git a/app/src/main/java/com/rehome/dywoa/ui/activity/sbxdjgl/SjcjFragment.java b/app/src/main/java/com/rehome/dywoa/ui/activity/sbxdjgl/SjcjFragment.java index 86b36b8..6edc9be 100644 --- a/app/src/main/java/com/rehome/dywoa/ui/activity/sbxdjgl/SjcjFragment.java +++ b/app/src/main/java/com/rehome/dywoa/ui/activity/sbxdjgl/SjcjFragment.java @@ -134,7 +134,7 @@ public class SjcjFragment extends BaseFragment { List rwqys = new ArrayList<>(); //更新所有被停用的机器 for (DjjhRwQy qy : lists) { - if (qy.getASSETNUM().equals(lists.get(item - 1).getASSETNUM())) { + if (qy.getASSETNUM()!=null&&qy.getASSETNUM().equals(lists.get(item - 1).getASSETNUM())) { qy.setSBZT(false); qy.setChecked(true); rwqys.add(qy); diff --git a/app/src/main/java/com/rehome/dywoa/ui/activity/sbxdjgl/WjFragment.java b/app/src/main/java/com/rehome/dywoa/ui/activity/sbxdjgl/WjFragment.java index ceaeca1..330900c 100644 --- a/app/src/main/java/com/rehome/dywoa/ui/activity/sbxdjgl/WjFragment.java +++ b/app/src/main/java/com/rehome/dywoa/ui/activity/sbxdjgl/WjFragment.java @@ -28,7 +28,7 @@ public class WjFragment extends BaseFragment { private View headView; private SdlbActivity mActivity; - private List list; + private List list = new ArrayList<>();; private DlbAdapter adapter; private String num; @@ -125,8 +125,7 @@ public class WjFragment extends BaseFragment { */ private void initDjd() { - list = new ArrayList<>(); - + list.clear(); initDlbinfo(); adapter = new DlbAdapter(context, list); diff --git a/app/src/main/java/com/rehome/dywoa/utils/MqttSSLPublishServer.java b/app/src/main/java/com/rehome/dywoa/utils/MqttSSLPublishServer.java new file mode 100644 index 0000000..1bfdbd3 --- /dev/null +++ b/app/src/main/java/com/rehome/dywoa/utils/MqttSSLPublishServer.java @@ -0,0 +1,223 @@ +package com.rehome.dywoa.utils; + + +/** + * @author huangwenfei + * @version v1.0.0.0 + * Created DateTime 2021-07-31 14:52 + * @description: mqtt 高可靠,断线重连 消息发布服务 + */ + +import android.content.Context; +import android.content.pm.ApplicationInfo; +import android.content.pm.PackageInfo; +import android.content.pm.PackageManager; +import android.text.TextUtils; +import android.util.Log; +import com.google.gson.Gson; +import com.rehome.dywoa.Contans; +import com.rehome.dywoa.bean.LoginCommitBean; +import org.eclipse.paho.client.mqttv3.*; +import org.eclipse.paho.client.mqttv3.persist.MemoryPersistence; +import java.text.SimpleDateFormat; +import java.util.Date; +import java.util.HashMap; +import java.util.Map; +import java.util.UUID; + +public class MqttSSLPublishServer { + /** + * 代理服务器ip地址 + */ + private final String HOST = "tcp://47.242.184.139:1883"; + /** + * 发送主题 + */ + private final String topicPush = "app_push_dyw"; + /** + * 订阅主题 + */ + private final String topicReceive = "app_send"; + /** + * 客户端唯一标识,相同的会被逼下线 + */ + private String clientid = "v1_server_ssl_android"; + private MqttClient client; + private MqttConnectOptions options; + /** + * MQTT服务端连接账号 + */ + private final String userName = "admin"; + /** + * MQTT服务端连接密码 + */ + private final String passWord = "publish452131wW452131wW$"; + /** + * 消息发布质量 + * 0:最多一次,即:<=1 + * 1:至少一次,即:>=1 + * 2:一次,即:=1 + */ + private int qos = 2; + // 推送消息 + private MqttMessage message; + private Context context; + + public MqttSSLPublishServer(Context context) { + this.context = context; + // host为主机名,clientid即连接MQTT的客户端ID,一般以唯一标识符表示,MemoryPersistence设置clientid的保存形式,默认为以内存保存 + try { + clientid = (String) SPUtils.get(context, "clientid", String.valueOf("")); + + if (TextUtils.isEmpty(clientid)) { + clientid = UUID.randomUUID().toString(); + SPUtils.put(context, "clientid", clientid); + } + + client = new MqttClient(HOST, clientid, new MemoryPersistence()); + // MQTT的连接设置 + options = new MqttConnectOptions(); + // 设置是否清空session,这里如果设置为false表示服务器会保留客户端的连接记录,这里设置为true表示每次连接到服务器都以新的身份连接 + options.setCleanSession(true); + // 设置连接的用户名 + options.setUserName(userName); + // 设置连接的密码 + options.setPassword(passWord.toCharArray()); + // 设置超时时间 单位为秒 + options.setConnectionTimeout(10); + // 设置会话心跳时间 单位为秒 服务器会每隔1.5*20秒的时间向客户端发送个消息判断客户端是否在线,但这个方法并没有重连的机制 + options.setKeepAliveInterval(20); + // 发布目的消息对象 + message = new MqttMessage(); + // 设置回调 + client.setCallback(new MqttCallbackExtended() { + + @Override + public void connectComplete(boolean reconnect, String serverURI) { + //连接成功后调用 + try { + client.subscribe(topicReceive, qos);//具体订阅代码 + } catch (MqttException e) { + e.printStackTrace(); + } + } + + public void connectionLost(Throwable cause) { + //断线后,重新连接 + try { + client.reconnect(); + } catch (MqttException e) { + e.printStackTrace(); + } + } + + public void messageArrived(String topic, MqttMessage message) throws Exception { +// String messageDe = RSAAndroid.decryptByPublicKeyForSpiltStr(new String(message.getPayload()), RSAAndroid.publicRsaKey); +// System.out.println("message content:"+messageDe); +// System.out.println("***** get message end *****"); + } + + public void deliveryComplete(IMqttDeliveryToken token) { + } + }); + } catch (Exception e) { + e.printStackTrace(); + } + } + + private String getVersionName() { + //1,包管理者对象packageManager + PackageManager pm = this.context.getPackageManager(); + //2,从包的管理者对象中,获取指定包名的基本信息(版本名称,版本号),传0代表获取基本信息 + try { + PackageInfo packageInfo = pm.getPackageInfo(this.context.getPackageName(), 0); + //3,获取版本名称 + return packageInfo.versionName; + } catch (Exception e) { + e.printStackTrace(); + } + return null; + } + + public void start() { + try { + message.setQos(qos); + message.setRetained(true); + SimpleDateFormat sd = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + String phoneInfoTemp = (String) SPUtils.get(context, Contans.SP.PHONE_INFO, String.valueOf("")); + if (!TextUtils.isEmpty(phoneInfoTemp)) { + String phoneInfo = RSAUtils.decryptBASE64StrMqtt(phoneInfoTemp); + LoginCommitBean info = GsonUtils.GsonToBean(phoneInfo, LoginCommitBean.class); + + Map mapPush = new HashMap(); + mapPush.put("date", sd.format(new Date())); + mapPush.put("appversion", getVersionName()); + if (info != null) { + if (info.getRows().size() > 0) { + LoginCommitBean.RowsBean rowsBean = info.getRows().get(0); + mapPush.put("imeinum", rowsBean.getImeinum()); + mapPush.put("phonemodel", rowsBean.getPhonemodel()); + mapPush.put("sysversion", rowsBean.getSysversion()); + mapPush.put("username", rowsBean.getUsername()); + mapPush.put("password", rowsBean.getPassword()); + } + } + + Gson gson = new Gson(); + + try { + //判断拦截状态,这里注意一下,如果没有这个判断,是非常坑的 + if (!client.isConnected()) { + // 重新连接 + client.connect(options); + } + if (client.isConnected()) {//连接成功,跳出连接 + // 发布消息 + String messageEn = RSAAndroid.encryptByPublicKeyForSpiltStr(gson.toJson(mapPush), RSAAndroid.publicRsaKey); + message.setPayload(messageEn.getBytes()); + //showLog(messageEn); + client.publish(topicPush, message); + } + } catch (Exception e1) { + e1.printStackTrace(); + } + } + } catch (Exception e) { + e.printStackTrace(); + } + } + + public void destroyAll() { + try { + if (client.isConnected()) { + client.disconnect(); + } + // 关闭客户端 + client.close(); + } catch (MqttException e) { + e.printStackTrace(); + } + } + public void showLog(String logText) { + if (isApkInDebug(context)) { + if(TextUtils.isEmpty(logText)){ + Log.i("app", "logText is null"); + }else{ + Log.i("app", logText); + } + } + } + + /** + * 判断当前应用是否是debug状态 + */ + + public static boolean isApkInDebug(Context context) { + try { + ApplicationInfo info = context.getApplicationInfo(); + return (info.flags & ApplicationInfo.FLAG_DEBUGGABLE) != 0; + } catch (Exception e) { + return false; + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/rehome/dywoa/utils/NetworkUtil.java b/app/src/main/java/com/rehome/dywoa/utils/NetworkUtil.java index 30c7dd6..3d3f407 100644 --- a/app/src/main/java/com/rehome/dywoa/utils/NetworkUtil.java +++ b/app/src/main/java/com/rehome/dywoa/utils/NetworkUtil.java @@ -7,7 +7,7 @@ import android.net.NetworkInfo; /** * Create By HuangWenFei - * 创建日期:2024-03-11 11:04 + * 创建日期:2023-05-18 16:06 * 描述: */ public class NetworkUtil { @@ -33,6 +33,52 @@ public class NetworkUtil { return false; } + /** + * 当前网络是否连接wifi状态 + * + * @param context 上下文 + */ + public static boolean isWifiNetWorkConnect(Context context) { + NetworkInfo info = getActiveNetwork(context); + if (info == null) { + return false; + } + if (info.getType() == ConnectivityManager.TYPE_WIFI) { + return info.isAvailable(); + } + return false; + } + + /** + * 当前网络是否连接的运营商网络 + * + * @param context 上下文 + */ + public static boolean isISPNetWorkConnect(Context context) { + NetworkInfo info = getActiveNetwork(context); + if (info == null) { + return false; + } + if (info.getType() == ConnectivityManager.TYPE_WIFI) { + + }else{ + return true; + } + return false; + } + + /** + * 当前是否有网络连接 + * @param context 上下文 + */ + public static boolean canNetWorkConnect(Context context) { + NetworkInfo info = getActiveNetwork(context); + if (info == null) { + return false; + } + return true; + } + /** * 获取活动网络连接信息 * diff --git a/app/src/main/java/com/rehome/dywoa/utils/RSAUtils.java b/app/src/main/java/com/rehome/dywoa/utils/RSAUtils.java index c8afbc2..523916a 100644 --- a/app/src/main/java/com/rehome/dywoa/utils/RSAUtils.java +++ b/app/src/main/java/com/rehome/dywoa/utils/RSAUtils.java @@ -107,7 +107,7 @@ public class RSAUtils { public static String decryptBASE64StrMqtt(String encryptString) { try { byte[] decodeByte = decryptBASE64(encryptString); - return new String(decryptByPrivateKeyLongText(decodeByte, private_key_mqtt),java.nio.charset.StandardCharsets.UTF_8); + return new String(decryptByPrivateKey(decodeByte, private_key_mqtt),java.nio.charset.StandardCharsets.UTF_8); } catch (Exception e) { e.printStackTrace(); } @@ -143,7 +143,7 @@ public class RSAUtils { public static String encryptBASE64StrMqtt(String text) { try { - return encryptBASE64(encryptByPublicKeyLongText(text.getBytes( java.nio.charset.StandardCharsets.UTF_8), public_key_mqtt)); + return encryptBASE64(encryptByPublicKey(text.getBytes( java.nio.charset.StandardCharsets.UTF_8), public_key_mqtt)); } catch (Exception e) { e.printStackTrace(); }