Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
H
haihang
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
徐丛奇
haihang
Commits
26ea9322
Commit
26ea9322
authored
Aug 29, 2018
by
chengxiuhong
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
test main
parent
3daae609
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
632 additions
and
575 deletions
+632
-575
EyeTestActivity.java
app/src/main/java/com/oo/eye/activity/EyeTestActivity.java
+596
-574
activity_eye_test.xml
app/src/main/res/layout/activity_eye_test.xml
+36
-1
No files found.
app/src/main/java/com/oo/eye/activity/EyeTestActivity.java
View file @
26ea9322
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
;
}
}
}
}
app/src/main/res/layout/activity_eye_test.xml
View file @
26ea9322
...
@@ -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"
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment