Android学习笔记 - 定位篇 (Location)
来源:互联网 发布:淘宝牛排哪个牌子好 编辑:程序博客网 时间:2024/06/18 11:08
1.UserLocation能做什么
1.获取用户的位置
2.追踪用户的移动
2.UserLocation的关键API
1.LocationManager:用于管理Android用户定位服务
2.LocationProviders:提供多种定位方式供开发者选择
3.定位方式的分类
1.GPS定位,使用GPS卫星进行定位
<uses-permission android:name="android.permission.ACCESS_FIND_LOCATION" />
2.Network定位,使用信号接收塔和WIFI接入点进行定位,
<uses-permission android:name="android.permission.ACCESS_FIND_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
4.获取用户的当前位置
1.在AndroidManifest.xml当中声明相应的权限
2.获取LocationManager对象
3.选择LocationProvider
4.绑定LocationListener对象
- LocationManager locationManager = (LocationManager)MainActivity.this.getSystemService(Context.LOCATION_SERVICE);
- locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, new TestLocationListener());
- private class TestLocationListener extend LocationListener{
- @Override
- public void onLocationChanged(Location location){
- //当位置发生改变时调用
- System.out.println(location.getLongitude() + "|" + location.getLititude());
- }
- @Override
- public void onProviderDisabled(String provider){
- //当适配器禁用时调用
- }
- @Override
- public void onProviderEnabled(String provider){
- //当适配器有效时调用
- }
- @Override
- public void onStatusChanged(String provider){
- //当状态改变时调用
- }
- }
5.获取最佳的Location Provider
1.获取当前设备所有的适配器
- LocationManager locationManager = (LocationManager)MainActivity.this.getSystemService(Context.LOCATION_SERVICE);
- List<String providers = locationManager.getAllProviders();
- for(Iterator iterator = providers.iterator(); iterator.hasNext()){
- System.out.println(iterator.next());
- }
2.寻找最佳的适配器
Criteria可以设置一系列的查询条件,用于查找当前设备当中符合条件的LocationProvider
详细看ADK中的说明文档 Criteria
- Criteria c = new criteria();
- c.setAccuracy(Criteria.Accuracy_FINE); //精度高
- c.setPowerRequirement(Criteria.POWER_LOW); //电量消耗低
- c.setAltitudeRequired(false); //不需要海拔
- c.setSpeedReuquired(false); //不需要速度
- c.setCostAllowed(false); //不需要费用
- String provider = locationManager.getBestProvider(criteria, false); //false是指不管当前适配器是否可用
- System.out.println(provider);
6.追踪用户的位置
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 2000, 1000, new TestLocationListener());
第二个参数minTime: 两次定位用户位置的最小间隔时间(毫秒)
第三个参数minDistance: 两次定位用户位置的最小距离(米)
7.Geocoding介绍
GeoCoding是Google所提供的一项服务,主要有以下两个方面的功能
1.查询某地址的经纬度
2.查询某经纬度的具体地址
8.Android当中的Geocoder
1.创建一个GeoCoder对象
2.调用该对象的getFromLocation()或getFromLocationName()方法
- Geocoder gc = new Geocoder(MainActivity.this);
- List<Address> address = geocoder.getFromLocationName("SFO", 1); //最大结果
- System.out.println(addrss.size());
- List<Address> address = geocoder.getFromLocationName(12.34, 56.78, 1); //最大结果
- System.out.println(address.size());
9.Geocoder的替代方法
地址:http://code.google.com/intl/zh-CN/apis/maps/documentation/geocoding/
根据地址获取经纬度(sensor:是否来自设备传感器)
http://maps.googleapis.com/maps/api/geocode/json?address=SFO&sensor=false
http://maps.googleapis.com/maps/api/geocode/xml?address=SFO&sensor=false
根据经纬度获取地址
http://maps.googleapis.com/maps/api/geocode/json?latlng=12.34,56.78&sensor=false
根据地址和区域范围的经纬度
http://maps.googleapis.com/maps/api/geocode/json?address=SFO&sensor=false&bounds=12.34,56.78|87.65,43.21
根据国家代码
http://maps.googleapis.com/maps/api/geocode/json?address=SFO&sensor=false®ion=es
- Android学习笔记 - 定位篇 (Location)
- Android学习笔记 - 定位篇 (Location)
- Android学习之使用高德Location实现定位
- android学习笔记之定位
- 学习笔记:memory location
- AngularJS $location学习笔记
- AngularJS $location学习笔记
- $location学习笔记
- Android学习笔记(五六):位置Location
- Android 之用户定位(User Location)
- Android:GPS定位 Location == null
- Android GPS —— Location定位
- Android位置服务--用户定位Location
- Android 定位服务(Location-Based Services)
- location 定位
- Android GPS定位学习笔记一
- android学习笔记之GPS定位
- AngularJs学习笔记--Using $location
- tomcat 常用配置
- xcode 静态分析
- Android扩展 - 拍照篇(Camera)
- 在allegro中怎么将直插(过孔类)的焊盘中的过孔显示出来
- oracle pl/sql
- Android学习笔记 - 定位篇 (Location)
- 图像特征:几何不变矩--Hu矩
- Android学习笔记 - 蓝牙篇 (Bluetooth)
- vbox虚拟机和主机共享黏贴板
- oracle存储子程序
- 【数据结构】二叉堆与左偏树
- 抓包工具 wireshark的 name resolution 名称转换功能
- apache 搜索引擎solr试用
- oracle中在已有的表中增加或删除一列