2011-05-16 38 views
1

我应该获得用户的当前位置,为了这个,我已实现了以下代码:位置管理器不能获得GPS定位正​​确

lm = (LocationManager) getSystemService(Context.LOCATION_SERVICE); 
ll = new mylocationlistener(); 
lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, ll); 

这里是我的LocationListener的类:

private class mylocationlistener implements LocationListener { 
    @Override 
    public void onLocationChanged(Location location) { 
     if (location != null) { 
      Log.d("LOCATION CHANGED", location.getLatitude() + ""); 
      Log.d("LOCATION CHANGED", location.getLongitude() + ""); 
      lat = location.getLatitude(); 
      lng = location.getLongitude(); 
      Toast.makeText(NearActivity.this, "lng=" + lng + " lat=" + lat, 
        Toast.LENGTH_SHORT); 
      showProgress(); 
     } 
    } 

上面的代码没有设置全局变量lat和lng。为什么GPS无法提供坐标?

预先感谢您。

+1

你等了多久?你在建筑物吗? – Reno 2011-05-16 10:15:09

+1

您的Logcat是否显示更改的位置?我相信你可能没有GPS信号。 – Jodes 2011-05-16 10:17:24

+0

你确定onLocationChanged()真的被调用吗? GPS可能需要一段时间才能得到修复。 – 2011-05-16 10:18:01

回答

0

位置是一个类,该类包含位置的属性。它与GPS提供商不一样。这就是您如何从GPS提供商获取当前位置的方法。

lm = (LocationManager)getSystemService(Context.LOCATION_SERVICE); 
Location lastKnownLoc = m.getLastKnownLocation(LocationManager.GPS_PROVIDER); 
+0

为什么我不能使用LocationListener? – user743883 2011-05-17 05:56:01

+0

我一定是看错了你的代码或者什么的。如果你想持续更新用户的位置,你应该使用它。 – 2011-05-17 13:01:20

+0

@Janne Oksanen我正在使用它,我把'lastKnownLoc'作为'null' – noloman 2011-08-05 17:11:54

0

您是否设置了权限?

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