话不多说,直接上代码,哈哈哈哈哈哈哈哈
我就把讲解写在注释里面啦!!嘻嘻,这样方便点!!
因为我是在fragment里面获取,和activity不太一样,要注意上下文!
在mainifest里面添加权限
<uses-permission android:name="android.permission.INTERNET" /><uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /><uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
private double lat;private double lon;
public void getMyLocation() {String serviceString = getActivity().LOCATION_SERVICE;// 获取的是位置服务LocationManager locationManager = (LocationManager) getActivity().getSystemService(serviceString);// 调用getSystemService()方法来获取LocationManager对象String provider = LocationManager.GPS_PROVIDER;// 指定LocationManager的定位方法if (ActivityCompat.checkSelfPermission(getContext(), Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(getContext(), Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {//这段是ALT+ENTER直接添加的,注意上下文就行了!// TODO: Consider calling// ActivityCompat#requestPermissions// here to request the missing permissions, and then overriding// public void onRequestPermissionsResult(int requestCode, String[] permissions,// int[] grantResults)// to handle the case where the user grants the permission. See the documentation// for ActivityCompat#requestPermissions for more details.return;}Location location = locationManager.getLastKnownLocation(provider);// 调用getLastKnownLocation()方法获取当前的位置信息Log.i("Locator","location"+location);if (location != null){lat = location.getLatitude();//获取纬度lon = location.getLongitude();//获取经度Log.i("Locator","lat="+lat+","+"lon"+lon);}else{Log.i("Locator","location为空");}locationManager.requestLocationUpdates(provider, 2000, 10, locationListener);// 产生位置改变事件的条件设定为距离改变10米,时间间隔为2秒,设定监听位置变化}
下面就是监听
private final LocationListener locationListener = new LocationListener() {@Overridepublic void onLocationChanged(Location location) {// TODO Auto-generated method stub}@Overridepublic void onProviderDisabled(String arg0) {// TODO Auto-generated method stub}@Overridepublic void onProviderEnabled(String arg0) {// TODO Auto-generated method stub}@Overridepublic void onStatusChanged(String arg0, int arg1, Bundle arg2) {// TODO Auto-generated method stub}};
然后在你需要的地方,调用getMyLocation()
方法就可以啦!我把经纬度定义成成员变量,这个你看你自己!