Android获取当前位置(GPS和网络定位)
2017-10-11 08:14
387 查看
1、比较:
GPS准确度高但耗电多,网络定位耗电少但准确度低
2、代码
①添加权限: AndroidManifest.xml:
<!-- 两种provider的权限 --> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> <!-- 仅网络定位的权限 --> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />1
2
3
4
注:因为手机问题没有测试好,不确定是否加访问网络权限
②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); } } }
相关文章推荐
- Android获取当前位置(GPS和网络定位)
- 记录-Android根据手机gps或者网络获取当前位置
- Android 使用GPS获取当前地理位置
- (转载)百度Android定位SDK实现获取当前经纬度及位置
- Android获取位置信息 - GPS定位 Network定位
- [android] 百度地图开发 (三).定位当前位置及getLastKnownLocation获取location总为空问题
- 百度Android定位SDK实现获取当前经纬度及位置
- Android Service获取当前位置(GPS+基站)
- Android 成功 使用GPS获取当前地理位置(解决getLastKnownLocation 返回 null)
- Android开发之GPS定位获取位置
- Android Service获取当前位置(GPS+基站)
- Android全球定位系统GPS实时获取位置-刘宇
- android通过gps获取定位的位置数据和gps经纬度
- Android 获取GPS和网络定位信息
- 通过gps,wifi,基站定位获取当前位置
- Android开发之位置定位详解与实例解析(GPS定位、Google网络定位,BaiduLBS(SDK)定位)
- Android中通过GPS或NetWork获取当前位置的经纬度
- Android开发中定位解析(GPS定位、网络定位、位置地址解析)
- Android利用百度定位SDK获取当前城市位置
- android网络-GPS获取定位信息