美文网首页Android&Java
android通过手机本身来获取经纬度等信息(不使用第三方地图)

android通过手机本身来获取经纬度等信息(不使用第三方地图)

作者: 24K纯帅豆 | 来源:发表于2016-07-11 14:33 被阅读3828次

    首先我们先了解一下android自带的一个位置的类,这个类可以帮助我们实现获取目前手机所在的经纬度等一系列信息

    1、android自带的一个位置类LocationManager

    首先先定义一个LocationManager和一个当前正在使用的位置提供器(GPS还是网络)

    private LocationManager locationManager;
    private String locationProvider;

    然后获取位置服务
    locationManager = (LocationManager) getSystemService(LOCATION_SERVICE);

    然后获取所有可以用的位置提供器,并检测当前是否有可用的位置提供器

    List<String> providers = locationManager.getProviders(true);
    if (providers.contains(LocationManager.GPS_PROVIDER)) {
        //如果是GPS
        locationProvider = LocationManager.GPS_PROVIDER;
    } else if (providers.contains(LocationManager.NETWORK_PROVIDER)) {
        //如果是Network
        locationProvider = LocationManager.NETWORK_PROVIDER;
    } else {
        Toast.makeText(this,"没有可用的位置提供器",Toast.LENGTH_SHORT);
        return;
    }
    

    如果有位置提供器,那么就获取Location

    if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
            return;
    }
    Location location = locationManager.getLastKnownLocation(locationProvider);
    if (location != null) {
        //不为空,显示地理位置经纬度
        showLocation(location);
    }
    //监视地理位置变化
    locationManager.requestLocationUpdates(locationProvider, 3000, 1, locationListener);
    

    接下来是LocationListern监听器:

    /**
     * LocationListern监听器
     * 参数:地理位置提供器、监听位置变化的时间间隔、位置变化的距离间隔、LocationListener监听器
     */
    
    LocationListener locationListener = new LocationListener() {
    
        @Override
        public void onStatusChanged(String provider, int status, Bundle arg2) {
    
        }
    
        @Override
        public void onProviderEnabled(String provider) {
    
        }
    
        @Override
        public void onProviderDisabled(String provider) {
    
        }
    
        @Override
        public void onLocationChanged(Location location) {
            //如果位置发生变化,重新显示
            showLocation(location);
        }
    };
    

    最后是一个打印的方法showLocation:

    private void showLocation(Location location) {
        Log.debug(“定位成功------->”,"location------>" + "经度为:" + location.getLatitude() + "\n纬度为" + location.getAltitude());
    }
    

    到此就是不使用第三方地图来获取当前经纬度

    公众号:Android技术经验分享

    相关文章

      网友评论

        本文标题:android通过手机本身来获取经纬度等信息(不使用第三方地图)

        本文链接:https://www.haomeiwen.com/subject/mshjjttx.html