在做Android GPS应用开发时
LocationManager locationMng = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
Location location = locationMng.getLastKnownLocation(LocationManager.GPS_PROVIDER);
location经常返回的是null,我想肯定是跟天朝的什么什么有关,第一次是没法获取location的,需要反复获取。
那么要写永真循环来获取位置信息么?比如
while(location == null){
获取位置信息代码;
}
这样做太低效了,而且程序容易崩溃,仔细看Android文档,发现有个requestLocationUpdates方法很好用:
LocationManager locationMng = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
locationMng.requestLocationUpdates(LocationManager.GPS_PROVIDER, 1000, 0, new LocationListener(){
@Override
public void onLocationChanged(Location location) {
// TODO Auto-generated method stub
printMsg(location);
}
@Override
public void onProviderDisabled(String provider) {
// TODO Auto-generated method stub
}
@Override
public void onProviderEnabled(String provider) {
// TODO Auto-generated method stub
}
@Override
public void onStatusChanged(String provider, int status, Bundle extras) {
// TODO Auto-generated method stub
}
});
requestLocationUpdates后面的四个参数:
1.provider,定位不好的可以换成NETWORK_PROVIDER
2.隔多少时间请求这个方法
3.走动多少距离请求这个方法
4.位置监听器
通过Override位置监听器中的onLocationChanged方法就可以实现不停刷新location位置信息啦,在真机上测试是OK的!