Android 是否可以使用gps数据跟踪加速度和速度?
是否有可能通过android应用程序使用其提供的GPS数据跟踪速度和加速度?我计划创建一个带有这些功能的react原生应用程序。但我想知道是否有可能用我们能得到的数据来做这件事。甚至在原生安卓系统中 是否可以通过一个传感器跟踪速度和加速度 android应用程序使用它提供的GPS数据 回答:是 getSpeed()只返回使用 location.setSpeed()。这是一个可以为位置设置的值 反对 要使用GPS计算速度,您需要做一些数学运算:Android 是否可以使用gps数据跟踪加速度和速度?,android,react-native,Android,React Native,是否有可能通过android应用程序使用其提供的GPS数据跟踪速度和加速度?我计划创建一个带有这些功能的react原生应用程序。但我想知道是否有可能用我们能得到的数据来做这件事。甚至在原生安卓系统中 是否可以通过一个传感器跟踪速度和加速度 android应用程序使用它提供的GPS数据 回答:是 getSpeed()只返回使用 location.setSpeed()。这是一个可以为位置设置的值 反对 要使用GPS计算速度,您需要做一些数学运算: Speed = distance / time 那
Speed = distance / time
那么怎么做呢
(currentGPSPoint - lastGPSPoint) / (time between GPS points)
是否可以通过一个传感器跟踪速度和加速度
android应用程序使用它提供的GPS数据
回答:是
getSpeed()只返回使用
location.setSpeed()。这是一个可以为位置设置的值
反对
要使用GPS计算速度,您需要做一些数学运算:
Speed = distance / time
那么怎么做呢
(currentGPSPoint - lastGPSPoint) / (time between GPS points)
所有LocationProviders提供的每个位置在获取位置时都具有瞬时速度,这是不稳定的,并且在不同设备之间可能有所不同。平均速度更精确,你必须计算距离和时间。这是我计算两个位置之间距离的方法:
static double distance (Location in1, Location in2) {
double R = 6371000;
double la1 = in1.getLatitude()* Math.PI/180;
double la2 = in2.getLatitude()* Math.PI/180;
double lo1 = in1.getLongitude()* Math.PI/180;
double lo2 = in2.getLongitude()* Math.PI/180;
double tmp1 = Math.sin((la1-la2)/2)*Math.sin((la1-la2)/2) + Math.cos(la1)*Math.cos(la2) * Math.sin((lo1-lo2)/2) * Math.sin((lo1-lo2)/2);
double tmp2 = Math.sqrt(tmp1);
double d = Math.abs(2 * R * Math.asin(tmp2) * 100000) / 100000;
return d;
}
您也可以使用此函数,但我更愿意使用另一个函数,它将结果存储在“results”中:
因此,以m/s为单位计算速度(即1000*for)非常简单:
double avgSpeed = 1000 * distance(loc1,loc2) / (loc2.getTime()-loc1.getTime)
所有LocationProviders提供的每个位置在获取位置时都具有瞬时速度,这是不稳定的,并且在不同设备之间可能有所不同。平均速度更精确,你必须计算距离和时间。这是我计算两个位置之间距离的方法:
static double distance (Location in1, Location in2) {
double R = 6371000;
double la1 = in1.getLatitude()* Math.PI/180;
double la2 = in2.getLatitude()* Math.PI/180;
double lo1 = in1.getLongitude()* Math.PI/180;
double lo2 = in2.getLongitude()* Math.PI/180;
double tmp1 = Math.sin((la1-la2)/2)*Math.sin((la1-la2)/2) + Math.cos(la1)*Math.cos(la2) * Math.sin((lo1-lo2)/2) * Math.sin((lo1-lo2)/2);
double tmp2 = Math.sqrt(tmp1);
double d = Math.abs(2 * R * Math.asin(tmp2) * 100000) / 100000;
return d;
}
您也可以使用此函数,但我更愿意使用另一个函数,它将结果存储在“results”中:
因此,以m/s为单位计算速度(即1000*for)非常简单:
double avgSpeed = 1000 * distance(loc1,loc2) / (loc2.getTime()-loc1.getTime)
您可以在纯JS中完成 对于速度部分您有一个核心,您可以在其中找到方法
watchPosition
。在每次位置更新时,将返回一个具有当前速度和其他属性(位置、高度…)的对象
对于加速部分,您拥有库。您可以收听加速计更新并获得加速度。您可以在纯JS中完成 对于速度部分您有一个核心,您可以在其中找到方法
watchPosition
。在每次位置更新时,将返回一个具有当前速度和其他属性(位置、高度…)的对象
对于加速部分,您拥有库。您可以收听加速计更新并获得加速度。是的,您可以获得速度=距离/时间;在Locationchangelister中使用getspeed(),如下所述,希望能有所帮助!!是的,你可以得到速度=距离/时间;在Locationchangelister中使用getspeed(),如下所述,希望能有所帮助!!