From: snickersun Date: Tue, 17 Mar 2020 08:17:37 +0000 (+0800) Subject: 增加Q3F支持,添加心率,按键(power+back)和马达的测试。 X-Git-Url: http://git.snicker.com.cn/?a=commitdiff_plain;h=25ed5f31a06bb4155fc22d211199cb75e1b2b397;p=factoryMode.git 增加Q3F支持,添加心率,按键(power+back)和马达的测试。 --- diff --git a/app/src/main/java/com/ic/jni/ICJniUtils.java b/app/src/main/java/com/ic/jni/ICJniUtils.java new file mode 100644 index 0000000..997d234 --- /dev/null +++ b/app/src/main/java/com/ic/jni/ICJniUtils.java @@ -0,0 +1,60 @@ +package com.ic.jni; + +public class ICJniUtils { + + public ICJniUtils(){ + + } + static { + // build.gradle里面 android\defaultConfig\ndk\moduleName 的名称 + // Android.mk, LOCAL_MODULE 的名称 + System.loadLibrary("ICJniUtils"); + } + + /***************计步控制************************************/ + /*运行此函数清除 系统计步为0*/ + public static native int resetStepCount(); + + /*获取当前步数*/ + public static native int getStepCount(); + /*开启计步 不必判断返回值*/ + public static native int enablePedometer(); + /*停止计步 不必判断返回值*/ + public static native int disablePedometer(); + + /*检测计步当前是否开启 1开启,0 关闭*/ + public static native int isPedometerEnabled(); + + /*保存当前步数(getStepCount取得的值)到磁盘 不必判断返回值*/ + public static native int saveStepCount(); + + /*恢复保存时的步数数据,下次getStepCount会在恢复的值上增加 不必判断返回值*/ + public static native int recoverStepCount(); + + + /******心率,血压****************************************/ + /*检查 PPG硬件是否存在,返回 1 存在,0 不存在*/ + public static native int isPPGavailable(); + + /*开启心率血压检测*/ + public static native int enablePPG(); + + /*停止心率血压检测*/ + public static native int disablePPG(); + /*返回 心率值 每分钟跳动次数, 通过这个心率>0 判断是否已经有检测结果, + 有就可以直接通过getHighBloodPressure 和 getLowBloodPressure 获取血压高压低压值*/ + public static native int getPPG(); + /* 返回PPG 运行状态, 0 停止, 1,运行中*/ + public static native int isPPGStarted(); + /*返回是否佩戴 0 未佩戴,1 佩戴*/ + public static native int isWeared(); + + /*获取血压高压值*/ + public static native int getHighBloodPressure(); + + /*获取血压低压值*/ + public static native int getLowBloodPressure(); + + /*获取血氧值*/ + public static native int getSPO2(); +} diff --git a/app/src/main/java/mobile/miki/HeartRate.java b/app/src/main/java/mobile/miki/HeartRate.java index b8bfc22..da231ec 100644 --- a/app/src/main/java/mobile/miki/HeartRate.java +++ b/app/src/main/java/mobile/miki/HeartRate.java @@ -2,38 +2,92 @@ package mobile.miki; import android.content.Intent; import android.os.Bundle; +import android.os.Handler; +import android.os.Message; import android.preference.PreferenceManager; import android.util.Log; import android.view.View; +import android.widget.TextView; + +import com.ic.jni.ICJniUtils; + +import java.util.Timer; +import java.util.TimerTask; import mobile.miki.mainui.ButtonViewTwo; import mobile.miki.mainui.TestMainActivity; +import mobile.miki.util.Logger; public class HeartRate extends BaseActivity implements View.OnClickListener { private ButtonViewTwo buttonView; boolean running; - static { - System.loadLibrary("heartrate_test_jni"); - } - public static native int get_heartrate(); + Timer mTimer=null; + private TextView tv_isweared; + private TextView tv_ppg; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.heartrate_layout); initView(); - int heartrate = get_heartrate(); - Log.i("dxc", "heartrate: " + heartrate); + int heartrate = ICJniUtils.isPPGavailable(); + Log.i("dxc", "heartrate available : " + heartrate); + + mTimer=new Timer(); + TimerTask HRTimerTask=new TimerTask() { + @Override + public void run() { + mhandler.sendEmptyMessage(0); + } + }; + mTimer.schedule(HRTimerTask,0,1000L); + } + + Handler mhandler=new Handler(new Handler.Callback() { + @Override + public boolean handleMessage(Message message) { + + if (ICJniUtils.isPPGStarted()==0){ + ICJniUtils.enablePPG(); + + } + int ppg=ICJniUtils.getPPG(); + int weared=ICJniUtils.isWeared(); + + + String wearedstr=String.valueOf(weared); + String ppgstr=String.valueOf(ppg); + tv_isweared.setText(wearedstr); + tv_ppg.setText(ppgstr); + Logger.d("Weared:"+wearedstr+" PPG:"+ppgstr); + return false; + } + }); + @Override + protected void onDestroy() { + super.onDestroy(); + ICJniUtils.disablePPG(); + if(mTimer!=null) { + + mTimer.cancel(); + mTimer=null; + } } + + private void initView() { buttonView = (ButtonViewTwo) findViewById(R.id.btn_set); buttonView.btn_left.setOnClickListener(this); buttonView.btn_right.setOnClickListener(this); buttonView.setSuccessColor(); buttonView.btn_left.setClickable(true); + + tv_isweared=(TextView)findViewById(R.id.tv_weared_value); + tv_ppg=(TextView)findViewById(R.id.tv_ppg_value); + } @Override @@ -48,7 +102,7 @@ public class HeartRate extends BaseActivity implements View.OnClickListener { if (!running) { startActivity(intent1); } else { - startActivity(intent1); + startActivity(intent); } PreferenceManager.getDefaultSharedPreferences(getApplicationContext()).edit().putString("heartrate", "true") .commit(); @@ -58,7 +112,7 @@ public class HeartRate extends BaseActivity implements View.OnClickListener { if (!running) { startActivity(intent1); } else { - startActivity(intent1); + startActivity(intent); } PreferenceManager.getDefaultSharedPreferences(getApplicationContext()).edit().putString("heartrate", "false") .commit(); diff --git a/app/src/main/java/mobile/miki/KeysTestActivity.java b/app/src/main/java/mobile/miki/KeysTestActivity.java index 9a74fe1..a221074 100644 --- a/app/src/main/java/mobile/miki/KeysTestActivity.java +++ b/app/src/main/java/mobile/miki/KeysTestActivity.java @@ -74,6 +74,8 @@ public class KeysTestActivity extends BaseActivity implements , new Key(KEYCODE_CUSTOM_RIGHT, "Right")}; private Key[] keyMapsLieBao = {new Key(KeyEvent.KEYCODE_POWER, "Power") , new Key(KeyEvent.KEYCODE_YEN, "Key 1")}; + private Key[] keyMapsQ3F = {new Key(KeyEvent.KEYCODE_POWER, "Power") + , new Key(KeyEvent.KEYCODE_BACK, "Back")}; public KeysTestActivity() { // TAG = "KeysTestActivity"; @@ -128,6 +130,8 @@ public class KeysTestActivity extends BaseActivity implements mKeyMapList.addAll(Arrays.asList(keyMapsLieBao)); } else if (FTUtils.isSugar()) { mKeyMapList.addAll(Arrays.asList(keyMapsSUGAR)); + } else if (FTUtils.isQ3F()) { + mKeyMapList.addAll(Arrays.asList(keyMapsQ3F)); } else { mKeyMapList.addAll(Arrays.asList(keyMapsDefault)); } diff --git a/app/src/main/java/mobile/miki/mainui/ModeSelectActivity.java b/app/src/main/java/mobile/miki/mainui/ModeSelectActivity.java index e9e7b04..6dd2692 100644 --- a/app/src/main/java/mobile/miki/mainui/ModeSelectActivity.java +++ b/app/src/main/java/mobile/miki/mainui/ModeSelectActivity.java @@ -25,6 +25,7 @@ public class ModeSelectActivity extends Activity implements OnClickListener { engineer_button = (Button) findViewById(R.id.engineer_button); more_button = (Button) findViewById(R.id.more_button); unbound_button=(Button)findViewById(R.id.unbound_button); + unbound_button.setVisibility(View.GONE); engineer_button.setOnClickListener(this); more_button.setOnClickListener(this); unbound_button.setOnClickListener(this); diff --git a/app/src/main/java/mobile/miki/mainui/TestMainActivity.java b/app/src/main/java/mobile/miki/mainui/TestMainActivity.java index 62a1b61..31ba878 100644 --- a/app/src/main/java/mobile/miki/mainui/TestMainActivity.java +++ b/app/src/main/java/mobile/miki/mainui/TestMainActivity.java @@ -319,6 +319,14 @@ public class TestMainActivity extends BaseActivity implements OnClickListener, A testResultList.add("bt"); testResultList.add("dsp"); testResultList.add("heartrate"); + } else if (FTUtils.isQ3F()){ + + list.add(getString(R.string.test_keypad)); + list.add(getString(R.string.shakeTest)); + list.add(getString(R.string.heartrate)); + testResultList.add("keys"); + testResultList.add("vibrator"); + testResultList.add("heartrate"); } stateArr = new String[testResultList.size()]; return list; diff --git a/app/src/main/java/mobile/miki/mainui/TestMainList.java b/app/src/main/java/mobile/miki/mainui/TestMainList.java index 12a5e88..6248cea 100644 --- a/app/src/main/java/mobile/miki/mainui/TestMainList.java +++ b/app/src/main/java/mobile/miki/mainui/TestMainList.java @@ -66,6 +66,12 @@ public class TestMainList extends BaseActivity implements OnClickListener { flagPosition.setVisibility(View.GONE); } + if(FTUtils.doPCBATest()){ + pcbatest.setVisibility(View.VISIBLE); + }else{ + pcbatest.setVisibility(View.GONE); + } + pcbatest.setOnClickListener(this); moblietest.setOnClickListener(this); engineermodetest.setOnClickListener(this); diff --git a/app/src/main/java/mobile/miki/util/FTUtils.java b/app/src/main/java/mobile/miki/util/FTUtils.java index 1a34be8..9f909af 100644 --- a/app/src/main/java/mobile/miki/util/FTUtils.java +++ b/app/src/main/java/mobile/miki/util/FTUtils.java @@ -39,7 +39,9 @@ public class FTUtils { return getDISPLAY().contains("W501CS") || getMODEL().contains("SUGAR"); } - + public static boolean doPCBATest(){ + return false; + } public static void SetPreferences(Context paramContext, int paramInt, Long time) { SharedPreferences sharedPreferences = paramContext.getSharedPreferences("AgingTest", 0); @@ -194,4 +196,13 @@ public class FTUtils { } return false; } + + + public static boolean isQ3F(){ + + if (getMODEL().contains("C41-QL02")) { + return true; + } + return false; + } } diff --git a/app/src/main/res/layout/dig_layout_testlist.xml b/app/src/main/res/layout/dig_layout_testlist.xml index c54b7d9..2cf5b72 100644 --- a/app/src/main/res/layout/dig_layout_testlist.xml +++ b/app/src/main/res/layout/dig_layout_testlist.xml @@ -1,5 +1,6 @@ @@ -14,7 +15,7 @@ android:id="@+id/Factory_test_title" style="@style/category_title_style" android:layout_width="match_parent" - android:layout_height="40dp" + android:layout_height="60dp" android:gravity="center|center_horizontal" android:text="@string/benji" android:textSize="22sp" /> @@ -28,7 +29,8 @@ android:layout_weight="1" android:background="@drawable/listpress" android:gravity="center_vertical" - android:orientation="vertical"> + android:orientation="vertical" + tools:visibility="gone"> + + + + + + + + + + + + + + + + + +