我正在使用Android LocationManager
检查用户是否在我定义的位置附近。
我正在使用addProximityAlert
方法,以便在用户处于我期望的位置时收到意图。
但是,我想要做的是知道用户是否在给定的位置一段时间,因为如果用户正在穿过我正在检查的位置,我也可能会收到意图。
我的第一个方法是,经过一段时间(几分钟)后,我可以再次检查。有更好的方法吗?有没有办法在一段时间过后才收到意图?
谢谢。
答案 0 :(得分:0)
要解决此问题,您可以使用loadMatchesWithCompletionHandler:^(NSArray *matches, NSError *error)
语句来存储用户在特定距离内的已用时间。
您可以使用if
来获取当前时间和然后从中减去原始开始时间,给你经过的时间。这是你可以做的事情:
System.currentTimeMillis()
改变' 5'在long startTime = 0;
long elapsedTime;
// Set up LocationManager here
Location targetPlace;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Location location = locationManager.getLastKnownLocation(provider);
// Checks to see if the user was already there when they opened the activity
if(location.distanceTo(targetPlace) == 5) {
startTime = System.currentTimeMillis();
}
targetPlace = new Location(provider);
}
@Override
public void onLocationChanged(Location location) {
if(startTime != 0) {
// Check to see if the user is in a given place
if (location.distanceTo(targetPlace) == 5) {
elapsedTime = (System.currentTimeMillis() - startTime) / 1000; // Time in seconds
} else {
// User is not near that location
}
} else {
startTime = System.currentTimeMillis();
}
}
语句中,你想要的是半径。希望这有帮助!