获取用户位置 Android
Posted
技术标签:
【中文标题】获取用户位置 Android【英文标题】:Get user location Android 【发布时间】:2012-08-19 12:13:06 【问题描述】:我正在尝试根据网络提供商获取用户位置,但该事件从未发生,UpdateLocation()
方法从未被调用。
代码如下:
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);
可能是什么问题?我在这里做错了吗?
【问题讨论】:
你是在设备还是模拟器上使用这个? 您是否在清单中添加了正确的权限?喜欢 INTERNET 和 ACCESS_COARSE_LOCATION? 【参考方案1】:如果我没记错的话,NETWORK_PROVIDER 使用 wifi 信号来确定位置。
几件事情要验证:
wifi 开启了吗? 设备是否注册了 wifi 信号?超过一个? (一个可能还不够) 设置中的“定位服务”下是否勾选了“使用无线网络”?【讨论】:
我在模拟器上运行此代码,而不是在设备上,我使用的是笔记本电脑并且 Wifi 已打开。 它不能在模拟器上工作。有一些方法可以欺骗 gps 修复,但不幸的是,我认为我没有看到任何会做 NETWORK_PROVIDER 的事情。不过,也许其他人知道有一个模拟器。 您可以做的一件事是切换到收听 GPS 并进行模拟。它至少应该让您能够测试代码的其他区域,例如“UpdateLocation”。见这里:***.com/questions/2279647/… 我明白了,谢谢你的帮助。快速浏览一下,这段代码没有错吗? 哦,等等,它不起作用,因为我是在模拟器上而不是在设备上运行它?【参考方案2】:您应该在请求位置之前检查您的位置提供程序是否已启用:
locationManager.isProviderEnabled(LocationManager.NETWORK_PROVIDER);
看看这个教程。它包括sample code
【讨论】:
请注意,您应该在此处或此站点上发布有用的答案点,否则您的帖子可能会被删除为"Not an Answer"。如果您愿意,您仍然可以包含该链接,但仅作为“参考”。答案应该是独立的,不需要链接。以上是关于获取用户位置 Android的主要内容,如果未能解决你的问题,请参考以下文章