添加 PPG和 Temperature的Demo 主要时为了IC66,IC68修改测试逻辑。
authorsnickersun <scy@incartech.cn>
Mon, 3 Aug 2020 02:51:01 +0000 (10:51 +0800)
committersnickersun <scy@incartech.cn>
Mon, 3 Aug 2020 02:51:01 +0000 (10:51 +0800)
app/src/main/java/com/ic/jni/MainActivity.java
app/src/main/jni/native-lib.c
app/src/main/libs/armeabi-v7a/libICJniUtils.so

index d651ebe..a030f2b 100644 (file)
@@ -7,6 +7,10 @@ import android.content.BroadcastReceiver;
 import android.content.Context;\r
 import android.content.Intent;\r
 import android.content.IntentFilter;\r
+import android.hardware.Sensor;\r
+import android.hardware.SensorEvent;\r
+import android.hardware.SensorEventListener;\r
+import android.hardware.SensorManager;\r
 import android.os.Bundle;\r
 import android.os.Handler;\r
 import android.os.Message;\r
@@ -20,6 +24,7 @@ import java.util.Calendar;
 import java.util.Date;\r
 import java.util.Timer;\r
 import java.util.TimerTask;\r
+import java.util.logging.Logger;\r
 \r
 public class MainActivity extends AppCompatActivity {\r
 \r
@@ -154,14 +159,93 @@ public class MainActivity extends AppCompatActivity {
       //  ICJniUtils.enablePPG();\r
     }\r
 \r
+    /******************PPG Demo start ****************/\r
+    private SensorManager mSensorManager=null;\r
+    private Sensor mHeartRate;\r
+    private SensorEventListener sensorEventListener= new SensorEventListener(){\r
 \r
+        @Override\r
+        public void onSensorChanged(SensorEvent sensorEvent) {\r
+            float values[]=sensorEvent.values;\r
+            int length = values.length;\r
+            Log.e(TAG, "onSensorChanged() is called "+length\r
+                    +" "+values[0]\r
+                    +" "+values[1]\r
+                    +" "+values[2]\r
+                    +" "+values[3]\r
+                    +" "+values[4]\r
+            );\r
+\r
+            /*[0]---心率;[1]---血压高压;[2]---血压低压;[3]---血氧;[4]---佩戴检测(1--脱手,2--上手);*/\r
+            Log.d("Demo","Weared= "+values[4]+" ,BPH= "+values[1]+" ,BPL= "+values[2]+" ,PPG= "+values[0]+", spo2= "+ values[3]);\r
+\r
+\r
+            if (values[4]==2 && values[0]> 0 ){\r
+                //结果检测出来后停止检测\r
+                mSensorManager.unregisterListener(sensorEventListener);\r
+            }\r
+        }\r
+\r
+        @Override\r
+        public void onAccuracyChanged(Sensor sensor, int i) {\r
+            Log.e(TAG, "onAccuracyChanged() is called "+sensor.getName()+" accuracy="+i);\r
+        }\r
+    };\r
     public void check_ppg(){\r
+        int ppgDevType=ICJniUtils.isPPGavailable();\r
+        //大于 TYPE NONE 表示有心率传感器\r
+        if (ppgDevType > ICJniUtils.PPG_EGC_SensorType.PPG_EGC_TYPE_NONE.ordinal()){\r
+            if(ppgDevType == ICJniUtils.PPG_EGC_SensorType.PPG_EGC_TYPE_IC66.ordinal()){\r
 \r
+                mSensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);\r
+                mHeartRate = mSensorManager.getDefaultSensor(Sensor.TYPE_HEART_RATE);\r
+                boolean ret = mSensorManager.registerListener(sensorEventListener, mHeartRate, SensorManager.SENSOR_DELAY_UI);\r
+                Log.e(TAG, "Heart Rate already opened ret :: " + ret);\r
+\r
+\r
+            }else{\r
+                if (ICJniUtils.isPPGStarted()==0){\r
+                    ICJniUtils.enablePPG();\r
+                }\r
+                boolean gotPPG=false;\r
+                while (gotPPG==false){\r
+                    //getPPG()函数必须先执行,否则其他数据都无法正确取出。\r
+                    int ppg=ICJniUtils.getPPG();\r
+                    int isweared=ICJniUtils.isWeared();\r
+\r
+                    /**\r
+                     * 佩戴且心率大于0 ,则认为数据测试完毕\r
+                     */\r
+\r
+                    if (isweared==1 &&  ppg > 0){\r
+                        Log.d("Demo"," PPG = "+ppg +" , isWeared="+ isweared+" , bph="+ICJniUtils.getHighBloodPressure()\r
+                        +", bpl = "+ICJniUtils.getLowBloodPressure()+", Spo2="+ICJniUtils.getSPO2());\r
+                    }\r
+\r
+                    try {\r
+                        Thread.sleep(1000);\r
+                    } catch (InterruptedException e) {\r
+                        e.printStackTrace();\r
+                    }\r
+\r
+                }\r
+\r
+                ICJniUtils.disablePPG();\r
+\r
+            }\r
+\r
+\r
+\r
+        }\r
 \r
 \r
 \r
 \r
     }\r
+    /********************PPG Demo End************************************/\r
+\r
+\r
+    /********************Temperature Demo Start * ***********************************/\r
 \r
     public void check_temp(){\r
 \r
@@ -204,7 +288,7 @@ public class MainActivity extends AppCompatActivity {
         }\r
 \r
 \r
-    }\r
+    }  /********************Temperature Demo End * ***********************************/\r
 \r
     public void send_at_to_onoff_simcard(Context context, boolean simon){\r
 \r
index f031856..bd9e762 100644 (file)
@@ -304,4 +304,3 @@ JNIEXPORT jint JNICALL Java_com_ic_jni_ICJniUtils_isTemperatureDevOpened
     return get_temp_open_status();\r
 \r
 }\r
-}
\ No newline at end of file
index a47a063..cc1eb4b 100644 (file)
Binary files a/app/src/main/libs/armeabi-v7a/libICJniUtils.so and b/app/src/main/libs/armeabi-v7a/libICJniUtils.so differ