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

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

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

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

private LocationManager locationManager;
private String locationProvider;

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

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

List 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感想)