add a property to set up dialog whether show.
authorTrillGates <williamtrillgates@gmail.com>
Tue, 30 Mar 2021 13:03:38 +0000 (21:03 +0800)
committerTrillGates <williamtrillgates@gmail.com>
Tue, 30 Mar 2021 13:03:38 +0000 (21:03 +0800)
app/src/main/java/com/enqualcomm/support/ICSmsManager.java
app/src/main/java/com/ic/protocols/protocol_ic.java
app/src/main/java/com/ic/view/msg/MessageAdapter.java
app/src/main/java/com/ic/view/msg/MsgMustReadDialog.java
app/src/main/res/values/strings.xml

index 8190d7a..68f0687 100644 (file)
@@ -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<String> 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);
 
index ed1bce1..1e3e65f 100644 (file)
@@ -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<String> 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);
index 92f55e0..09bc4a0 100644 (file)
@@ -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<String> msgData = new ArrayList<>();
+    private final List<String> 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<String> data) {
+    public void updateData(List<String> 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;
 
 
index cdf87f2..7b7ea82 100644 (file)
@@ -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<String> data = new ArrayList<>();
-        data.add("这是第一条信息...");
-        data.add("这是第二条信息...很长,长到我要写很多废话,你觉得呢!快来吧,收到这个短信就回家吃饭去吧!相信你是最胖的哇!");
-        data.add("这是最后一条消息了,看完这条消息就可以按下一页去结束这个dialog了。");
-        messageAdapter.setData(data);
+    public void addData(List<String> data) {
+        ICLogger.d("add data..");
+//        List<String> 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;
             }
         });
     }
index d33199b..1b1d45e 100644 (file)
     <string name="it">意大利</string>
     <string name="fr">法语</string>
     <string name="de">德语</string>
-
-
+    
     <string name="untitled_apn">Untitled</string>
     <!-- APN error dialog title -->
     <string name="error_title"></string>