2016-06-18 73 views
0

即使設備未處於移動狀態,我也想獲取當前設備的經緯度。Android設備未移動時無法使用GPS獲取當前位置

試過requestLocationUpdates()requestSingleUpdate()但我的位置仍然爲空。似乎只在位置發生變化時纔會調用LocationManager.onLocationChanged()。我想發佈此地點的詳細信息,但每次都會失敗,並顯示NullPointerException

這裏是我的代碼示例:

活動:

startButton.setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View v) { 
     LocationManager locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE); 
     locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, myLocationListener); 

     if (location == null) { 
      try { 
       locationManager.requestSingleUpdate(LocationManager.GPS_PROVIDER, myLocationListener, Looper.myLooper());       
      } catch (SecurityException e) { 
      } 
     } 

     //MyLocationListener  
     public void onLocationChanged(Location location) { 
      activity.setLocation(location); 
     } 
    } 
} 

清單:

<uses-permission android:name="android.permission.ACCESS_GPS" /> 
<uses-permission android:name="android.permission.ACCESS_LOCATION" /> 
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> 
+0

嘗試用另一部手機 – lawonga

+0

您使用的設備在室內? GPS需要很長時間才能在室內進行定位。 – basilisk

+0

是的,我在室內使用 – unfitgeek

回答

0

試圖把你的代碼中的AsyncTask。

1

如果用戶在一段時間內沒有使用過GPS,將不會有最後的已知位置,因此GPS提供者根本不會更新,除非您移動到外面。更好地使用新的FusedLocationApi獲取更新,因爲它爲您選擇最佳來源併爲您提供最佳位置。

https://developer.android.com/training/location/receive-location-updates.html

LocationServices.FusedLocationApi.requestLocationUpdates(
     mGoogleApiClient, mLocationRequest, this); 
+0

確保它通過@basilisk感謝...將嘗試FusedLocationAPI – unfitgeek