android学习笔记之定位

来源:互联网 发布:医疗人工智能上市公司 编辑:程序博客网 时间:2024/06/06 16:02

User Location能做什么?

1、获取用户的位置

2、追踪用户的移动

 

User Location的关键API

1、             LocationManager:用于管理android的用户定位服务

2、             LocationProviders:提供多种定位方式供开发者选择(GPS, NETWORK定位等)

 

定位方式的分类

1、GPS定位:

使用GPS卫星进行定位,需要加权限android.permission.ACCESS_FINE_LOCATION

2、NETWORK定位

使用信号接收塔和WIFI介入点进行定位,需要加权限

android.permission.ACCESS_FINE_LOCATION(精确定位)或

android.permission.ACCESS_COARSE_LOCATION(粗糙定位)

 

 

获取用户的位置:

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, newTestLocationListener());

 

 

private class TestLocationListener implements LocationListener{

       @Override

       public void onLocationChanged(Location location) {

           // TODO Auto-generatedmethod stub

           System.out.println(location.getLongitude());

           System.out.println(location.getLatitude());

       }

       @Override

       public void onProviderDisabled(String provider) {

       }

       @Override

       public void onProviderEnabled(String provider) {

       }

       @Override

       public void onStatusChanged(String provider, int status, Bundleextras) {

       }

}

 

 

 

什么是Criteria?

Criteria可以设置一系列的查询条件,用于查找当前设备当中符合条件的Location Provider

setAccuracy(int accuracy):设置精度(ACCURACY_COARSE, ACCURACY_FINE)

setBearingAccuracy(int accuracy)设置方向的精度(ACCURACY_HIGH, ACCURACY_LOW,ACCURACY_MEDIUM)

setCostAllowed(Boolean costAllowed) 设置找到的Provider是否允许产生费用

setSpeedRequired(Boolean speedRequried) 设置是否需要提供速度

setAltitudeRequired(BooleanaltitudeRequired)  设置是否需要提供海拔信息

setBearingRequired(Boolean bearingRequired)  是否需要方向信息

setHorizontalAccuracy(int accuracy) 设置水平方向的精度(ACCURACY_HIGH,ACCURACY_LOW,ACCURACY_MEDIUM)

setSpeedAccuracy(int accuracy) 设置速度精度

setVerticalAccuracy(int accuracy) 设置垂直方向的精度(ACCURACY_HIGH, ACCURACY_LOW,ACCURACY_MEDIUM)

setPowerRequirement(int level) 设置耗电 NO_REQUIREMENT, POWER_LOW,POWER_HIGH, POWERMEDIUM

 

Criteria criteria = new Criteria();

criteria.setAccuracy(Criteria.ACCURACY_FINE);

criteria.setPowerRequirement(Criteria.POWER_LOW);

criteria.setAltitudeRequired(false);

criteria.setSpeedRequired(false);

criteria.setCostAllowed(false);

String provider = locationManager.getBestProvider(criteria,false);

System.out.println("best provider -->" +provider);

 

 

追踪用户

locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 5000, 5000,new TestLocationListener());

通过设置第二和第三个参数,第二个参数,这里表示每隔5000毫秒更新一次,第三个参数这里表示位置每次变动5000米更新一次

 

 

 

 

什么是Geocoding?

GeoCoding是google所提供的一项服务,主要有以下两个方面的功能:

1、查询某地址的经纬度

2、查询某经纬度的具体地址

 

如何使用GeoCoding

1、             添加库文件

2、             创建一个GeoCoder对象

3、             调用该对象的getFromLocation()或者是getFromLocationName()方法

 

GeoCoding有问题,调用的时候会提示出错service unavailable(不知什么原因),可用下面的代码代替

根据地址查经纬度

http://maps.googleapis.com/maps/api/geocode/xml?address=SFO&sensor=false

根据经纬度查询地址

http://maps.googleapis. com/maps/api/geocode/xml?latlng=40.714224,-73.961452&sensor=false

bounds的作用

region的作用

 

常见的查询参数作用

1、address需要查询的地址

2、latlng需要查询的经纬度

3、bounds设定查询的边界

4、region设定查询的国家代码

5、language设定查询结果的语言

6、sensor标示该请求是否来源于一个设备的传感器

原创粉丝点击