当设备不移动时,Android无法使用GPS获取当前位置

时间:2016-06-18 16:48:32

标签: android 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" />

2 个答案:

答案 0 :(得分:1)

如果用户暂时没有使用GPS,则没有最后的已知位置,因此除非您搬到外面,否则GPS提供商根本不会更新。最好使用新的FusedLocationApi来获取更新,因为它为您选择最佳来源并为您提供最佳位置。

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

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

答案 1 :(得分:0)

尝试将代码放入AsyncTask。