在写到gps定位的时候,getLastKnownLocation返回的location一直都是null,注册的LocationListener里面的回调方法也没有任何反映。仅仅当我在手机设置关闭或者打开gps定位的时候,onProviderEnabled 和 onProviderDisabled 才会相继调用。
我的location获取是这样写的
Location location = mLocationManager.getLastKnownLocation(getProvider());
setLocationText(location);
mLocationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 2000, 1, locationListener);
其中location的返回一直都是null,查阅了一些资料,也没有得到正确的解说,有人说用while做一个location==null 就一直请求(
mLocationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 2000, 1, locationListener);
),总感觉这样不妥,后面我修改了
mLocationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 2000, 1, locationListener);
为mLocationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 2000, 1, locationListener);
location这才有值
接下来我探究了一下network_provider,当我仅打开wifi连接location返回值有值,当我仅打开gps时location也有返回值。这样看来那个network参数,是不影响从哪个途径里面拿location的值。但是如果设置为gps-provider返回值就为空。
补充:当我仅打开wifi连接getprovoder()返回为network,当我仅打开getprovoder()返回值为gps。
为自己所发现mark一下。o(∩_∩)o 哈哈--