package com.ic.work.hardware;
+import android.app.ActivityManager;
+import android.content.Context;
+
import com.ic.work.event.TemperatureResultCompleteEvent;
import com.ic.work.event.TemperatureResultEvent;
import com.ic.work.utils.HardwareUtils;
import org.greenrobot.eventbus.EventBus;
import java.math.BigDecimal;
+import java.util.ArrayList;
public class TemperatureRunnable implements Runnable {
private static final String TAG = "TemperatureRunnable";
double testValue = 0.0;
double animal = 0.0;
double tempout = 0.0;
+ double lastTempout = 0.0;
+ double lastBodytemp =0.0;
+ double lastWristTemp = 0.0;
int delay_times_in_seconds=10;
boolean[] state = HardwareUtils.isTemperatureDevAvailable();
IcLog.i(TAG, "TemperatureRunnable :"+state[0]+" state[1]:"+state[1]);
try {
// if(HardwareUtils.isTemperatureDevOpened()){
IcLog.i(TAG, "getNdkTemperatureValue enableTemperature");
-
+ HardwareUtils.disablePedometer();
if (HardwareUtils.enableTemperature()) {
IcLog.i(TAG, "getNdkTemperatureValue enableTemperature");
animal = HardwareUtils.getBodyTempFromWristTemp(testValue, room_temperature);
}
IcLog.i(TAG, "getNdkTemperatureValue Value:" + testValue + " TempOut:"+tempout+" bodyTemp:"+animal);
- EventBus.getDefault().post(new TemperatureResultEvent(testValue, animal,tempout));
+ if(tempout>50 || tempout<10 || testValue<10 || testValue>50 ){
+ IcLog.i(TAG, "getNdkTemperatureValue TempOut or Wirst Value out of range skip send it ! ");
+ }else {
+ lastBodytemp=animal;
+ lastWristTemp=testValue;
+ lastTempout=tempout;
+ EventBus.getDefault().post(new TemperatureResultEvent(testValue, animal, tempout));
+ }
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
IcLog.e(TAG, "TemperatureRunnable :", e);
} finally {
HardwareUtils.disableTemperature();
+ HardwareUtils.enablePedometer();
IcLog.i(TAG, "disableTemperature !");
}
}
- EventBus.getDefault().post(new TemperatureResultCompleteEvent(testValue, animal,tempout));
+ EventBus.getDefault().post(new TemperatureResultCompleteEvent(lastWristTemp, lastBodytemp,lastTempout));
}
public static double div(double value1, int value2, int scale) {
-package com.ic.work.weather;\r
-\r
-import android.content.BroadcastReceiver;\r
-import android.content.Context;\r
-import android.content.Intent;\r
-import android.content.IntentFilter;\r
-import android.text.TextUtils;\r
-\r
-import com.ic.aidl.weather.WeatherParcelable;\r
-import com.ic.work.BuildConfig;\r
-import com.ic.work.db.WeatherInjection;\r
-import com.ic.work.db.entity.WeatherEntity;\r
-import com.ic.work.event.WeatherResultEvent;\r
-import com.ic.work.utils.IcLog;\r
-\r
-import org.greenrobot.eventbus.EventBus;\r
-import org.threeten.bp.OffsetDateTime;\r
-import org.threeten.bp.ZoneId;\r
-import org.threeten.bp.format.DateTimeFormatter;\r
-\r
-import java.util.ArrayList;\r
-import java.util.List;\r
-\r
-class WeatherFromProtocol {\r
-\r
- private final String ACTION_QUERY_WEATHER = "com.ic.action_query_weather";\r
- private final String ACTION_WEATHER_RECEIVED = "com.ic.action_weather_recveived";\r
- private final String KEY_Weather = "weather";\r
-\r
-\r
- private static final String TAG = "WeatherFromProtocol";\r
-\r
- private static final DateTimeFormatter formatter = DateTimeFormatter.ISO_LOCAL_DATE;\r
-\r
- private String mCity;\r
-\r
-\r
- private Context mContext;\r
- private WeatherInjection weatherInjection;\r
-\r
- public WeatherFromProtocol(WeatherInjection weatherDb,Context context) {\r
- weatherInjection = weatherDb;\r
- mContext=context;\r
- registerBroadcast();\r
- }\r
-\r
-\r
- private void registerBroadcast() {\r
- IntentFilter filter = new IntentFilter();\r
- filter.addAction(ACTION_WEATHER_RECEIVED);\r
- mContext.registerReceiver(mIntentReceiver, filter);\r
- }\r
-\r
- public void sendWeatherQueryBroadcast() {\r
- Intent pedIntent = new Intent();\r
- pedIntent.setAction(ACTION_QUERY_WEATHER);\r
- mContext.sendBroadcast(pedIntent);\r
- }\r
-\r
-\r
- private BroadcastReceiver mIntentReceiver = new BroadcastReceiver() {\r
- @Override\r
- public void onReceive(Context context, Intent intent) {\r
- if (intent != null) {\r
- String acyion = intent.getAction();\r
- if (TextUtils.isEmpty(acyion)) {\r
- return;\r
- }\r
- switch (acyion) {\r
- case ACTION_WEATHER_RECEIVED:\r
- String weather = intent.getStringExtra(KEY_Weather);\r
- new Thread(){\r
- @Override\r
- public void run() {\r
- super.run();\r
- parseWeatherString(weather);\r
- }\r
- }.start();\r
-\r
- break;\r
- }\r
- }\r
- }\r
- };\r
-\r
-\r
- private void parseWeatherString(String stringWeather) {\r
- IcLog.i(TAG, "getprop weather " + stringWeather);\r
-\r
- List<WeatherParcelable> wpList = new ArrayList<>(3);\r
- List<WeatherEntity> dbList = new ArrayList<>(3);\r
-\r
- String list[]=stringWeather.split(";");\r
- if (list.length==4) {\r
-\r
- //南山区;2020-10-12,晴,32,24,23,31;2020-10-13,晴,32,24,23,31;2020-10-14,晴,32,24,23,31\r
- //宝安区;2020-10-12,多云,26,30,22,28;2020-10-13,多云,26,30,22,28;2020-10-14,多云,26,30,22,28\r
- String mCity=list[0];\r
- boolean success=true;\r
- for (int i = 0; i < 3; i++) {\r
-\r
- String wlist[]=list[1+i].split(",");\r
- IcLog.i(TAG,list[1+i]+" "+wlist.length);\r
- if(wlist.length==6) {\r
- WeatherParcelable weather = new WeatherParcelable();\r
- WeatherEntity db = new WeatherEntity();\r
- weather.setCity(mCity);\r
- db.setCity(mCity);\r
-\r
- weather.setStatusDay(wlist[1]); // 白天天气描述\r
- db.setStatusDay(weather.getStatusDay());\r
- weather.setStatusNight(wlist[1]); // 夜间天气描述\r
- db.setStatusNight(weather.getStatusNight());\r
-\r
- int statusid = 0;\r
- try {\r
- statusid = Integer.parseInt(wlist[2].trim());\r
- } catch (Exception e) {\r
- e.printStackTrace();\r
- }\r
- weather.setStatusID(statusid);// 天气索引\r
- db.setStatusID(statusid);\r
-\r
- weather.setFigureDay(wlist[3]); // 天气索引\r
- db.setFigureDay(weather.getFigureDay());\r
- weather.setFigureNight(wlist[3]);\r
- db.setFigureNight(weather.getFigureNight());\r
-\r
- weather.setTemperatureDay(wlist[4]); // 白天温度-对应“和风天气”的最低温度\r
- db.setTemperatureDay(weather.getTemperatureDay());\r
- weather.setTemperatureNight(wlist[5]); // 夜间温度-对应“和风天气”的最高温度\r
- db.setTemperatureNight(weather.getTemperatureNight());\r
-\r
- weather.setUpdateTime(wlist[0]);\r
- db.setUpdateTime(wlist[0]);\r
- db.setQueryTime(OffsetDateTime.now(ZoneId.systemDefault()));\r
-\r
- if (BuildConfig.DEBUG) {\r
- StringBuffer stringBuffer = new StringBuffer();\r
- stringBuffer.append(weather.getStatusDay()).append("-").append(weather.getStatusNight())\r
- .append("|")\r
- .append(weather.getTemperatureDay()).append("-").append(weather.getTemperatureNight())\r
- .append("|")\r
- .append(weather.getUpdateTime());\r
- IcLog.i(TAG, "Response is weather:" + stringBuffer.toString());\r
- }\r
-\r
- wpList.add(weather);\r
- dbList.add(db);\r
- }else{\r
- IcLog.i(TAG,"Weather Format error!");\r
- success=false;\r
- break;\r
- }\r
- }\r
- if(success) {\r
- EventBus.getDefault().post(new WeatherResultEvent(wpList));\r
- weatherInjection.deleteDBWeatherDate();\r
- weatherInjection.insertWeatherEntity(dbList);\r
- }\r
- }else{\r
- IcLog.i(TAG,"Weather Format error!");\r
- }\r
- }\r
+package com.ic.work.weather;
+
+import android.content.BroadcastReceiver;
+import android.content.Context;
+import android.content.Intent;
+import android.content.IntentFilter;
+import android.text.TextUtils;
+
+import com.ic.aidl.weather.WeatherParcelable;
+import com.ic.work.BuildConfig;
+import com.ic.work.db.WeatherInjection;
+import com.ic.work.db.entity.WeatherEntity;
+import com.ic.work.event.WeatherResultEvent;
+import com.ic.work.utils.IcLog;
+
+import org.greenrobot.eventbus.EventBus;
+import org.threeten.bp.OffsetDateTime;
+import org.threeten.bp.ZoneId;
+import org.threeten.bp.format.DateTimeFormatter;
+
+import java.util.ArrayList;
+import java.util.List;
+
+class WeatherFromProtocol {
+
+ private final String ACTION_QUERY_WEATHER = "com.ic.action_query_weather";
+ private final String ACTION_WEATHER_RECEIVED = "com.ic.action_weather_recveived";
+ private final String KEY_Weather = "weather";
+
+
+ private static final String TAG = "WeatherFromProtocol";
+
+ private static final DateTimeFormatter formatter = DateTimeFormatter.ISO_LOCAL_DATE;
+
+ private String mCity;
+
+
+ private Context mContext;
+ private WeatherInjection weatherInjection;
+
+ public WeatherFromProtocol(WeatherInjection weatherDb,Context context) {
+ weatherInjection = weatherDb;
+ mContext=context;
+ registerBroadcast();
+ }
+
+
+ private void registerBroadcast() {
+ IntentFilter filter = new IntentFilter();
+ filter.addAction(ACTION_WEATHER_RECEIVED);
+ mContext.registerReceiver(mIntentReceiver, filter);
+ }
+
+ public void sendWeatherQueryBroadcast() {
+ Intent pedIntent = new Intent();
+ pedIntent.setAction(ACTION_QUERY_WEATHER);
+ pedIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
+ mContext.sendBroadcast(pedIntent);
+ }
+
+
+ private BroadcastReceiver mIntentReceiver = new BroadcastReceiver() {
+ @Override
+ public void onReceive(Context context, Intent intent) {
+ if (intent != null) {
+ String acyion = intent.getAction();
+ if (TextUtils.isEmpty(acyion)) {
+ return;
+ }
+ switch (acyion) {
+ case ACTION_WEATHER_RECEIVED:
+ String weather = intent.getStringExtra(KEY_Weather);
+ new Thread(){
+ @Override
+ public void run() {
+ super.run();
+ parseWeatherString(weather);
+ }
+ }.start();
+
+ break;
+ }
+ }
+ }
+ };
+
+
+ private void parseWeatherString(String stringWeather) {
+ IcLog.i(TAG, "getprop weather " + stringWeather);
+
+ List<WeatherParcelable> wpList = new ArrayList<>(3);
+ List<WeatherEntity> dbList = new ArrayList<>(3);
+
+ String list[]=stringWeather.split(";");
+ if (list.length==4) {
+
+ //南山区;2020-10-12,晴,32,24,23,31;2020-10-13,晴,32,24,23,31;2020-10-14,晴,32,24,23,31
+ //宝安区;2020-10-12,多云,26,30,22,28;2020-10-13,多云,26,30,22,28;2020-10-14,多云,26,30,22,28
+ String mCity=list[0];
+ boolean success=true;
+ for (int i = 0; i < 3; i++) {
+
+ String wlist[]=list[1+i].split(",");
+ IcLog.i(TAG,list[1+i]+" "+wlist.length);
+ if(wlist.length==6) {
+ WeatherParcelable weather = new WeatherParcelable();
+ WeatherEntity db = new WeatherEntity();
+ weather.setCity(mCity);
+ db.setCity(mCity);
+
+ weather.setStatusDay(wlist[1]); // 白天天气描述
+ db.setStatusDay(weather.getStatusDay());
+ weather.setStatusNight(wlist[1]); // 夜间天气描述
+ db.setStatusNight(weather.getStatusNight());
+
+ int statusid = 0;
+ try {
+ statusid = Integer.parseInt(wlist[2].trim());
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ weather.setStatusID(statusid);// 天气索引
+ db.setStatusID(statusid);
+
+ weather.setFigureDay(wlist[3]); // 天气索引
+ db.setFigureDay(weather.getFigureDay());
+ weather.setFigureNight(wlist[3]);
+ db.setFigureNight(weather.getFigureNight());
+
+ weather.setTemperatureDay(wlist[4]); // 白天温度-对应“和风天气”的最低温度
+ db.setTemperatureDay(weather.getTemperatureDay());
+ weather.setTemperatureNight(wlist[5]); // 夜间温度-对应“和风天气”的最高温度
+ db.setTemperatureNight(weather.getTemperatureNight());
+
+ weather.setUpdateTime(wlist[0]);
+ db.setUpdateTime(wlist[0]);
+ db.setQueryTime(OffsetDateTime.now(ZoneId.systemDefault()));
+
+ if (BuildConfig.DEBUG) {
+ StringBuffer stringBuffer = new StringBuffer();
+ stringBuffer.append(weather.getStatusDay()).append("-").append(weather.getStatusNight())
+ .append("|")
+ .append(weather.getTemperatureDay()).append("-").append(weather.getTemperatureNight())
+ .append("|")
+ .append(weather.getUpdateTime());
+ IcLog.i(TAG, "Response is weather:" + stringBuffer.toString());
+ }
+
+ wpList.add(weather);
+ dbList.add(db);
+ }else{
+ IcLog.i(TAG,"Weather Format error!");
+ success=false;
+ break;
+ }
+ }
+ if(success) {
+ EventBus.getDefault().post(new WeatherResultEvent(wpList));
+ weatherInjection.deleteDBWeatherDate();
+ weatherInjection.insertWeatherEntity(dbList);
+ }
+ }else{
+ IcLog.i(TAG,"Weather Format error!");
+ }
+ }
}
\ No newline at end of file