2012-08-23 181 views
0

我试图根据网络提供程序获取用户位置,但该事件从未发生,并且UpdateLocation()方法从未被调用。 代码如下:获取用户位置Android

public void UpdateLocation(Location location) 
{ 
    GeoPoint geoPoint = new GeoPoint((int)(location.getLatitude() * 1E6),(int)(location.getLongitude() * 1E6)); 
    MapController controller = mapView.getController(); 
    controller.setCenter(geoPoint); 
} 
public void GetLocation() 
{ 
    // Acquire a reference to the system Location Manager 
    LocationManager locationManager = (LocationManager) this.getSystemService(Context.LOCATION_SERVICE); 

    // Define a listener that responds to location updates 
    LocationListener locationListener = new LocationListener() { 
     public void onLocationChanged(Location location) { 
      // Called when a new location is found by the network location provider. 
      UpdateLocation(location); 
     } 

     public void onStatusChanged(String provider, int status, Bundle extras) {} 

     public void onProviderEnabled(String provider) {} 

     public void onProviderDisabled(String provider) {} 
     }; 

    // Register the listener with the Location Manager to receive location updates 
    locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 0, locationListener); 
} 

可能是什么问题?我在这里做错了什么?

+0

你在一个设备或模拟器上使用它? – Sam

+0

您是否在清单中添加了正确的权限?像INTERNET和ACCESS_COARSE_LOCATION一样? –

+0

@Sam Emulatorrr – idish

回答

1

如果我正确记得,NETWORK_PROVIDER使用wifi信号找出位置。

夫妇的事情来验证:

  • 是无线网络上?
  • 设备是否注册了wifi信号?超过一个? (一个可能不够)
  • 是否在设置中的“位置服务”下选中“使用无线网络”?
+0

我在模拟器上运行此代码,而不是在设备上,我正在使用笔记本电脑并启用了Wifi。 – idish

+0

它不会在模拟器上工作。有办法欺骗GPS修正,但我不认为我已经看到任何将不幸做NETWORK_PROVIDER的事情。也许有人知道这个模拟器。 – Nick

+0

你可以做的一件事是切换到倾听GPS并模拟它。它应该至少可以让你测试代码的其他部分,如“UpdateLocation”。看到这里:http://stackoverflow.com/questions/2279647/how-to-emulate-gps-location-in-the-android-emulator – Nick

0

你应该检查你的位置提供商请求该位置之前启用:

locationManager.isProviderEnabled(LocationManager.NETWORK_PROVIDER); 

给这个教程看看。它包括sample code

+0

请注意,您应该在此处发布答案的有用观点,或将您的帖子风险删除为[“未答复”](http://meta.stackexchange.com/q/8259)。如果您愿意,您可能仍然包含链接,但仅作为“参考”。答案应该独立,不需要链接。 –