From: TrillGates Date: Tue, 30 Mar 2021 13:03:38 +0000 (+0800) Subject: add a property to set up dialog whether show. X-Git-Url: http://git.snicker.com.cn/?a=commitdiff_plain;h=2daea06f86ec442b82ed579b683a626bae1b1dd2;p=protocol_srv.git add a property to set up dialog whether show. --- diff --git a/app/src/main/java/com/enqualcomm/support/ICSmsManager.java b/app/src/main/java/com/enqualcomm/support/ICSmsManager.java index 8190d7a8..68f0687c 100644 --- a/app/src/main/java/com/enqualcomm/support/ICSmsManager.java +++ b/app/src/main/java/com/enqualcomm/support/ICSmsManager.java @@ -17,7 +17,6 @@ import android.telephony.SmsMessage; import android.text.TextUtils; import com.enqualcomm.support.bean.Contact; -import com.enqualcomm.support.bean.EventLooperHandlerThread; import com.enqualcomm.support.bean.ICLocation; import com.enqualcomm.support.bean.Runtime; import com.enqualcomm.support.bean.StringMessage; @@ -39,19 +38,17 @@ import com.enqualcomm.support.utils.TemperatureUtil; import com.enqualcomm.support.utils.TimeUtil; import com.enqualcomm.support.utils.Util; import com.enqualcomm.support.utils.VibrateUtil; -import com.enqualcomm.support.utils.ftpUtils; import com.ic.protocols.protocolAPIHelper; +import com.ic.view.msg.MsgMustReadDialog; import java.io.File; -import java.net.MalformedURLException; -import java.net.URL; import java.util.ArrayList; import java.util.Iterator; +import java.util.List; import chestnut.utils.PhoneUtils; import static android.content.Intent.FLAG_ACTIVITY_NEW_TASK; -import static com.enqualcomm.support.Config.upload_logs_via_ftp; import static com.enqualcomm.support.Constants.ACTION_SMSCMD; import static com.enqualcomm.support.Constants.ACTION_SMSCMD_Reply; import static com.enqualcomm.support.Constants.ACTION_SMSCMD_TEST; @@ -172,38 +169,45 @@ public class ICSmsManager extends BroadcastReceiver { String from = param.getString("SMSFrom"); String smsmessage = param.getString("SMSData"); long currenttime = System.currentTimeMillis(); -// if (currenttime - ICSmsManager.preTimeMillis > 30000L) { ICSmsManager.preTimeMillis = currenttime; (new Thread(new Runnable() { public void run() { SystemClock.sleep(3000L); ICLogger.i("收到" + from + "短信:" + smsmessage); -// Toast.makeText(context, "收到" + from + "短信:" + smsmessage, Toast.LENGTH_LONG).show(); - if (handleSMS_CMD(from, smsmessage) == false) { + //以下是处理指令的 + //判断是否要弹窗,强制读取 + String forceReadMsg = Util.getSystemProperties("persist.sys.forcereadmsg"); + ICLogger.d("forceReadMsg == > " + forceReadMsg); + if (!handleSMS_CMD(from, smsmessage)) { //说明不是sms命令,提示短信接收。 ContextProxy.sendMsgBroadcast(mContext, smsmessage, 1); + } else if (!TextUtils.isEmpty(forceReadMsg)) { + MsgMustReadDialog instance = MsgMustReadDialog.getInstance(); + instance.showMsgDialog(); + List list = new ArrayList<>(); + list.add(smsmessage); + instance.addData(list); } } })).start(); -// } } } break; case 0: sendSMS(cell_number_to_reply, "Upload Failed!"); - cell_number_to_reply=""; + cell_number_to_reply = ""; if (needshowToast) { Util.ShowToast(runtime, "Upload cmd Failed!"); - needshowToast=false; + needshowToast = false; } break; case 1: sendSMS(cell_number_to_reply, "Upload success!"); - cell_number_to_reply=""; + cell_number_to_reply = ""; if (needshowToast) { Util.ShowToast(runtime, "Upload cmd success!"); - needshowToast=false; + needshowToast = false; } break; } @@ -323,7 +327,7 @@ public class ICSmsManager extends BroadcastReceiver { String apn = apnvalues[3]; String user = ""; String password = ""; - if (APNUtil.addVPN(apnName, apn,mcc, mnc, user, password, mContext) == true) { + if (APNUtil.addVPN(apnName, apn, mcc, mnc, user, password, mContext) == true) { sendSMS(phonenumber, "apn add success!"); } else { sendSMS(phonenumber, "apn add failed!"); @@ -335,7 +339,7 @@ public class ICSmsManager extends BroadcastReceiver { String apn = apnvalues[3]; String user = apnvalues[4]; String password = apnvalues[5]; - if (APNUtil.addVPN( apnName, apn,mcc, mnc, user, password, mContext) == true) { + if (APNUtil.addVPN(apnName, apn, mcc, mnc, user, password, mContext) == true) { sendSMS(phonenumber, "apn add success!"); } else { sendSMS(phonenumber, "apn add failed!"); @@ -346,8 +350,8 @@ public class ICSmsManager extends BroadcastReceiver { String apnstr = APNUtil.getCurrentAPN(mContext); sendSMS(phonenumber, apnstr); } else if (apnvalues[0].equals("reset")) { - boolean apnret=APNUtil.resetAPN(mContext); - sendSMS(phonenumber, "Reset APN to default "+apnret); + boolean apnret = APNUtil.resetAPN(mContext); + sendSMS(phonenumber, "Reset APN to default " + apnret); } else { sendSMS(phonenumber, "apn cmd format error!"); } @@ -1072,12 +1076,7 @@ public class ICSmsManager extends BroadcastReceiver { } else if (sms.startsWith(ENCRYPED_HEADER + "#monitor#")) { - mHandler.post(new Runnable() { - @Override - public void run() { - CoreService.getInstance().DevliverStringMessage("StartMonitor", "10"); - } - }); + mHandler.post(() -> CoreService.getInstance().DevliverStringMessage("StartMonitor", "10")); /*** @@ -1087,11 +1086,11 @@ public class ICSmsManager extends BroadcastReceiver { */ } else if (sms.startsWith(ENCRYPED_HEADER + "#testcmd#=")) { - String tmp[] = sms.split("="); - if (tmp.length == 2) { - String cmd = tmp[1]; - handle_test_cmd(cmd,""); - } + String tmp[] = sms.split("="); + if (tmp.length == 2) { + String cmd = tmp[1]; + handle_test_cmd(cmd, ""); + } } else { return false; } @@ -1223,15 +1222,15 @@ public class ICSmsManager extends BroadcastReceiver { } - }else if (cmd.startsWith("BPTE,")) { + } else if (cmd.startsWith("BPTE,")) { String list[] = cmd.split(","); if (list.length == 2) { - int freq=0; - try{ - freq=Integer.parseInt(list[1]); - }catch (Exception e){ - freq=0; + int freq = 0; + try { + freq = Integer.parseInt(list[1]); + } catch (Exception e) { + freq = 0; } ICLogger.i("收到短信指令:测量体温 " + freq + "分钟一次。"); Config.setTemperatureTestCycle(runtime, freq * 60); @@ -1240,9 +1239,9 @@ public class ICSmsManager extends BroadcastReceiver { TemperatureUtil.getInstance().doTempTestInThread(FROM_SERVER); } - }else if (cmd.startsWith("BPXL")) { + } else if (cmd.startsWith("BPXL")) { - ICLogger.i("收到短信指令:测量心率。"); + ICLogger.i("收到短信指令:测量心率。"); if (CoreService.getInstance().getRuntime().check_stat_do_ppg_test()) HeartRateManager.getInstance().triggerPPGTest(FROM_SERVER); diff --git a/app/src/main/java/com/ic/protocols/protocol_ic.java b/app/src/main/java/com/ic/protocols/protocol_ic.java index ed1bce1c..1e3e65fa 100644 --- a/app/src/main/java/com/ic/protocols/protocol_ic.java +++ b/app/src/main/java/com/ic/protocols/protocol_ic.java @@ -7,6 +7,7 @@ import android.net.Uri; import android.os.Environment; import android.os.Handler; import android.os.HandlerThread; +import android.text.TextUtils; import com.enqualcomm.support.Config; import com.enqualcomm.support.Constants; @@ -37,6 +38,7 @@ import java.io.FileOutputStream; import java.util.ArrayList; import java.util.Date; import java.util.HashMap; +import java.util.List; import java.util.Locale; import static com.enqualcomm.support.Constants.DIALOG_ACTION; @@ -1263,13 +1265,15 @@ public class protocol_ic { // 080835 :指令流水号 // XXXXXXXXXXXX : 表示文字内容GB2312编码 - + ICLogger.d("cmd == > " + cmd); + //这里的切割,如查是云图的后台,会有问题,如果文本内容里有,那么就会切割出错了。所以需要后台去解决这个问题。 String[] cmdlist = cmd.split(","); + ICLogger.d("cmdlist length == > " + cmdlist); if (cmdlist.length == 4) { String cmdindex = cmdlist[2]; String txtmsg = cmdlist[3]; StringBuilder sb = new StringBuilder(); - runtime.PushtxtMsg_srv_index = cmdindex;//给回复AP94用 + Runtime.PushtxtMsg_srv_index = cmdindex;//给回复AP94用 sb.append(cmdindex).append(CMDSPLIT).append(TimeUtil.getSystemTimeyyyyMMddHHmmss()).append(CMDSPLIT).append(txtmsg); if (Config.custom_name.equals("VitracK")) { @@ -1286,13 +1290,18 @@ public class protocol_ic { runtime.getContextProxy().sendMsgBroadcast(txtmsg, 3);//msgType 3需要回复,0不需要回复 } else { //判断产品类型,如果是S123的,那么就不发广播了 - //加一个 - ICLogger.d("custom_name == > " + Config.custom_name); - if ("VitracK".equals(Config.custom_name)) { - MsgMustReadDialog msgMustReadDialog = new MsgMustReadDialog(); - msgMustReadDialog.showMsgDialog(); + //读取一个变量值,判断是否弹窗 + String forceReadMsg = Util.getSystemProperties("persist.sys.forcereadmsg"); + ICLogger.d("forceReadMsg == > " + forceReadMsg); + if (!TextUtils.isEmpty(forceReadMsg)) { + MsgMustReadDialog instance = MsgMustReadDialog.getInstance(); + instance.showMsgDialog(); + List list = new ArrayList<>(); + list.add(txtmsg); + instance.addData(list); + } else { + runtime.getContextProxy().sendMsgBroadcast(txtmsg, 0);//msgType 3需要回复,0不需要回复 } - //runtime.getContextProxy().sendMsgBroadcast(txtmsg, 0);//msgType 3需要回复,0不需要回复 } //保存到数据库里 runtime.getContextProxy().saveMstToSMSDB(txtmsg); diff --git a/app/src/main/java/com/ic/view/msg/MessageAdapter.java b/app/src/main/java/com/ic/view/msg/MessageAdapter.java index 92f55e0c..09bc4a0f 100644 --- a/app/src/main/java/com/ic/view/msg/MessageAdapter.java +++ b/app/src/main/java/com/ic/view/msg/MessageAdapter.java @@ -6,6 +6,7 @@ import android.view.ViewGroup; import android.widget.TextView; import com.enqualcomm.support.R; +import com.enqualcomm.support.utils.ICLogger; import java.util.ArrayList; import java.util.List; @@ -13,7 +14,7 @@ import java.util.List; public class MessageAdapter extends PagerAdapter { - private List msgData = new ArrayList<>(); + private final List msgData = new ArrayList<>(); @Override public Object instantiateItem(ViewGroup container, int position) { @@ -23,6 +24,8 @@ public class MessageAdapter extends PagerAdapter { item = View.inflate(container.getContext(), R.layout.msg_item_end_layout, null); item.findViewById(R.id.end_page_btn).setOnClickListener(v -> { if (mListener != null) { + //清空数据 + msgData.clear(); mListener.onEndClick(); } }); @@ -56,13 +59,21 @@ public class MessageAdapter extends PagerAdapter { return view == object; } - public void setData(List data) { + public void updateData(List data) { + //更新UI数据 - msgData.clear(); msgData.addAll(data); + for (String datum : msgData) { + ICLogger.d(" data == > " + datum); + } notifyDataSetChanged(); } + @Override + public int getItemPosition(Object object) { + return POSITION_NONE; + } + private OnClickListener mListener = null; diff --git a/app/src/main/java/com/ic/view/msg/MsgMustReadDialog.java b/app/src/main/java/com/ic/view/msg/MsgMustReadDialog.java index cdf87f25..7b7ea828 100644 --- a/app/src/main/java/com/ic/view/msg/MsgMustReadDialog.java +++ b/app/src/main/java/com/ic/view/msg/MsgMustReadDialog.java @@ -8,8 +8,8 @@ import android.view.WindowManager; import com.enqualcomm.support.ICApplication; import com.enqualcomm.support.R; +import com.enqualcomm.support.utils.ICLogger; -import java.util.ArrayList; import java.util.List; /** @@ -24,12 +24,32 @@ public class MsgMustReadDialog { private MessageAdapter messageAdapter; private ViewPager msgPage; + private MsgMustReadDialog() { + + } + + private static MsgMustReadDialog sInstance; + + public static MsgMustReadDialog getInstance() { + if (sInstance == null) { + sInstance = new MsgMustReadDialog(); + } + return sInstance; + } + + private boolean isShow = false; + public void showMsgDialog() { + if (isShow) { + return; + } + isShow = true; Context context = ICApplication.sContext; windowManager = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE); //设置属性 WindowManager.LayoutParams layoutParams = new WindowManager.LayoutParams(); layoutParams.type = WindowManager.LayoutParams.TYPE_SYSTEM_ALERT; + //这个是针对S123的屏幕,如果要适配其他,可以动态获取屏幕宽度,高度,再以百分比的形式计算即可。 layoutParams.height = 180; layoutParams.width = 180; layoutParams.packageName = context.getPackageName(); @@ -39,21 +59,25 @@ public class MsgMustReadDialog { //设置适配器 initView(view); //准备数据 - initData(); //添加到Window里 windowManager.addView(view, layoutParams); } - private void initData() { - List data = new ArrayList<>(); - data.add("这是第一条信息..."); - data.add("这是第二条信息...很长,长到我要写很多废话,你觉得呢!快来吧,收到这个短信就回家吃饭去吧!相信你是最胖的哇!"); - data.add("这是最后一条消息了,看完这条消息就可以按下一页去结束这个dialog了。"); - messageAdapter.setData(data); + public void addData(List data) { + ICLogger.d("add data.."); +// List data = new ArrayList<>(); +// data.add("这是第一条信息..."); +// data.add("这是第二条信息...很长,长到我要写很多废话,你觉得呢!快来吧,收到这个短信就回家吃饭去吧!相信你是最胖的哇!"); +// data.add("这是最后一条消息了,看完这条消息就可以按下一页去结束这个dialog了。"); + messageAdapter.updateData(data); + //通过观察者的方式,去观察数据库 } + private int pageLimit = 10; + private void initView(final View view) { msgPage = (ViewPager) view.findViewById(R.id.msg_pager); + msgPage.setOffscreenPageLimit(pageLimit); //设置适配器 messageAdapter = new MessageAdapter(); msgPage.setAdapter(messageAdapter); @@ -69,6 +93,7 @@ public class MsgMustReadDialog { @Override public void onEndClick() { windowManager.removeView(view); + isShow = false; } }); } diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index d33199b1..1b1d45e8 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -149,8 +149,7 @@ 意大利 法语 德语 - - + Untitled