android 定位
来源:互联网 发布:转格式软件哪个好 编辑:程序博客网 时间:2024/06/15 21:33
被要求不用三方写一个定位,显示当前定位坐标,所以用Android自带的定位写了一个,这里记录一下,大家一起学习学习
if (locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER)) { locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 500, 0, locationListener); //gps定位慢,精度高,用GPS定位,getLastKnowLocation()方法90%获取到的都是null//最好从定位的监听里获取 location = locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER); }else{ locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 500, 0, locationListener); location = locationManager.getLastKnownLocation(LocationManager.NETWORK_PROVIDER); }除了手动确定这两种定位方式,还可以让系统自动选择定位方式
Criteria criteria = new Criteria(); criteria.setAccuracy(Criteria.ACCURACY_FINE);//设置定位经纬度精度 criteria.setAltitudeRequired(false);//是否获得海拔信息 criteria.setBearingAccuracy(Criteria.ACCURACY_FINE);//方向精度 criteria.setBearingRequired(true);//是否获得方向 criteria.setCostAllowed(true);//是否可以付费 criteria.setSpeedAccuracy(Criteria.ACCURACY_FINE);//速度精度 criteria.setSpeedRequired(true);//是否获取速度// criteria.setHorizontalAccuracy(Criteria.ACCURACY_HIGH);//水平方向的经纬度// criteria.setVerticalAccuracy(Criteria.ACCURACY_HIGH);//垂直距离的海拔高度 criteria.setPowerRequirement(Criteria.POWER_LOW);//用电等级 String provider = locationManager.getBestProvider(criteria, true); locationManager.requestLocationUpdates(500, 0, criteria, locationListener, Looper.myLooper());//.requestLocationUpdates(LocationManager.GPS_PROVIDER, 500, 0, locationListener); location = locationManager.getLastKnownLocation(provider);
定位的监听器是这个样子的locationListener = new LocationListener() { // Provider的状态在可用、暂时不可用和无服务三个状态直接切换时触发此函数 @Override public void onStatusChanged(String provider, int status, Bundle extras) { } // Provider被enable时触发此函数,比如GPS被打开 @Override public void onProviderEnabled(String provider) { Toast.makeText(getApplicationContext(),provider + "被打开",Toast.LENGTH_LONG).show(); } // Provider被disable时触发此函数,比如GPS被关闭 @Override public void onProviderDisabled(String provider) { Toast.makeText(getApplicationContext(),provider + "被关闭",Toast.LENGTH_LONG).show(); } //当坐标改变时触发此函数,如果Provider传进相同的坐标,它就不会被触发 @Override public void onLocationChanged(final Location location) { setLocation(location); } };记得在Manifest.xml文件里加上权限
<uses-permission android:name="android.permission.INTERNET" /><!-- 这个权限用于进行网络定位--><uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/><!-- 这个权限用于访问GPS定位--><uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
获取到定位以后,调用Geocoder获取定位信息Geocoder gc = new Geocoder(getApplicationContext(), Locale.getDefault());List<Address> fromLocation = gc.getFromLocation(lat, lon, 10);
这样就自己实现的定位了
0 0
- Android 定位
- 【Android】定位
- android 定位
- android定位
- android 定位
- Android 定位
- Android定位
- android定位
- Android 定位
- Android 定位
- android 定位
- Android 定位
- Android 定位
- Android定位
- android 定位
- android 定位
- Android定位
- Android定位
- 设计模式:五大原则
- 技术积累BCM-SDK架构分析及源码移植-nios2平台移植
- 六、DC/OS 运行 marathon-lb
- Android应用程序安装位置
- Android系统各个版本系统特性整理
- android 定位
- 网站安全测试工具GoLismero
- logstash mutate 类型转换
- spring-mvc的初步认识
- 排序之 --- 快速排序
- C语言整除、取余运算的符号问题
- Android学习第九篇;robolectric的使用
- 先进驾驶辅助系统ADAS一些技术应用小结
- 论文阅读(三)