zl程序教程

您现在的位置是:首页 >  移动开发

当前栏目

Android三种GSM手机定位技术分析

Android定位技术手机 分析 三种 GSM
2023-06-13 09:14:42 时间
复制代码代码如下:

//声明LocationManager对象
LocationManagerloctionManager;
//通过系统服务,取得LocationManager对象
loctionManager=(LocationManager)getSystemService(Context.LOCATION_SERVICE);

方式一:
复制代码代码如下:

//通过GPS位置提供器获得位置
StringproviderGPS=LocationManager.GPS_PROVIDER;
Locationlocation=loctionManager.getLastKnownLocation(providerGPS);

方式二:
复制代码代码如下:
//通过基站位置提供器获得位置
StringproviderNetwork=LocationManager.NETWORK_PROVIDER;
Locationlocation=loctionManager.getLastKnownLocation(providerNetwork);

方式三:
复制代码代码如下:
//使用标准集合,让系统自动选择可用的最佳位置提供器,提供位置
Criteriacriteria=newCriteria();
criteria.setAccuracy(Criteria.ACCURACY_FINE);//高精度
criteria.setAltitudeRequired(false);//不要求海拔
criteria.setBearingRequired(false);//不要求方位
criteria.setCostAllowed(true);//允许有花费
criteria.setPowerRequirement(Criteria.POWER_LOW);//低功耗
//从可用的位置提供器中,匹配以上标准的最佳提供器
Stringprovider=loctionManager.getBestProvider(criteria,true);
//获得最后一次变化的位置
Locationlocation=loctionManager.getLastKnownLocation(provider);


处理:
复制代码代码如下:
//显示在EditText中
updateWithNewLocation(location);
//监听位置变化,2秒一次,距离10米以上
loctionManager.requestLocationUpdates(provider,1000,1,locationListener);

监听器及显示:
复制代码代码如下:
//位置监听器
privatefinalLocationListenerlocationListener=newLocationListener(){
@Override
publicvoidonStatusChanged(Stringprovider,intstatus,Bundleextras){
}
@Override
publicvoidonProviderEnabled(Stringprovider){
}
@Override
publicvoidonProviderDisabled(Stringprovider){
}
//当位置变化时触发
@Override
publicvoidonLocationChanged(Locationlocation){
//使用新的location更新TextView显示
updateWithNewLocation(location);
}
};
privatevoidupdateWithNewLocation(Locationlocation){
if(location!=null){
doublelat=location.getLatitude();
doublelng=location.getLongitude();
latStr=format.format(lat);
lonStr=format.format(lng);
txtLat.setText(latStr);
txtLon.setText(lonStr);
}else{
txtLat.setText("");
txtLon.setText("");
}
}