Android中获取当前位置的使用步骤
2015-12-29 11:55
639 查看
在Android中得到当前位置的步骤
1.在AndroidManifest.xml中声明权限
2.声明并实例化一个LocationManager对象
这个类提供了关于获取位置信息的服务,用于管理Android的定位服务。这个类允许应用定期的更新地理位置信息,同时允许当到达指定地点时候激活相关的Intent。
3.声明并设置Criteria对象。
这个类是用来选择合适的provider的,他设置了一些条件,通过对这些条件进行筛选,系统得到最优的provider对象。条件有:精度,耗电量,海拔,方位,速度以及付费情况等。
4.根据criteria的条件获取最合适的provider。
第二个参数是指是否只返回当前处于激活状态的provider。
在这里简介一下provider。provider是LocationManager获取位置信息的途径,常用的有两种:GPS和NETWORK。
GPS定位:更精确,缺点是只能在户外使用,耗电严重,并且返回用户位置信息的速度远不能满足用户需求。需要在AndroidManifest.xml中声明权限:
NETWORK定位:通过基站和Wi- Fi信号来获取位置信息,室内室外均可用,速度更快,耗电更少。需要在AndroidManifest.xml中声明权限:
使用locMan.getAllProviders();可以获得所有已知provider的list。为了获取用户位置信息,我们可以使用多种定位方式的其中一个,也可以同时使用多个。
5.设置监听器
设置有关更新操作的一些条件(时间间隔,距离间隔),监听器会定期的更新位置信息。这里设置了使用之前得到的最优provider,更新位置操作的时间间隔为1000毫秒,距离间隔为5米,绑定LListener监听器。
6.获取地理位置信息
返回provider最近获得的位置信息。
7.补充
如有需要,我们可以将Location信息转化为GeoPoint。函数如下
以上文章转载自网络,对于上述信息已得到本地验证使用,对于综合使用的实例在 一文中已经实现,请移步查看。
1.在AndroidManifest.xml中声明权限
android.permission.ACCESS_FINE_LOCATION(或者android.permission.ACCESS_COARSE_LOCATION)
2.声明并实例化一个LocationManager对象
这个类提供了关于获取位置信息的服务,用于管理Android的定位服务。这个类允许应用定期的更新地理位置信息,同时允许当到达指定地点时候激活相关的Intent。
LocationManager locMan = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
3.声明并设置Criteria对象。
这个类是用来选择合适的provider的,他设置了一些条件,通过对这些条件进行筛选,系统得到最优的provider对象。条件有:精度,耗电量,海拔,方位,速度以及付费情况等。
Criteria criteria=new Criteria(); criteria.setAccuracy(Criteria.ACCURACY_FINE); //精度要求: ACCURACY_FINE(高)ACCURACY_COARSE(低) criteria.setAltitudeRequired(false); // 不要求海拔信息 criteria.setBearingAccuracy(Criteria.ACCURACY_HIGH); //方位信息的精度要求: ACCURACY_HIGH(高)ACCURACY_LOW(低) criteria.setBearingRequired(false); // 不要求方位信息 criteria.setCostAllowed(true); // 是否允许付费 criteria.setPowerRequirement(Criteria.POWER_LOW); // 对电量的要求 (HIGH、MEDIUM)
4.根据criteria的条件获取最合适的provider。
第二个参数是指是否只返回当前处于激活状态的provider。
String provider=locMan.getBestProvider(criteria,true);
在这里简介一下provider。provider是LocationManager获取位置信息的途径,常用的有两种:GPS和NETWORK。
GPS定位:更精确,缺点是只能在户外使用,耗电严重,并且返回用户位置信息的速度远不能满足用户需求。需要在AndroidManifest.xml中声明权限:
android.permission.ACCESS_FINE_LOCATION
NETWORK定位:通过基站和Wi- Fi信号来获取位置信息,室内室外均可用,速度更快,耗电更少。需要在AndroidManifest.xml中声明权限:
android.permission.ACCESS_FINE_LOCATION或者:android.permission.ACCESS_COARSE_LOCATION
使用locMan.getAllProviders();可以获得所有已知provider的list。为了获取用户位置信息,我们可以使用多种定位方式的其中一个,也可以同时使用多个。
5.设置监听器
设置有关更新操作的一些条件(时间间隔,距离间隔),监听器会定期的更新位置信息。这里设置了使用之前得到的最优provider,更新位置操作的时间间隔为1000毫秒,距离间隔为5米,绑定LListener监听器。
locMan.requestLocationUpdates(provider, 1000, 5, new LListener());
6.获取地理位置信息
返回provider最近获得的位置信息。
Location loc = locMan.getLastKnownLocation(provider);
7.补充
如有需要,我们可以将Location信息转化为GeoPoint。函数如下
private GeoPoint getGeoByLocation(Location loc){ GeoPoint gp = null; if(loc != null){ double latitude = loc.getLatitude() * 1E6; double longitude = loc.getLongitude() * 1E6; gp = new GeoPoint((int)latitude, (int)longitude); } return gp; }
以上文章转载自网络,对于上述信息已得到本地验证使用,对于综合使用的实例在 一文中已经实现,请移步查看。
相关文章推荐
- Android获取当前位置的三种方式及其使用方法
- Android简单实现将手机图片上传到服务器中
- Android调用相机拍摄照片并显示到 ImageView控件中
- Android简单实现Socket通信,客户端连接服务器后,服务器向客户端发送文字数据
- Android简单调用相机Camera功能,实现打开照相功能
- Android注册BroadcastReceiver的两种办法及其区别
- Android使用BroadCastRecevier广播实现接收短信,并利用Toast弹出显示内容
- Android 启动界面的制作
- Android简单实现BroadCastReceiver广播机制
- Android解决ScrollView中的滑动效果导致GestureDetector中的OnFling不能正常工作问题
- Android使用GestureDetector实现手势滑动效果
- Android使用READ_CONTACTS读取手机联系人
- Android利用RecognizerIntent识别语音并简单实现打电话动作
- Android permission 访问权限一览
- Android使用Intent实现拨打电话的动作
- Android中JSON解析细解及实例
- Android手机摇一摇的实现SensorEventListener
- Android应用中,去掉Activity标题栏以及状态栏
- Android新增Activity,并实现多Activity之间的切换
- Android 给按钮绑定事件