博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
android定位
阅读量:6910 次
发布时间:2019-06-27

本文共 3969 字,大约阅读时间需要 13 分钟。

转载:

User Location能做什么?

1、获取用户的位置
2、追踪用户的移动

GPS定位比较准确,但是很费电

 

GPS定位:使用GPS卫星定位,需要在AndroidManifest.xml中声明权限:

NETWORK定位:使用信号接收塔和WIFI介入点进行定位,需要在AndroidManifest.xml文件中声明权限:

1、Location Manager:用户管理android用户定位的服务

2、Location Providers:提供了多种定位方式供开发者选择

Criteria可以设置一系列的查询条件,可以根据指定的Criteria条件来过滤获得LocationProvider

不同的LocationProvider决定了定位能力,包括费用、耗电多少、精确度,还会有一些方向、速度、和高速信息。

获取用户当前位置的步骤:

1、在AndroidManifest.xml当中声明权限
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> 
2、获取LocationManager对象
3、选择LocationProvider
4、绑定LocationListener对象

 

Java代码 
public class MainActivity extends Activity {      LocationManager lm;      MyLocationListener listener = new MyLocationListener();            @Override      public void onCreate(Bundle savedInstanceState) {          super.onCreate(savedInstanceState);          setContentView(R.layout.main);                    findViewById(R.id.genzong).setOnClickListener(new Button.OnClickListener(){              @Override              public void onClick(View v) {                  lm = (LocationManager)getSystemService(Context.LOCATION_SERVICE);                   //第一个参数选择合适的provider,第二个参数是时间间隔是1秒中,                  //第三个参数是位置发生0米的变化就会触发,第四个参数是触发的监听器                  lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 1000, 0, listener);              }          });                    findViewById(R.id.dingwei).setOnClickListener(new Button.OnClickListener(){              @Override              public void onClick(View v) {                  lm = (LocationManager)getSystemService(Context.LOCATION_SERVICE);                  Location location = lm.getLastKnownLocation(LocationManager.GPS_PROVIDER);                  printLocation(location);              }          });                    findViewById(R.id.criteria).setOnClickListener(new Button.OnClickListener(){              @Override              public void onClick(View v) {                  System.out.println("R.id.criteria");                  lm = (LocationManager)getSystemService(Context.LOCATION_SERVICE);                  Criteria criteria = new Criteria();                  //设置精确程度为高精确                  criteria.setAccuracy(Criteria.ACCURACY_FINE);                  //设置是否需要高度设置                  criteria.setAltitudeRequired(false);                  //是否需要方位设置                  criteria.setBearingRequired(false);                  //是否需要速度信息                  criteria.setSpeedRequired(true);                  //是否产生费用                  criteria.setCostAllowed(true);  //              //获取最符合条件的LocationProvider,true表示只返回可以使用的locationProvider  //              String bestProvider = lm.getBestProvider(criteria, true);                  //获取所有符合条件的locationProvider,false表示不可用的locationProvider也显示出来                  List
matchProviders = lm.getProviders(criteria, false); for(String temp : matchProviders){ System.out.println(temp); } } }); } public static void printLocation(Location l){ System.out.println("jingdu :" + l.getAccuracy()); System.out.println("gaodu : " + l.getAltitude()); System.out.println("fangxiang : " + l.getBearing()); System.out.println("sudu : " + l.getSpeed()); } public class MyLocationListener implements LocationListener{ //位置更新的时候调用下面的方法 @Override public void onLocationChanged(Location location) { System.out.println("jingdu : " + location.getLongitude()); System.out.println("weidu : " + location.getLatitude()); } @Override public void onProviderDisabled(String provider) { } @Override public void onProviderEnabled(String provider) { } @Override public void onStatusChanged(String provider, int status, Bundle extras) { } } }

  

转载于:https://www.cnblogs.com/nanguabing/archive/2012/04/18/2455680.html

你可能感兴趣的文章
[BZOJ5407]girls
查看>>
API接口 Http和Socket 优劣比较 使用场景选择
查看>>
js 邮政编码验证
查看>>
iOS开发之窥探UICollectionViewController(二) --详解CollectionView各种回调
查看>>
HDU 4532 湫秋系列故事——安排座位(组合)
查看>>
BZOJ 3672 [Noi2014]购票 (熟练剖分+凸壳维护)
查看>>
LINQ扩展实现去重复
查看>>
Linq to entity优化---MSDN
查看>>
多种方式实现依赖注入
查看>>
20150625_Andriod_01_ListView1_条目显示
查看>>
jmeter线程组之间传递参数
查看>>
monkey测试===Monkey测试策略(系列二)转
查看>>
安全测试===如何查看浏览器保存的密码
查看>>
POJ3177 Redundant Paths【双连通分量】
查看>>
El表达式的用法个人总结
查看>>
object - c 语言基础 进阶笔记 随笔笔记
查看>>
iOS开发之--一些有用的博文和博客
查看>>
jmeter JDBC Request (查询数据库获取数据库数据) 的使用
查看>>
深入理解ajax系列第七篇——传递JSON
查看>>
Vim简明学习
查看>>