2015-03-31 56 views
0

我正在嘗試爲應用程序獲取設備的位置。該代碼返回經度和緯度0.0。我需要改變什麼?堆棧溢出不會讓我發表這個問題沒有另一句話。希望這篇文章足夠了。Android - 緯度值爲0.0和0.0

//Getting the location 
     LocationManager lm = (LocationManager)getSystemService(Context.LOCATION_SERVICE); 
     LocationListener ll = new LocationListener() { 

      @Override 
      public void onLocationChanged(Location location) { 
       // TODO Auto-generated method stub 
       if(location !=null){ 
        plat = location.getLatitude(); 
        plong = location.getLongitude(); 
       } 

      } 

      @Override 
      public void onStatusChanged(String provider, int status, Bundle extras) { 
       // TODO Auto-generated method stub 

      } 

      @Override 
      public void onProviderEnabled(String provider) { 
       // TODO Auto-generated method stub 

      } 

      @Override 
      public void onProviderDisabled(String provider) { 
       // TODO Auto-generated method stub 

      } 


     }; 
     lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, ll); 
     Log.d("lat: ",Double.toString(plat)); 
     Log.d("long: ",Double.toString(plong)); 

回答

1

RequestLocationUpdates是異步的 - 它需要時間。在調用onLocationChanged之前,plat和plong的值不會準備好。所以你到那時才能使用它們。

0

移動

Log.d("lat: ",Double.toString(plat)); 
Log.d("long: ",Double.toString(plong)); 

public void onLocationChanged(Location location) 

,並確保啓用GPS

+0

謝謝加布和馬漢納德。我把Log.d裏面的onLocationChange移動了,它們顯示了正確的Lat和Long。 當我稍後使用plat和plong將數據存儲在字符串中並推送到我的服務器時,我通常會得到0.0。我只有一次得到正確的價值觀。 @加貝:這是我第一次這樣做。我需要做什麼才能正確獲取數據? – kurious 2015-04-01 00:16:58

+0

你可以發佈你用來發送這些數據的代碼嗎?你何時調用這段代碼? – 2015-04-01 00:20:16