想实现一个定位的功能,用GPS可以实现了,但是使用网络来定位却遇到了一点问题.
先贴代码:private LocationManager locationManager;
locationManager = (LocationManager) getSystemService(LOCATION_SERVICE);
if(!locationManager.isProviderEnabled(LocationManager.NETWORK_PROVIDER)){
......
}
Location location = locationManager.getLastKnownLocation(LocationManager.NETWORK_PROVIDER);
locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 1000, 0, this);
运行到isProviderEnabled方法是总是返回false,即使我把gprs,gps,wifi都打开了还是如此.
而且运行后总是会调用LocationListener的public void onProviderDisabled(String provider) 方法,并没有调用public void onLocationChanged(Location location)方法有人知道原因吗?非常感谢!
先贴代码:private LocationManager locationManager;
locationManager = (LocationManager) getSystemService(LOCATION_SERVICE);
if(!locationManager.isProviderEnabled(LocationManager.NETWORK_PROVIDER)){
......
}
Location location = locationManager.getLastKnownLocation(LocationManager.NETWORK_PROVIDER);
locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 1000, 0, this);
运行到isProviderEnabled方法是总是返回false,即使我把gprs,gps,wifi都打开了还是如此.
而且运行后总是会调用LocationListener的public void onProviderDisabled(String provider) 方法,并没有调用public void onLocationChanged(Location location)方法有人知道原因吗?非常感谢!
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"></uses-permission>
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_MOCK_LOCATION"></uses-permission>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
手机上在设置里面是否开启了模拟地点?方法:设置 -> 应用程序设置 -> 开发 -> 允许模拟地点
你有没有试过?
你这块只设置了通过基站定位,把它设置成GPS定位试试,肯定可以了
public void onProviderDisabled(String provider) 方法的意思是,定位服务不能用,比如gps定位,network定位,在GPS中有一个方法是可以取得最佳的定位的,方法也是有个provider的,并没有调用public void onLocationChanged(Location location)方法这个方法是当用户定位的位置发生改变的时候才会触发的,楼主,你还是去网上多找些例子看看的
试了下用LocationManager.NETWORK_PROVIDER 就不行。
对于comeoverjava的回复,有两个疑问:
1.LocationManager.NETWORK_PROVIDER和手机GPRS定位是一回事吗?如果不是一回事,那LocationManager.NETWORK_PROVIDER是用来干嘛的?2.关于public void onLocationChanged(Location location)方法,如果我在注册时:locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 1000, 0, this);指定了第二个参数的值,应该是无论位置有没有变化,每间隔1000毫秒onLocationChanged方法都会执行一次
怎么会没用?我感觉应该也是能定位的,只是定位的结果误差会大一点。
另外,我用百度地图的时候我把gprs,gps,wifi全部关闭了,还是能定位,结果还不错,误差100m左右。
locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
locationManager.getProviders(true),
去看看返回的list中有没有LocationManager.NETWORK_PROVIDER,
确实是可以,我系统的版本是2.3.6的好像。另外我不开gprs的情况下也是可以收彩信的,是否跟这个有关?
谢谢!