话不多说,直接上代码,哈哈哈哈哈哈哈哈
我就把讲解写在注释里面啦!!嘻嘻,这样方便点!!
因为我是在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()方法就可以啦!我把经纬度定义成成员变量,这个你看你自己!

更多推荐