0

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

都试过了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" />
4

2 回答 2

1

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

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

LocationServices.FusedLocationApi.requestLocationUpdates(
        mGoogleApiClient, mLocationRequest, this);
于 2016-06-19T06:05:09.453 回答
0

尝试将您的代码放入 AsyncTask。

于 2016-06-18T17:22:39.493 回答