release 425
authorsnickersun <scy@incartech.cn>
Wed, 24 Jun 2020 14:43:42 +0000 (22:43 +0800)
committersnickersun <scy@incartech.cn>
Wed, 24 Jun 2020 14:43:42 +0000 (22:43 +0800)
1、给C43的项目通过配置 去掉 各种消息弹出窗口提示
2、添加查找提示窗口
3、添加温度设置和上报协议,但是还没有加好timer
4、添加温度检测接口,以及校准数据支持,目前只有deviceinfo和ui的窗口中有用到。

20 files changed:
app/app.iml
app/release/ICSer_V423_2006172332_release.apk [deleted file]
app/release/ICSer_V425_2006242237_release.apk [new file with mode: 0644]
app/src/main/AndroidManifest.xml
app/src/main/assets/Campus_Life.ogg [new file with mode: 0644]
app/src/main/java/com/enqualcomm/support/Config.java
app/src/main/java/com/enqualcomm/support/Constants.java
app/src/main/java/com/enqualcomm/support/CoreService.java
app/src/main/java/com/enqualcomm/support/bean/Runtime.java
app/src/main/java/com/enqualcomm/support/service/Deliver.java
app/src/main/java/com/enqualcomm/support/utils/ContextProxy.java
app/src/main/java/com/enqualcomm/support/utils/DeviceInfoUtil.java
app/src/main/java/com/enqualcomm/support/utils/ICHttpUtil.java
app/src/main/java/com/enqualcomm/support/utils/ProcessReceiver.java
app/src/main/java/com/enqualcomm/support/utils/RxSocket.java
app/src/main/java/com/ic/jni/ICJniUtils.java
app/src/main/java/com/ic/protocols/protocol_beehome.java
app/src/main/res/values/strings.xml
app/version_code.properties
dNSCache/src/main/java/com/sina/util/dnscache/log/FileUtil.java

index 96972aa..23bf84d 100644 (file)
     <orderEntry type="library" name="Gradle: com.kymjs.rxvolley:rxvolley:1.1.3@aar" level="project"/>\r
     <orderEntry type="library" name="Gradle: io.reactivex:rxandroid:1.1.0@aar" level="project"/>\r
     <orderEntry type="module" module-name="dNSCache"/>\r
+    <orderEntry type="module" module-name="dNSCache"/>\r
     <orderEntry type="jdk" jdkName="Android API 25 Platform" jdkType="Android SDK"/>\r
   </component>\r
 </module>\r
diff --git a/app/release/ICSer_V423_2006172332_release.apk b/app/release/ICSer_V423_2006172332_release.apk
deleted file mode 100644 (file)
index 0f640f3..0000000
Binary files a/app/release/ICSer_V423_2006172332_release.apk and /dev/null differ
diff --git a/app/release/ICSer_V425_2006242237_release.apk b/app/release/ICSer_V425_2006242237_release.apk
new file mode 100644 (file)
index 0000000..952b93e
Binary files /dev/null and b/app/release/ICSer_V425_2006242237_release.apk differ
index d262251..b02434e 100644 (file)
                 <action android:name="com.enqualcomm.support.startsrv" />
                 <action android:name="com.enqualcomm.support.ACTION_ALARM" />
                 <action android:name="com.enqualcomm.support.HEART_ALARM" />
+                <action android:name="com.enqualcomm.support.ANTI_ALARM" />
+                <action android:name="com.enqualcomm.support.TEMP_ALARM" />
             </intent-filter>
         </service>
         <service android:name=".CoreService$InnerService" />
diff --git a/app/src/main/assets/Campus_Life.ogg b/app/src/main/assets/Campus_Life.ogg
new file mode 100644 (file)
index 0000000..937fb3e
Binary files /dev/null and b/app/src/main/assets/Campus_Life.ogg differ
index d5b6ef5..54bd0e9 100644 (file)
@@ -10,10 +10,12 @@ import com.enqualcomm.support.utils.ICLogger;
 import com.enqualcomm.support.utils.SharPreferenceUtil;\r
 import com.enqualcomm.support.utils.TimeUtil;\r
 import com.enqualcomm.support.utils.Util;\r
+import com.sina.util.dnscache.log.FileUtil;\r
 \r
 import org.json.JSONException;\r
 import org.json.JSONStringer;\r
 \r
+import java.io.File;\r
 import java.util.concurrent.TimeUnit;\r
 \r
 import static com.enqualcomm.support.utils.Util.getSystemProperties;\r
@@ -45,6 +47,12 @@ public class Config {
   public static final int GPSLocationTimeoutInSeconds=50;\r
   public static final int WiFiLocationTimeoutInSeconds=12;\r
 \r
+  public static String c43_branch_name="none";\r
+\r
+  public static boolean noSMSNotifyDialog=false;\r
+  public static boolean noPushTxtNotifyDialog=false;\r
+  public static boolean noVoiceNotifyDialog=false;\r
+\r
   static  {\r
   \r
   }\r
@@ -181,7 +189,22 @@ public class Config {
   }\r
 \r
 \r
+  public static double getTempAdjustValue(){\r
 \r
+    String tmpstr=FileUtil.readFileLine(new File("/productinfo/temp_adjust_37.txt"));\r
+\r
+    double tmp=0.0f;\r
+\r
+    if (tmpstr==null || tmpstr.isEmpty())\r
+    {\r
+      tmpstr="0.0";\r
+    }\r
+    tmp=Double.valueOf(tmpstr);\r
+\r
+    ICLogger.i("get Temperature Adjust Value from /productinfo/temp_adjust_37.txt , value="+tmpstr);\r
+    return tmp;\r
+\r
+  }\r
 \r
 \r
   public static void setAlarmCycle(Context context, int cycle){\r
@@ -286,7 +309,7 @@ public class Config {
 \r
 \r
   public static int getHeartBeatCycle(Context context){\r
-    return SharPreferenceUtil.getPrefInt(context,KeyHeartBeatCycle,6);\r
+    return SharPreferenceUtil.getPrefInt(context,KeyHeartBeatCycle,3);\r
   }\r
 \r
   public static void setHeartBeatCycle(Context context,int cycle){\r
@@ -349,6 +372,15 @@ public class Config {
       ret=true;\r
 \r
     do_broadCast_message_no_indication = ret;\r
+\r
+    c43_branch_name=Util.getSystemProperties("persist.sys.c43.branch");\r
+\r
+    if ((c43_branch_name.equals("l03")) ||(c43_branch_name.equals("l05"))){\r
+        noPushTxtNotifyDialog=true;\r
+        noSMSNotifyDialog=true;\r
+        noVoiceNotifyDialog=true;\r
+    }\r
+\r
   }\r
   public static boolean isUsingCustomServer=false;\r
 \r
index 55278d5..c643df9 100644 (file)
@@ -124,9 +124,11 @@ public interface Constants {
   public static final int EXIT_SILENT_MODE = 213;\r
   \r
   public static final String FLAG = "flag";\r
-  \r
+\r
+  public static final String ANTI_ALARM = "com.enqualcomm.support.ANTI_ALARM";\r
+  public static final String TEMP_ALARM = "com.enqualcomm.support.TEMP_ALARM";\r
   public static final String HEART_ALARM = "com.enqualcomm.support.HEART_ALARM";\r
-  \r
+\r
   public static final int IDLE_MODE_CHANGED = 102;\r
   \r
   public static final int INIT_SERVER_OK = 216;\r
index 2782e93..be622d8 100644 (file)
@@ -67,10 +67,12 @@ import static com.enqualcomm.support.Constants.ACTION_LOCAL_SOS_ACTION;
 import static com.enqualcomm.support.Constants.ACTION_LOCATION_ALARM;\r
 import static com.enqualcomm.support.Constants.ACTION_SEND_EMEGENCY_LOCATION_START;\r
 import static com.enqualcomm.support.Constants.ACTION_SEND_EMEGENCY_LOCATION_STOP;\r
+import static com.enqualcomm.support.Constants.ANTI_ALARM;\r
 import static com.enqualcomm.support.Constants.HEART_ALARM;\r
 import static com.enqualcomm.support.Constants.KEY_SAVE_STEP_COUNT;\r
 import static com.enqualcomm.support.Constants.KEY_STEP_COUNT;\r
 import static com.enqualcomm.support.Constants.STEP_COUNT_ALARM_ACTION;\r
+import static com.enqualcomm.support.Constants.TEMP_ALARM;\r
 import static com.enqualcomm.support.bean.ICLocation.*;\r
 \r
 \r
@@ -511,6 +513,7 @@ public class CoreService extends Service {
             resetStepCount();\r
         }\r
 \r
+        Config.setHeartBeatCycle(this,3);\r
         //初始化ServerHeartBeat Cycle\r
         Config.loadHearBeatSetting(runtime);\r
         //初始化PPG,LocationMod,LocationCycle\r
@@ -519,9 +522,14 @@ public class CoreService extends Service {
         Config.loadCustomServerAddr(this);\r
         Config.loadServerSettings(runtime);\r
 \r
+        //初始化消息相关配置\r
         Config.LoadMessageConfigs();\r
 \r
 \r
+        //初始化温度测试相关参数\r
+        runtime.temperature_adjustValue=Config.getTempAdjustValue();\r
+\r
+\r
         this.connectionServiceChain.processAttach(this.connection, this.runtime);\r
         this.invokeHandlerServiceChain.processAttach(this.connection, this.runtime);\r
 //        setAlarm(alarmCycle);\r
@@ -729,6 +737,32 @@ public class CoreService extends Service {
                 is_allowed_in_sleep_mode = 1;\r
                 setWakeAlarm();\r
                 return Service.START_STICKY;\r
+            } else if (ANTI_ALARM.equals(paramIntent.getAction())) {\r
+\r
+                if (this.mKeepAlive != null) {\r
+\r
+                    if (connection.isServerConnected() && runtime.isServerProtocolConnected()) {\r
+                        //测试是否佩戴\r
+\r
+                    }\r
+                    setAntiAlarm();\r
+                    if (Config.LOG_TOFILE)\r
+                        ICLogger.logToFile("alarmCycle", "ANTI_ALARM alarmCycle  ");\r
+                    return Service.START_STICKY;\r
+                }\r
+            } else if (TEMP_ALARM.equals(paramIntent.getAction())) {\r
+\r
+                if (this.mKeepAlive != null) {\r
+\r
+                    if (connection.isServerConnected() && runtime.isServerProtocolConnected()) {\r
+                        //测试温度并上报\r
+\r
+                    }\r
+                    setTempAlarm();\r
+                    if (Config.LOG_TOFILE)\r
+                        ICLogger.logToFile("alarmCycle", "TEMP_ALARM alarmCycle  ");\r
+                    return Service.START_STICKY;\r
+                }\r
             } else if (HEART_ALARM.equals(paramIntent.getAction())) {\r
                 if (this.mKeepAlive != null) {\r
 \r
@@ -843,7 +877,34 @@ public class CoreService extends Service {
 \r
 //        AlarmHelper.setRealTimeAlarm(runtime.getContextProxy().context,1, HEART_ALARM);\r
     }\r
+    public void setAntiAlarm(){\r
+//        int mod=runtime.getLocationInstance().getWorkingMod();\r
+        StringBuilder sb=new StringBuilder();\r
+        int cycle=runtime.anti_test_cycle;\r
+\r
+        //心跳指令默认设置为3分钟\r
+        AlarmHelper.setRealTimeAlarm(runtime.getContextProxy().context,cycle, ANTI_ALARM);\r
+        sb.append(" setHeartAlarm  "+ANTI_ALARM+", cycle "+cycle);\r
+//        locationClient.triggerLocationProcess();\r
+        ICLogger.i(sb.toString());\r
+        FileOutputUtil.fileOutput(runtime.getCacheDir(),"alarmCycle",sb.toString());\r
 \r
+//        AlarmHelper.setRealTimeAlarm(runtime.getContextProxy().context,1, HEART_ALARM);\r
+    }\r
+    public void setTempAlarm(){\r
+//        int mod=runtime.getLocationInstance().getWorkingMod();\r
+        StringBuilder sb=new StringBuilder();\r
+        int cycle=runtime.temp_test_Cycle;\r
+\r
+        //心跳指令默认设置为3分钟\r
+        AlarmHelper.setRealTimeAlarm(runtime.getContextProxy().context,cycle, TEMP_ALARM);\r
+        sb.append(" setHeartAlarm  "+TEMP_ALARM+", cycle "+cycle);\r
+//        locationClient.triggerLocationProcess();\r
+        ICLogger.i(sb.toString());\r
+        FileOutputUtil.fileOutput(runtime.getCacheDir(),"alarmCycle",sb.toString());\r
+\r
+//        AlarmHelper.setRealTimeAlarm(runtime.getContextProxy().context,1, HEART_ALARM);\r
+    }\r
     public void setUpLocationDataAlarm(long paramLong) {\r
         AlarmManager alarmManager = (AlarmManager)getSystemService(ALARM_SERVICE);\r
         Intent intent = new Intent(this, CoreService.class);\r
index 14844a3..b9ff384 100644 (file)
@@ -18,7 +18,12 @@ import java.util.Date;
 import java.util.Locale;\r
 \r
 public class Runtime {\r
-  public int SignalStrength;\r
+\r
+    public int temp_test_Cycle=30;\r
+    public int anti_test_cycle=30;\r
+\r
+ public int SignalStrength;\r
+\r
   \r
   private String battery="000";\r
 \r
@@ -423,19 +428,6 @@ public class Runtime {
     return gpsp;\r
   }\r
 \r
-\r
-  public String HardwareInfo() {\r
-    return "SC9820E C41 V1.0";\r
-  }\r
-\r
-  public String BuildVersion() {\r
-    return "C41-GW-V0.0.1";\r
-  }\r
-\r
-\r
-\r
-  /*    AP03 心跳包     */\r
-\r
  //暂时没有实现此功能\r
   public String getGPSLocationStarNums() {\r
     return "000";\r
@@ -463,6 +455,8 @@ public class Runtime {
 \r
 \r
 \r
+  public double temperature_adjustValue=0.0f;\r
+\r
   public boolean isGPSFixed(){\r
     return (gpsp.getLocationStat() == ICLocation.LOCATION_STAT.LOCATION_FIXED);\r
   }\r
@@ -545,7 +539,8 @@ public class Runtime {
     }\r
     return sb.toString();\r
   }\r
-  /*  AP01 定位 end       */\r
+\r
+\r
 \r
 }\r
 \r
index 8439787..6a06553 100644 (file)
@@ -376,31 +376,48 @@ public static void sendLocationMSG( String Msg){
           Contact param2Contact = new Contact(CATEGORY_GROUP, (mRuntime.getContextProxy()).context.getResources().getString(R.string.all_group), Contact.GROUP_ALL);\r
           int i = mRuntime.getContextProxy().getTelephonyManager().getCallState();\r
           if (!mRuntime.getBatteryLow() && 1 != i && 2 != i) {\r
-            Intent intent = new Intent();\r
-\r
             if (Config.do_broadCast_message_no_indication)\r
             {\r
 \r
               ICLogger.d(Constants.ACTION_MESSAGE_RECEIVED+" "+paramStringMessage.isFromCache());\r
                 //广播 voice消息\r
-                intent = new Intent();\r
+              Intent intent = new Intent();\r
                 intent.setAction(Constants.ACTION_MESSAGE_RECEIVED);\r
                 intent.putExtra(Constants.KEY_MESSAGE_TYPE,"voice");\r
                 intent.putExtra(Constants.KEY_MESSAGE_FROM,"广播消息");\r
                 intent.putExtra(Constants.KEY_MESSAGE_URL,paramStringMessage.isFromCache());\r
 \r
              //   playVoice(context,paramStringMessage.isFromCache());\r
+                context.sendBroadcast(intent);\r
+            }\r
+\r
+            if (Config.noVoiceNotifyDialog==false) {\r
 \r
-            }else {\r
+                Intent intent = new Intent();\r
                 //显示提示窗口\r
                 intent.setAction(DIALOG_ACTION);\r
                 intent.putExtra("contact", (Parcelable) param2Contact);\r
+                context.sendBroadcast(intent);\r
             }\r
-            context.sendBroadcast(intent);\r
+\r
           }\r
         }\r
       });\r
     return true;\r
+  }else if ("findDev".equals(paramStringMessage.cmd())) {\r
+      Observable.timer(500L, TimeUnit.MILLISECONDS).subscribe(new Action1<Long>() {\r
+        public void call(Long param1Long) {\r
+          final Context context = (Deliver.this.mRuntime.getContextProxy()).context;\r
+\r
+              Intent intent = new Intent();\r
+              ICLogger.d(Constants.ACTION_MESSAGE_RECEIVED+" "+paramStringMessage.isFromCache());\r
+              //显示提示窗口\r
+              intent.setAction(DIALOG_ACTION);\r
+              intent.putExtra("findDev", "Find Device");\r
+              context.sendBroadcast(intent);\r
+        }\r
+      });\r
+\r
   }\r
 \r
 \r
index 3169d28..c05eba5 100644 (file)
@@ -17,6 +17,7 @@ import android.telephony.TelephonyManager;
 import android.util.Log;\r
 \r
 \r
+import com.enqualcomm.support.Config;\r
 import com.enqualcomm.support.ICContentProvider;\r
 import com.enqualcomm.support.bean.Alarm;\r
 import com.enqualcomm.support.bean.NoticeContent;\r
@@ -336,19 +337,23 @@ public class ContextProxy {
     if (msgType==0){\r
       Observable.timer(500L, TimeUnit.MILLISECONDS).subscribe(new Action1<Long>() {\r
         public void call(Long param1Long) {\r
-          Intent intent = new Intent();\r
-          intent.setAction(DIALOG_ACTION);\r
-          intent.putExtra("pushtxt", msg);\r
-          _context.sendBroadcast(intent);\r
+          if(Config.noPushTxtNotifyDialog==false) {\r
+            Intent intent = new Intent();\r
+            intent.setAction(DIALOG_ACTION);\r
+            intent.putExtra("pushtxt", msg);\r
+            _context.sendBroadcast(intent);\r
+          }\r
         }\r
       });\r
     }else{\r
       Observable.timer(500L, TimeUnit.MILLISECONDS).subscribe(new Action1<Long>() {\r
         public void call(Long param1Long) {\r
-          Intent intent = new Intent();\r
-          intent.setAction(DIALOG_ACTION);\r
-          intent.putExtra("sms", msg);\r
-          _context.sendBroadcast(intent);\r
+          if(Config.noSMSNotifyDialog==false) {\r
+            Intent intent = new Intent();\r
+            intent.setAction(DIALOG_ACTION);\r
+            intent.putExtra("sms", msg);\r
+            _context.sendBroadcast(intent);\r
+          }\r
         }\r
        });\r
     }\r
index 146e140..355b7d3 100644 (file)
@@ -233,7 +233,7 @@ public class DeviceInfoUtil {
             .append(" [").append(runtime.getSignalStrength()).append(",").append(runtime.getSignalInfo()).append("] ")\r
             .append(runtime.IMEI())\r
             .append("\n Srv [").append(runtime.getHost()).append(":").append(runtime.getPort()).append("]").append(KeepAlive.isConnected).append(" , HBcycle ").append(runtime.getHeartBeatCycle())\r
-            .append("\n ServerConnected is ").append(runtime.isServerProtocolConnected())\r
+            .append("\n ServerConnected is ").append(runtime.isServerProtocolConnected()).append(",Temp ").append(ICJniUtils.getTemperature()-runtime.temperature_adjustValue)\r
             .append(" \n Bat ").append(runtime.getBattery()).append(",").append(runtime.getBatteryVotage())\r
             .append(" charged ").append(runtime.isPowerConnected())\r
             .append(" StepCount ").append(runtime.getTotalStepCount())\r
@@ -274,6 +274,7 @@ public class DeviceInfoUtil {
             .append(",P").append(runtime.getHRS().getPPG())\r
             .append(",H").append(runtime.getHRS().getBPH())\r
             .append(",L").append(runtime.getHRS().getBPL())\r
+            .append(",T").append(ICJniUtils.getTemperature()-runtime.temperature_adjustValue)\r
             .append(",").append(runtime.getHRS().getTestTime()).append("]")\r
             .toString();\r
   }\r
index d7515b7..09247f5 100644 (file)
@@ -48,6 +48,8 @@ public class ICHttpUtil {
         String pkgver=DeviceInfoUtil.getSWVersionDisplayName();\r
         String imei=runtime.IMEI();\r
         String actionUrl = "http://"+server+":"+port + "/UploadFile.jsp?product=" + product + "&pkgver="+ pkgver + "&imei="+ imei+"&logtime="+logtime;\r
+\r
+        ICLogger.i("url="+actionUrl+"\nfile="+zipfile);\r
         return upLoadFile(actionUrl, new File(zipfile));\r
 \r
     }\r
@@ -112,7 +114,7 @@ public class ICHttpUtil {
 \r
             int statusCode = con.getResponseCode();\r
             String msg=con.getResponseMessage();\r
-            Log.e(TAG,msg);\r
+            ICLogger.i(msg);\r
             if (statusCode == 200) {\r
                 result = true;\r
             }\r
index dbd99ff..5117842 100644 (file)
@@ -193,9 +193,33 @@ public class ProcessReceiver extends BroadcastReceiver {
       }).create();\r
       mCustomDialog.getWindow().setType(WindowManager.LayoutParams.TYPE_TOAST);\r
       mCustomDialog.show();\r
+    } else if (app_id ==5) {\r
+    tmpDialog = this.mDialog.setTitle(context.getString(R.string.findDev)).setApp(1);\r
+    StringBuilder var7 = new StringBuilder();\r
+    var7.append(msg);\r
+    mCustomDialog = tmpDialog.setMessage(var7.toString()).setPositiveButton("确定", new DialogInterface.OnClickListener() {\r
+      public void onClick(DialogInterface var1, int var2) {\r
+        var1.dismiss();\r
+        VibrateUtil.getInstance(context).VibrateOn(false);\r
+        stopmediaplayer();\r
+      }\r
+    }).create();\r
+    mCustomDialog.getWindow().setType(WindowManager.LayoutParams.TYPE_TOAST);\r
+    mCustomDialog.show();\r
     }\r
   }\r
-  \r
+  private void playFindDevVoice(Context context){\r
+\r
+    if (this.mAudioService == null)\r
+      this.mAudioService = new AudioService();\r
+\r
+    this.mAudioService.play(context.getAssets(), "Campus_Life.ogg");\r
+\r
+  }\r
+  private void stopmediaplayer(){\r
+    if (this.mAudioService != null)\r
+      this.mAudioService.stop();\r
+  }\r
   private void playNotificationVoice(Context paramContext) {\r
     if (this.mAudioService == null)\r
       this.mAudioService = new AudioService(); \r
@@ -306,6 +330,20 @@ public class ProcessReceiver extends BroadcastReceiver {
               VibrateUtil.getInstance(paramContext).VibrateOn(true);\r
             }\r
 \r
+            this.screenOn(paramContext);\r
+          }\r
+        }else if (paramIntent.hasExtra("findDev")) {\r
+          String finddevtxt = paramIntent.getStringExtra("findDev");\r
+          SharPreferenceUtil.getPrefBoolean(paramContext, "key_is_resume", false);\r
+          isSilence = SharPreferenceUtil.getPrefBoolean(paramContext, "KEY_ISSILENCE", false);\r
+          if (finddevtxt != null && !isSilence) {\r
+            if (!DeviceInfoUtil.isTopActivity(paramContext)) {\r
+              this.initMyDialog(paramContext, null, 5,finddevtxt);\r
+              this.playFindDevVoice(paramContext);\r
+              VibrateUtil.getInstance(paramContext).VibrateOn(true);\r
+\r
+            }\r
+\r
             this.screenOn(paramContext);\r
           }\r
         }\r
index 8744e76..213526b 100644 (file)
@@ -296,6 +296,7 @@ public class RxSocket {
                 //连接
                 if (socketStatus == SocketStatus.DIS_CONNECT || socketStatus == SocketStatus.DIS_CONNECT_BY_SERVERSIDE) {
                     try {
+                        Thread.sleep(10);
                         if (selectionKey != null) selectionKey.cancel();
                         socketChannel = SocketChannel.open();
                         socketChannel.configureBlocking(false);
@@ -332,16 +333,16 @@ public class RxSocket {
                                         connectStatus.onNext(SocketStatus.CONNECTED);
                                         socketChannel.configureBlocking(false);
                                         socketChannel.register(selector, SelectionKey.OP_READ);
-                                        if (socketReconnectCallback!=null)
+                                        if (socketReconnectCallback != null)
                                             socketReconnectCallback.onSuccess();
 
                                     } catch (Exception e) {
                                         isReadThreadAlive = false;
                                         socketStatus = SocketStatus.DIS_CONNECT;
                                         connectStatus.onNext(SocketStatus.DIS_CONNECT);
-                                         ICLogger.log( TAG, "ReadThread:finish exception:" + e);
-                                         e.printStackTrace();
-                                        if (socketReconnectCallback!=null)
+                                        ICLogger.log(TAG, "ReadThread:finish exception:" + e);
+                                        e.printStackTrace();
+                                        if (socketReconnectCallback != null)
                                             socketReconnectCallback.onFail("SocketConnectFail2");
 
                                     }
@@ -350,20 +351,20 @@ public class RxSocket {
                                 ByteBuffer buf = ByteBuffer.allocate(10000);
                                 int length = socketChannel.read(buf);
                                 if (length <= 0) {
-                                     ICLogger.log( TAG, "服务器主动断开链接!");
+                                    ICLogger.log(TAG, "服务器主动断开链接!");
                                     isReadThreadAlive = false;
                                     socketStatus = SocketStatus.DIS_CONNECT_BY_SERVERSIDE;
                                     connectStatus.onNext(SocketStatus.DIS_CONNECT_BY_SERVERSIDE);
-                                    if (socketReconnectCallback!=null)
+                                    if (socketReconnectCallback != null)
                                         socketReconnectCallback.onFail("SocketConnectFail3");
 
                                 } else {
-                                     ICLogger.log( TAG, "readSubject:msg!"+ "length:" + length);
+                                    ICLogger.log(TAG, "readSubject:msg!" + "length:" + length);
                                     byte[] bytes = new byte[length];
                                     for (int i = 0; i < length; i++) {
                                         bytes[i] = buf.get(i);
                                     }
-                                    if (socketReadCallback!=null)
+                                    if (socketReadCallback != null)
                                         socketReadCallback.onRecvMsg(bytes);
                                     readSubject.onNext(bytes);
                                 }
@@ -376,6 +377,7 @@ public class RxSocket {
                         connectStatus.onNext(SocketStatus.DIS_CONNECT);
                          ICLogger.log( TAG, "ReadThread:read exception :" + e);
                          e.printStackTrace();
+
                         if (socketReconnectCallback!=null)
                             socketReconnectCallback.onFail("SocketConnectFail4");
 
index 997d234..5c1928b 100644 (file)
@@ -57,4 +57,7 @@ public class ICJniUtils {
 \r
     /*获取血氧值*/\r
     public static native int getSPO2();\r
+\r
+\r
+    public static native double getTemperature();\r
 }\r
index a58c677..d4cf1f4 100644 (file)
@@ -103,6 +103,10 @@ public class protocol_beehome {
         BP88,//查找手表\r
         AP89,\r
         BP89,//心率血压阀值设置\r
+        APTE,\r
+        BPTE,//体温间隔设置\r
+        APTP,\r
+        BPTP,//体温上行\r
         UNKNOWN_CMD,\r
     }\r
 \r
@@ -172,6 +176,8 @@ public class protocol_beehome {
         cmdMap.put(CMD_TYPE.BP88, "BP88");\r
         cmdMap.put(CMD_TYPE.AP89, "AP89");\r
         cmdMap.put(CMD_TYPE.BP89, "BP89");\r
+        cmdMap.put(CMD_TYPE.APTE, "APTE");\r
+        cmdMap.put(CMD_TYPE.BPTE, "BPTE");\r
     }\r
 \r
 \r
@@ -343,6 +349,20 @@ public class protocol_beehome {
 \r
     public static String AP03(Runtime ds) {\r
         //示例数据:IWAP03,06000908000102,5555,30#  IWAP03,000000null00000,0,0#\r
+        //IW: 标识符\r
+        //AP03:命令字\r
+        //设备在静止时,可以通过该指令与平台保持连接和解决静态漂移\r
+        //06000908000102:\r
+        //060为GSM信号,\r
+        //009为参与定位的卫星数,\r
+        //080为电池电量,\r
+        //0 为保留位,\r
+        //01为设防状态,此处由两位十六进制表示,无取值时为 00 ,长度必需为两位,一共 8个bit 表示8种状态,各bit定义如下:(未列出的为当前未使用, 1表示有效 ,0 表示无效)\r
+        //Bit0 设防状态<手表无效>\r
+        //Bit1 为 1 表示夜灯为开,为0 夜灯为 关\r
+        //02为工作模式 ,(设防,工作模式如果为00,则代表无或未设置)\r
+        //5555: 计步步数,每次到达 9999 后重 0 开始计 (此处 9999 为示例,可以为2字节int 然后溢出归零)\r
+        //30: 翻滚次数\r
         return new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP03)).append(CMDSPLIT).append(String.format("%03d",abs(ds.getSignalStrength())))\r
                 .append(ds.getGPSLocationStarNums()).append(ds.getBattery()).append("0")\r
                 .append(ds.getProtection()).append(ds.getWorkModeStr()).append(CMDSPLIT)\r
@@ -1494,6 +1514,63 @@ public class protocol_beehome {
         }\r
 \r
     }\r
+\r
+    //体温间隔测量 (后台测试体温)(下行协议号:BPTE,响应:APTE)\r
+    public static String APTE(String index,int freq){\r
+\r
+        //设备响应:      IWAPTE,080835,60#\r
+        //080835:指令流水号\r
+        //1:表示设备接受数据成功,0表示设备接受数据失败\r
+        return new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.APTE))\r
+                .append(CMDSPLIT).append(index)\r
+                .append(CMDSPLIT).append(freq)\r
+                .append(CMDEND).toString();\r
+    }\r
+\r
+    public void handleBPTE(String cmd,Connection connection){\r
+\r
+        //示例:\r
+        //IWBPTE,353456789012345,080835,60#\r
+        //说明:\r
+        //IW:标识符\r
+        //BPTE : 命令字符\r
+        //353456789012345:IMEI号,设备唯一ID\r
+        //080835 :指令流水号\r
+        //60 : 上传间隔,单位分钟(60分钟上传一次体温,终端收到后立即开始测量一次并重置定时器)\r
+        String[] list=cmd.split(CMDSPLIT);\r
+        if (list.length==4){\r
+            String index=list[2];\r
+            String freqstr=list[3];\r
+            int freq=Integer.valueOf(freqstr);\r
+            connection.send(genStringMessage("APTE",APTE(index,freq)));\r
+            ICLogger.i("收到服务器指令:测量体温 "+freq+"分钟一次。");\r
+        }else{\r
+            ICLogger.i("BP89 format error!");\r
+        }\r
+\r
+    }\r
+\r
+\r
+    //体温上行(上行协议号:APTP,响应:BPTP)\r
+    public static String APTP(double temperature){\r
+\r
+        //设备:    IWAPTP,36.3,33,132#\r
+        //IW:标识符\r
+        //APTP : 命令字符\r
+        //35.3:测量体温 (摄氏度)\r
+        //33,132:温补用的参数,此处不用,可以用0 来代替。\r
+        return new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.APTP))\r
+                .append(CMDSPLIT).append(String.format("%1$.2f",temperature))\r
+                .append(CMDSPLIT).append(0).append(CMDSPLIT).append(0)\r
+                .append(CMDEND).toString();\r
+    }\r
+\r
+    public void handleBPTP(){\r
+\r
+        ICLogger.d("BPTP 服务器收到体温数据!");\r
+\r
+    }\r
+\r
     public boolean handleCmd(CMD_TYPE type, String cmd) {\r
 \r
         //普通非二进制命令用此函数处理\r
@@ -1642,6 +1719,14 @@ public class protocol_beehome {
                 //心率/血压阀值\r
                 handleBP89(cmd,mConnection);\r
                 break;\r
+\r
+            case BPTE: //设置测试体温\r
+                handleBPTE(cmd,mConnection);\r
+                break;\r
+\r
+            case BPTP:\r
+                handleBPTP();\r
+                break;\r
         }\r
 \r
         return ret;\r
index 4b0a46e..f6fc2d0 100644 (file)
     <string name="sms_notify">您有新短消息!</string>
     <string name="hht_call_end">的未接来电</string>
 
+
     <string name="hht_call_start">您有</string>
 
     <string name="hht_misscall_call">来电提醒</string>
 
+    <string name="findDev">查找设备!</string>
+
     <string name="hwpush_ability_value">successRateAnalytics</string>
 
     <string name="hwpush_cancel">Cancel</string>
index 0df057b..2de9463 100644 (file)
@@ -1,2 +1,2 @@
-#Wed Jun 17 23:32:50 CST 2020\r
-VERSION_CODE=423\r
+#Wed Jun 24 22:37:19 CST 2020\r
+VERSION_CODE=425\r
index 0bf5082..fa7ee3b 100644 (file)
@@ -1,10 +1,14 @@
 package com.sina.util.dnscache.log;
 
+import java.io.BufferedInputStream;
 import java.io.BufferedReader;
+import java.io.DataInputStream;
 import java.io.File;
+import java.io.FileInputStream;
 import java.io.FileReader;
 import java.io.FileWriter;
 import java.io.IOException;
+import java.io.InputStream;
 import java.util.ArrayList;
 import java.util.List;
 
@@ -46,7 +50,20 @@ public class FileUtil {
     public static String getSDPath() {
         return Environment.getExternalStorageDirectory().getPath();
     }
-
+    public static String readFileLine(File file) {
+        DataInputStream dis = null;
+        try {
+            if (!file.exists()) {
+                file.createNewFile();
+            }
+            dis = new DataInputStream(new FileInputStream(file));
+            String tmp=dis.readLine();
+            return tmp;
+        } catch (IOException e) {
+            e.printStackTrace();
+        }
+        return "";
+    }
     /**
      * 写文件内容,一次只写一行
      *