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

首先我们先了解一下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());
}

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

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值