话不多说,直接上代码,哈哈哈哈哈哈哈哈
我就把讲解写在注释里面啦!!嘻嘻,这样方便点!!
因为我是在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() {
@Override
public void onLocationChanged(Location location) {
// TODO Auto-generated method stub
}
@Override
public void onProviderDisabled(String arg0) {
// TODO Auto-generated method stub
}
@Override
public void onProviderEnabled(String arg0) {
// TODO Auto-generated method stub
}
@Override
public void onStatusChanged(String arg0, int arg1, Bundle arg2) {
// TODO Auto-generated method stub
}
};
然后在你需要的地方,调用getMyLocation()
方法就可以啦!我把经纬度定义成成员变量,这个你看你自己!