眼睑闭合超过 3 秒时发出警报
Make an alert if eyelid closed more than 3 seconds
我想在用户的眼皮闭合超过 3 秒后发出警报,但我的代码有问题。如何让布尔值 right_eye 和布尔值 left_eye 在关闭 3 秒后触发警报?这是我写的一些代码。
public void eyeTracking(FirebaseVisionFace face){
boolean right_eye = face.getRightEyeOpenProbability() < 0.5;
boolean left_eye = face.getLeftEyeOpenProbability() < 0.5;
Handler mHandler = new Handler();
Runnable runnable = new Runnable() {
@Override
public void run() {
}
};
if (right_eye && left_eye) {
begin = System.currentTimeMillis();
Log.d(TAG, "eyeTracking: " + sleep);
mHandler.postDelayed(runnable, 3000);
sleep = true;
}
else {
sleep = false;
}
if(sleep){
stop = System.currentTimeMillis();
Log.d(TAG, "eyeTracking: " + begin + "stop" + stop);
if(begin - stop >= 3000) {
alertBox();
}
}
}
当我尝试记录我的开始和停止变量时 returns 相同的值 我做错了吗?
您不应该在每次检测到闭眼时都设置 begin 变量。在您的项目中尝试以下代码。希望这对您有所帮助:
long begin=0;
public void eyeTracking(FirebaseVisionFace face){
boolean right_eye = face.getRightEyeOpenProbability() < 0.5;
boolean left_eye = face.getLeftEyeOpenProbability() < 0.5;
if (right_eye && left_eye) {
//if your begin variable is reset
if(begin==0){
begin = System.currentTimeMillis();
}
Log.d(TAG, "eyeTracking: " + sleep);
sleep = true;
}
else {
//reset your begin variable
begin=0;
sleep = false;
}
Log.d(TAG, "Eyes closed time: "+System.currentTimeMillis()-begin);
if(sleep && System.currentTimeMillis()-begin>3000){
Log.d(TAG, "Show alert");
alertBox();
}
}
我想在用户的眼皮闭合超过 3 秒后发出警报,但我的代码有问题。如何让布尔值 right_eye 和布尔值 left_eye 在关闭 3 秒后触发警报?这是我写的一些代码。
public void eyeTracking(FirebaseVisionFace face){
boolean right_eye = face.getRightEyeOpenProbability() < 0.5;
boolean left_eye = face.getLeftEyeOpenProbability() < 0.5;
Handler mHandler = new Handler();
Runnable runnable = new Runnable() {
@Override
public void run() {
}
};
if (right_eye && left_eye) {
begin = System.currentTimeMillis();
Log.d(TAG, "eyeTracking: " + sleep);
mHandler.postDelayed(runnable, 3000);
sleep = true;
}
else {
sleep = false;
}
if(sleep){
stop = System.currentTimeMillis();
Log.d(TAG, "eyeTracking: " + begin + "stop" + stop);
if(begin - stop >= 3000) {
alertBox();
}
}
}
当我尝试记录我的开始和停止变量时 returns 相同的值 我做错了吗?
您不应该在每次检测到闭眼时都设置 begin 变量。在您的项目中尝试以下代码。希望这对您有所帮助:
long begin=0;
public void eyeTracking(FirebaseVisionFace face){
boolean right_eye = face.getRightEyeOpenProbability() < 0.5;
boolean left_eye = face.getLeftEyeOpenProbability() < 0.5;
if (right_eye && left_eye) {
//if your begin variable is reset
if(begin==0){
begin = System.currentTimeMillis();
}
Log.d(TAG, "eyeTracking: " + sleep);
sleep = true;
}
else {
//reset your begin variable
begin=0;
sleep = false;
}
Log.d(TAG, "Eyes closed time: "+System.currentTimeMillis()-begin);
if(sleep && System.currentTimeMillis()-begin>3000){
Log.d(TAG, "Show alert");
alertBox();
}
}