欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

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

程序员文章站 2023-12-05 17:12:04
复制代码 代码如下: // 声明locationmanager对象 locationmanager loctionmanager; // 通过系统服务,取得location...
复制代码 代码如下:

// 声明locationmanager对象
locationmanager loctionmanager;
// 通过系统服务,取得locationmanager对象
loctionmanager = (locationmanager) getsystemservice(context.location_service);

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

// 通过gps位置提供器获得位置
string providergps = locationmanager.gps_provider;
location location = loctionmanager.getlastknownlocation(providergps);

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

// 通过基站位置提供器获得位置
string providernetwork = locationmanager.network_provider;
location location = loctionmanager.getlastknownlocation(providernetwork);

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

// 使用标准集合,让系统自动选择可用的最佳位置提供器,提供位置
criteria criteria = new criteria();
criteria.setaccuracy(criteria.accuracy_fine);// 高精度
criteria.setaltituderequired(false);// 不要求海拔
criteria.setbearingrequired(false);// 不要求方位
criteria.setcostallowed(true);// 允许有花费
criteria.setpowerrequirement(criteria.power_low);// 低功耗
// 从可用的位置提供器中,匹配以上标准的最佳提供器
string provider = loctionmanager.getbestprovider(criteria, true);
// 获得最后一次变化的位置
location location = loctionmanager.getlastknownlocation(provider);


处理:
复制代码 代码如下:

// 显示在edittext中
updatewithnewlocation(location);
// 监听位置变化,2秒一次,距离10米以上
loctionmanager.requestlocationupdates(provider, 1000, 1, locationlistener);

监听器及显示:
复制代码 代码如下:

// 位置监听器
private final locationlistener locationlistener = new locationlistener() {
@override
public void onstatuschanged(string provider, int status, bundle extras) {
}
@override
public void onproviderenabled(string provider) {
}
@override
public void onproviderdisabled(string provider) {
}
// 当位置变化时触发
@override
public void onlocationchanged(location location) {
// 使用新的location更新textview显示
updatewithnewlocation(location);
}
};
private void updatewithnewlocation(location location) {
if (location != null) {
double lat = location.getlatitude();
double lng = location.getlongitude();
latstr = format.format(lat);
lonstr = format.format(lng);
txtlat.settext(latstr);
txtlon.settext(lonstr);
} else {
txtlat.settext("");
txtlon.settext("");
}
}