android怎么获取地理位置

Android

1个回答

写回答

yyuOvO

2025-12-25 18:20

+ 关注

WIFI
WIFI

三种方式进行定位,获取用户位置,分别是基于基站定位, 网络定位,GPS定位。1.基站定位(passive):这是基于网络基站进行定位的,定位的精确度在几十米到几千米不等,在城市中基站覆盖率比较高,推荐使用基站定位,如果是在郊区,基站相距较远,基站的覆盖没有城里好,定位的误差比较大。如果在郊区不推荐使用基站定位。2.网络定位:WIFI定位,网络定位3.GPS定位:与卫星进行通信。手机中嵌入了GPS模块(精简版的A-GPS),通过A-GPS搜索卫星, 获取经纬度。使用GPS的弊端是:必须站在空旷的地方,头顶对着天空,如果云层厚了,也会受到一定的影响。精确度:10-50米扩展知识:使用Android是定位必备的权限: uses-permission Android:name= " Android.permission.ACCESS_FINE_LOCATION " / //精确定位uses-permission Android:name= "Android.permission.ACCESS_MOCK_LOCATION" / //模拟器uses-permission Android:name= "Android.permission.ACCESS_COARSE_LOCATION" / //粗糙定位

//获取定位管理对象LocationManager lm=(LocationManager)getSystemService(LOCATION_SERVICE);String[] names=lm.getAllProviders();//获取所有的位置提供者,一般三种

Criteria criteria=new Criteria();//查询条件,如果设置了海拔,则定位方式只能是GPS;criteria.setcostAllowed(true);//是否产生开销,比如流量费String provider=lm.getBaseProvider(criteria,true)//获取最好的位置提供者,第二个参数为true,表示只获取那些被打开的位置提供者

手机
手机

lm.requestLocationUpdates(provier,0,0,new LocationListener(){});//获取位置。第二个参数表示每隔多少时间返回一次数据,第三个参数表示被定位的物体移动每次多少米返回一次数据。

private class MyLocationListener implements LocationListener { @Override public void onStatusChanged(String provider, int status, Bundle extras) {

}

@Override public void onProviderEnabled(String provider) {

}

@Override

@Override public void onLocationChanged(Location location) { System. out.println( "服务中位置监听发送了变化了" ); float accuracy = location.getAccuracy(); // 精确度 double altitude = location.getAltitude(); // 海拔 double latitude = location.getLatitude(); // 纬度 double longitude = location.getLongitude(); // 经度 String locationInfo = "jingdu:" + longitude + ",weidu:" + latitude + ",hAIba:" + altitude + ",jingquedu:" + accuracy; Editor edit = sp.edit(); edit.putString( "location", locationInfo); edit.commit(); } } public void onProviderDisabled(String provider) {

}

举报有用(0分享收藏

Copyright © 2025 IZhiDa.com All Rights Reserved.

知答 版权所有 粤ICP备2023042255号