Android,在警报之间设置时间

时间:2014-04-10 09:50:16

标签: android

您好我正在尝试升级警报,如果用户退出Geofence边界并且我对如何实现它感到困惑,我会很感激任何帮助,因为它是一个很晚的变化,并希望很快实现它。

活动顺序:

用户可以在设置中指定警报之间的时间(默认2分钟)。

如果他们在地理围栏之外 - 会出现警告对话框。

如果他们仍然在警告对话框中2分钟之外,请使用语音提示

如果他们仍然在离语音警报2分钟之外,请使用语音和振动

如果他们仍然离开讲话2分钟并且振动,请发送短信。

有人可以帮我开始吗?

这是我到目前为止所做的。

        // Getting the time value the user has saved in settings
        String alertTime = SP.getString("alert_time", "2");
        int  escalateTime = Integer.parseInt(alertTime);
        int timeSeconds = alertTime * 60;

         if (distance[0] > mCircle.getRadius()) {
                    timeNow = System.currentTimeMillis() / 1000;

}

在此之后,我不确定如何正确地进行计时。

1 个答案:

答案 0 :(得分:0)

使用Handler来延迟运行代码,您可以从这里开始:

private Handler handler;

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);        
    handler=new Handler();
    ...
}

public void locationUpdated() { //call this every time GPS changes
    if (isOutside()) {
        if (!dialog shown) {
            showAlertDialog();
        }
    } else {
        if (handler.hasMessages(0)) {
            handler.removeCallbacksAndMessages(null); //not outside, remove all delayed code
        }
        //TODO remove alertdialog if shown
    }
}

private void showAlertDialog() {
    //TODO show alertDialog here
    handler.postDelayed(new SpeechAlert(), 2*1000*60);
}

class SpeechAlert implements Runnable {
    public void run() {
        //TODO do speech alert here ...
        handler.postDelayed(new SpeechAndVibrateAlert(), 2*1000*60);
    }
}

class SpeechAndVibrateAlert implements Runnable {
    public void run() {
        //TODO do speech and vibrate alert ...
        handler.postDelayed(..., 2*1000*60);
    }
}