-1

私はアプリケーションを書いていて、走っている間に移動した距離を示さなければなりません。LocationListener の関数「public void onLocationChanged」を使用します。ユーザーがボタンをタップして走り始めると、現在位置に更新された距離を表示したいと思います。

私はこのコードを書きました:

public void onLocationChanged(Location location) { 
    if(location != null) { 
        if(location.hasSpeed()){ 
            if(latitude1 == 0 && longitude1 == 0){
                latitude1 = (location.getLatitude()*Math.PI)/180;
                longitude1 = (location.getLongitude()*Math.PI)/180;
            } else{
                latitude2 = (location.getLatitude()*Math.PI)/180;
                longitude2 = (location.getLongitude()*Math.PI)/180;
                distance = (6372.795477598)*Math.acos(Math.sin(latitude1)
                           *Math.sin(latitude2)+Math.cos(latitude1)
                           *Math.cos(latitude2)*Math.cos(longitude1-longitude2));
                sumDistance += distance;
                latitude1 = latitude2;
                longitude1 = longitude2;
            }

            tv.setText("Distance covered=" + sumDistance + " m"); 
        } 
    } 
}

それは正確ですか?

4

2 に答える 2

0

最近、Google は位置情報ベースの API を改善しました。センサーを位置情報ベースの API と融合させて、位置情報をより正確に (約 4 倍効果的に) 消費し、消費電力を大幅に削減 (10 分の 1) する方法の例を共有しました。

あなたが通過するいくつかの興味深いリンクは、これビデオ google ioです。

APIの使用方法に関するSOリンクはこちら

于 2013-06-10T06:53:24.907 に答える