private LocationManager locationManager; //位置管理者 private String provider; //位置提供器 比如gps network
locationManager = (LocationManager) mActivity.getSystemService(Context.LOCATION_SERVICE);
//获取经纬度 private void getLocation() { Location location = getBestLocation(locationManager); Toast.makeText(mContext, "location:"+location, Toast.LENGTH_SHORT).show(); //为位置管理者设置位置监听。参数: 1位置提供器 2多少毫秒 3多少米 4位置监听器 locationManager.requestLocationUpdates(provider, 5000, 1, locationListener); } //获取location对象,优先以GPS_PROVIDER获取location对象,当以GPS_PROVIDER获取到的locaiton为null时 //则以NETWORK_PROVIDER获取location对象,这样可保证在室内开启网络连接的状态下获取到的location对象不为空 private Location getBestLocation(LocationManager locationManager) { Location result = null; if (locationManager != null) { result = locationManager .getLastKnownLocation(LocationManager.GPS_PROVIDER); provider = LocationManager.GPS_PROVIDER; if (result != null) { return result; } else { result = locationManager .getLastKnownLocation(LocationManager.NETWORK_PROVIDER); provider = LocationManager.NETWORK_PROVIDER; return result; } } return result; } //位置监听器 LocationListener locationListener = new LocationListener() { @Override public void onLocationChanged(Location location) { showLocation(location); } @Override public void onStatusChanged(String provider, int status, Bundle extras) { } @Override public void onProviderEnabled(String provider) { } @Override public void onProviderDisabled(String provider) { } }; //销毁时解除位置监听 @Override public void onDestroy() { super.onDestroy(); if (locationManager != null){ locationManager.removeUpdates(locationListener); } } //吐司弹出经纬度 private void showLocation(Location location) { Toast.makeText(mContext, "纬度:"+location.getLatitude()+"经度:"+location.getLongitude(), Toast.LENGTH_SHORT).show(); }
先创建位置管理者 ,通过位置管理者的getLastKnowLocation方法传入位置提供器来获取location对象。
注意:获取location对象,优先以GPS_PROVIDER获取location对象,当以GPS_PROVIDER获取到的locaiton为null时 ,
则以NETWORK_PROVIDER获取location对象,这样可保证在室内开启网络连接的状态下获取到的location对象不为空。
直接复制getBestLocation方法传入locationManager即可。
LocationManager可以设置位置变化监听器。requestLocationUpdates,传入位置提供器(gps、network)、毫秒、米、位置变化监听器。主要写监听器里面的onLocationChange方法。
销毁时判断locationManager是否为空,不为空时解除位置变化监听器removeUpdates。
参照博客:http://blog.csdn.net/zhangyu_kenshin/article/details/50651409
需要的权限:
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> <uses-permission android:name="android.permission.INTERNET" />