速度突然从零跳到无穷大
Speed Suddenly jumps from zero to Infinity
我目前正在尝试计算一个人使用应用程序的速度。
我认为位置更新有问题,因为当我坐着不动时,它检测到速度为零或大约为 0,然后由于某种原因突然跳到无穷大(是的,应用程序显示 'Infinity'), 然后回到 0.
我认为这与试图除以零有关,但我不确定为什么。
这是我的代码:onConnected:
public void onConnected(Bundle connectionHint) {
if (ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED) {
LocationServices.FusedLocationApi.requestLocationUpdates(mLocationClient, mLocationRequest, this);
OldLocation = LocationServices.FusedLocationApi.getLastLocation(mLocationClient);
}
}
public void onLocationChanged(Location location) {
int ExceedInstance = PhoneBelt.getExceedInstance();
int ExceedingLimitInteger = PhoneBelt.getExceedInt();
float Distance = OldLocation.distanceTo(location);
long TimeDiff = location.getTime()-OldLocation.getTime();
long SecondDiff = TimeDiff/1000 % 6;
float Speed = Distance/SecondDiff;
}
为什么速度突然随机跳到无穷大?
我觉得,是可以造成的,因为long SecondDiff可以为0,最后Distance会被除0,会造成speed=infinity。
我目前正在尝试计算一个人使用应用程序的速度。
我认为位置更新有问题,因为当我坐着不动时,它检测到速度为零或大约为 0,然后由于某种原因突然跳到无穷大(是的,应用程序显示 'Infinity'), 然后回到 0.
我认为这与试图除以零有关,但我不确定为什么。
这是我的代码:onConnected:
public void onConnected(Bundle connectionHint) {
if (ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED) {
LocationServices.FusedLocationApi.requestLocationUpdates(mLocationClient, mLocationRequest, this);
OldLocation = LocationServices.FusedLocationApi.getLastLocation(mLocationClient);
}
}
public void onLocationChanged(Location location) {
int ExceedInstance = PhoneBelt.getExceedInstance();
int ExceedingLimitInteger = PhoneBelt.getExceedInt();
float Distance = OldLocation.distanceTo(location);
long TimeDiff = location.getTime()-OldLocation.getTime();
long SecondDiff = TimeDiff/1000 % 6;
float Speed = Distance/SecondDiff;
}
为什么速度突然随机跳到无穷大?
我觉得,是可以造成的,因为long SecondDiff可以为0,最后Distance会被除0,会造成speed=infinity。