无法获得GPS位置

时间:2012-08-08 00:45:48

标签: android eclipse android-emulator android-location

我正在尝试访问用户设备的GPS位置,似乎无处可去。

在我的课程中,我有以下代码,它会检查GPS提供程序是否已启用,然后尝试获取用户上次知道的位置。

它认为GPS提供商为enabled,但当我尝试获取最后一个已知位置时,我得不到任何内容,myLocation始终返回null

// try to get GPS location
LocationManager locationManager = (LocationManager) context.getSystemService(Context.LOCATION_SERVICE);
final boolean gpsEnabled = locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER);

if (gpsEnabled) {

    //request for location updates
    LocationListener locationListener = new MyLocationListener();
    locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 100, 0, locationListener);

    Location myLocation;
    myLocation = locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);

    if (myLocation != null) {
        //we have a location!!
    }

} // end if gps enabled

以下是LocationListener

的代码
public class MyLocationListener implements LocationListener
{
    public void onLocationChanged(Location location) {
        location.getLatitude();
        location.getLongitude();
        // TODO get accuracy, direction and speed.
        // this method is unfinished...
    }
}

这是清单文件的权限

<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />

显然,我有一些东西可以忽略以获取设备位置..为什么最后一个已知位置始终返回null?

1 个答案:

答案 0 :(得分:1)

一些事情:

  1. 在您的LocationListener中,您没有对位置执行任何操作。例如。您可以将位置保存在变量中并稍后使用。
  2. 如果禁用了提供程序或设备没有任何已知位置,则LocationManager.getLastKnownLocation可以返回null。
  3. 使用模拟器时,您可以模拟位置。阅读http://developer.android.com/guide/topics/location/strategies.html#MockData
  4. 要在设备上进行模拟,您可以使用“假GPS”应用并在设置
  5. 中允许模拟位置

    希望它有所帮助。