1. 添加SMS短信收发功能,可以开始增加短信指令了。
authorsnickersun <snickersun@qq.com>
Tue, 11 Feb 2020 11:42:22 +0000 (19:42 +0800)
committersnickersun <snickersun@qq.com>
Tue, 11 Feb 2020 11:42:22 +0000 (19:42 +0800)
2、SOS指令中的AP10改为即时发送,然后再进行电话拨号。

app/src/main/java/com/enqualcomm/support/CoreService.java
app/src/main/java/com/enqualcomm/support/ICSmsManager.java [new file with mode: 0644]
app/src/main/java/com/enqualcomm/support/service/Deliver.java
app/src/main/java/com/enqualcomm/support/service/KeepAlive.java
app/src/main/java/com/enqualcomm/support/utils/DeviceInfoUtil.java
app/version_code.properties

index 825ed15..6c294fc 100644 (file)
@@ -19,6 +19,7 @@ import android.util.Log;
 import android.widget.Toast;\r
 \r
 import com.enqualcomm.support.bean.ICLocation;\r
+import com.enqualcomm.support.utils.DeviceInfoUtil;\r
 import com.enqualcomm.support.utils.ServiceUtil;\r
 import com.ic.jni.ICJniUtils;\r
 import com.enqualcomm.support.Constants;\r
@@ -115,31 +116,9 @@ public class CoreService extends Service {
 \r
     private static boolean is_wifi_network_ok = false;\r
 \r
-\r
+    private static ICSmsManager smsManager=null;\r
     public String getServerAlive(){\r
-        int ppg=ICJniUtils.getPPG();\r
-        SimSignalUtil sim=SimSignalUtil.getInstance(this);\r
-        return new StringBuilder()\r
-                .append(TimeUtil.getSystemTime3())\r
-                .append(SimSignalUtil.hasSimCard(this)?" SIM ":" NoSIM ")\r
-                .append(sim.getNetworkType()==SimSignalUtil.IS_2G?"2G":(sim.getNetworkType()==SimSignalUtil.IS_3G)?"3G":(sim.getNetworkType()==SimSignalUtil.IS_4G?"4G":"unknown"))\r
-                .append(" [").append(runtime.getSignalStrength()+100).append(",Mini:").append(SimSignalUtil.getMinSignalStrength(sim.getNetworkType())).append("]")\r
-                .append("\n Connecttion  ").append(this.connection.isServerConnected())\r
-                .append(" KeepAlive ").append(KeepAlive.isConnected)\r
-                .append("\n ServerConnected is ").append(runtime.isServerProtocolConnected())\r
-                .append(" \n Bat ").append(runtime.getBattery())\r
-                .append(" StepCount ").append(runtime.getTotalStepCount())\r
-                .append( "\n Working Mode ").append(runtime.getLocationInstance().getWorkingMod())\r
-                .append(" \n Location Cycle ").append(runtime.getLocationInstance().getLocation_cycle())\r
-                .append(" \n LocationType ").append(runtime.getLocationInstance().getLocationType())\r
-                .append(" at ").append(runtime.getLocationInstance().getLocationTime())\r
-                .append(" \n PPGTestCycle ").append(runtime.getPpgTestCycle())\r
-                .append("\n PPGStarted ").append(ICJniUtils.isPPGStarted())\r
-                .append(",weared ").append(ICJniUtils.isWeared())\r
-                .append(",ppg ").append(ppg)\r
-                .append(",bph ").append(ICJniUtils.getHighBloodPressure())\r
-                .append(",bpl ").append(ICJniUtils.getLowBloodPressure())\r
-                .toString();\r
+       return DeviceInfoUtil.getDeviceInfo(runtime);\r
     }\r
 \r
     private BroadcastReceiver AtCallbackBroadcastReceiver = new BroadcastReceiver() {\r
@@ -211,7 +190,9 @@ public class CoreService extends Service {
 \r
                     runtime.setAlarmType(false,runtime.getBatteryLow(),true,false);\r
                     //trigger AP10 报警定位\r
-                   CoreService.this.locationClient.triggerSOSLocationProcess();\r
+//                   CoreService.this.locationClient.triggerSOSLocationProcess();\r
+                    connection.send(protocolAPIHelper.genStringMessage("AP10",protocolAPIHelper.AP10(runtime)));\r
+\r
                     //开启紧急定位模式,GPS 优先1分钟一次定位,持续5分钟\r
                    runtime.getLocationInstance().setWorkingMod(CUSTOM_MOD);\r
                    runtime.getLocationInstance().setLocation_cycle(1);\r
@@ -224,7 +205,7 @@ public class CoreService extends Service {
                    setEmegencyLocationSTOPAlarm(5);\r
 \r
                 //5秒后开始拨打电话\r
-                Observable.timer(5000L, TimeUnit.MILLISECONDS).subscribe(new Action1<Long>() {\r
+                Observable.timer(500L, TimeUnit.MILLISECONDS).subscribe(new Action1<Long>() {\r
                     public void call(Long param1Long) {\r
                         trigger_SOS_Call();\r
                     }\r
@@ -493,6 +474,8 @@ public class CoreService extends Service {
         }\r
 \r
 \r
+        smsManager= new ICSmsManager(runtime);\r
+\r
         //保证获取正确的计步数据及其他参数初始化\r
         loadStepCount();\r
         loadSettings();\r
diff --git a/app/src/main/java/com/enqualcomm/support/ICSmsManager.java b/app/src/main/java/com/enqualcomm/support/ICSmsManager.java
new file mode 100644 (file)
index 0000000..fb5a376
--- /dev/null
@@ -0,0 +1,150 @@
+package com.enqualcomm.support;\r
+\r
+import android.app.Activity;\r
+import android.app.PendingIntent;\r
+import android.content.BroadcastReceiver;\r
+import android.content.ContentResolver;\r
+import android.content.Context;\r
+import android.content.Intent;\r
+import android.content.IntentFilter;\r
+import android.database.Cursor;\r
+import android.net.Uri;\r
+import android.os.SystemClock;\r
+import android.telephony.SmsManager;\r
+import android.telephony.SmsMessage;\r
+import android.widget.Toast;\r
+\r
+import com.enqualcomm.support.bean.Runtime;\r
+import com.enqualcomm.support.utils.DeviceInfoUtil;\r
+import com.enqualcomm.support.utils.Logger;\r
+\r
+import java.util.ArrayList;\r
+import java.util.Iterator;\r
+\r
+\r
+public class ICSmsManager {\r
+    private static String mNumber;\r
+    private static long preTimeMillis;\r
+    private Uri SMS_INBOX = Uri.parse("content://sms/inbox");\r
+    private Context mContext = null;\r
+    Runtime runtime;\r
+//    ArrayList<CheckBillInfo> smsInfoList;\r
+    ICSmsManager.SmsReceiver smsReceiver;\r
+//    ArrayList<byte[]> source;\r
+\r
+    public ICSmsManager( Runtime _runtime) {\r
+//        this.source = src;\r
+        this.runtime = _runtime;\r
+        this.mContext = runtime.getContextProxy().context;\r
+        this.smsReceiver = new ICSmsManager.SmsReceiver();\r
+        IntentFilter intentFilter = new IntentFilter();\r
+        intentFilter.addAction("android.provider.Telephony.SMS_RECEIVED");\r
+        intentFilter.setPriority(2147483647);\r
+        this.mContext.registerReceiver(this.smsReceiver, intentFilter);\r
+\r
+\r
+        //处理返回的发送状态\r
+        String SENT_SMS_ACTION = "SENT_SMS_ACTION";\r
+        Intent sentIntent = new Intent(SENT_SMS_ACTION);\r
+        PendingIntent sentPI = PendingIntent.getBroadcast(mContext, 0, sentIntent,\r
+                0);\r
+// register the Broadcast Receivers\r
+        mContext.registerReceiver(new BroadcastReceiver() {\r
+            @Override\r
+            public void onReceive(Context _context, Intent _intent) {\r
+                switch (getResultCode()) {\r
+                    case Activity.RESULT_OK:\r
+                        Toast.makeText(mContext,\r
+                                "短信发送成功", Toast.LENGTH_SHORT)\r
+                                .show();\r
+                        break;\r
+                    case SmsManager.RESULT_ERROR_GENERIC_FAILURE:\r
+                        break;\r
+                    case SmsManager.RESULT_ERROR_RADIO_OFF:\r
+                        break;\r
+                    case SmsManager.RESULT_ERROR_NULL_PDU:\r
+                        break;\r
+                }\r
+            }\r
+        }, new IntentFilter(SENT_SMS_ACTION));\r
+\r
+\r
+        //处理返回的接收状态\r
+        String DELIVERED_SMS_ACTION = "DELIVERED_SMS_ACTION";\r
+// create the deilverIntent parameter\r
+        Intent deliverIntent = new Intent(DELIVERED_SMS_ACTION);\r
+        PendingIntent deliverPI = PendingIntent.getBroadcast(mContext, 0,\r
+                deliverIntent, 0);\r
+        mContext.registerReceiver(new BroadcastReceiver() {\r
+            @Override\r
+            public void onReceive(Context _context, Intent _intent) {\r
+                Toast.makeText(mContext,\r
+                        "收信人已经成功接收", Toast.LENGTH_SHORT)\r
+                        .show();\r
+            }\r
+        }, new IntentFilter(DELIVERED_SMS_ACTION));\r
+\r
+\r
+    }\r
+\r
+    public void sendSMS(String phonenumber, String msg) {\r
+        android.telephony.SmsManager smsManager = android.telephony.SmsManager.getDefault();\r
+        Iterator msgit = smsManager.divideMessage(msg).iterator();\r
+\r
+        while(msgit.hasNext()) {\r
+            String message= (String)msgit.next();\r
+            Logger.i("reply message to "+phonenumber+", "+message);\r
+            smsManager.sendTextMessage(phonenumber, (String)null,message, (PendingIntent)null, (PendingIntent)null);\r
+        }\r
+    }\r
+\r
+    private boolean isAdminNumber(String phoneNumb){\r
+\r
+        return true;\r
+    }\r
+    public void handleSMS_CMD(String phonenumber, String sms){\r
+        if (isAdminNumber(phonenumber)) {\r
+            if (sms.startsWith("GetDeviceInfo")) {\r
+                    sendSMS(phonenumber,DeviceInfoUtil.getDeviceInfo(runtime));\r
+            }\r
+\r
+        }\r
+    }\r
+\r
+    public class SmsReceiver extends BroadcastReceiver {\r
+\r
+        public SmsReceiver() {\r
+        }\r
+\r
+        public void onReceive(Context context, Intent intent) {\r
+            long currenttime = System.currentTimeMillis();\r
+            if (currenttime - ICSmsManager.preTimeMillis > 30000L) {\r
+                ICSmsManager.preTimeMillis = currenttime;\r
+                (new Thread(new Runnable() {\r
+                    public void run() {\r
+                        SystemClock.sleep(3000L);\r
+                        if(intent == null || intent.getAction() == null ) return;\r
+\r
+                         //长短信会被分拆送来,因此可能会有多个PDU。Protocol Description Unit是短信的工业标准。 \r
+                         Object[] pduArray = (Object[])intent.getExtras().get("pdus");\r
+                         Logger.i("pdu number=" + pduArray.length);\r
+                        String message = "";\r
+                         String from = null;\r
+                         for(int i = 0 ; i < pduArray.length; i ++){\r
+                         SmsMessage sms = SmsMessage.createFromPdu((byte[])pduArray[i]);//将PDU转换为SmsMessage格式\r
+                             Logger.i("From : " + sms.getDisplayOriginatingAddress());\r
+                             Logger.i("SMS : " + sms.getDisplayMessageBody());\r
+                                from = sms.getDisplayOriginatingAddress();\r
+                                message += sms.getDisplayMessageBody();\r
+                         }\r
+                        Logger.i("收到" + from + "短信:" + message);\r
+//                         Toast.makeText(context, "收到" + from + "短信:" + message, Toast.LENGTH_LONG).show();\r
+                        handleSMS_CMD(from,message);\r
+                    }\r
+                })).start();\r
+            }\r
+\r
+        }\r
+\r
+    }\r
+}
\ No newline at end of file
index 36627df..a41bcab 100644 (file)
@@ -12,6 +12,7 @@ import android.net.wifi.WifiConfiguration;
 import android.net.wifi.WifiManager;\r
 import android.os.Build;\r
 import android.os.Handler;\r
+import android.os.Message;\r
 import android.os.Parcelable;\r
 import android.os.PowerManager;\r
 import android.os.SystemClock;\r
@@ -98,9 +99,32 @@ public class Deliver extends AbstractConnectionService {
   private boolean wakeLockWifiSet = false;\r
   \r
   private String wifiDataForCm;\r
-  \r
+\r
+\r
   private boolean wifiEnabled;\r
-  \r
+\r
+\r
+  private static Handler mSendMSGHandler=new Handler(new Handler.Callback() {\r
+    @Override\r
+    public boolean handleMessage(Message message) {\r
+\r
+      switch (message.what){\r
+        case 1:\r
+\r
+          new Thread(new Runnable() {\r
+            @Override\r
+            public void run() {\r
+              sendThread();\r
+            }\r
+          }).start();\r
+          break;\r
+        default:\r
+          break;\r
+      }\r
+      return false;\r
+    }\r
+  });\r
+\r
   static  {\r
   \r
   }\r
@@ -127,9 +151,16 @@ public class Deliver extends AbstractConnectionService {
     }\r
     return ret;\r
   }\r
-  public static void triggerSendThread(){\r
+  public static void triggerSendThread() {\r
+\r
+    mSendMSGHandler.sendEmptyMessage(1);\r
+  }\r
+\r
+  public static void sendThread(){\r
     if (mRuntime.getUseQueue()) {\r
-      lock.lock();\r
+      Logger.i("queue locked "+mLock.isLocked());\r
+      if(mLock.isLocked()) return;\r
+      mLock.lock();\r
       try\r
       {\r
         String str;\r
@@ -160,8 +191,8 @@ public class Deliver extends AbstractConnectionService {
         }\r
         Logger.i("send cached cmd: \n"+str);\r
       }finally {\r
-        if(lock!=null && lock.isLocked())\r
-          lock.unlock();\r
+        if(mLock!=null && mLock.isLocked())\r
+          mLock.unlock();\r
       }\r
 \r
     }\r
@@ -399,95 +430,105 @@ public static void sendLocationMSG( String Msg){
     } \r
     alarmManager.set(AlarmManager.ELAPSED_REALTIME_WAKEUP, l + 10000L, pendingIntent);\r
   }\r
-  \r
+\r
   class ConWifiReceiver extends BroadcastReceiver {\r
-    public void onReceive(final Context context, Intent param1Intent) {\r
-      String str = param1Intent.getAction();\r
-      StringBuilder stringBuilder = new StringBuilder();\r
-      stringBuilder.append(" receive action=");\r
-      stringBuilder.append(str);\r
-      stringBuilder.append(" isAppSetWifi=");\r
-      stringBuilder.append(isAppSetWifi);\r
-      Logger.i(stringBuilder.toString());\r
-      if (str.equals("android.net.conn.CONNECTIVITY_CHANGE")) {\r
-        if (isAppSetWifi == 0)\r
-          return; \r
-        if (isAppSetWifi == 1) {\r
-//          Deliver.access$402(0);\r
+    ConWifiReceiver() {\r
+    }\r
+\r
+    public void onReceive(final Context var1, Intent var2) {\r
+      String var3 = var2.getAction();\r
+      StringBuilder var4 = new StringBuilder();\r
+      var4.append(" receive action=");\r
+      var4.append(var3);\r
+      var4.append(" isAppSetWifi=");\r
+      var4.append(Deliver.isAppSetWifi);\r
+      Logger.i(var4.toString());\r
+      if (var3.equals("android.net.conn.CONNECTIVITY_CHANGE")) {\r
+        if (Deliver.isAppSetWifi == 0) {\r
+          return;\r
+        }\r
+\r
+        if (Deliver.isAppSetWifi == 1) {\r
+          Deliver.isAppSetWifi = 0;\r
           if (Deliver.this.delayHandler != null) {\r
             Deliver.this.delayHandler.removeCallbacks(Deliver.this.delayTh);\r
-//            Deliver.access$602(Deliver.this, null);\r
-          } \r
-        } \r
-        WifiManager wifiManager = (WifiManager)context.getSystemService(Context.WIFI_SERVICE);\r
-        if (((ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE)).getNetworkInfo(1).isConnected()) {\r
+            Deliver.this.delayHandler = null;\r
+          }\r
+        }\r
+\r
+        WifiManager var5 = (WifiManager)var1.getSystemService(Context.WIFI_SERVICE);\r
+        if (((ConnectivityManager)var1.getSystemService(Context.CONNECTIVITY_SERVICE)).getNetworkInfo(ConnectivityManager.TYPE_WIFI).isConnected()) {\r
           Logger.i("连接成功");\r
-//          Deliver.access$402(0);\r
+          Deliver.isAppSetWifi = 0;\r
           Deliver.haveSendH42 = true;\r
-          Deliver.this.mConnection.connect(Deliver.this.mRuntime.getSrvIP(), Deliver.this.mRuntime.getPort());\r
+          Deliver.this.mConnection.connect(Deliver.this.mRuntime.getHost(), Deliver.this.mRuntime.getPort());\r
           if (Deliver.this.delayHandler != null) {\r
             Deliver.this.delayHandler.removeCallbacks(Deliver.this.delayTh);\r
-//            Deliver.access$602(Deliver.this, null);\r
+            Deliver.this.delayHandler = null;\r
           }\r
-          context.unregisterReceiver(Deliver.this.mMyWifiReceiver);\r
-//          Deliver.access$502(Deliver.this, null);\r
-//          Deliver.access$202(Deliver.this, false);\r
+\r
+          var1.unregisterReceiver(Deliver.this.mMyWifiReceiver);\r
+          Deliver.this.mMyWifiReceiver = null;\r
+          Deliver.this.wakeLockWifiSet = false;\r
           Deliver.this.releaseOneWakeLock();\r
-          Deliver.WakeLockForGetWifiList(Deliver.this.mRuntime);\r
-          return;\r
-        } \r
-        stringBuilder = new StringBuilder();\r
-        stringBuilder.append("连接失败 222 delayHandler=");\r
-        stringBuilder.append(Deliver.this.delayHandler);\r
-        Logger.i(stringBuilder.toString());\r
-//        Deliver.access$402(2);\r
-        wifiManager.reconnect();\r
-        if (Deliver.this.delayHandler == null) {\r
-          Deliver.this.delayHandler =new Handler();\r
-          Deliver.this.delayTh= new Runnable() {\r
-                public void run() {\r
-                  StringBuilder stringBuilder = new StringBuilder();\r
-                  stringBuilder.append("连接失败 超时 wifiEnabled=");\r
-                  stringBuilder.append(wifiEnabled);\r
-                  Logger.i(stringBuilder.toString());\r
-                  if (isAppSetWifi == 1)\r
-                    return;\r
-//                  Deliver.access$402(0);\r
-                  context.unregisterReceiver(mMyWifiReceiver);\r
-                  mMyWifiReceiver=null;\r
-                  WifiManager wifiManager = (WifiManager)context.getSystemService(Context.WIFI_SERVICE);\r
-                  if (((ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE)).getNetworkInfo(ConnectivityManager.TYPE_WIFI).isConnected()) {\r
+          Deliver.WifiListWakeLock = Deliver.WakeLockForGetWifiList(Deliver.this.mRuntime);\r
+        } else {\r
+          StringBuilder var6 = new StringBuilder();\r
+          var6.append("连接失败 222 delayHandler=");\r
+          var6.append(Deliver.this.delayHandler);\r
+          Logger.i(var6.toString());\r
+          Deliver.isAppSetWifi = 2;\r
+          var5.reconnect();\r
+          if (Deliver.this.delayHandler == null) {\r
+            Deliver.this.delayHandler = new Handler();\r
+            Deliver.this.delayTh = new Runnable() {\r
+              public void run() {\r
+                StringBuilder var1x = new StringBuilder();\r
+                var1x.append("连接失败 超时 wifiEnabled=");\r
+                var1x.append(Deliver.this.wifiEnabled);\r
+                Logger.i(var1x.toString());\r
+                if (Deliver.isAppSetWifi != 1) {\r
+                  Deliver.isAppSetWifi = 0;\r
+                  var1.unregisterReceiver(Deliver.this.mMyWifiReceiver);\r
+                  Deliver.this.mMyWifiReceiver = null;\r
+                  WifiManager var3 = (WifiManager)var1.getSystemService(Context.WIFI_SERVICE);\r
+                  if (((ConnectivityManager)var1.getSystemService(Context.CONNECTIVITY_SERVICE)).getNetworkInfo(ConnectivityManager.TYPE_WIFI).isConnected()) {\r
                     Logger.i("连接成功 1");\r
                     Deliver.haveSendH42 = true;\r
-                    mConnection.connect(mRuntime.getSrvIP(), mRuntime.getPort());\r
-//                    Deliver.access$202(ConWifiReceiver.this.this$0, false);\r
-                    releaseOneWakeLock();\r
-                    Deliver.WakeLockForGetWifiList(mRuntime);\r
+                    Deliver.this.mConnection.connect(Deliver.this.mRuntime.getHost(), Deliver.this.mRuntime.getPort());\r
+                    Deliver.this.wakeLockWifiSet = false;\r
+                    Deliver.this.releaseOneWakeLock();\r
+                    Deliver.WifiListWakeLock = Deliver.WakeLockForGetWifiList(Deliver.this.mRuntime);\r
                   } else {\r
-                    int i = wifiManager.getConnectionInfo().getNetworkId();\r
-                    if (i != -1) {\r
-                      wifiManager.disableNetwork(i);\r
-//                      ServiceUtil.offerQueue(API.H42(ConWifiReceiver.this.this$0.mRuntime, "3"));\r
-//                      Deliver.access$202(ConWifiReceiver.this.this$0, false);\r
-                      releaseOneWakeLock();\r
-                      WakeLockForGetWifiList(mRuntime);\r
+                    int var2 = var3.getConnectionInfo().getNetworkId();\r
+                    if (var2 != -1) {\r
+                      var3.disableNetwork(var2);\r
+//                      ServiceUtil.offerQueue(API.H42(Deliver.this.mRuntime, "3"));\r
+                      Deliver.this.wakeLockWifiSet = false;\r
+                      Deliver.this.releaseOneWakeLock();\r
+                      Deliver.WifiListWakeLock = Deliver.WakeLockForGetWifiList(Deliver.this.mRuntime);\r
                     } else {\r
                       Logger.i("连接失败 2-2");\r
-//                      ServiceUtil.offerQueue(API.H42(ConWifiReceiver.this.this$0.mRuntime, "3"));\r
-//                      Deliver.access$202(ConWifiReceiver.this.this$0, false);\r
-                      releaseOneWakeLock();\r
-                      Deliver.WakeLockForGetWifiList(mRuntime);\r
+//                      ServiceUtil.offerQueue(API.H42(Deliver.this.mRuntime, "3"));\r
+                      Deliver.this.wakeLockWifiSet = false;\r
+                      Deliver.this.releaseOneWakeLock();\r
+                      Deliver.WifiListWakeLock = Deliver.WakeLockForGetWifiList(Deliver.this.mRuntime);\r
+                    }\r
+\r
+                    if (!Deliver.this.wifiEnabled) {\r
+                      var3.setWifiEnabled(false);\r
                     }\r
-                    if (!wifiEnabled)\r
-                      wifiManager.setWifiEnabled(false);\r
                   }\r
-//                  Deliver.access$602(ConWifiReceiver.this.this$0, null);\r
+\r
+                  Deliver.this.delayHandler = null;\r
                 }\r
               }\r
-              ;\r
-          Deliver.this.delayHandler.postDelayed(Deliver.this.delayTh, 30000L);\r
-        } \r
-      } \r
+            };\r
+            Deliver.this.delayHandler.postDelayed(Deliver.this.delayTh, 30000L);\r
+          }\r
+        }\r
+      }\r
+\r
     }\r
   }\r
   \r
index 056b500..c61eb8a 100644 (file)
@@ -208,6 +208,7 @@ public class KeepAlive extends AbstractConnectionService {
       paramRuntime.setServerProtocolConnected(true);\r
       paramRuntime.getContextProxy().sendBroadcast(isConnected);\r
       LauncherCtrl.getInstance(this.mContext).setStatusBarIcon("server_connected", STATUS_BAR_STATE_SERVER_CONNECTED_ON);\r
+//      Deliver.triggerSendThread(); //链接上就尝试清除 buffer中的数据\r
     }\r
     return false;\r
   }\r
index 2655236..a87035a 100644 (file)
@@ -9,6 +9,9 @@ import android.provider.Settings;
 import android.telephony.TelephonyManager;\r
 \r
 import com.enqualcomm.support.bean.StepCount;\r
+import com.enqualcomm.support.bean.Runtime;\r
+import com.enqualcomm.support.service.KeepAlive;\r
+import com.ic.jni.ICJniUtils;\r
 \r
 import java.io.FileInputStream;\r
 import java.util.ArrayList;\r
@@ -138,6 +141,32 @@ public class DeviceInfoUtil {
   }\r
 \r
 \r
+  public static String getDeviceInfo(Runtime runtime){\r
+\r
+    int ppg= ICJniUtils.getPPG();\r
+    SimSignalUtil sim=SimSignalUtil.getInstance(runtime.getContextProxy().context);\r
+    return new StringBuilder()\r
+            .append(TimeUtil.getSystemTime3())\r
+            .append(SimSignalUtil.hasSimCard(runtime.getContextProxy().context)?" SIM ":" NoSIM ")\r
+            .append(sim.getNetworkType()==SimSignalUtil.IS_2G?"2G":(sim.getNetworkType()==SimSignalUtil.IS_3G)?"3G":(sim.getNetworkType()==SimSignalUtil.IS_4G?"4G":"unknown"))\r
+            .append(" [").append(runtime.getSignalStrength()+100).append(",Mini:").append(SimSignalUtil.getMinSignalStrength(sim.getNetworkType())).append("]")\r
+            .append("\n KeepAlive ").append(KeepAlive.isConnected)\r
+            .append("\n ServerConnected is ").append(runtime.isServerProtocolConnected())\r
+            .append(" \n Bat ").append(runtime.getBattery())\r
+            .append(" StepCount ").append(runtime.getTotalStepCount())\r
+            .append( "\n Working Mode ").append(runtime.getLocationInstance().getWorkingMod())\r
+            .append(" \n Location Cycle ").append(runtime.getLocationInstance().getLocation_cycle())\r
+            .append(" \n LocationType ").append(runtime.getLocationInstance().getLocationType())\r
+            .append(" at ").append(runtime.getLocationInstance().getLocationTime())\r
+            .append(" \n PPGTestCycle ").append(runtime.getPpgTestCycle())\r
+            .append("\n PPGStarted ").append(ICJniUtils.isPPGStarted())\r
+            .append(",weared ").append(ICJniUtils.isWeared())\r
+            .append(",ppg ").append(ppg)\r
+            .append(",bph ").append(ICJniUtils.getHighBloodPressure())\r
+            .append(",bpl ").append(ICJniUtils.getLowBloodPressure())\r
+            .toString();\r
+  }\r
+\r
   public static void setLockSimInfo(Context paramContext) {\r
     Settings.System.putInt(paramContext.getContentResolver(), "com.eqc.watch.launcher.SimIsBlocked", 1); }\r
 }\r
index 651ea5b..c9bc6a9 100644 (file)
@@ -1,2 +1,2 @@
-#Sun Feb 09 01:48:12 CST 2020\r
-VERSION_CODE=347\r
+#Mon Feb 10 23:47:07 CST 2020\r
+VERSION_CODE=348\r