【问题标题】:Android unable to get current location using GPS when device is not moving当设备不移动时,Android 无法使用 GPS 获取当前位置
【发布时间】:2016-06-18 16:48:32
【问题描述】:

即使设备没有移动,我也想获取设备的当前纬度和经度。

尝试了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" />

【问题讨论】:

  • 换个手机试试
  • 您在室内使用设备吗? GPS 需要很长时间才能在室内定位。
  • 是的,我在室内使用
  • @basilisk 有没有办法始终如一地获取位置。如果需要一些时间而不是我通过一些“TimerTask”或某种方式来确保它,那很好

标签: android android-gps


【解决方案1】:

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

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

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

【讨论】:

  • 非常感谢@basilisk...将尝试 FusedLocationAPI
【解决方案2】:

尝试将您的代码放入 AsyncTask。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-30
    • 1970-01-01
    • 2016-12-01
    • 1970-01-01
    • 2014-05-09
    相关资源
    最近更新 更多