-[{"outputType":{"type":"APK"},"apkData":{"type":"MAIN","splits":[],"versionCode":1,"versionName":"1.1","enabled":true,"outputFile":"IcL02WorkService_V57_202101091515_release.apk","fullName":"IcL02WorkServiceRelease","baseName":"IcL02WorkService-release"},"path":"IcL02WorkService_V57_202101091515_release.apk","properties":{}}]
\ No newline at end of file
+[{"outputType":{"type":"APK"},"apkData":{"type":"MAIN","splits":[],"versionCode":1,"versionName":"1.1","enabled":true,"outputFile":"IcL02WorkService_V57_202101151444_release.apk","fullName":"IcL02WorkServiceRelease","baseName":"IcL02WorkService-release"},"path":"IcL02WorkService_V57_202101151444_release.apk","properties":{}}]
\ No newline at end of file
<uses-permission android:name="android.permission.WRITE_SETTINGS" />
+ <uses-permission android:name="android.permission.WAKE_LOCK" />
<!--用于申请调用A-GPS模块-->
<uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" />
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
interface IHeartRateSensorService {
void registerCallback(in IHeartRateSensorCallback callback,in String callbackTag);
void unRegisterCallback(in IHeartRateSensorCallback callback);
- oneway void getHeartRateInfo(int from,in String callbackTag);
+ void getHeartRateInfo(int from,in String callbackTag);
}
\ No newline at end of file
interface ITempSensorService {
void registerCallback(in ITempSensorCallback callback,in String callbackTag);
void unRegisterCallback(in ITempSensorCallback callback);
- oneway void getTemperatureInfo(int from,in String callbackTag);
+ void getTemperatureInfo(int from,in String callbackTag);
}
\ No newline at end of file
import android.app.Service;
import android.content.Intent;
import android.os.IBinder;
+import android.os.PowerManager;
import android.os.RemoteCallbackList;
import android.os.RemoteException;
import android.util.Log;
import com.ic.work.hardware.BloodInfoHelper;
import com.ic.work.hardware.BloodSensorManager;
import com.ic.work.hardware.TemperatureHelper;
+import com.ic.work.utils.ICLogger;
import com.ic.work.utils.ICWorkConstants;
import com.ic.work.utils.IcLog;
import com.ic.work.utils.IcSystemProperty;
public static final String KEY_TEMP_WRIST = "wrist"; // double 腕温
public static final String KEY_TEMP_OUT = "out"; // double 腕温
private static final String HEART_ACTION = "com.ic.action.BLOOD_HEART";
-
private static final String TAG = "SensorDataService";
private final LinkedBlockingDeque<TestTaskEvent> mTaskList = new LinkedBlockingDeque<>();
//当前执行的任务
private TestTaskEvent currentTask;
private BloodSensorManager bloodSensorManager;
-
private final Object mLock = new Object();
-
+ private PowerManager powerManager;
+ private PowerManager.WakeLock wakeLock;
@Nullable
@Override
//其他的进行action判断
String action = intent.getAction();
IcLog.d(TAG, "on service bind package name -- > "
- + packageName + " action name is -==- > " + action);
+ + packageName + " action name is == > " + action);
if (ACTION_BLOOD.equals(packageName) ||
ICWorkConstants.SensorServiceAction.ACTION_HEART_RATE.equals(action)) {
return heartRateSensorService;
return null;
}
-
@Override
public void onCreate() {
super.onCreate();
+ powerManager = (PowerManager) WorkServiceApp.sContext.getSystemService(POWER_SERVICE);
EventBus.getDefault().register(this);
//创建一个Handler用来计算超时,如果超过这个时间,还没有执行完
//那么就取出下一个任务
BloodInfoHelper.getInstance().setHeartRateInfoChangeListener(this);
}
+
/**
* 此方法已经是子线程了,不可以再开子线程,包括结果的处理。
* 这样才可以确保单一的一个任务执行,解决并发读取数据不准的问题。
*/
@Subscribe(threadMode = ThreadMode.BACKGROUND)
public void handleTestEvent(TestTaskEvent testTaskEvent) {
+ //保持CPU运行
+ wakeLock = powerManager.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "ic:sensorDataService");
+ wakeLock.acquire(10 * 60 * 1000L /*10 minutes*/);
IcLog.d(TAG, "task == start == > " + testTaskEvent);
//当结果回来的时候,如果队列里没有了,那么就false了
isRunning = true;
public void onDestroy() {
super.onDestroy();
mTaskList.clear();
+ powerManager = null;
EventBus.getDefault().unregister(this);
TemperatureHelper.getInstance().setTemperatureChangeListener(null);
BloodInfoHelper.getInstance().setHeartRateInfoChangeListener(null);
new IHeartRateSensorService.Stub() {
@Override
public void registerCallback(IHeartRateSensorCallback callback, String tag) {
+ ICLogger.d("heartRateSensorService registerCallback ==> " + callback);
heartRateCallbacks.register(callback, tag);
}
@Override
public void unRegisterCallback(IHeartRateSensorCallback callback) {
+ ICLogger.d("heartRateSensorService unRegisterCallback ==> " + callback);
heartRateCallbacks.unregister(callback);
}
private final ITempSensorService.Stub tempSensorService = new ITempSensorService.Stub() {
@Override
public void registerCallback(ITempSensorCallback callback, String tag) {
+ ICLogger.d("tempSensorService registerCallback ==> " + callback);
temperatureCallbacks.register(callback, tag);
}
@Override
public void unRegisterCallback(ITempSensorCallback callback) {
temperatureCallbacks.unregister(callback);
+ ICLogger.d("tempSensorService unRegisterCallback ==> " + callback);
}
@Override
}
};
+ private final Object mTaskLock = new Object();
+
private void createTask(int from, TestTaskEvent.SensorType censorType, String tag) {
TestTaskEvent.From fromByValue = getFromByValue(from);
if (fromByValue == null) {
- IcLog.d(TAG, "from is not invalid..." + from);
+ IcLog.d(TAG, "from is not invalid..." + from + tag);
return;
}
TestTaskEvent taskEvent = new TestTaskEvent(censorType, fromByValue, System.currentTimeMillis());
IcLog.d(TAG, "create new task == > " + taskEvent);
- //判断队列里是否有同样的任务,如果有的话不用发了,
- if (mTaskList.contains(taskEvent)) {
- IcLog.d(TAG, "task contains..." + fromByValue);
- //通知正在等待执行
- if (tag != null) {
- dispatchWaiting(censorType, tag);
+ synchronized (mTaskLock) {
+ //判断队列里是否有同样的任务,如果有的话不用发了,
+ if (mTaskList.contains(taskEvent)) {
+ IcLog.d(TAG, "task contains..." + fromByValue);
+ //通知正在等待执行
+ if (tag != null) {
+ dispatchWaiting(censorType, tag);
+ }
+ return;
}
- return;
- }
- if (taskEvent.equals(currentTask)) {
- IcLog.d(TAG, "current task running...");
- //通知正在执行
- if (tag != null) {
- dispatchTaskRunning(censorType, tag);
+ if (taskEvent.equals(currentTask)) {
+ IcLog.d(TAG, "current task running...");
+ //通知正在执行
+ if (tag != null) {
+ dispatchTaskRunning(censorType, tag);
+ }
+ return;
}
- return;
- }
- IcLog.d(TAG, "is running =-== > " + isRunning + " queue size == > " + mTaskList.size());
- //判断是否繁忙
- //如果没有的话则发送一下
- if (!isRunning && mTaskList.size() == 0) {
- currentTask = taskEvent;
- //直接运行不需要放到队列里了
- EventBus.getDefault().post(taskEvent);
- } else {
- IcLog.d(TAG, "new task waiting..." + taskEvent);
- //要放到队列里头,提示调用者正在等待执行
- if (tag != null) {
- dispatchWaiting(censorType, tag);
+ IcLog.d(TAG, "is running =-== > " + isRunning + " queue size == > " + mTaskList.size());
+ //判断是否繁忙
+ //如果没有的话则发送一下
+ if (!isRunning && mTaskList.size() == 0) {
+ currentTask = taskEvent;
+ //直接运行不需要放到队列里了
+ EventBus.getDefault().post(taskEvent);
+ } else {
+ IcLog.d(TAG, "new task waiting..." + taskEvent);
+ //要放到队列里头,提示调用者正在等待执行
+ if (tag != null) {
+ dispatchWaiting(censorType, tag);
+ }
+ mTaskList.add(taskEvent);
}
- mTaskList.add(taskEvent);
}
}
}
private void checkContinue() {
+ wakeLock.release();
isRunning = false;
currentTask = null;
int size = mTaskList.size();
package com.ic.work;
import android.app.Application;
+import android.content.Context;
import com.ic.work.db.AppDatabase;
import com.ic.work.db.PedInjection;
public class WorkServiceApp extends Application {
+
+ public static Context sContext = null;
+
+
@Override
public void onCreate() {
super.onCreate();
CrashHandler crashHandler = CrashHandler.getInstance();
crashHandler.init(getApplicationContext());
+ sContext = getApplicationContext();
}
public AppDatabase getDatabase() {
package com.ic.work.hardware;
-import com.ic.work.event.BloodCheckTipsEvent;
-import com.ic.work.event.BloodSensorEvent;
+import android.os.Handler;
+import android.os.HandlerThread;
+
import com.ic.work.utils.HardwareUtils;
+import com.ic.work.utils.ICLogger;
import com.ic.work.utils.IcLog;
-import org.greenrobot.eventbus.EventBus;
-
import java.util.Random;
-import static com.ic.aidl.blood.BloodState.BLOOD_ING_CHECK;
-import static com.ic.aidl.blood.BloodState.BLOOD_NOT_DEVICE;
-import static com.ic.aidl.blood.BloodState.BLOOD_NULL_TIPS;
-import static com.ic.aidl.blood.BloodState.BLOOD_PLEASE_QUIET;
-import static com.ic.aidl.blood.BloodState.BLOOD_START_CHECK;
-
/**
* 此工具类获取血氧,血压,心率等信息,结果通过:
*/
private HeartRateInfoChangeListener mListener = null;
+ private final Handler ppgLooper;
+ private long checkBloodStartTime;
private BloodInfoHelper() {
-
+ //这个Looper专门用来查询数据的
+ HandlerThread handlerThread = new HandlerThread("ic:heart-rate-looper");
+ handlerThread.start();
+ ppgLooper = new Handler(handlerThread.getLooper());
}
private static BloodInfoHelper sInstance = null;
private static final String TAG = "BloodInfoHelper";
public void getBloodInfo() {
+ ICLogger.d("getBloodInfo...");
boolean[] deviceState = HardwareUtils.isPPGavailableIc66();
if (!deviceState[0]) {
+ IcLog.d(TAG, "deviceState[0] == > " + deviceState[0]);
//TODO:这个后面再处理,得给我机器再去处理,没有文档,没有数据
- sendTipsEventBus(BLOOD_NULL_TIPS, BLOOD_NOT_DEVICE);
+ //sendTipsEventBus(BLOOD_NULL_TIPS, BLOOD_NOT_DEVICE);
return;
}
+ ICLogger.d("deviceState[1]..." + deviceState[1]);
if (deviceState[1]) {
//TODO:这个是走官方API的,也得有机器再进行修改代码
- sendTipsEventBus(BLOOD_PLEASE_QUIET, BLOOD_START_CHECK);
- EventBus.getDefault().post(new BloodSensorEvent(1));
+ //sendTipsEventBus(BLOOD_PLEASE_QUIET, BLOOD_START_CHECK);
+ // EventBus.getDefault().post(new BloodSensorEvent(1));
} else {
//这个走JNI获取数据的,完成了
checkBloodOther();
}
}
- private void sendTipsEventBus(int top, int bottom) {
- EventBus.getDefault().post(new BloodCheckTipsEvent(top, bottom));
- }
-
-
- private void checkBloodOther() {
- int ndkHeart = 0;
- int ndkHigh = 0;
- int ndkLow = 0;
- int oxygen = 0;
+ private int ndkHeart = 0;
+ private int ndkHigh = 0;
+ private int ndkLow = 0;
+ private int oxygen = 0;
+ private int checkCount = 0;
+ private int noWearCount = 0;
- boolean isWeared;
+ private boolean isWear;
- int checkCount = 0;
- int noWearCount = 0;
- boolean isSendCheckTips = false;
+ private int invalidateTime = 0;
+ private void checkBloodOther() {
+ checkBloodStartTime = System.currentTimeMillis();
+ IcLog.d(TAG, "start time == > " + checkBloodStartTime);
+ ndkHeart = 0;
+ ndkHigh = 0;
+ ndkLow = 0;
+ oxygen = 0;
+ checkCount = 0;
+ noWearCount = 0;
+ invalidateTime = 0;
//开启
HardwareUtils.onNdkEnablePPG();
+ //推迟1秒去测试数据
+ //测试数据是一个循环,有三种情况
+ //- 没有穿戴,如果超过20秒没有穿戴,那么就结束此次测试
+ //- 数据测试结果为0,如果连续20个数据为0,那么就结束此次测试
+ //- 有数据以后,连续测上10次,就可以返回结果了
+ ppgLooper.postDelayed(this::checkWear, 1000);
+ }
- sendTipsEventBus(BLOOD_PLEASE_QUIET, BLOOD_START_CHECK);
-
- int invalidateTime = 0;
- try {
- while (!Thread.currentThread().isInterrupted()) {
+ private void checkWear() {
+ IcLog.d(TAG, "checkWear...");
+ //测试数据是一个循环,有三种情况
+ //- 没有穿戴,如果超过20秒没有穿戴,那么就结束此次测试
+ //- 20秒内有穿戴,则开始测试
+ ppgLooper.post(new Runnable() {
+ @Override
+ public void run() {
ndkHeart = HardwareUtils.getNdkPPGValue();
- isWeared = HardwareUtils.isWeared();
-
- IcLog.i(TAG, "Get Heart Value:" + isWeared + ",ndkHeart:" + ndkHeart);
-
- if (!isWeared) {
- //超过10连续未佩戴则认为没有佩戴
- if (noWearCount > 10) break;
+ isWear = HardwareUtils.isWeared();
+ IcLog.d(TAG, "isWear == > " + isWear);
+ if (!isWear) {
+ //延时1秒进行检查
noWearCount++;
+ IcLog.d(TAG, "noWearCount == > " + noWearCount);
+ if (noWearCount <= 20) {
+ ppgLooper.postDelayed(this, 1000);
+ } else {
+ handleResult();
+ }
} else {
- //已佩戴则noWearCount 清零重新计数
noWearCount = 0;
- if (ndkHeart > 0) {
- ndkHigh = HardwareUtils.getNdkHighBloodValue();
- ndkLow = HardwareUtils.getNdkLowBloodValue();
- oxygen = HardwareUtils.getNdkOxygenValue();
- if (oxygen <= 0) oxygen = randomOxygenValue();
- if (mListener != null) {
- mListener.onHeartRateUpdate(ndkHigh, ndkLow, ndkHeart, oxygen);
- }
- //测试到数据30秒后停止测量
- if (checkCount >= 30) {
- break;
- }
- checkCount++;
+ //开始去检测了
+ doTest();
+ }
+ }
+ });
+ }
+
+ //- 数据测试结果为0,如果连续20个数据为0,那么就结束此次测试
+ //- 有数据以后,连续测上10次,就可以返回结果了
+ private void doTest() {
+ ppgLooper.post(new Runnable() {
+ @Override
+ public void run() {
+ //这部分代码要做超时处理{
+ long getPPGStartTime = System.currentTimeMillis();
+ ndkHeart = HardwareUtils.getNdkPPGValue();
+ if (ndkHeart > 0) {
+ ndkHigh = HardwareUtils.getNdkHighBloodValue();
+ ndkLow = HardwareUtils.getNdkLowBloodValue();
+ oxygen = HardwareUtils.getNdkOxygenValue();
+ if (oxygen <= 0) oxygen = randomOxygenValue();
+ if (mListener != null) {
+ IcLog.d(TAG, "ndkHigh == > " + ndkHigh + "ndkLow == > " + ndkLow + "oxygen == > " + oxygen);
+ mListener.onHeartRateUpdate(ndkHigh, ndkLow, ndkHeart, oxygen);
+ }
+ checkCount++;
+ IcLog.d(TAG, "checkCount == > " + checkCount);
+ if (checkCount <= 10) {
+ //继续测试
+ ppgLooper.postDelayed(this, 1000);
} else {
- //如果为0的话,记录下来
- invalidateTime++;
+ handleResult();
}
- if (!isSendCheckTips) {
- //正在测量中,请稍等
- sendTipsEventBus(BLOOD_PLEASE_QUIET, BLOOD_ING_CHECK);
- isSendCheckTips = true;
+ IcLog.d(TAG, "use time == > " + (System.currentTimeMillis() - getPPGStartTime));
+ } else {
+ //如果为0的话,记录下来
+ invalidateTime++;
+ IcLog.d(TAG, "invalidateTime == > " + invalidateTime);
+ if (invalidateTime <= 30) {
+ ppgLooper.postDelayed(this, 1000);
+ } else {
+ handleResult();
}
}
- Thread.sleep(1000);
- if (invalidateTime > 20) {
- break;
- }
- }
- if (mListener != null) {
- mListener.onHeartRateResult(ndkHigh, ndkLow, ndkHeart, oxygen);
- }
- if (mListener != null) {
- mListener.onHeartRateTestFinished();
}
- HardwareUtils.onNdkDisablePPG();
- } catch (InterruptedException e) {
- IcLog.e(TAG, "Stop Get Heart Value", e);
- } catch (Exception e) {
- e.printStackTrace();
- } finally {
+ });
+ }
+
+ private void handleResult() {
+ if (mListener != null) {
+ mListener.onHeartRateResult(ndkHigh, ndkLow, ndkHeart, oxygen);
+ }
+ if (mListener != null) {
+ mListener.onHeartRateTestFinished();
+ }
+ try {
IcLog.d(TAG, "disable ppg..");
HardwareUtils.onNdkDisablePPG();
+ } catch (Exception e) {
+ IcLog.e(TAG, "Stop Get Heart Value", e);
}
+ IcLog.d(TAG, "total use time == checkBloodStartTime > " + (System.currentTimeMillis() - checkBloodStartTime));
}
+
private int randomOxygenValue() {
int min = 95;
int max = 100;
import com.ic.work.domain.TemperatureItem;
import com.ic.work.utils.HardwareUtils;
+import com.ic.work.utils.ICLogger;
import com.ic.work.utils.IcLog;
import com.ic.work.utils.TemperatureUtil;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
+import java.util.concurrent.Future;
+import java.util.concurrent.TimeUnit;
+
/**
* 获取温度的工具类
*/
return sInstance;
}
+ private double lastTempOut = 0.0;
+ private double lastBodyTemp = 0.0;
+ private double lastWristTemp = 0.0;
+ private int delayTimesInSeconds = 20;
+
public void getTemperature() {
- double lastTempOut = 0.0;
- double lastBodyTemp = 0.0;
- double lastWristTemp = 0.0;
- int delayTimesInSeconds = 20;
+ long start = System.currentTimeMillis();
+ lastTempOut = 0.0;
+ lastBodyTemp = 0.0;
+ lastWristTemp = 0.0;
+ delayTimesInSeconds = 20;
boolean[] state = HardwareUtils.isTemperatureDevAvailable();
IcLog.i(TAG, "TemperatureRunnable :" + state[0] + " state[1]:" + state[1]);
if (state[0]) { //have temp
HardwareUtils.disablePedometer();
if (HardwareUtils.enableTemperature()) {
IcLog.i(TAG, "getNdkTemperatureValue enableTemperature");
- Thread.sleep(1000);
+ long begin = System.currentTimeMillis();
+ while (true) {
+ if (System.currentTimeMillis() - begin > 1000) {
+ break;
+ }
+ }
}
+ //这里做超时处理
+ ExecutorService executor = Executors.newSingleThreadExecutor();
while (true) {
- lastWristTemp = HardwareUtils.getNdkTemperatureOutValue();
- TemperatureItem temperatureItem = TemperatureUtil.doTempTest();
- if (temperatureItem != null) {
- lastWristTemp = Double.parseDouble(temperatureItem.getBodyTemp());
- lastTempOut = Double.parseDouble(temperatureItem.getEvnTemp());
-
- if (lastTempOut > 60 || lastTempOut < 1) {
- lastTempOut = 0.0f;
- }
- if (lastTempOut > 0.0f) {
- lastBodyTemp = TemperatureUtil.getBodyTemp(lastWristTemp, lastTempOut);
- } else {
- lastBodyTemp = TemperatureUtil.getBodyTemp(lastWristTemp, 26.0f);
+ Future<?> submit = executor.submit(() -> {
+ IcLog.d(TAG, "do temperature....");
+ long begin = System.currentTimeMillis();
+ while (true) {
+ if (System.currentTimeMillis() - begin > 1000) {
+ break;
+ }
}
- IcLog.d(TAG, "testing..." + lastWristTemp + " " + lastBodyTemp + " " + lastTempOut);
- //前10秒不更新内容,后10秒再更新数据
- if (delayTimesInSeconds > 10 && mListener != null) {
- IcLog.d(TAG, "update temperature info..thread name is ." + Thread.currentThread().getName());
- //获取
- IcLog.d(TAG, "lastWristTemp == > " + lastWristTemp);
- IcLog.d(TAG, "lastBodyTemp == > " + lastBodyTemp);
- IcLog.d(TAG, "lastTempOut == > " + lastTempOut);
- mListener.onTemperatureUpdate(lastWristTemp, lastBodyTemp, lastTempOut);
+ long getStartTime = System.currentTimeMillis();
+ lastWristTemp = HardwareUtils.getNdkTemperatureOutValue();
+ TemperatureItem temperatureItem = TemperatureUtil.doTempTest();
+ if (temperatureItem != null) {
+ lastWristTemp = Double.parseDouble(temperatureItem.getBodyTemp());
+ lastTempOut = Double.parseDouble(temperatureItem.getEvnTemp());
+
+ if (lastTempOut > 60 || lastTempOut < 1) {
+ lastTempOut = 0.0f;
+ }
+ if (lastTempOut > 0.0f) {
+ lastBodyTemp = TemperatureUtil.getBodyTemp(lastWristTemp, lastTempOut);
+ } else {
+ lastBodyTemp = TemperatureUtil.getBodyTemp(lastWristTemp, 26.0f);
+ }
+ IcLog.d(TAG, "testing..." + lastWristTemp + " " + lastBodyTemp + " " + lastTempOut);
+ //前10秒不更新内容,后10秒再更新数据
+ if (delayTimesInSeconds <= 10 && mListener != null) {
+ IcLog.d(TAG, "update temperature info..thread name is ." + Thread.currentThread().getName());
+ //获取
+ IcLog.d(TAG, "lastWristTemp == > " + lastWristTemp);
+ IcLog.d(TAG, "lastBodyTemp == > " + lastBodyTemp);
+ IcLog.d(TAG, "lastTempOut == > " + lastTempOut);
+ mListener.onTemperatureUpdate(lastWristTemp, lastBodyTemp, lastTempOut);
+ }
+ ICLogger.d("get temperature data use time == > " + (System.currentTimeMillis() - getStartTime));
}
- }
- //}
+ });
+
try {
- Thread.sleep(1000);
- } catch (InterruptedException e) {
- break;
+ ICLogger.d("start to get temperature data...");
+ submit.get(10, TimeUnit.SECONDS);
+ ICLogger.d("to get temperature end...");
+ } catch (Exception e) {
+ ICLogger.d("get temperature data time out...");
+ continue;
}
delayTimesInSeconds--;
+ IcLog.d(TAG, "delayTimesInSeconds " + delayTimesInSeconds);
//延时delay_times_in_seconds秒后停止检测。
- if (delayTimesInSeconds <= 0)
+ if (delayTimesInSeconds <= 0) {
break;
+ }
}
- } catch (InterruptedException e) {
+ executor.shutdown();
+ } catch (Exception e) {
IcLog.e(TAG, "TemperatureRunnable :", e);
} finally {
HardwareUtils.disableTemperature();
}
}
if (mListener != null) {
+ ICLogger.d("result == >lastWristTemp " + lastWristTemp + " lastBodyTemp" + lastBodyTemp + " lastTempOut" + lastTempOut);
mListener.onTemperatureResult(lastWristTemp, lastBodyTemp, lastTempOut);
}
+ IcLog.d(TAG, "temp use time == > " + (System.currentTimeMillis() - start));
}
public void setTemperatureChangeListener(TemperatureChangeListener listener) {
package com.ic.work.utils;
import com.ic.jni.ICJniUtils;
-import com.ic.work.BuildConfig;
public class HardwareUtils {
public static boolean isWeared() {
try {
int value = ICJniUtils.isWeared();
-// if(BuildConfig.productType == 1002){
return value == 1;
-// }else{
-// return value == 0;
-// }
-
} catch (Exception e) {
IcLog.e(TAG, "", e);
return true;
}
- public static void enableTemp() {
- if (ICJniUtils.isTemperatureDevAvailable() > ICJniUtils.TempSensorType.TEMPSENSOR_TYPE_NONE.ordinal()) {
-
- ICJniUtils.disablePedometer();
- ICJniUtils.enableTemperature();
- mSleep(1000);
- }
-
- }
-
public static double getBodyTemp(double wristtemp, double envtemp) {
return ICJniUtils.getBodyTempFromWristTemp(wristtemp, envtemp);
}
- public static void disableTemp() {
- if (ICJniUtils.isTemperatureDevAvailable() > ICJniUtils.TempSensorType.TEMPSENSOR_TYPE_NONE.ordinal()) {
- ICJniUtils.disableTemperature();
- ICJniUtils.enablePedometer();
- }
- }
-
- public static void mSleep(int ms) {
- try {
- Thread.yield();
- Thread.sleep(ms);
- } catch (Exception e) {
- // Log.e(TAG,e.getMessage(),e);
- }
- }
-
//thermal_zone0
public static final String CMD_CPU_TEM = "/sys/class/thermal/thermal_zone0/temp";