Commit 26ea9322 by chengxiuhong

test main

parent 3daae609
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.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.LinearLayout;
import android.widget.RelativeLayout; import android.widget.RelativeLayout;
import android.widget.TextView; import android.widget.TextView;
...@@ -24,391 +24,397 @@ import com.oo.eye.manager.DaemonSender; ...@@ -24,391 +24,397 @@ 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.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;
private E mSelectE; private E mSelectE;
@BindView(R2.id.rl_eye_test_center_time1) @BindView(R2.id.rl_eye_test_center_time1)
RelativeLayout timeLayout1; RelativeLayout timeLayout1;
@BindView(R2.id.tv_eye_test_center_time1) @BindView(R2.id.tv_eye_test_center_time1)
TextView timeText1; TextView timeText1;
@BindView(R2.id.rl_eye_test_center_e1) @BindView(R2.id.rl_eye_test_center_e1)
RelativeLayout eLayout1; RelativeLayout eLayout1;
@BindView(R2.id.iv_eye_test_center_e1) @BindView(R2.id.iv_eye_test_center_e1)
ImageView eImageView1; ImageView eImageView1;
@BindView(R2.id.view_eye_test_mask1) @BindView(R2.id.view_eye_test_mask1)
View maskView1; View maskView1;
@BindView(R2.id.view_eye_test_mask2) @BindView(R2.id.view_eye_test_mask2)
View maskView2; View maskView2;
@BindView(R2.id.rl_eye_test_center_time2) @BindView(R2.id.rl_eye_test_center_time2)
RelativeLayout timeLayout2; RelativeLayout timeLayout2;
@BindView(R2.id.tv_eye_test_center_time2) @BindView(R2.id.tv_eye_test_center_time2)
TextView timeText2; TextView timeText2;
@BindView(R2.id.rl_eye_test_center_e2) @BindView(R2.id.rl_eye_test_center_e2)
RelativeLayout eLayout2; RelativeLayout eLayout2;
@BindView(R2.id.iv_eye_test_center_e2) @BindView(R2.id.iv_eye_test_center_e2)
ImageView eImageView2; ImageView eImageView2;
@BindView(R2.id.tv_eye_vision1) @BindView(R2.id.tv_eye_vision1)
TextView eyeVision1; TextView eyeVision1;
@BindView(R2.id.tv_eye_vision_count1) @BindView(R2.id.tv_eye_vision_count1)
TextView count1; TextView count1;
@BindView(R2.id.tv_eye_vision_allow1) @BindView(R2.id.tv_eye_vision_allow1)
TextView allow1; TextView allow1;
@BindView(R2.id.tv_eye_vision_right1) @BindView(R2.id.tv_eye_vision_right1)
TextView right1; TextView right1;
@BindView(R2.id.tv_eye_vision_error1) @BindView(R2.id.tv_eye_vision_error1)
TextView error1; TextView error1;
@BindView(R2.id.tv_eye_vision2) @BindView(R2.id.tv_eye_vision2)
TextView eyeVision2; TextView eyeVision2;
@BindView(R2.id.tv_eye_vision_count2) @BindView(R2.id.tv_eye_vision_count2)
TextView count2; TextView count2;
@BindView(R2.id.tv_eye_vision_allow2) @BindView(R2.id.tv_eye_vision_allow2)
TextView allow2; TextView allow2;
@BindView(R2.id.tv_eye_vision_right2) @BindView(R2.id.tv_eye_vision_right2)
TextView right2; TextView right2;
@BindView(R2.id.tv_eye_vision_error2) @BindView(R2.id.tv_eye_vision_error2)
TextView error2; TextView error2;
private int test_dis = 0; private int test_dis = 0;
private ArrayList<ArrayList<Eye.E>> mList = new ArrayList<>(); private ArrayList<ArrayList<E>> mList = new ArrayList<>();
private int mLocation; private int mLocation;
private int mLevelIndex = -1; private int mLevelIndex = -1;
private LinkedHashMap<Integer, List<Eye.E>> mCollect = new LinkedHashMap<>(); private LinkedHashMap<Integer, List<E>> mCollect = new LinkedHashMap<>();
private EyeHistroyBean mHistroyBean; private EyeHistroyBean mHistroyBean;
//是否是右眼训练 //是否是右眼训练
private boolean isSecondTest; private boolean isSecondTest;
private double mLeftEye = 5.0; private double mLeftEye = 5.0;
private int mLeftLine = 0; private int mLeftLine = 0;
private double mRightEye = 5.0; private double mRightEye = 5.0;
private int mRightLine = 0; private int mRightLine = 0;
private long mLastOnKeyTime = -1; private long mLastOnKeyTime = -1;
private boolean isTestSuccess = false; private boolean isTestSuccess = false;
private boolean isStartTest = false; private boolean isStartTest = false;
private long totalTime = 5000; private long totalTime = 5000;
private long intervalTime = 1000; private long intervalTime = 1000;
@Override @Override
protected void onResume() { protected void onResume() {
super.onResume(); super.onResume();
} }
@Override @Override
protected void onPause() { protected void onPause() {
super.onPause(); super.onPause();
} }
@Override @Override
protected int getLayoutId() { protected int getLayoutId() {
return R.layout.activity_eye_test; return R.layout.activity_eye_test;
} }
@Override @Override
protected void init() { protected void init() {
NibiruUtils.switchVR(true); NibiruUtils.switchVR(true);
DaemonSender.startEyeTest(this); DaemonSender.startEyeTest(this);
speak("视力测试马上开启"); speak("视力测试马上开启");
initialize(); initialize();
prepareQueue(); prepareQueue();
} }
private void initialize() { private void initialize() {
mList.clear(); mList.clear();
for (int i = 0; i < 14; i++) { for (int i = 0; i < 14; i++) {
mList.add(initLineList(i)); mList.add(initLineList(i));
} }
} }
private void prepareQueue() { private void prepareQueue() {
mHistroyBean = EyeConfig.getInstance().getCuurentBean(); mHistroyBean = EyeConfig.getInstance().getCuurentBean();
continueTest(); continueTest();
} }
private void continueTest(){ private void continueTest() {
if (!isStartTest) { if (!isStartTest) {
isStartTest = true; isStartTest = true;
resetView(true); resetView(true);
} }
} }
/** /**
* 开始测试 * 开始测试
* @param isNewTest true 代表测试的第一只眼 代表左眼 false代表测量另一只眼 右眼 *
*/ * @param isNewTest true 代表测试的第一只眼 代表左眼 false代表测量另一只眼 右眼
private void resetView(final boolean isNewTest) { */
mLevelIndex = -1; private void resetView(final boolean isNewTest) {
isSecondTest = !isNewTest; mLevelIndex = -1;
isSecondTest = !isNewTest;
String eye = isNewTest ? "右" : "左";
String eye = isNewTest ? "右" : "左";
if (isNewTest) {
if(mHistroyBean != null) { if (isNewTest) {
mLeftEye = mHistroyBean.getLeft_eye(); if (mHistroyBean != null) {
mRightEye = mHistroyBean.getRight_eye(); mLeftEye = mHistroyBean.getLeft_eye();
} mRightEye = mHistroyBean.getRight_eye();
} }
timeLayout1.setVisibility(View.VISIBLE); }
timeLayout2.setVisibility(View.VISIBLE); timeLayout1.setVisibility(View.VISIBLE);
eLayout1.setVisibility(View.GONE); timeLayout2.setVisibility(View.VISIBLE);
eLayout2.setVisibility(View.GONE); eLayout1.setVisibility(View.GONE);
maskView1.setVisibility(View.GONE); eLayout2.setVisibility(View.GONE);
maskView2.setVisibility(View.GONE); maskView1.setVisibility(View.GONE);
new CountDownTimer(totalTime,intervalTime){ maskView2.setVisibility(View.GONE);
@Override new CountDownTimer(totalTime, intervalTime) {
public void onTick(long millisUntilFinished) { @Override
long time = millisUntilFinished / 1000; public void onTick(long millisUntilFinished) {
timeText1.setText(time+""); long time = millisUntilFinished / 1000;
timeText2.setText(time+""); timeText1.setText(time + "");
float f = millisUntilFinished*1.0f/totalTime; timeText2.setText(time + "");
if(isSecondTest){ float f = millisUntilFinished * 1.0f / totalTime;
maskView1.setAlpha(1-f); if (isSecondTest) {
maskView1.setVisibility(View.VISIBLE); maskView1.setAlpha(1 - f);
maskView2.setVisibility(View.GONE); maskView1.setVisibility(View.VISIBLE);
maskView2.setVisibility(View.GONE);
}else{
maskView2.setAlpha(1-f); } else {
maskView1.setVisibility(View.GONE); maskView2.setAlpha(1 - f);
maskView2.setVisibility(View.VISIBLE); maskView1.setVisibility(View.GONE);
} maskView2.setVisibility(View.VISIBLE);
LogUtil.e("onTick"); }
} LogUtil.e("onTick");
}
@Override
public void onFinish() { @Override
LogUtil.e("onFinish"); public void onFinish() {
timeLayout1.setVisibility(View.GONE); LogUtil.e("onFinish");
timeLayout2.setVisibility(View.GONE); timeLayout1.setVisibility(View.GONE);
eLayout1.setVisibility(View.VISIBLE); timeLayout2.setVisibility(View.GONE);
eLayout2.setVisibility(View.VISIBLE); eLayout1.setVisibility(View.VISIBLE);
double e = 5.0; eLayout2.setVisibility(View.VISIBLE);
//如果是左眼次测试 double e = 5.0;
if (isNewTest) { //如果是左眼次测试
if(mHistroyBean != null) { if (isNewTest) {
e = mHistroyBean.getLeft_eye(); if (mHistroyBean != null) {
} e = mHistroyBean.getLeft_eye();
maskView1.setVisibility(View.GONE); }
maskView2.setAlpha(1); maskView1.setVisibility(View.GONE);
maskView2.setVisibility(View.VISIBLE); maskView2.setAlpha(1);
} else { maskView2.setVisibility(View.VISIBLE);
//右眼测试 } else {
if (isSecondTest) { //右眼测试
if(mHistroyBean != null) { if (isSecondTest) {
e = mHistroyBean.getRight_eye(); if (mHistroyBean != null) {
} e = mHistroyBean.getRight_eye();
} }
maskView1.setAlpha(1); }
maskView1.setVisibility(View.VISIBLE); maskView1.setAlpha(1);
maskView2.setVisibility(View.GONE); maskView1.setVisibility(View.VISIBLE);
} maskView2.setVisibility(View.GONE);
mLevelIndex = Eye.getIndexByValue(e,true) - 1; }
next(true); mLevelIndex = Eye.getIndexByValue(e, true) - 1;
} next(true);
}.start(); }
speak("请遮住您的" + eye + "眼"); }.start();
mCollect.clear(); speak("请遮住您的" + eye + "眼");
} mCollect.clear();
}
private void speak(String text){
DaemonSender.sendDBTTS(this,text); private void speak(String text) {
} DaemonSender.sendDBTTS(this, text);
/** }
* 描画E字
* @param e /**
*/ * 描画E字
private void drewE(Eye.E e) { *
//视力等级 * @param e
float level = e.getLevel(); */
//视标边长 private void drewE(E e) {
int px = Eye.getDip(this, level); //视力等级
float level = e.getLevel();
//视标边长
int px = Eye.getDip(this, level);
// RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(px, px); // RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(px, px);
// eImageView1.setLayoutParams(params); // eImageView1.setLayoutParams(params);
// eImageView2.setLayoutParams(params); // eImageView2.setLayoutParams(params);
//视标方向 //视标方向
int resId; int resId;
switch (e.getDirect()) { switch (e.getDirect()) {
default: default:
case TOP: case TOP:
resId = R.drawable.e_up; resId = R.drawable.e_up;
break; break;
case RIGHT: case RIGHT:
resId = R.drawable.e_right; resId = R.drawable.e_right;
break; break;
case BOTTOM: case BOTTOM:
resId = R.drawable.e_down; resId = R.drawable.e_down;
break; break;
case LEFT: case LEFT:
resId = R.drawable.e_left; resId = R.drawable.e_left;
break; break;
} }
eImageView1.setImageResource(resId); eImageView1.setImageResource(resId);
eImageView2.setImageResource(resId); eImageView2.setImageResource(resId);
} }
/** /**
* 随机生成每一行的视标E * 随机生成每一行的视标E
* *
* @param index 第几行 * @param index 第几行
* @return list * @return list
*/ */
private ArrayList<E> initLineList(int index) { private ArrayList<E> initLineList(int index) {
float level = Eye.getLevelSizeByIndex(index); float level = Eye.getLevelSizeByIndex(index);
int sum = getLineSumByIndex(index); int sum = getLineSumByIndex(index);
//随机数生成方向 //随机数生成方向
Random random = new Random(); Random random = new Random();
E e; E e;
ArrayList<E> list = new ArrayList<>(); ArrayList<E> list = new ArrayList<>();
int direct = getFirstDirect(random, index); int direct = getFirstDirect(random, index);
for (int i = 0; i < sum; i++) { for (int i = 0; i < sum; i++) {
if (i > 0) { if (i > 0) {
direct = getRandomDirect(list, direct, sum); direct = getRandomDirect(list, direct, sum);
} }
e = new E(i, direct, level); e = new E(i, direct, level);
list.add(e); list.add(e);
} }
return list; return list;
} }
/** /**
* 获取第一个E; * 获取第一个E;
* *
* @param random * @param random
* @param index * @param index
* @return * @return
*/ */
private int getFirstDirect(Random random, int index) { private int getFirstDirect(Random random, int index) {
int direct = random.nextInt(4); int direct = random.nextInt(4);
if (index > 0) { if (index > 0) {
if (mList.get(index - 1).get(0).getDirect() == direct) if (mList.get(index - 1).get(0).getDirect() == direct)
direct = getFirstDirect(random, index); direct = getFirstDirect(random, index);
} }
return direct; return direct;
} }
/** /**
* 获取下一个E的方向的判断; * 获取下一个E的方向的判断;
* *
* @param list * @param list
* @param direct * @param direct
* @param sum * @param sum
* @return * @return
*/ */
private int getRandomDirect(ArrayList<E> list, int direct, int sum) { private int getRandomDirect(ArrayList<E> list, int direct, int sum) {
int lastDirect = direct; int lastDirect = direct;
direct = randomDirect(direct); direct = randomDirect(direct);
int num = sum / 2; int num = sum / 2;
if (sum % 2 == 0 && sum / 2 > 1) { if (sum % 2 == 0 && sum / 2 > 1) {
num = sum / 2 - 1; num = sum / 2 - 1;
} }
if (getEDirectorNum(list, direct) >= num) { if (getEDirectorNum(list, direct) >= num) {
direct = getRandomDirect(list, lastDirect, sum); direct = getRandomDirect(list, lastDirect, sum);
} }
return direct; return direct;
} }
/** /**
* 获取该行出现的形同方向的E的个数; * 获取该行出现的形同方向的E的个数;
* *
* @param list * @param list
* @param direct * @param direct
* @return * @return
*/ */
private int getEDirectorNum(ArrayList<E> list, int direct) { private int getEDirectorNum(ArrayList<E> list, int direct) {
int num = 0; int num = 0;
if (list == null || list.size() == 0) if (list == null || list.size() == 0)
return num; return num;
for (E e : for (E e :
list) { list) {
if (e.getDirect() == direct) if (e.getDirect() == direct)
num++; num++;
} }
return num; return num;
} }
/** /**
* 相邻的两个不能是同一个方向 * 相邻的两个不能是同一个方向
* *
* @param lastDirect 上一次的方向 * @param lastDirect 上一次的方向
* @return 新的方向 * @return 新的方向
*/ */
private int randomDirect(int lastDirect) { private int randomDirect(int lastDirect) {
//随机数生成方向 //随机数生成方向
Random random = new Random(); Random random = new Random();
int newDirect = random.nextInt(4); int newDirect = random.nextInt(4);
//相邻的不能一样 //相邻的不能一样
while (lastDirect == newDirect) { while (lastDirect == newDirect) {
newDirect = random.nextInt(4); newDirect = random.nextInt(4);
} }
return newDirect; return newDirect;
} }
/** /**
* 下一个测试 * 下一个测试
* */
*/ private void next(boolean isNextLine) {
private void next(boolean isNextLine) { if (isNextLine) {
if (isNextLine) { mLevelIndex++;
mLevelIndex++; mLocation = 0;
mLocation = 0; eyeVision1.setText("" + Eye.getLevelByIndex(mLevelIndex, true));
eyeVision1.setText(""+Eye.getLevelByIndex(mLevelIndex,true)); eyeVision2.setText("" + Eye.getLevelByIndex(mLevelIndex, true));
eyeVision2.setText(""+Eye.getLevelByIndex(mLevelIndex,true)); count1.setText("");
count1.setText(""); count2.setText("");
count2.setText(""); allow1.setText("");
allow1.setText(""); allow2.setText("");
allow2.setText(""); right1.setText("");
right1.setText(""); right2.setText("");
right2.setText(""); error1.setText("");
error1.setText(""); error2.setText("");
error2.setText(""); } else {
}else{ mLocation++;
mLocation++; }
}
mSelectE = mList.get(mLevelIndex).get(mLocation);
mSelectE = mList.get(mLevelIndex).get(mLocation); drewE(mSelectE);
drewE(mSelectE); }
}
/**
/** * 选择的方向
* 选择的方向 *
* @param direct * @param direct
*/ */
private void userChoose(int direct) { private void userChoose(int direct) {
LogUtil.e("direct:"+direct); LogUtil.e("direct:" + direct);
LogUtil.e("mLevelIndex:"+mLevelIndex); LogUtil.e("mLevelIndex:" + mLevelIndex);
//获取当前行答过的e //获取当前行答过的e
List<E> list = mCollect.get(mLevelIndex); List<E> list = mCollect.get(mLevelIndex);
if (null == list || list.size() == 0) { if (null == list || list.size() == 0) {
list = new ArrayList<>(); list = new ArrayList<>();
} }
mSelectE.setUserChoose(direct); mSelectE.setUserChoose(direct);
list.add(mSelectE); list.add(mSelectE);
mCollect.put(mLevelIndex,list); mCollect.put(mLevelIndex, list);
judge(); judge();
// int verifyErrorCount = 0; // int verifyErrorCount = 0;
// //获取每行有多少个e // //获取每行有多少个e
// int lineSum = getLineSumByIndex(mLevelIndex); // int lineSum = getLineSumByIndex(mLevelIndex);
...@@ -476,93 +482,93 @@ public class EyeTestActivity extends BaseActivity{ ...@@ -476,93 +482,93 @@ public class EyeTestActivity extends BaseActivity{
// } // }
// } // }
// next(isNextLine); // next(isNextLine);
} }
private void judge(){ private void judge() {
int verifyErrorCount = 0; int verifyErrorCount = 0;
//获取每行有多少个e //获取每行有多少个e
int lineSum = getLineSumByIndex(mLevelIndex); int lineSum = getLineSumByIndex(mLevelIndex);
//获取每行答对几个e //获取每行答对几个e
int leastAnswerCount = Eye.getLeastAnswerCount(mLevelIndex); int leastAnswerCount = Eye.getLeastAnswerCount(mLevelIndex);
//获取当前行答过的e //获取当前行答过的e
List<E> list = mCollect.get(mLevelIndex); List<E> list = mCollect.get(mLevelIndex);
int rightAnswerCount = 0; int rightAnswerCount = 0;
for (E e : list) { for (E e : list) {
if (e.isCorrect()) { if (e.isCorrect()) {
rightAnswerCount++; rightAnswerCount++;
} }
} }
LogUtil.e("rightAnswerCount:"+rightAnswerCount); LogUtil.e("rightAnswerCount:" + rightAnswerCount);
//当前行答错的数 //当前行答错的数
int errorCount = list.size() - rightAnswerCount; int errorCount = list.size() - rightAnswerCount;
LogUtil.e("errorCount:"+errorCount); LogUtil.e("errorCount:" + errorCount);
//判断是否满足答对的要求 //判断是否满足答对的要求
boolean isNextLine = rightAnswerCount >= leastAnswerCount; boolean isNextLine = rightAnswerCount >= leastAnswerCount;
LogUtil.e("isNextLine:"+isNextLine); LogUtil.e("isNextLine:" + isNextLine);
mCollect.put(mLevelIndex, list); mCollect.put(mLevelIndex, list);
if(isNextLine){ if (isNextLine) {
if(mLevelIndex == 13){ if (mLevelIndex == 13) {
showResult(); showResult();
return; return;
}else { } else {
List<E> nextList = mCollect.get(mLevelIndex + 1); List<E> nextList = mCollect.get(mLevelIndex + 1);
if(nextList != null && nextList.size() > 0){ if (nextList != null && nextList.size() > 0) {
showResult(); showResult();
return; return;
} }
} }
} }
//防止出现-1的现象; //防止出现-1的现象;
if (lineSum - leastAnswerCount > 0) { if (lineSum - leastAnswerCount > 0) {
verifyErrorCount = lineSum - leastAnswerCount; verifyErrorCount = lineSum - leastAnswerCount;
} else { } else {
verifyErrorCount = 0; verifyErrorCount = 0;
} }
count1.setText("总共:"+lineSum); count1.setText("总共:" + lineSum);
count2.setText("总共:"+lineSum); count2.setText("总共:" + lineSum);
allow1.setText("正确数:"+leastAnswerCount); allow1.setText("正确数:" + leastAnswerCount);
allow2.setText("正确数:"+leastAnswerCount); allow2.setText("正确数:" + leastAnswerCount);
right1.setText("答对数:"+rightAnswerCount); right1.setText("答对数:" + rightAnswerCount);
right2.setText("答对数:"+rightAnswerCount); right2.setText("答对数:" + rightAnswerCount);
error1.setText("错误数:"+errorCount); error1.setText("错误数:" + errorCount);
error2.setText("错误数:"+errorCount); error2.setText("错误数:" + errorCount);
//必须答对一半才往下走一行的 //必须答对一半才往下走一行的
//如果错误次数超过一半 (默认位置时上一行没有数据时候)回退一行 //如果错误次数超过一半 (默认位置时上一行没有数据时候)回退一行
if (errorCount > verifyErrorCount) { if (errorCount > verifyErrorCount) {
//如果上一行数据不为空 结束测试 //如果上一行数据不为空 结束测试
if (mLevelIndex == 0 || (mCollect.containsKey(mLevelIndex - 1) && if (mLevelIndex == 0 || (mCollect.containsKey(mLevelIndex - 1) &&
mCollect.get(mLevelIndex - 1) != null && mCollect.get(mLevelIndex - 1).size() > 0)) { mCollect.get(mLevelIndex - 1) != null && mCollect.get(mLevelIndex - 1).size() > 0)) {
if(isSecondTest){ if (isSecondTest) {
mRightLine = leastAnswerCount; mRightLine = leastAnswerCount;
}else{ } else {
mLeftLine = leastAnswerCount; mLeftLine = leastAnswerCount;
} }
showResult(); showResult();
return; return;
}else { } else {
backLastLine(); backLastLine();
return; return;
} }
} }
next(isNextLine); next(isNextLine);
} }
/** /**
* 答错 * 答错
*/ */
private void userChooseError() { private void userChooseError() {
int direct = mSelectE.getDirect()+1; int direct = mSelectE.getDirect() + 1;
//获取当前行答过的e //获取当前行答过的e
List<E> list = mCollect.get(mLevelIndex); List<E> list = mCollect.get(mLevelIndex);
if (null == list || list.size() == 0) { if (null == list || list.size() == 0) {
list = new ArrayList<>(); list = new ArrayList<>();
} }
mSelectE.setUserChoose(direct); mSelectE.setUserChoose(direct);
list.add(mSelectE); list.add(mSelectE);
mCollect.put(mLevelIndex,list); mCollect.put(mLevelIndex, list);
judge(); judge();
// int verifyErrorCount = 0; // int verifyErrorCount = 0;
// int lineSum = getLineSumByIndex(mLevelIndex); // int lineSum = getLineSumByIndex(mLevelIndex);
// int leastAnswerCount = Eye.getLeastAnswerCount(mLevelIndex); // int leastAnswerCount = Eye.getLeastAnswerCount(mLevelIndex);
...@@ -630,117 +636,133 @@ public class EyeTestActivity extends BaseActivity{ ...@@ -630,117 +636,133 @@ public class EyeTestActivity extends BaseActivity{
// } // }
// } // }
// next(isNextLine); // next(isNextLine);
} }
//返回到上一行 //返回到上一行
private void backLastLine() { private void backLastLine() {
mLevelIndex = mLevelIndex-2; mLevelIndex = mLevelIndex - 2;
next(true); next(true);
} }
/** /**
* 单眼测试结束 * 单眼测试结束
*/ */
private void showResult() { private void showResult() {
//如果不是手动提交 //如果不是手动提交
final Double eyeResult = getResult(); final Double eyeResult = getResult();
if (isSecondTest) {//右眼训练 if (isSecondTest) {//右眼训练
mRightEye = eyeResult; mRightEye = eyeResult;
showStudentTestDialog(); showStudentTestDialog();
} else {//左眼训练 } else {//左眼训练
mLeftEye = eyeResult; mLeftEye = eyeResult;
resetView(false); resetView(false);
return; return;
} }
} }
private void showStudentTestDialog() { private void showStudentTestDialog() {
int selectId = PreferencesUtils.getInt(EyeConfig.EYE_SETTING_KEY,0); int selectId = PreferencesUtils.getInt(EyeConfig.EYE_SETTING_KEY, 0);
String text = ("测视结束左眼视力"+mLeftEye+"右眼视力"+mRightEye).replace(".","点"); String text = ("测视结束左眼视力" + mLeftEye + "右眼视力" + mRightEye).replace(".", "点");
if(selectId == 1){ if (selectId == 1) {
text = ("测视结束左眼视力"+Eye.transformSmall(mLeftEye)+"右眼视力"+ text = ("测视结束左眼视力" + Eye.transformSmall(mLeftEye) + "右眼视力" +
Eye.transformSmall(mRightEye)).replace(".","点"); Eye.transformSmall(mRightEye)).replace(".", "点");
} }
speak(text); speak(text);
Intent intent = new Intent(this,AfterEyeTestActivity.class); Intent intent = new Intent(this, AfterEyeTestActivity.class);
intent.putExtra("leftEye",mLeftEye); intent.putExtra("leftEye", mLeftEye);
intent.putExtra("rightEye",mRightEye); intent.putExtra("rightEye", mRightEye);
intent.putExtra("leftLine",mLeftLine); intent.putExtra("leftLine", mLeftLine);
intent.putExtra("rightLine",mRightLine); intent.putExtra("rightLine", mRightLine);
startActivity(intent); startActivity(intent);
finish(); finish();
} }
@Override @Override
public boolean dispatchKeyEvent(KeyEvent event) { public boolean dispatchKeyEvent(KeyEvent event) {
if(event.getAction() == KeyEvent.ACTION_UP){ if (event.getAction() == KeyEvent.ACTION_UP) {
//两次点击大于1秒 //两次点击大于1秒
long currentTime = System.currentTimeMillis(); long currentTime = System.currentTimeMillis();
if (mLastOnKeyTime > 0&&currentTime - mLastOnKeyTime < 500) { if (mLastOnKeyTime > 0 && currentTime - mLastOnKeyTime < 500) {
return true; return true;
} }
mLastOnKeyTime = currentTime; mLastOnKeyTime = currentTime;
switch (event.getKeyCode()) { switch (event.getKeyCode()) {
case KeyEvent.KEYCODE_BUTTON_X: case KeyEvent.KEYCODE_BUTTON_X:
userChoose(TOP); userChoose(TOP);
return true; return true;
case KeyEvent.KEYCODE_BUTTON_B: case KeyEvent.KEYCODE_BUTTON_B:
userChoose(BOTTOM); userChoose(BOTTOM);
return true; return true;
case KeyEvent.KEYCODE_BUTTON_A: case KeyEvent.KEYCODE_BUTTON_A:
userChoose(LEFT); userChoose(LEFT);
return true; return true;
case KeyEvent.KEYCODE_BUTTON_Y: case KeyEvent.KEYCODE_BUTTON_Y:
userChoose(RIGHT); userChoose(RIGHT);
return true; return true;
case KeyEvent.KEYCODE_DPAD_UP: case KeyEvent.KEYCODE_DPAD_UP:
userChoose(TOP); userChoose(TOP);
return true; return true;
case KeyEvent.KEYCODE_DPAD_DOWN: case KeyEvent.KEYCODE_DPAD_DOWN:
userChoose(BOTTOM); userChoose(BOTTOM);
return true; return true;
case KeyEvent.KEYCODE_DPAD_LEFT: case KeyEvent.KEYCODE_DPAD_LEFT:
userChoose(LEFT); userChoose(LEFT);
return true; return true;
case KeyEvent.KEYCODE_DPAD_RIGHT: case KeyEvent.KEYCODE_DPAD_RIGHT:
userChoose(RIGHT); userChoose(RIGHT);
return true; return true;
case KeyEvent.KEYCODE_DPAD_CENTER://遥控中间键 case KeyEvent.KEYCODE_DPAD_CENTER://遥控中间键
//用户点击返回键: //用户点击返回键:
userChooseError(); userChooseError();
return true; return true;
} }
return true; return true;
} }
return super.dispatchKeyEvent(event); return super.dispatchKeyEvent(event);
} }
private double getResult() { private double getResult() {
if (null == mCollect || mCollect.size() == 0) { if (null == mCollect || mCollect.size() == 0) {
if(test_dis == 0) { if (test_dis == 0) {
return 4.0; return 4.0;
}else{ } else {
return 3.8; return 3.8;
} }
} }
int result = 0; int result = 0;
for (LinkedHashMap.Entry<Integer, List<E>> entry : mCollect.entrySet()) { for (LinkedHashMap.Entry<Integer, List<E>> entry : mCollect.entrySet()) {
result = entry.getKey(); result = entry.getKey();
} }
final String levelByIndex = ""+Eye.getLevelByIndex(result,test_dis == 0); final String levelByIndex = "" + Eye.getLevelByIndex(result, test_dis == 0);
return Double.parseDouble(levelByIndex); return Double.parseDouble(levelByIndex);
} }
@Override @Override
public boolean onKeyDown(int keyCode, KeyEvent event) { public boolean onKeyDown(int keyCode, KeyEvent event) {
if(keyCode == KeyEvent.KEYCODE_BACK){ if (keyCode == KeyEvent.KEYCODE_BACK) {
finish(); finish();
return true; return true;
} }
return super.onKeyDown(keyCode, event); 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;
}
}
} }
...@@ -12,6 +12,24 @@ ...@@ -12,6 +12,24 @@
android:layout_height="match_parent" android:layout_height="match_parent"
android:layout_weight="1"> android:layout_weight="1">
<TextView
android:layout_marginTop="@dimen/dp_16"
android:layout_centerHorizontal="true"
android:id="@+id/title_left"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="5.0 -3"
android:textColor="@color/text_color"
android:textSize="@dimen/sp_22" />
<TextView
android:layout_marginTop="@dimen/dp_16"
android:id="@+id/next_left"
android:layout_alignParentRight="true"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="X 放弃当前,跳到下一位"
android:textColor="@color/text_color"
android:textSize="@dimen/sp_16" />
<RelativeLayout <RelativeLayout
android:id="@+id/rl_eye_test_center1" android:id="@+id/rl_eye_test_center1"
android:layout_width="match_parent" android:layout_width="match_parent"
...@@ -175,7 +193,24 @@ ...@@ -175,7 +193,24 @@
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="match_parent" android:layout_height="match_parent"
android:layout_weight="1"> android:layout_weight="1">
<TextView
android:layout_marginTop="@dimen/dp_16"
android:layout_centerHorizontal="true"
android:id="@+id/title_right"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="5.0 -3"
android:textColor="@color/text_color"
android:textSize="@dimen/sp_22" />
<TextView
android:layout_marginTop="@dimen/dp_16"
android:id="@+id/next_right"
android:layout_alignParentRight="true"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="X 放弃当前,跳到下一位"
android:textColor="@color/text_color"
android:textSize="@dimen/sp_16" />
<RelativeLayout <RelativeLayout
android:id="@+id/rl_eye_test_center2" android:id="@+id/rl_eye_test_center2"
android:layout_width="match_parent" android:layout_width="match_parent"
......
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