安卓LocationManager获取当前地理位置(经纬度)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/zqd1984309864/article/details/78341419

1.首先创建LocationManager对象

2调用方法得到位置信息

3.设置监听,监听位置变化信息

代码:

public class MainActivity extends AppCompatActivity {

    private TextView tv_jing;//经度
    private TextView tv_wei;//维度

    public final LocationListener mLocationListener = new LocationListener() {
        @Override
        public void onLocationChanged(Location location) {
            updateToNewLocation(location);
        }

        @Override
        public void onProviderDisabled(String provider) {
            updateToNewLocation(null);
        }

        @Override
        public void onProviderEnabled(String provider) {
        }

        @Override
        public void onStatusChanged(String provider, int status, Bundle extras) {
        }
    };

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        initView();
        //创建位置管理器对象
        LocationManager locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
        //检测权限
        if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
            return;
        }
        //提供者
        String provider;
        //获取可以定位的所有提供者
        List<String> providerList = locationManager.getProviders(true);
        if (providerList.contains(LocationManager.GPS_PROVIDER)) {
            provider = LocationManager.GPS_PROVIDER;
            locationManager.requestLocationUpdates(provider, Integer.MAX_VALUE, 0, mLocationListener);
        }
        if (providerList.contains(LocationManager.NETWORK_PROVIDER)) {
            provider = LocationManager.NETWORK_PROVIDER;
            locationManager.requestLocationUpdates(provider, Integer.MAX_VALUE, 0, mLocationListener);
        }
        if (providerList.contains(LocationManager.PASSIVE_PROVIDER)) {
            provider = LocationManager.PASSIVE_PROVIDER;
            locationManager.requestLocationUpdates(provider, Integer.MAX_VALUE, 0, mLocationListener);
        }
    }

    private void initView() {
        tv_jing = (TextView) findViewById(R.id.tv_jing);
        tv_wei = (TextView) findViewById(R.id.tv_wei);
    }

    private void updateToNewLocation(Location location) {
        double lat;//维度
        double lng;//经度

        if (location != null) {
            lat = location.getLatitude();
            lng = location.getLongitude();
            tv_jing.setText("经度:" + lng);
            tv_wei.setText("维度:" + lat);
        }
    }
}

猜你喜欢

转载自blog.csdn.net/zqd1984309864/article/details/78341419