2016-04-26 9 views
1

私は誰かのスピードを追跡する簡単なアプリを作ろうとしています。 Android Studioのロケーションガイドを読んだことがありますが、誰かのスピードを取得する方法や、誰かの場所を均等に取得する方法は示されていません。私は現在、私は定期的に更新を要求するためのより良い方法があるだろうと思いますけれども、これを行うにはのThread.sleepを使用しています数秒ごとに誰かの場所を取得するにはどうすればよいですか?

if (OldLocation != null) { 
      OldLocation = NewLocation; 
      NewLocation = LocationServices.FusedLocationApi.getLastLocation(mGoogleApiClient); 
     } else { 
      OldLocation = lm.getLastKnownLocation(LocationManager.GPS_PROVIDER); 
      try {Thread.sleep(1000);} catch (InterruptedException ex) { 
       Thread.currentThread().interrupt(); 
      } 
      NewLocation = lm.getLastKnownLocation(LocationManager.GPS_PROVIDER); 
     } 
     float distance = OldLocation.distanceTo(NewLocation); 
     float speed = distance/1000; 

現在、私が設定したコードのこのスニペットを持っています。

どのように表示することができますか?

答えて

1

これは可能な限り最悪の方法です。何十もの理由から、getLastKnownLocationをほとんど使用しないでください。継続的な更新を行うことは、それを行う場所の1つではありません。代わりに、LocationManager.requestLocationUpdates()を使用します。コールバックオブジェクトを提供し、更新されたポジションが利用可能になったときにコールします。

また、LocationManagerまたはGoogle Playの融合位置を使用します。ミックスしてマッチさせる正当な理由はありません。

+0

5秒ごとに場所をリクエストする方法はありますか? – Mildwood

+1

これはちょっと速すぎます。ロケーションのアップデートをリクエストすると、アップデートがある場合に限り、n秒ごとにあなたに電話がかかります。 GPSは一般的に1分に約2回あなたの場所を更新します –

+0

よろしいですか?私は特定の間隔を設定する必要はないと思う。ご協力ありがとうございました! – Mildwood

関連する問題