私はこの質問がたくさん聞かれていることを知っていますが、まだ満足のいくものではありません。AndroidデバイスのGPSを使用して速度を計算しようとしています。多くの人は、LocationオブジェクトのgetSpeed()関数を使用するだけだと言って返信しているようです。私が理解していることから、getSpeed()は、GPS受信機チップに速度センサーが組み込まれている特定のデバイスでのみ機能します。これに関係なくアプリケーションを動作させたいので、次の半正矢関数を使用しています。
private double CalculateHaversineMI(double lat1, double long1, double lat2,double long2) {
double dlong = (long2 - long1) * (Math.PI / 180.0f);
double dlat = (lat2 - lat1) * (Math.PI / 180.0f);
double a = Math.pow(Math.sin(dlat / 2.0), 2)
+ Math.cos(lat1 * (Math.PI / 180.0f))
* Math.cos(lat2 * (Math.PI / 180.0f))
* Math.pow(Math.sin(dlong / 2.0), 2);
double c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));
double d = 3956 * c;
return d;
}
今私がやろうとしているのは、これから速度を計算する方法を理解することです。誰か助けてくれませんか?