2016-08-22 14 views
0

こんにちは、私はユーザーの現在の位置を取得するコードを書き込もうとしています。私はこのチュートリアルhttp://www.androidhive.info/2012/07/android-gps-location-manager-tutorial/に従っていますが、スレッドコードを追加するとAndroidスタジオの拡張コントロールからLatとLonを変更すると5秒ごとに更新されますが、latとlonは0.0にとどまります0.0Androidで数秒間隔でスレッドの位置を更新します。

以下は、更新された位置ごとに5秒を取得することはできませんスレッド

if(gps.canGetLocation()) 
    { 

     Thread t = new Thread() { 

      @Override 
      public void run() { 
       try { 
        while (!isInterrupted()) { 
         Thread.sleep(5000); 
         runOnUiThread(new Runnable() { 
          @Override 
          public void run() { 
           if(Double.toString(gps.getLatitude()) != null && Double.toString(gps.getLongitude()) != null){ 
            realLatitude = gps.getLatitude(); 
            realLongitude = gps.getLongitude(); 
            lblShowLat.setText(Double.toString(realLatitude)); 
            lblShowLon.setText(Double.toString(realLongitude)); 
            System.out.println(Double.toString(realLatitude) + " "+ Double.toString(realLongitude)); 

            updateDateTime(); 
           } 
           // Toast.makeText(getApplicationContext(), "Refresh ", Toast.LENGTH_LONG).show(); 
          } 
         }); 
        } 
       } catch (InterruptedException e) { 
       } 
      } 
     }; 

     t.start(); 

    } 

    else 
    { 
     gps.showSettingAlert(); 
    } 

答えて

0

1)とのコードです。お使いの携帯電話は頻繁にその場所を更新しません。 GPSは通常30秒〜1分です。

2)使用しているチュートリアルは本当に壊れています。そのコードは決して使用されるべきではなく、そのすべてのコピーは炎の中で焼かれるべきです。私はそのコードがここでひどい理由を詳細に分析しています:http://gabesechansoftware.com/location-tracking/私はそこでそれをやるより良い方法があります。

3)これを行う正しい方法は、場所の更新を登録し、場所が固定されたスケジュールではなく更新されたときにサーバーを更新することです。

4)3を実行することなく、コードを動作させる方法がありません。そのgetLastKnownLocationに依存していますが、これは動作しない可能性があります。しかし、それが最初に動作していない場合、それは決して修正されません。そのための唯一の安全な使用は、最適化として楽観的に使用することです。実際に場所が必要な場合は、常に更新を要求してください。その機能が動作するとは決して考えないでください。

+0

こんにちは、ご返信ありがとうございます。申し訳ありませんまだ私はアンドロイドの初心者です。 –

関連する問題