Commit 7614348f by chengxiuhong

test main

parent 0cd68f24
...@@ -41,7 +41,7 @@ ...@@ -41,7 +41,7 @@
android:name="com.oo.eye.activity.BeforeEyeTestActivity" android:name="com.oo.eye.activity.BeforeEyeTestActivity"
android:screenOrientation="landscape" /> android:screenOrientation="landscape" />
<activity <activity
android:name="com.oo.eye.activity.EyeTestActivityF" android:name="com.oo.eye.activity.EyeTestActivity"
android:screenOrientation="landscape" /> android:screenOrientation="landscape" />
<activity <activity
android:name="com.oo.eye.activity.AfterEyeTestActivity" android:name="com.oo.eye.activity.AfterEyeTestActivity"
......
...@@ -17,7 +17,6 @@ import com.app.baselibrary.commonUtil.NibiruUtils; ...@@ -17,7 +17,6 @@ import com.app.baselibrary.commonUtil.NibiruUtils;
import com.oo.eye.R; import com.oo.eye.R;
import com.oo.eye.R2; import com.oo.eye.R2;
import com.oo.eye.manager.DaemonSender; import com.oo.eye.manager.DaemonSender;
import com.oo.eye.manager.OOMsg;
import butterknife.BindView; import butterknife.BindView;
import butterknife.ButterKnife; import butterknife.ButterKnife;
...@@ -78,7 +77,7 @@ public class BeforeEyeTestActivity extends BaseActivity { ...@@ -78,7 +77,7 @@ public class BeforeEyeTestActivity extends BaseActivity {
mLlBeforeEyePrepare1.setVisibility(View.VISIBLE); mLlBeforeEyePrepare1.setVisibility(View.VISIBLE);
speak("调节测视距离,请等待"); speak("调节测视距离,请等待");
// DaemonSender.startEyeTestMotor(this); // DaemonSender.startEyeTestMotor(this);
Intent intent2 = new Intent(BeforeEyeTestActivity.this,EyeTestActivityF.class); Intent intent2 = new Intent(BeforeEyeTestActivity.this,EyeTestActivity.class);
startActivity(intent2); startActivity(intent2);
finish(); finish();
} }
......
package com.oo.eye.activity; package com.oo.eye.activity;
import android.os.Bundle; import android.os.Bundle;
import android.view.View;
import android.widget.RadioButton; import android.widget.RadioButton;
import android.widget.RadioGroup; import android.widget.RadioGroup;
import android.widget.RelativeLayout;
import com.app.baselibrary.base.common.BaseActivity; import com.app.baselibrary.base.common.BaseActivity;
import com.app.baselibrary.commonUtil.PreferencesUtils; import com.app.baselibrary.commonUtil.PreferencesUtils;
...@@ -34,6 +36,8 @@ public class EyeSettingActivity extends BaseActivity { ...@@ -34,6 +36,8 @@ public class EyeSettingActivity extends BaseActivity {
RadioGroup mGroupReport; RadioGroup mGroupReport;
@BindView(R.id.group_help) @BindView(R.id.group_help)
RadioGroup mGroupHelp; RadioGroup mGroupHelp;
@BindView(R.id.about_lay_show)
RelativeLayout mAboutLayShow;
private int selectId; private int selectId;
...@@ -76,5 +80,6 @@ public class EyeSettingActivity extends BaseActivity { ...@@ -76,5 +80,6 @@ public class EyeSettingActivity extends BaseActivity {
@OnClick(R.id.about_lay) @OnClick(R.id.about_lay)
public void onClick() { public void onClick() {
mAboutLayShow.setVisibility(View.VISIBLE);
} }
} }
//package com.oo.eye.activity; package com.oo.eye.activity;
//
//import android.content.Intent; import android.content.Intent;
//import android.os.Bundle; import android.os.Bundle;
//import android.os.CountDownTimer; import android.os.CountDownTimer;
//import android.view.KeyEvent; import android.view.KeyEvent;
//import android.view.View; import android.view.View;
//import android.widget.ImageView; import android.widget.ImageView;
//import android.widget.RelativeLayout; import android.widget.RelativeLayout;
//import android.widget.TextView; import android.widget.TextView;
//
//import com.app.baselibrary.base.common.BaseActivity; import com.app.baselibrary.base.common.BaseActivity;
//import com.app.baselibrary.commonUtil.LogUtil; import com.app.baselibrary.commonUtil.LogUtil;
//import com.app.baselibrary.commonUtil.NibiruUtils; import com.app.baselibrary.commonUtil.NibiruUtils;
//import com.app.baselibrary.commonUtil.PreferencesUtils; import com.app.baselibrary.commonUtil.PreferencesUtils;
//import com.oo.eye.EyeConfig; import com.oo.eye.EyeConfig;
//import com.oo.eye.R; import com.oo.eye.R;
//import com.oo.eye.R2; import com.oo.eye.R2;
//import com.oo.eye.bean.Eye; import com.oo.eye.bean.Eye;
//import com.oo.eye.bean.Eye.E; import com.oo.eye.bean.Eye.E;
//import com.oo.eye.bean.EyeHistroyBean; import com.oo.eye.bean.EyeHistroyBean;
//import com.oo.eye.manager.DaemonSender; import com.oo.eye.manager.DaemonSender;
//
//import java.util.ArrayList; import java.util.ArrayList;
//import java.util.LinkedHashMap; import java.util.LinkedHashMap;
//import java.util.List; import java.util.List;
//import java.util.Map; import java.util.Random;
//import java.util.Random;
// import butterknife.BindView;
//import butterknife.BindView; import butterknife.ButterKnife;
//import butterknife.ButterKnife; import butterknife.OnClick;
//import butterknife.OnClick;
// import static com.oo.eye.bean.Eye.getLineSumByIndex;
//import static com.oo.eye.bean.Eye.getLineSumByIndex;
// /**
///** */
// */
// public class EyeTestActivity extends BaseActivity {
//public class EyeTestActivity extends BaseActivity {
// static final int TOP = 0;
// static final int TOP = 0; static final int RIGHT = 1;
// static final int RIGHT = 1; static final int BOTTOM = 2;
// static final int BOTTOM = 2; static final int LEFT = 3;
// static final int LEFT = 3; static final int LEFT_TOP = 4;
// private E mSelectE; static final int RIGHT_TOP = 5;
// static final int LEFT_BOTTOM = 6;
// @BindView(R2.id.rl_eye_test_center_time1) static final int RIGHT_BOTTOM= 7;
// RelativeLayout timeLayout1; private E mSelectE;
// @BindView(R2.id.tv_eye_test_center_time1)
// TextView timeText1; @BindView(R2.id.rl_eye_test_center_time1)
// RelativeLayout timeLayout1;
// @BindView(R2.id.rl_eye_test_center_e1) @BindView(R2.id.tv_eye_test_center_time1)
// RelativeLayout eLayout1; TextView timeText1;
//
// @BindView(R2.id.iv_eye_test_center_e1) @BindView(R2.id.rl_eye_test_center_e1)
// ImageView eImageView1; RelativeLayout eLayout1;
//
// @BindView(R2.id.view_eye_test_mask1) @BindView(R2.id.iv_eye_test_center_e1)
// View maskView1; ImageView eImageView1;
//
// @BindView(R2.id.view_eye_test_mask2) @BindView(R2.id.view_eye_test_mask1)
// View maskView2; View maskView1;
//
// @BindView(R2.id.rl_eye_test_center_time2) @BindView(R2.id.tv_eye_vision1)
// RelativeLayout timeLayout2; TextView eyeVision1;
// @BindView(R2.id.tv_eye_test_center_time2) @BindView(R2.id.tv_eye_vision_count1)
// TextView timeText2; TextView count1;
// @BindView(R2.id.tv_eye_vision_allow1)
// @BindView(R2.id.rl_eye_test_center_e2) TextView allow1;
// RelativeLayout eLayout2; @BindView(R2.id.tv_eye_vision_right1)
// TextView right1;
// @BindView(R2.id.iv_eye_test_center_e2) @BindView(R2.id.tv_eye_vision_error1)
// ImageView eImageView2; TextView error1;
//
// @BindView(R2.id.tv_eye_vision1) private int test_dis = 0;
// TextView eyeVision1;
// @BindView(R2.id.tv_eye_vision_count1) private ArrayList<ArrayList<E>> mList = new ArrayList<>();
// TextView count1; private int mLocation;
// @BindView(R2.id.tv_eye_vision_allow1) private int mLevelIndex = -1;
// TextView allow1; private LinkedHashMap<Integer, List<E>> mCollect = new LinkedHashMap<>();
// @BindView(R2.id.tv_eye_vision_right1) private EyeHistroyBean mHistroyBean;
// TextView right1; //是否是右眼训练
// @BindView(R2.id.tv_eye_vision_error1) private boolean isSecondTest;
// TextView error1; private double mLeftEye = 5.0;
// private int mLeftLine = 0;
// @BindView(R2.id.tv_eye_vision2) private double mRightEye = 5.0;
// TextView eyeVision2; private int mRightLine = 0;
// @BindView(R2.id.tv_eye_vision_count2) private long mLastOnKeyTime = -1;
// TextView count2; private boolean isTestSuccess = false;
// @BindView(R2.id.tv_eye_vision_allow2) private boolean isStartTest = false;
// TextView allow2;
// @BindView(R2.id.tv_eye_vision_right2) private long totalTime = 5000;
// TextView right2; private long intervalTime = 1000;
// @BindView(R2.id.tv_eye_vision_error2)
// TextView error2; @Override
// protected void onResume() {
// private int test_dis = 0; super.onResume();
// }
// private ArrayList<ArrayList<E>> mList = new ArrayList<>();
// private int mLocation; @Override
// private int mLevelIndex = -1; protected void onPause() {
// private LinkedHashMap<Integer, List<E>> mCollect = new LinkedHashMap<>(); super.onPause();
// private EyeHistroyBean mHistroyBean; }
// //是否是右眼训练
// private boolean isSecondTest; @Override
// private double mLeftEye = 5.0; protected int getLayoutId() {
// private int mLeftLine = 0; return R.layout.activity_eye_test;
// private double mRightEye = 5.0; }
// private int mRightLine = 0;
// private long mLastOnKeyTime = -1; @Override
// private boolean isTestSuccess = false; protected void init() {
// private boolean isStartTest = false; NibiruUtils.switchVR(true);
// DaemonSender.startEyeTest(this);
// private long totalTime = 5000; speak("视力测试马上开启");
// private long intervalTime = 1000; initialize();
// prepareQueue();
// @Override }
// protected void onResume() {
// super.onResume(); private void initialize() {
// } mList.clear();
// for (int i = 0; i < 14; i++) {
// @Override mList.add(initLineList(i));
// protected void onPause() { }
// super.onPause(); }
// }
// private void prepareQueue() {
// @Override mHistroyBean = EyeConfig.getInstance().getCuurentBean();
// protected int getLayoutId() { continueTest();
// return R.layout.activity_eye_test; }
// }
// private void continueTest() {
// @Override if (!isStartTest) {
// protected void init() { isStartTest = true;
// NibiruUtils.switchVR(true); resetView(true);
// DaemonSender.startEyeTest(this); }
// speak("视力测试马上开启"); }
// initialize();
// prepareQueue(); /**
// } * 开始测试
// *
// private void initialize() { * @param isNewTest true 代表测试的第一只眼 代表左眼 false代表测量另一只眼 右眼
// mList.clear(); */
// for (int i = 0; i < 14; i++) { private void resetView(final boolean isNewTest) {
// mList.add(initLineList(i)); mLevelIndex = -1;
// } isSecondTest = !isNewTest;
// }
// String eye = isNewTest ? "右" : "左";
// private void prepareQueue() {
// mHistroyBean = EyeConfig.getInstance().getCuurentBean(); if (isNewTest) {
// continueTest(); if (mHistroyBean != null) {
// } mLeftEye = mHistroyBean.getLeft_eye();
// mRightEye = mHistroyBean.getRight_eye();
// private void continueTest() { }
// if (!isStartTest) { }
// isStartTest = true; timeLayout1.setVisibility(View.VISIBLE);
// resetView(true); eLayout1.setVisibility(View.GONE);
// } maskView1.setVisibility(View.GONE);
// } new CountDownTimer(totalTime, intervalTime) {
// @Override
// /** public void onTick(long millisUntilFinished) {
// * 开始测试 long time = millisUntilFinished / 1000;
// * timeText1.setText(time + "");
// * @param isNewTest true 代表测试的第一只眼 代表左眼 false代表测量另一只眼 右眼 float f = millisUntilFinished * 1.0f / totalTime;
// */ if (isSecondTest) {
// private void resetView(final boolean isNewTest) { maskView1.setAlpha(1 - f);
// mLevelIndex = -1; maskView1.setVisibility(View.VISIBLE);
// isSecondTest = !isNewTest; } else {
// maskView1.setVisibility(View.GONE);
// String eye = isNewTest ? "右" : "左"; }
// LogUtil.e("onTick");
// if (isNewTest) { }
// if (mHistroyBean != null) {
// mLeftEye = mHistroyBean.getLeft_eye(); @Override
// mRightEye = mHistroyBean.getRight_eye(); public void onFinish() {
// } LogUtil.e("onFinish");
// } timeLayout1.setVisibility(View.GONE);
// timeLayout1.setVisibility(View.VISIBLE); eLayout1.setVisibility(View.VISIBLE);
// timeLayout2.setVisibility(View.VISIBLE); double e = 5.0;
// eLayout1.setVisibility(View.GONE); //如果是左眼次测试
// eLayout2.setVisibility(View.GONE); if (isNewTest) {
// maskView1.setVisibility(View.GONE); if (mHistroyBean != null) {
// maskView2.setVisibility(View.GONE); e = mHistroyBean.getLeft_eye();
// new CountDownTimer(totalTime, intervalTime) { }
// @Override maskView1.setVisibility(View.GONE);
// public void onTick(long millisUntilFinished) { } else {
// long time = millisUntilFinished / 1000; //右眼测试
// timeText1.setText(time + ""); if (isSecondTest) {
// timeText2.setText(time + ""); if (mHistroyBean != null) {
// float f = millisUntilFinished * 1.0f / totalTime; e = mHistroyBean.getRight_eye();
// if (isSecondTest) { }
// maskView1.setAlpha(1 - f); }
// maskView1.setVisibility(View.VISIBLE); maskView1.setAlpha(1);
// maskView2.setVisibility(View.GONE); maskView1.setVisibility(View.VISIBLE);
// }
// } else { mLevelIndex = Eye.getIndexByValue(e, true) - 1;
// maskView2.setAlpha(1 - f); next(true);
// maskView1.setVisibility(View.GONE); }
// maskView2.setVisibility(View.VISIBLE); }.start();
// } speak("请遮住您的" + eye + "眼");
// LogUtil.e("onTick"); mCollect.clear();
// } }
//
// @Override private void speak(String text) {
// public void onFinish() { DaemonSender.sendDBTTS(this, text);
// LogUtil.e("onFinish"); }
// timeLayout1.setVisibility(View.GONE);
// timeLayout2.setVisibility(View.GONE); /**
// eLayout1.setVisibility(View.VISIBLE); * 描画E字
// eLayout2.setVisibility(View.VISIBLE); *
// double e = 5.0; * @param e
// //如果是左眼次测试 */
// if (isNewTest) { private void drewE(E e) {
// if (mHistroyBean != null) { //视力等级
// e = mHistroyBean.getLeft_eye(); float level = e.getLevel();
// } //视标边长
// maskView1.setVisibility(View.GONE); int px = Eye.getDip(this, level);
// maskView2.setAlpha(1); // RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(px, px);
// maskView2.setVisibility(View.VISIBLE); // eImageView1.setLayoutParams(params);
// } else { // eImageView2.setLayoutParams(params);
// //右眼测试 //视标方向
// if (isSecondTest) { int resId;
// if (mHistroyBean != null) { switch (e.getDirect()) {
// e = mHistroyBean.getRight_eye(); default:
// } case TOP:
// } resId = R.drawable.c_top;
// maskView1.setAlpha(1); break;
// maskView1.setVisibility(View.VISIBLE); case RIGHT:
// maskView2.setVisibility(View.GONE); resId = R.drawable.c_right;
// } break;
// mLevelIndex = Eye.getIndexByValue(e, true) - 1; case BOTTOM:
// next(true); resId = R.drawable.c_bottom;
// } break;
// }.start(); case LEFT:
// speak("请遮住您的" + eye + "眼"); resId = R.drawable.c_left;
// mCollect.clear(); break;
// } case LEFT_TOP:
// resId = R.drawable.c_left_top;
// private void speak(String text) { break;
// DaemonSender.sendDBTTS(this, text); case RIGHT_TOP:
// } resId = R.drawable.c_right_top;
// break;
// /** case LEFT_BOTTOM:
// * 描画E字 resId = R.drawable.c_left_bottom;
// * break;
// * @param e case RIGHT_BOTTOM:
// */ resId = R.drawable.c_right_bottom;
// private void drewE(E e) { break;
// //视力等级 }
// float level = e.getLevel(); eImageView1.setImageResource(resId);
// //视标边长 }
// int px = Eye.getDip(this, level);
//// RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(px, px); /**
//// eImageView1.setLayoutParams(params); * 随机生成每一行的视标E
//// eImageView2.setLayoutParams(params); *
// //视标方向 * @param index 第几行
// int resId; * @return list
// switch (e.getDirect()) { */
// default: private ArrayList<E> initLineList(int index) {
// case TOP: float level = Eye.getLevelSizeByIndex(index);
// resId = R.drawable.e_up; int sum = getLineSumByIndex(index);
// break; //随机数生成方向
// case RIGHT: Random random = new Random();
// resId = R.drawable.e_right; E e;
// break; ArrayList<E> list = new ArrayList<>();
// case BOTTOM: int direct = getFirstDirect(random, index);
// resId = R.drawable.e_down; for (int i = 0; i < sum; i++) {
// break; if (i > 0) {
// case LEFT: direct = getRandomDirect(list, direct, sum);
// resId = R.drawable.e_left; }
// break; e = new E(i, direct, level);
// } list.add(e);
// eImageView1.setImageResource(resId); }
// eImageView2.setImageResource(resId); return list;
// } }
//
// /** /**
// * 随机生成每一行的视标E * 获取第一个E;
// * *
// * @param index 第几行 * @param random
// * @return list * @param index
// */ * @return
// private ArrayList<E> initLineList(int index) { */
// float level = Eye.getLevelSizeByIndex(index); private int getFirstDirect(Random random, int index) {
// int sum = getLineSumByIndex(index); int direct = random.nextInt(4);
// //随机数生成方向 if (index > 0) {
// Random random = new Random(); if (mList.get(index - 1).get(0).getDirect() == direct)
// E e; direct = getFirstDirect(random, index);
// ArrayList<E> list = new ArrayList<>(); }
// int direct = getFirstDirect(random, index); return direct;
// for (int i = 0; i < sum; i++) { }
// if (i > 0) {
// direct = getRandomDirect(list, direct, sum); /**
// } * 获取下一个E的方向的判断;
// e = new E(i, direct, level); *
// list.add(e); * @param list
// } * @param direct
// return list; * @param sum
// } * @return
// */
// /** private int getRandomDirect(ArrayList<E> list, int direct, int sum) {
// * 获取第一个E; int lastDirect = direct;
// * direct = randomDirect(direct);
// * @param random int num = sum / 2;
// * @param index if (sum % 2 == 0 && sum / 2 > 1) {
// * @return num = sum / 2 - 1;
// */ }
// private int getFirstDirect(Random random, int index) { if (getEDirectorNum(list, direct) >= num) {
// int direct = random.nextInt(4); direct = getRandomDirect(list, lastDirect, sum);
// if (index > 0) { }
// if (mList.get(index - 1).get(0).getDirect() == direct) return direct;
// direct = getFirstDirect(random, index); }
// }
// return direct; /**
// } * 获取该行出现的形同方向的E的个数;
// *
// /** * @param list
// * 获取下一个E的方向的判断; * @param direct
// * * @return
// * @param list */
// * @param direct private int getEDirectorNum(ArrayList<E> list, int direct) {
// * @param sum int num = 0;
// * @return if (list == null || list.size() == 0)
// */ return num;
// private int getRandomDirect(ArrayList<E> list, int direct, int sum) { for (E e :
// int lastDirect = direct; list) {
// direct = randomDirect(direct); if (e.getDirect() == direct)
// int num = sum / 2; num++;
// if (sum % 2 == 0 && sum / 2 > 1) { }
// num = sum / 2 - 1; return num;
// } }
// if (getEDirectorNum(list, direct) >= num) {
// direct = getRandomDirect(list, lastDirect, sum);
// } /**
// return direct; * 相邻的两个不能是同一个方向
// } *
// * @param lastDirect 上一次的方向
// /** * @return 新的方向
// * 获取该行出现的形同方向的E的个数; */
// * private int randomDirect(int lastDirect) {
// * @param list //随机数生成方向
// * @param direct Random random = new Random();
// * @return int newDirect = random.nextInt(4);
// */ //相邻的不能一样
// private int getEDirectorNum(ArrayList<E> list, int direct) { while (lastDirect == newDirect) {
// int num = 0; newDirect = random.nextInt(4);
// if (list == null || list.size() == 0) }
// return num;
// for (E e : return newDirect;
// list) { }
// if (e.getDirect() == direct)
// num++;
// } /**
// return num; * 下一个测试
// } */
// private void next(boolean isNextLine) {
// if (isNextLine) {
// /** mLevelIndex++;
// * 相邻的两个不能是同一个方向 mLocation = 0;
// * eyeVision1.setText("" + Eye.getLevelByIndex(mLevelIndex, true));
// * @param lastDirect 上一次的方向 count1.setText("");
// * @return 新的方向 allow1.setText("");
// */ right1.setText("");
// private int randomDirect(int lastDirect) { error1.setText("");
// //随机数生成方向 } else {
// Random random = new Random(); mLocation++;
// int newDirect = random.nextInt(4); }
// //相邻的不能一样
// while (lastDirect == newDirect) { mSelectE = mList.get(mLevelIndex).get(mLocation);
// newDirect = random.nextInt(4); drewE(mSelectE);
// } }
//
// return newDirect; /**
// } * 选择的方向
// *
// * @param direct
// /** */
// * 下一个测试 private void userChoose(int direct) {
// */ LogUtil.e("direct:" + direct);
// private void next(boolean isNextLine) { LogUtil.e("mLevelIndex:" + mLevelIndex);
// if (isNextLine) { //获取当前行答过的e
// mLevelIndex++; List<E> list = mCollect.get(mLevelIndex);
// mLocation = 0; if (null == list || list.size() == 0) {
// eyeVision1.setText("" + Eye.getLevelByIndex(mLevelIndex, true)); list = new ArrayList<>();
// eyeVision2.setText("" + Eye.getLevelByIndex(mLevelIndex, true)); }
// count1.setText(""); mSelectE.setUserChoose(direct);
// count2.setText(""); list.add(mSelectE);
// allow1.setText(""); mCollect.put(mLevelIndex, list);
// allow2.setText(""); judge();
// right1.setText(""); // int verifyErrorCount = 0;
// right2.setText(""); // //获取每行有多少个e
// error1.setText(""); // int lineSum = getLineSumByIndex(mLevelIndex);
// error2.setText(""); // //获取每行答对几个e
// } else { // int leastAnswerCount = Eye.getLeastAnswerCount(mLevelIndex);
// mLocation++; // LogUtil.e("leastAnswerCount:"+leastAnswerCount);
// } // //获取当前行答过的e
// // List<E> list = mCollect.get(mLevelIndex);
// mSelectE = mList.get(mLevelIndex).get(mLocation); // if (null == list || list.size() == 0) {
// drewE(mSelectE); // list = new ArrayList<>();
// } // }
// // mSelectE.setUserChoose(direct);
// /** // list.add(mSelectE);
// * 选择的方向 //
// * // int rightAnswerCount = 0;
// * @param direct // for (E e : list) {
// */ // if (e.isCorrect()) {
// private void userChoose(int direct) { // rightAnswerCount++;
// LogUtil.e("direct:" + direct); // }
// LogUtil.e("mLevelIndex:" + mLevelIndex); // }
// //获取当前行答过的e // LogUtil.e("rightAnswerCount:"+rightAnswerCount);
// List<E> list = mCollect.get(mLevelIndex); // //当前行答错的数
// if (null == list || list.size() == 0) { // int errorCount = list.size() - rightAnswerCount;
// list = new ArrayList<>(); // LogUtil.e("errorCount:"+errorCount);
// } // //判断是否满足答对的要求
// mSelectE.setUserChoose(direct); // boolean isNextLine = rightAnswerCount >= leastAnswerCount;
// list.add(mSelectE); // LogUtil.e("isNextLine:"+isNextLine);
// mCollect.put(mLevelIndex, list); // mCollect.put(mLevelIndex, list);
// judge(); //
//// int verifyErrorCount = 0; // if(isNextLine){
//// //获取每行有多少个e // if(mLevelIndex == 13){
//// int lineSum = getLineSumByIndex(mLevelIndex); // showResult();
//// //获取每行答对几个e // return;
//// int leastAnswerCount = Eye.getLeastAnswerCount(mLevelIndex); // }else {
//// LogUtil.e("leastAnswerCount:"+leastAnswerCount); // List<E> nextList = mCollect.get(mLevelIndex + 1);
//// //获取当前行答过的e // if(nextList != null && nextList.size() > 0){
//// List<E> list = mCollect.get(mLevelIndex); // showResult();
//// if (null == list || list.size() == 0) { // return;
//// list = new ArrayList<>(); // }
//// } // }
//// mSelectE.setUserChoose(direct); // }
//// list.add(mSelectE); //
//// // //防止出现-1的现象;
//// int rightAnswerCount = 0; // if (lineSum - leastAnswerCount > 0) {
//// for (E e : list) { // verifyErrorCount = lineSum - leastAnswerCount;
//// if (e.isCorrect()) { // } else {
//// rightAnswerCount++; // verifyErrorCount = 0;
//// } // }
//// } // //必须答对一半才往下走一行的
//// LogUtil.e("rightAnswerCount:"+rightAnswerCount); // //如果错误次数超过一半 (默认位置时上一行没有数据时候)回退一行
//// //当前行答错的数 // if (errorCount > verifyErrorCount) {
//// int errorCount = list.size() - rightAnswerCount; // //如果上一行数据不为空 结束测试
//// LogUtil.e("errorCount:"+errorCount); // if (mLevelIndex == 0 || (mCollect.containsKey(mLevelIndex - 1) &&
//// //判断是否满足答对的要求 // mCollect.get(mLevelIndex - 1) != null && mCollect.get(mLevelIndex - 1).size() > 0)) {
//// boolean isNextLine = rightAnswerCount >= leastAnswerCount; // if(isSecondTest){
//// LogUtil.e("isNextLine:"+isNextLine); // mRightLine = leastAnswerCount;
//// mCollect.put(mLevelIndex, list); // }else{
//// // mLeftLine = leastAnswerCount;
//// if(isNextLine){ // }
//// if(mLevelIndex == 13){ // showResult();
//// showResult(); // return;
//// return; // }else {
//// }else { // backLastLine();
//// List<E> nextList = mCollect.get(mLevelIndex + 1); // return;
//// if(nextList != null && nextList.size() > 0){ // }
//// showResult(); // }
//// return; // next(isNextLine);
//// } }
//// }
//// } private void judge() {
//// int verifyErrorCount = 0;
//// //防止出现-1的现象; //获取每行有多少个e
//// if (lineSum - leastAnswerCount > 0) { int lineSum = getLineSumByIndex(mLevelIndex);
//// verifyErrorCount = lineSum - leastAnswerCount; //获取每行答对几个e
//// } else { int leastAnswerCount = Eye.getLeastAnswerCount(mLevelIndex);
//// verifyErrorCount = 0; //获取当前行答过的e
//// } List<E> list = mCollect.get(mLevelIndex);
//// //必须答对一半才往下走一行的 int rightAnswerCount = 0;
//// //如果错误次数超过一半 (默认位置时上一行没有数据时候)回退一行 for (E e : list) {
//// if (errorCount > verifyErrorCount) { if (e.isCorrect()) {
//// //如果上一行数据不为空 结束测试 rightAnswerCount++;
//// if (mLevelIndex == 0 || (mCollect.containsKey(mLevelIndex - 1) && }
//// mCollect.get(mLevelIndex - 1) != null && mCollect.get(mLevelIndex - 1).size() > 0)) { }
//// if(isSecondTest){ LogUtil.e("rightAnswerCount:" + rightAnswerCount);
//// mRightLine = leastAnswerCount; //当前行答错的数
//// }else{ int errorCount = list.size() - rightAnswerCount;
//// mLeftLine = leastAnswerCount; LogUtil.e("errorCount:" + errorCount);
//// } //判断是否满足答对的要求
//// showResult(); boolean isNextLine = rightAnswerCount >= leastAnswerCount;
//// return; LogUtil.e("isNextLine:" + isNextLine);
//// }else { mCollect.put(mLevelIndex, list);
//// backLastLine();
//// return; if (isNextLine) {
//// } if (mLevelIndex == 13) {
//// } showResult();
//// next(isNextLine); return;
// } } else {
// List<E> nextList = mCollect.get(mLevelIndex + 1);
// private void judge() { if (nextList != null && nextList.size() > 0) {
// int verifyErrorCount = 0; showResult();
// //获取每行有多少个e return;
// int lineSum = getLineSumByIndex(mLevelIndex); }
// //获取每行答对几个e }
// int leastAnswerCount = Eye.getLeastAnswerCount(mLevelIndex); }
// //获取当前行答过的e
// List<E> list = mCollect.get(mLevelIndex); //防止出现-1的现象;
// int rightAnswerCount = 0; if (lineSum - leastAnswerCount > 0) {
// for (E e : list) { verifyErrorCount = lineSum - leastAnswerCount;
// if (e.isCorrect()) { } else {
// rightAnswerCount++; verifyErrorCount = 0;
// } }
// } count1.setText("总共:" + lineSum);
// LogUtil.e("rightAnswerCount:" + rightAnswerCount); allow1.setText("正确数:" + leastAnswerCount);
// //当前行答错的数 right1.setText("答对数:" + rightAnswerCount);
// int errorCount = list.size() - rightAnswerCount; error1.setText("错误数:" + errorCount);
// LogUtil.e("errorCount:" + errorCount); //必须答对一半才往下走一行的
// //判断是否满足答对的要求 //如果错误次数超过一半 (默认位置时上一行没有数据时候)回退一行
// boolean isNextLine = rightAnswerCount >= leastAnswerCount; if (errorCount > verifyErrorCount) {
// LogUtil.e("isNextLine:" + isNextLine); //如果上一行数据不为空 结束测试
// mCollect.put(mLevelIndex, list); if (mLevelIndex == 0 || (mCollect.containsKey(mLevelIndex - 1) &&
// mCollect.get(mLevelIndex - 1) != null && mCollect.get(mLevelIndex - 1).size() > 0)) {
// if (isNextLine) { if (isSecondTest) {
// if (mLevelIndex == 13) { mRightLine = leastAnswerCount;
// showResult(); } else {
// return; mLeftLine = leastAnswerCount;
// } else { }
// List<E> nextList = mCollect.get(mLevelIndex + 1); showResult();
// if (nextList != null && nextList.size() > 0) { return;
// showResult(); } else {
// return; backLastLine();
// } return;
// } }
// } }
// next(isNextLine);
// //防止出现-1的现象; }
// if (lineSum - leastAnswerCount > 0) {
// verifyErrorCount = lineSum - leastAnswerCount; /**
// } else { * 答错
// verifyErrorCount = 0; */
// } private void userChooseError() {
// count1.setText("总共:" + lineSum); int direct = mSelectE.getDirect() + 1;
// count2.setText("总共:" + lineSum); //获取当前行答过的e
// allow1.setText("正确数:" + leastAnswerCount); List<E> list = mCollect.get(mLevelIndex);
// allow2.setText("正确数:" + leastAnswerCount); if (null == list || list.size() == 0) {
// right1.setText("答对数:" + rightAnswerCount); list = new ArrayList<>();
// right2.setText("答对数:" + rightAnswerCount); }
// error1.setText("错误数:" + errorCount); mSelectE.setUserChoose(direct);
// error2.setText("错误数:" + errorCount); list.add(mSelectE);
// //必须答对一半才往下走一行的 mCollect.put(mLevelIndex, list);
// //如果错误次数超过一半 (默认位置时上一行没有数据时候)回退一行 judge();
// if (errorCount > verifyErrorCount) { // int verifyErrorCount = 0;
// //如果上一行数据不为空 结束测试 // int lineSum = getLineSumByIndex(mLevelIndex);
// if (mLevelIndex == 0 || (mCollect.containsKey(mLevelIndex - 1) && // int leastAnswerCount = Eye.getLeastAnswerCount(mLevelIndex);
// mCollect.get(mLevelIndex - 1) != null && mCollect.get(mLevelIndex - 1).size() > 0)) { // int rightAnswerCount = 0;
// if (isSecondTest) { // int direct = mSelectE.getDirect()+1;
// mRightLine = leastAnswerCount; //
// } else { // //获取当前行答过的e
// mLeftLine = leastAnswerCount; // List<E> list = mCollect.get(mLevelIndex);
// } // mSelectE.setUserChoose(direct);
// showResult(); // list.add(mSelectE);
// return; //
// } else { // if (null == list || list.size() == 0) {
// backLastLine(); // list = new ArrayList<>();
// return; // } else {
// } // for (E e : list) {
// } // if (e.isCorrect()) {
// next(isNextLine); // rightAnswerCount++;
// } // }
// // }
// /** // }
// * 答错 // //当前行答错的数
// */ // int errorCount = list.size() - rightAnswerCount;
// private void userChooseError() { //
// int direct = mSelectE.getDirect() + 1; // //判断是否满足答对的要求
// //获取当前行答过的e // boolean isNextLine = rightAnswerCount >= leastAnswerCount;
// List<E> list = mCollect.get(mLevelIndex); //
// if (null == list || list.size() == 0) { // mCollect.put(mLevelIndex, list);
// list = new ArrayList<>(); //
// } // if(isNextLine){
// mSelectE.setUserChoose(direct); // if(mLevelIndex == 13){
// list.add(mSelectE); // showResult();
// mCollect.put(mLevelIndex, list); // return;
// judge(); // }else {
//// int verifyErrorCount = 0; // List<E> nextList = mCollect.get(mLevelIndex + 1);
//// int lineSum = getLineSumByIndex(mLevelIndex); // if(nextList != null && nextList.size() > 0){
//// int leastAnswerCount = Eye.getLeastAnswerCount(mLevelIndex); // showResult();
//// int rightAnswerCount = 0; // return;
//// int direct = mSelectE.getDirect()+1; // }
//// // }
//// //获取当前行答过的e // }
//// List<E> list = mCollect.get(mLevelIndex); //
//// mSelectE.setUserChoose(direct); // //防止出现-1的现象;
//// list.add(mSelectE); // if (lineSum - leastAnswerCount > 0) {
//// // verifyErrorCount = lineSum - leastAnswerCount;
//// if (null == list || list.size() == 0) { // } else {
//// list = new ArrayList<>(); // verifyErrorCount = 0;
//// } else { // }
//// for (E e : list) { // //必须答对一半才往下走一行的
//// if (e.isCorrect()) { // //如果错误次数超过一半 (默认位置时上一行没有数据时候)回退一行
//// rightAnswerCount++; // if (errorCount > verifyErrorCount) {
//// } // //如果上一行数据不为空 结束测试
//// } // if (mLevelIndex == 0 || (mCollect.containsKey(mLevelIndex - 1) &&
//// } // mCollect.get(mLevelIndex - 1) != null && mCollect.get(mLevelIndex - 1).size() > 0)) {
//// //当前行答错的数 // if (isSecondTest) {
//// int errorCount = list.size() - rightAnswerCount; // showResult();
//// // return;
//// //判断是否满足答对的要求 // }
//// boolean isNextLine = rightAnswerCount >= leastAnswerCount; //
//// // mLeftEye = getResult();
//// mCollect.put(mLevelIndex, list); // resetView(false);
//// // return;
//// if(isNextLine){ // }else {
//// if(mLevelIndex == 13){ // backLastLine();
//// showResult(); // return;
//// return; // }
//// }else { // }
//// List<E> nextList = mCollect.get(mLevelIndex + 1); // next(isNextLine);
//// if(nextList != null && nextList.size() > 0){ }
//// showResult();
//// return;
//// } //返回到上一行
//// } private void backLastLine() {
//// } mLevelIndex = mLevelIndex - 2;
//// next(true);
//// //防止出现-1的现象; }
//// if (lineSum - leastAnswerCount > 0) {
//// verifyErrorCount = lineSum - leastAnswerCount; /**
//// } else { * 单眼测试结束
//// verifyErrorCount = 0; */
//// } private void showResult() {
//// //必须答对一半才往下走一行的 //如果不是手动提交
//// //如果错误次数超过一半 (默认位置时上一行没有数据时候)回退一行 final Double eyeResult = getResult();
//// if (errorCount > verifyErrorCount) { if (isSecondTest) {//右眼训练
//// //如果上一行数据不为空 结束测试 mRightEye = eyeResult;
//// if (mLevelIndex == 0 || (mCollect.containsKey(mLevelIndex - 1) && showStudentTestDialog();
//// mCollect.get(mLevelIndex - 1) != null && mCollect.get(mLevelIndex - 1).size() > 0)) { } else {//左眼训练
//// if (isSecondTest) { mLeftEye = eyeResult;
//// showResult(); resetView(false);
//// return; return;
//// } }
//// }
//// mLeftEye = getResult();
//// resetView(false);
//// return; private void showStudentTestDialog() {
//// }else { int selectId = PreferencesUtils.getInt(EyeConfig.EYE_SETTING_KEY, 0);
//// backLastLine(); String text = ("测视结束左眼视力" + mLeftEye + "右眼视力" + mRightEye).replace(".", "点");
//// return; if (selectId == 1) {
//// } text = ("测视结束左眼视力" + Eye.transformSmall(mLeftEye) + "右眼视力" +
//// } Eye.transformSmall(mRightEye)).replace(".", "点");
//// next(isNextLine); }
// } speak(text);
// Intent intent = new Intent(this, AfterEyeTestActivity.class);
// intent.putExtra("leftEye", mLeftEye);
// //返回到上一行 intent.putExtra("rightEye", mRightEye);
// private void backLastLine() { intent.putExtra("leftLine", mLeftLine);
// mLevelIndex = mLevelIndex - 2; intent.putExtra("rightLine", mRightLine);
// next(true); startActivity(intent);
// } finish();
// }
// /**
// * 单眼测试结束 @Override
// */ public boolean dispatchKeyEvent(KeyEvent event) {
// private void showResult() { if (event.getAction() == KeyEvent.ACTION_UP) {
// //如果不是手动提交 //两次点击大于1秒
// final Double eyeResult = getResult(); long currentTime = System.currentTimeMillis();
// if (isSecondTest) {//右眼训练 if (mLastOnKeyTime > 0 && currentTime - mLastOnKeyTime < 500) {
// mRightEye = eyeResult; return true;
// showStudentTestDialog(); }
// } else {//左眼训练 mLastOnKeyTime = currentTime;
// mLeftEye = eyeResult; LogUtil.e("----点击的Key值----"+event.getKeyCode());
// resetView(false); switch (event.getKeyCode()) {
// return; case KeyEvent.KEYCODE_BUTTON_X:
// } userChoose(TOP);
// } return true;
// case KeyEvent.KEYCODE_BUTTON_B:
// userChoose(BOTTOM);
// private void showStudentTestDialog() { return true;
// int selectId = PreferencesUtils.getInt(EyeConfig.EYE_SETTING_KEY, 0); case KeyEvent.KEYCODE_BUTTON_A:
// String text = ("测视结束左眼视力" + mLeftEye + "右眼视力" + mRightEye).replace(".", "点"); userChoose(LEFT);
// if (selectId == 1) { return true;
// text = ("测视结束左眼视力" + Eye.transformSmall(mLeftEye) + "右眼视力" + case KeyEvent.KEYCODE_BUTTON_Y:
// Eye.transformSmall(mRightEye)).replace(".", "点"); userChoose(RIGHT);
// } return true;
// speak(text); case KeyEvent.KEYCODE_DPAD_UP:
// Intent intent = new Intent(this, AfterEyeTestActivity.class); userChoose(TOP);
// intent.putExtra("leftEye", mLeftEye); return true;
// intent.putExtra("rightEye", mRightEye); case KeyEvent.KEYCODE_DPAD_DOWN:
// intent.putExtra("leftLine", mLeftLine); userChoose(BOTTOM);
// intent.putExtra("rightLine", mRightLine); return true;
// startActivity(intent); case KeyEvent.KEYCODE_DPAD_LEFT:
// finish(); userChoose(LEFT);
// } return true;
// case KeyEvent.KEYCODE_DPAD_RIGHT:
// @Override userChoose(RIGHT);
// public boolean dispatchKeyEvent(KeyEvent event) { return true;
// if (event.getAction() == KeyEvent.ACTION_UP) { case KeyEvent.KEYCODE_DPAD_CENTER://遥控中间键
// //两次点击大于1秒 //用户点击返回键:
// long currentTime = System.currentTimeMillis(); userChooseError();
// if (mLastOnKeyTime > 0 && currentTime - mLastOnKeyTime < 500) { return true;
// return true;
// } }
// mLastOnKeyTime = currentTime; return true;
// switch (event.getKeyCode()) { }
// case KeyEvent.KEYCODE_BUTTON_X: return super.dispatchKeyEvent(event);
// userChoose(TOP); }
// return true;
// case KeyEvent.KEYCODE_BUTTON_B: private double getResult() {
// userChoose(BOTTOM); if (null == mCollect || mCollect.size() == 0) {
// return true; if (test_dis == 0) {
// case KeyEvent.KEYCODE_BUTTON_A: return 4.0;
// userChoose(LEFT); } else {
// return true; return 3.8;
// case KeyEvent.KEYCODE_BUTTON_Y: }
// userChoose(RIGHT); }
// return true; int result = 0;
// case KeyEvent.KEYCODE_DPAD_UP: for (LinkedHashMap.Entry<Integer, List<E>> entry : mCollect.entrySet()) {
// userChoose(TOP); result = entry.getKey();
// return true; }
// case KeyEvent.KEYCODE_DPAD_DOWN: final String levelByIndex = "" + Eye.getLevelByIndex(result, test_dis == 0);
// userChoose(BOTTOM); return Double.parseDouble(levelByIndex);
// return true; }
// case KeyEvent.KEYCODE_DPAD_LEFT:
// userChoose(LEFT); @Override
// return true; public boolean onKeyDown(int keyCode, KeyEvent event) {
// case KeyEvent.KEYCODE_DPAD_RIGHT: if (keyCode == KeyEvent.KEYCODE_BACK) {
// userChoose(RIGHT); finish();
// return true; return true;
// case KeyEvent.KEYCODE_DPAD_CENTER://遥控中间键 }
// //用户点击返回键: return super.onKeyDown(keyCode, event);
// userChooseError(); }
// return true;
// @Override
// } protected void onCreate(Bundle savedInstanceState) {
// return true; super.onCreate(savedInstanceState);
// } // TODO: add setContentView(...) invocation
// return super.dispatchKeyEvent(event); ButterKnife.bind(this);
// } }
//
// private double getResult() { @OnClick({R.id.next_left})
// if (null == mCollect || mCollect.size() == 0) { public void onClick(View view) {
// if (test_dis == 0) { switch (view.getId()) {
// return 4.0; case R.id.next_left:
// } else { break;
// return 3.8; }
// } }
// } }
// int result = 0;
// for (LinkedHashMap.Entry<Integer, List<E>> entry : mCollect.entrySet()) {
// result = entry.getKey();
// }
// final String levelByIndex = "" + Eye.getLevelByIndex(result, test_dis == 0);
// return Double.parseDouble(levelByIndex);
// }
//
// @Override
// public boolean onKeyDown(int keyCode, KeyEvent event) {
// if (keyCode == KeyEvent.KEYCODE_BACK) {
// finish();
// return true;
// }
// return super.onKeyDown(keyCode, event);
// }
//
// @Override
// protected void onCreate(Bundle savedInstanceState) {
// super.onCreate(savedInstanceState);
// // TODO: add setContentView(...) invocation
// ButterKnife.bind(this);
// }
//
// @OnClick({R.id.next_left, R.id.next_right})
// public void onClick(View view) {
// switch (view.getId()) {
// case R.id.next_left:
// break;
// case R.id.next_right:
// break;
// }
// }
//}
package com.oo.eye.activity;
import android.content.Intent;
import android.os.Bundle;
import android.os.CountDownTimer;
import android.view.KeyEvent;
import android.view.View;
import android.widget.ImageView;
import android.widget.RelativeLayout;
import android.widget.TextView;
import com.app.baselibrary.base.common.BaseActivity;
import com.app.baselibrary.commonUtil.LogUtil;
import com.app.baselibrary.commonUtil.NibiruUtils;
import com.app.baselibrary.commonUtil.PreferencesUtils;
import com.oo.eye.EyeConfig;
import com.oo.eye.R;
import com.oo.eye.R2;
import com.oo.eye.bean.Eye;
import com.oo.eye.bean.Eye.E;
import com.oo.eye.bean.EyeHistroyBean;
import com.oo.eye.manager.DaemonSender;
import java.util.ArrayList;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Random;
import butterknife.BindView;
import butterknife.ButterKnife;
import butterknife.OnClick;
import static com.oo.eye.bean.Eye.getLineSumByIndex;
/**
*/
public class EyeTestActivityF extends BaseActivity {
static final int TOP = 0;
static final int RIGHT = 1;
static final int BOTTOM = 2;
static final int LEFT = 3;
static final int LEFT_TOP = 4;
static final int RIGHT_TOP = 5;
static final int LEFT_BOTTOM = 6;
static final int RIGHT_BOTTOM= 7;
private E mSelectE;
@BindView(R2.id.rl_eye_test_center_time1)
RelativeLayout timeLayout1;
@BindView(R2.id.tv_eye_test_center_time1)
TextView timeText1;
@BindView(R2.id.rl_eye_test_center_e1)
RelativeLayout eLayout1;
@BindView(R2.id.iv_eye_test_center_e1)
ImageView eImageView1;
@BindView(R2.id.view_eye_test_mask1)
View maskView1;
@BindView(R2.id.tv_eye_vision1)
TextView eyeVision1;
@BindView(R2.id.tv_eye_vision_count1)
TextView count1;
@BindView(R2.id.tv_eye_vision_allow1)
TextView allow1;
@BindView(R2.id.tv_eye_vision_right1)
TextView right1;
@BindView(R2.id.tv_eye_vision_error1)
TextView error1;
private int test_dis = 0;
private ArrayList<ArrayList<E>> mList = new ArrayList<>();
private int mLocation;
private int mLevelIndex = -1;
private LinkedHashMap<Integer, List<E>> mCollect = new LinkedHashMap<>();
private EyeHistroyBean mHistroyBean;
//是否是右眼训练
private boolean isSecondTest;
private double mLeftEye = 5.0;
private int mLeftLine = 0;
private double mRightEye = 5.0;
private int mRightLine = 0;
private long mLastOnKeyTime = -1;
private boolean isTestSuccess = false;
private boolean isStartTest = false;
private long totalTime = 5000;
private long intervalTime = 1000;
@Override
protected void onResume() {
super.onResume();
}
@Override
protected void onPause() {
super.onPause();
}
@Override
protected int getLayoutId() {
return R.layout.activity_eye_test;
}
@Override
protected void init() {
NibiruUtils.switchVR(true);
DaemonSender.startEyeTest(this);
speak("视力测试马上开启");
initialize();
prepareQueue();
}
private void initialize() {
mList.clear();
for (int i = 0; i < 14; i++) {
mList.add(initLineList(i));
}
}
private void prepareQueue() {
mHistroyBean = EyeConfig.getInstance().getCuurentBean();
continueTest();
}
private void continueTest() {
if (!isStartTest) {
isStartTest = true;
resetView(true);
}
}
/**
* 开始测试
*
* @param isNewTest true 代表测试的第一只眼 代表左眼 false代表测量另一只眼 右眼
*/
private void resetView(final boolean isNewTest) {
mLevelIndex = -1;
isSecondTest = !isNewTest;
String eye = isNewTest ? "右" : "左";
if (isNewTest) {
if (mHistroyBean != null) {
mLeftEye = mHistroyBean.getLeft_eye();
mRightEye = mHistroyBean.getRight_eye();
}
}
timeLayout1.setVisibility(View.VISIBLE);
eLayout1.setVisibility(View.GONE);
maskView1.setVisibility(View.GONE);
new CountDownTimer(totalTime, intervalTime) {
@Override
public void onTick(long millisUntilFinished) {
long time = millisUntilFinished / 1000;
timeText1.setText(time + "");
float f = millisUntilFinished * 1.0f / totalTime;
if (isSecondTest) {
maskView1.setAlpha(1 - f);
maskView1.setVisibility(View.VISIBLE);
} else {
maskView1.setVisibility(View.GONE);
}
LogUtil.e("onTick");
}
@Override
public void onFinish() {
LogUtil.e("onFinish");
timeLayout1.setVisibility(View.GONE);
eLayout1.setVisibility(View.VISIBLE);
double e = 5.0;
//如果是左眼次测试
if (isNewTest) {
if (mHistroyBean != null) {
e = mHistroyBean.getLeft_eye();
}
maskView1.setVisibility(View.GONE);
} else {
//右眼测试
if (isSecondTest) {
if (mHistroyBean != null) {
e = mHistroyBean.getRight_eye();
}
}
maskView1.setAlpha(1);
maskView1.setVisibility(View.VISIBLE);
}
mLevelIndex = Eye.getIndexByValue(e, true) - 1;
next(true);
}
}.start();
speak("请遮住您的" + eye + "眼");
mCollect.clear();
}
private void speak(String text) {
DaemonSender.sendDBTTS(this, text);
}
/**
* 描画E字
*
* @param e
*/
private void drewE(E e) {
//视力等级
float level = e.getLevel();
//视标边长
int px = Eye.getDip(this, level);
// RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(px, px);
// eImageView1.setLayoutParams(params);
// eImageView2.setLayoutParams(params);
//视标方向
int resId;
switch (e.getDirect()) {
default:
case TOP:
resId = R.drawable.c_top;
break;
case RIGHT:
resId = R.drawable.c_right;
break;
case BOTTOM:
resId = R.drawable.c_bottom;
break;
case LEFT:
resId = R.drawable.c_left;
break;
case LEFT_TOP:
resId = R.drawable.c_left_top;
break;
case RIGHT_TOP:
resId = R.drawable.c_right_top;
break;
case LEFT_BOTTOM:
resId = R.drawable.c_left_bottom;
break;
case RIGHT_BOTTOM:
resId = R.drawable.c_right_bottom;
break;
}
eImageView1.setImageResource(resId);
}
/**
* 随机生成每一行的视标E
*
* @param index 第几行
* @return list
*/
private ArrayList<E> initLineList(int index) {
float level = Eye.getLevelSizeByIndex(index);
int sum = getLineSumByIndex(index);
//随机数生成方向
Random random = new Random();
E e;
ArrayList<E> list = new ArrayList<>();
int direct = getFirstDirect(random, index);
for (int i = 0; i < sum; i++) {
if (i > 0) {
direct = getRandomDirect(list, direct, sum);
}
e = new E(i, direct, level);
list.add(e);
}
return list;
}
/**
* 获取第一个E;
*
* @param random
* @param index
* @return
*/
private int getFirstDirect(Random random, int index) {
int direct = random.nextInt(4);
if (index > 0) {
if (mList.get(index - 1).get(0).getDirect() == direct)
direct = getFirstDirect(random, index);
}
return direct;
}
/**
* 获取下一个E的方向的判断;
*
* @param list
* @param direct
* @param sum
* @return
*/
private int getRandomDirect(ArrayList<E> list, int direct, int sum) {
int lastDirect = direct;
direct = randomDirect(direct);
int num = sum / 2;
if (sum % 2 == 0 && sum / 2 > 1) {
num = sum / 2 - 1;
}
if (getEDirectorNum(list, direct) >= num) {
direct = getRandomDirect(list, lastDirect, sum);
}
return direct;
}
/**
* 获取该行出现的形同方向的E的个数;
*
* @param list
* @param direct
* @return
*/
private int getEDirectorNum(ArrayList<E> list, int direct) {
int num = 0;
if (list == null || list.size() == 0)
return num;
for (E e :
list) {
if (e.getDirect() == direct)
num++;
}
return num;
}
/**
* 相邻的两个不能是同一个方向
*
* @param lastDirect 上一次的方向
* @return 新的方向
*/
private int randomDirect(int lastDirect) {
//随机数生成方向
Random random = new Random();
int newDirect = random.nextInt(4);
//相邻的不能一样
while (lastDirect == newDirect) {
newDirect = random.nextInt(4);
}
return newDirect;
}
/**
* 下一个测试
*/
private void next(boolean isNextLine) {
if (isNextLine) {
mLevelIndex++;
mLocation = 0;
eyeVision1.setText("" + Eye.getLevelByIndex(mLevelIndex, true));
count1.setText("");
allow1.setText("");
right1.setText("");
error1.setText("");
} else {
mLocation++;
}
mSelectE = mList.get(mLevelIndex).get(mLocation);
drewE(mSelectE);
}
/**
* 选择的方向
*
* @param direct
*/
private void userChoose(int direct) {
LogUtil.e("direct:" + direct);
LogUtil.e("mLevelIndex:" + mLevelIndex);
//获取当前行答过的e
List<E> list = mCollect.get(mLevelIndex);
if (null == list || list.size() == 0) {
list = new ArrayList<>();
}
mSelectE.setUserChoose(direct);
list.add(mSelectE);
mCollect.put(mLevelIndex, list);
judge();
// int verifyErrorCount = 0;
// //获取每行有多少个e
// int lineSum = getLineSumByIndex(mLevelIndex);
// //获取每行答对几个e
// int leastAnswerCount = Eye.getLeastAnswerCount(mLevelIndex);
// LogUtil.e("leastAnswerCount:"+leastAnswerCount);
// //获取当前行答过的e
// List<E> list = mCollect.get(mLevelIndex);
// if (null == list || list.size() == 0) {
// list = new ArrayList<>();
// }
// mSelectE.setUserChoose(direct);
// list.add(mSelectE);
//
// int rightAnswerCount = 0;
// for (E e : list) {
// if (e.isCorrect()) {
// rightAnswerCount++;
// }
// }
// LogUtil.e("rightAnswerCount:"+rightAnswerCount);
// //当前行答错的数
// int errorCount = list.size() - rightAnswerCount;
// LogUtil.e("errorCount:"+errorCount);
// //判断是否满足答对的要求
// boolean isNextLine = rightAnswerCount >= leastAnswerCount;
// LogUtil.e("isNextLine:"+isNextLine);
// mCollect.put(mLevelIndex, list);
//
// if(isNextLine){
// if(mLevelIndex == 13){
// showResult();
// return;
// }else {
// List<E> nextList = mCollect.get(mLevelIndex + 1);
// if(nextList != null && nextList.size() > 0){
// showResult();
// return;
// }
// }
// }
//
// //防止出现-1的现象;
// if (lineSum - leastAnswerCount > 0) {
// verifyErrorCount = lineSum - leastAnswerCount;
// } else {
// verifyErrorCount = 0;
// }
// //必须答对一半才往下走一行的
// //如果错误次数超过一半 (默认位置时上一行没有数据时候)回退一行
// if (errorCount > verifyErrorCount) {
// //如果上一行数据不为空 结束测试
// if (mLevelIndex == 0 || (mCollect.containsKey(mLevelIndex - 1) &&
// mCollect.get(mLevelIndex - 1) != null && mCollect.get(mLevelIndex - 1).size() > 0)) {
// if(isSecondTest){
// mRightLine = leastAnswerCount;
// }else{
// mLeftLine = leastAnswerCount;
// }
// showResult();
// return;
// }else {
// backLastLine();
// return;
// }
// }
// next(isNextLine);
}
private void judge() {
int verifyErrorCount = 0;
//获取每行有多少个e
int lineSum = getLineSumByIndex(mLevelIndex);
//获取每行答对几个e
int leastAnswerCount = Eye.getLeastAnswerCount(mLevelIndex);
//获取当前行答过的e
List<E> list = mCollect.get(mLevelIndex);
int rightAnswerCount = 0;
for (E e : list) {
if (e.isCorrect()) {
rightAnswerCount++;
}
}
LogUtil.e("rightAnswerCount:" + rightAnswerCount);
//当前行答错的数
int errorCount = list.size() - rightAnswerCount;
LogUtil.e("errorCount:" + errorCount);
//判断是否满足答对的要求
boolean isNextLine = rightAnswerCount >= leastAnswerCount;
LogUtil.e("isNextLine:" + isNextLine);
mCollect.put(mLevelIndex, list);
if (isNextLine) {
if (mLevelIndex == 13) {
showResult();
return;
} else {
List<E> nextList = mCollect.get(mLevelIndex + 1);
if (nextList != null && nextList.size() > 0) {
showResult();
return;
}
}
}
//防止出现-1的现象;
if (lineSum - leastAnswerCount > 0) {
verifyErrorCount = lineSum - leastAnswerCount;
} else {
verifyErrorCount = 0;
}
count1.setText("总共:" + lineSum);
allow1.setText("正确数:" + leastAnswerCount);
right1.setText("答对数:" + rightAnswerCount);
error1.setText("错误数:" + errorCount);
//必须答对一半才往下走一行的
//如果错误次数超过一半 (默认位置时上一行没有数据时候)回退一行
if (errorCount > verifyErrorCount) {
//如果上一行数据不为空 结束测试
if (mLevelIndex == 0 || (mCollect.containsKey(mLevelIndex - 1) &&
mCollect.get(mLevelIndex - 1) != null && mCollect.get(mLevelIndex - 1).size() > 0)) {
if (isSecondTest) {
mRightLine = leastAnswerCount;
} else {
mLeftLine = leastAnswerCount;
}
showResult();
return;
} else {
backLastLine();
return;
}
}
next(isNextLine);
}
/**
* 答错
*/
private void userChooseError() {
int direct = mSelectE.getDirect() + 1;
//获取当前行答过的e
List<E> list = mCollect.get(mLevelIndex);
if (null == list || list.size() == 0) {
list = new ArrayList<>();
}
mSelectE.setUserChoose(direct);
list.add(mSelectE);
mCollect.put(mLevelIndex, list);
judge();
// int verifyErrorCount = 0;
// int lineSum = getLineSumByIndex(mLevelIndex);
// int leastAnswerCount = Eye.getLeastAnswerCount(mLevelIndex);
// int rightAnswerCount = 0;
// int direct = mSelectE.getDirect()+1;
//
// //获取当前行答过的e
// List<E> list = mCollect.get(mLevelIndex);
// mSelectE.setUserChoose(direct);
// list.add(mSelectE);
//
// if (null == list || list.size() == 0) {
// list = new ArrayList<>();
// } else {
// for (E e : list) {
// if (e.isCorrect()) {
// rightAnswerCount++;
// }
// }
// }
// //当前行答错的数
// int errorCount = list.size() - rightAnswerCount;
//
// //判断是否满足答对的要求
// boolean isNextLine = rightAnswerCount >= leastAnswerCount;
//
// mCollect.put(mLevelIndex, list);
//
// if(isNextLine){
// if(mLevelIndex == 13){
// showResult();
// return;
// }else {
// List<E> nextList = mCollect.get(mLevelIndex + 1);
// if(nextList != null && nextList.size() > 0){
// showResult();
// return;
// }
// }
// }
//
// //防止出现-1的现象;
// if (lineSum - leastAnswerCount > 0) {
// verifyErrorCount = lineSum - leastAnswerCount;
// } else {
// verifyErrorCount = 0;
// }
// //必须答对一半才往下走一行的
// //如果错误次数超过一半 (默认位置时上一行没有数据时候)回退一行
// if (errorCount > verifyErrorCount) {
// //如果上一行数据不为空 结束测试
// if (mLevelIndex == 0 || (mCollect.containsKey(mLevelIndex - 1) &&
// mCollect.get(mLevelIndex - 1) != null && mCollect.get(mLevelIndex - 1).size() > 0)) {
// if (isSecondTest) {
// showResult();
// return;
// }
//
// mLeftEye = getResult();
// resetView(false);
// return;
// }else {
// backLastLine();
// return;
// }
// }
// next(isNextLine);
}
//返回到上一行
private void backLastLine() {
mLevelIndex = mLevelIndex - 2;
next(true);
}
/**
* 单眼测试结束
*/
private void showResult() {
//如果不是手动提交
final Double eyeResult = getResult();
if (isSecondTest) {//右眼训练
mRightEye = eyeResult;
showStudentTestDialog();
} else {//左眼训练
mLeftEye = eyeResult;
resetView(false);
return;
}
}
private void showStudentTestDialog() {
int selectId = PreferencesUtils.getInt(EyeConfig.EYE_SETTING_KEY, 0);
String text = ("测视结束左眼视力" + mLeftEye + "右眼视力" + mRightEye).replace(".", "点");
if (selectId == 1) {
text = ("测视结束左眼视力" + Eye.transformSmall(mLeftEye) + "右眼视力" +
Eye.transformSmall(mRightEye)).replace(".", "点");
}
speak(text);
Intent intent = new Intent(this, AfterEyeTestActivity.class);
intent.putExtra("leftEye", mLeftEye);
intent.putExtra("rightEye", mRightEye);
intent.putExtra("leftLine", mLeftLine);
intent.putExtra("rightLine", mRightLine);
startActivity(intent);
finish();
}
@Override
public boolean dispatchKeyEvent(KeyEvent event) {
if (event.getAction() == KeyEvent.ACTION_UP) {
//两次点击大于1秒
long currentTime = System.currentTimeMillis();
if (mLastOnKeyTime > 0 && currentTime - mLastOnKeyTime < 500) {
return true;
}
mLastOnKeyTime = currentTime;
LogUtil.e("----点击的Key值----"+event.getKeyCode());
switch (event.getKeyCode()) {
case KeyEvent.KEYCODE_BUTTON_X:
userChoose(TOP);
return true;
case KeyEvent.KEYCODE_BUTTON_B:
userChoose(BOTTOM);
return true;
case KeyEvent.KEYCODE_BUTTON_A:
userChoose(LEFT);
return true;
case KeyEvent.KEYCODE_BUTTON_Y:
userChoose(RIGHT);
return true;
case KeyEvent.KEYCODE_DPAD_UP:
userChoose(TOP);
return true;
case KeyEvent.KEYCODE_DPAD_DOWN:
userChoose(BOTTOM);
return true;
case KeyEvent.KEYCODE_DPAD_LEFT:
userChoose(LEFT);
return true;
case KeyEvent.KEYCODE_DPAD_RIGHT:
userChoose(RIGHT);
return true;
case KeyEvent.KEYCODE_DPAD_CENTER://遥控中间键
//用户点击返回键:
userChooseError();
return true;
}
return true;
}
return super.dispatchKeyEvent(event);
}
private double getResult() {
if (null == mCollect || mCollect.size() == 0) {
if (test_dis == 0) {
return 4.0;
} else {
return 3.8;
}
}
int result = 0;
for (LinkedHashMap.Entry<Integer, List<E>> entry : mCollect.entrySet()) {
result = entry.getKey();
}
final String levelByIndex = "" + Eye.getLevelByIndex(result, test_dis == 0);
return Double.parseDouble(levelByIndex);
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
finish();
return true;
}
return super.onKeyDown(keyCode, event);
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// TODO: add setContentView(...) invocation
ButterKnife.bind(this);
}
@OnClick({R.id.next_left})
public void onClick(View view) {
switch (view.getId()) {
case R.id.next_left:
break;
}
}
}
...@@ -447,6 +447,8 @@ ...@@ -447,6 +447,8 @@
</RelativeLayout> </RelativeLayout>
<RelativeLayout <RelativeLayout
android:visibility="invisible"
android:id="@+id/about_lay_show"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
android:background="#e0000000"> android:background="#e0000000">
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment