2017-05-16 7 views
0

GPSデータを使用してアンドロイドアプリで速度と加速度を追跡することは可能ですか?これらの機能を備えたネイティブアプリを作成する予定です。しかし、私が得ることができるデータでそれを行うことが可能かどうかを知りたい。ネイティブのアンドロイドでも?gpsデータを使って加速と速度を追跡することは可能ですか?

+0

はいあなたは速度=距離/時間を得ることができます。 – jagapathi

+0

下記のようなLocationchangelisterのgetspeed()を使用してください http://stackoverflow.com/a/6200487/7989770 希望すると助かります! –

答えて

1

あなたは純粋なJSでそれを行うことができます。

スピード部分の場合、watchPositionという方法が見つかるコアReact Native Geolocation APIがあります。各位置の更新では、他の属性(位置、高度...)の中で現在の速度でオブジェクトが返されます。

アクセラレーション部には、react-native-motion-managerライブラリがあります。あなたは加速度計の更新を聞くことができ、加速度を得ることができます。

1

GPSデータを使用して アンドロイドアプリで速度と加速度を追跡することはできますか?

回答:はい

location.getSpeedは()のみ location.setSpeed()を使って設定されたものを返します。これは、場所 オブジェクトに設定できる値です。

は、GPSを使用して速度を計算するには、少し数学を行う必要があるでしょう:
Speed = distance/time 

ので

(currentGPSPoint - lastGPSPoint)/(time between GPS points) 
0

各場所で提供することを行う方法すべてのLocationProvidersは場所が取得された時点で瞬時の速度を持ちますが、これは不安定であり、デバイス間で異なる場合があります。平均速度はより正確です。距離と時間を計算する必要があります。これは私が2箇所の間の距離を計算する方法である:

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; 
} 

あなたにもこの機能を使用することができますが、私はむしろ、「結果」の結果を格納する他のものを、使用したい:)

Location.distanceBetween(in1.getLatitude(),in1.getLongitude(),in2.getLatitude(),in2.getLongitude(),results); 

ので(それは1000 *です)メートル/秒でスピードを得るには非常に簡単です:

double avgSpeed = 1000 * distance(loc1,loc2)/(loc2.getTime()-loc1.getTime) 
関連する問題