您好我正在尝试升级警报,如果用户退出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;
}
在此之后,我不确定如何正确地进行计时。
答案 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);
}
}