Android获取当前位置(GPS和网络定位)
2016-07-15 22:46
465 查看
1、比较:
GPS准确度高但耗电多,网络定位耗电少但准确度低2、代码
①添加权限:AndroidManifest.xml:
<!-- 两种provider的权限 --> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> <!-- 仅网络定位的权限 --> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
注:因为手机问题没有测试好,不确定是否加访问网络权限
②Java代码:public class MainActivity extends Activity { //定位都要通过LocationManager这个类实现 private LocationManager locationManager; private String provider; @SuppressWarnings("static-access") @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //获取定位服务 locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE); //获取当前可用的位置控制器 List<String> list = locationManager.getProviders(true); if (list.contains(LocationManager.GPS_PROVIDER)) { //是否为GPS位置控制器 provider = LocationManager.GPS_PROVIDER; } else if (list.contains(LocationManager.NETWORK_PROVIDER)) { //是否为网络位置控制器 provider = LocationManager.NETWORK_PROVIDER; } else { Toast.makeText(this, "请检查网络或GPS是否打开", Toast.LENGTH_LONG).show(); return; } Location location = locationManager.getLastKnownLocation(provider); if (location != null) { //获取当前位置,这里只用到了经纬度 String string = "纬度为:" + location.getLatitude() + ",经度为:" + location.getLongitude(); } //绑定定位事件,监听位置是否改变 //第一个参数为控制器类型第二个参数为监听位置变化的时间间隔(单位:毫秒) //第三个参数为位置变化的间隔(单位:米)第四个参数为位置监听器 locationManager.requestLocationUpdates(provider, 2000, 2, locationListener); } LocationListener locationListener = new LocationListener() { @Override public void onStatusChanged(String arg0, int arg1, Bundle arg2) { // TODO Auto-generated method stub } @Override public void onProviderEnabled(String arg0) { // TODO Auto-generated method stub } @Override public void onProviderDisabled(String arg0) { // TODO Auto-generated method stub } @Override public void onLocationChanged(Location arg0) { // TODO Auto-generated method stub // 更新当前经纬度 } }; //关闭时解除监听器 @Override protected void onDestroy() { // TODO Auto-generated method stub super.onDestroy(); if (locationManager != null) { locationManager.removeUpdates(locationListener); } } }
相关文章推荐
- 网络基本功(二十八):Wireshark抓包实例分析HTTP问题(下)
- 网络基本功(二十七):Wireshark抓包实例分析HTTP问题(上)
- 网络基本功(二十五):Wireshark抓包实例分析TCP重复ACK与乱序
- 网络基本功(二十四):Wireshark抓包实例分析TCP重传
- 网络基本功(二十六):Wireshark抓包实例分析TCP窗口及reset
- 网络基本功(二十三):Wireshark抓包实例诊断TCP连接问题
- 网络传输TCP
- 网络基本功(二十一):细说HTTP(上)
- 网络基本功(二十二):细说HTTP(下)
- 网络基本功(二十):细说ICMP和ARP
- 网络基本功(十九):细说NAT原理与配置
- 网络基本功(十八):细说tcpdump的妙用(下)
- 网络基本功(十六):细说网络性能监测与实例(下)
- 网络基本功(十四):细说诊断工具ping
- 网络基本功(十五):细说网络性能监测与实例(上)
- 网络基本功(十一):TCP窗口调整与流控
- 网络基本功(十):细说TCP确认机制
- 网络基本功(九):细说TCP重传
- 网络基本功(八):细说TCP滑动窗口
- 网络基本功(六):链路聚合