android速度使用粗糙

android速度使用粗糙,android,performance,location,Android,Performance,Location,大家好 如何在android中使用ACCESS\u rough\u位置获得速度 谢谢你很可能你不能。“粗糙”的定位技术只知道你在几百米以内的位置。你的速度可能变化很大。如果你需要知道你的速度,你很可能需要一个“好”的位置提供者 或者,更好的做法是,使用Criteria对象规定您需要了解设备的速度,并让它引导您找到最佳的提供商使用。您好,您指的是位置。getSpeed()我认为这是一个可选字段,可能取决于设备是否真正支持它。首先,试试这个 Criteria criteria = new Crite

大家好 如何在android中使用
ACCESS\u rough\u位置
获得速度


谢谢你

很可能你不能。“粗糙”的定位技术只知道你在几百米以内的位置。你的速度可能变化很大。如果你需要知道你的速度,你很可能需要一个“好”的位置提供者


或者,更好的做法是,使用Criteria对象规定您需要了解设备的速度,并让它引导您找到最佳的提供商使用。

您好,您指的是
位置。getSpeed()
我认为这是一个可选字段,可能取决于设备是否真正支持它。首先,试试这个

Criteria criteria = new Criteria();
criteria.setSpeedRequired(true);
LocationProvider[] providers = mLocationManager.getProviders(criteria, false);

if (providers == null || providers.length == 0) {
 //Sorry it doesn't do it by default.
}
幸运的是,数学和科学将帮助我们:)只要计算一下从
位置提供商获得更新时的速度即可。确保将lat、longs和times之间的距离计算为两个位置更新记录的时间戳的差值

...
onLocationChanged(Location location) {
 if (mOldLocation != null) {
   float distance = getDistance(mOldLocation, location);
   long time = location.getTime() - mOldLocation.getTime();
   mSpeed = distance/time;
 }
 mOldLocation = location;
}

它不一定非常准确(可能真的很吵),但做柠檬水比吃腐烂的水果更好。。。希望这能有所帮助。确保也只比较同一提供程序中的增量。您可能会发现自己正在调整手动计算,因为设备提供商非常多样化,并且不能保证时间总是向前移动。

确定是否可以获得开始和结束坐标以及达到扩张所需的时间,并从中获得准确的速度it@Moe:“准确”?那要看你的意思了。见@Greg的答案。