定位方式
1、网络定位(network)。前提是必须连上网络:wifi、3G、2G;
获取到IP地址
例如:传美版QQ,彩虹版QQ,珊瑚虫版QQ,就有一个功能显示对方的IP;
根据IP显示具体的位置;
原理是建立一个库那个IP地址对应那个地方;早期警方破案就采用此特点;
有局限性:针对固定的IP地址。
如果手机网或者ip地址是动态分布IP,这个偏差就很大。这种情况是无法满足需求的。
2、基站定位(passive)。
工作原理:手机能打电话,是需要基站的。手机定位也是用基站的。
手机附近能收到3个基站的信号,就可以定位了。
基站定位有可能很准确,比如基站多的地方;
如果基站少的话就会相差很大。
精确度:几十米到几公里不等;
3、GPS定位(gps)。
A-GPS 使用了卫星定位 需要联网辅助修正位置
需要3颗卫星;
特点是:需要搜索卫星, 头顶必须是空旷的;
影响条件:云层、大厦、大树。
卫星:美国人、欧洲人的卫星。
北斗:中国的,但没有民用,只是在大巴,战机等使用。
精确度:15米左右
1 :获得位置服务
Criteria criteria = new Criteria();
criteria.setAccuracy(Criteria.ACCURACY_FINE);
String provider = lm.getBestProvider(criteria, true);
LocationManager lm = (LocationManager) getSystemService(LOCATION_SERVICE);
2: 添加事件
public void requestLocationUpdates(String provider, long minTime, float minDistance,
LocationListener listener)
provider 定位方式
minTime 位置更新之间的最小时间间隔,单位为毫秒
minDistance inDistance位置更新之间的最小距离,在米
LocationListener 位置发生改变时候触发
criteria.setAccuracy(Criteria.ACCURACY_FINE);//设置为最大精度
criteria.setAltitudeRequired(false);//不要求海拔信息
criteria.setBearingRequired(false);//不要求方位信息
criteria.setCostAllowed(true);//是否允许付费
criteria.setPowerRequirement(Criteria.POWER_LOW);//对电量的要求
class MyLocationListener implements LocationListener{
//当位置 变化的时候触发
@Override
public void onLocationChanged(Location location) {
// 可以通过location获得 位置相关信息
String longitude = "经度:" + location.getLongitude() + "\n";
String latitude = "纬度:" + location.getLatitude() + "\n";
String accuracy = "精度:" + location.getAccuracy() + "\n";
}
//状态发生改变时候
@Override
public void onStatusChanged(String provider, int status, Bundle extras) {
// TODO Auto-generated method stub
}
@Override
public void onProviderEnabled(String provider) {
// TODO Auto-generated method stub
}
@Override
public void onProviderDisabled(String provider) {
// TODO Auto-generated method stub
}
}