首页 > 解决方案 > 在不使用 GPS 的情况下获取当前位置的经纬度

问题描述

嗨朋友们我有麻烦我想在不使用 GPS 的情况下找到我当前的位置,谁能帮助我..

下面是我的代码,但它不工作

public Location getLocation() {

    Location location = null;
    final long MIN_DISTANCE_CHANGE_FOR_UPDATES = 10; // 10 meters
    final long MIN_TIME_BW_UPDATES = 1000 * 60 * 1; // 1 minute

    if (ContextCompat.checkSelfPermission(this, android.Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED) {

        try {

            LocationManager locationManager = (LocationManager) getApplicationContext().getSystemService(Context.LOCATION_SERVICE);

            LocationListener locationListener = new LocationListener() {
                @Override
                public void onLocationChanged(Location location) {
                    //updating when location is changed
                    if (location != null) {

                        double latitude = location.getLatitude();
                        double longitude = location.getLongitude();
                        Log.i("latitudelongitude", longitude + "," + latitude);

                    }
                }

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

                }

                @Override
                public void onProviderEnabled(String provider) {

                }

                @Override
                public void onProviderDisabled(String provider) {

                }
            };

            boolean isNetworkEnabled = locationManager.isProviderEnabled(LocationManager.NETWORK_PROVIDER);

            boolean isGPSEnabled = locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER);

            if (!isNetworkEnabled && !isGPSEnabled) {

// 在这种情况下,在 onResume 方法中再次调用 getLocation // startActivity(new Intent(android.provider.Settings.ACTION_LOCATION_SOURCE_SETTINGS));

            } else {

                if (isNetworkEnabled) {

                    locationManager.requestLocationUpdates(
                            LocationManager.NETWORK_PROVIDER, MIN_TIME_BW_UPDATES, MIN_DISTANCE_CHANGE_FOR_UPDATES, locationListener);
                    if (locationManager != null) {

                        location = locationManager.getLastKnownLocation(LocationManager.NETWORK_PROVIDER);
                    }

                } else {

                    locationManager.requestLocationUpdates(
                            LocationManager.GPS_PROVIDER,
                            MIN_TIME_BW_UPDATES,
                            MIN_DISTANCE_CHANGE_FOR_UPDATES, locationListener);
                    Log.d("GPS", "GPS Enabled");
                    if (locationManager != null) {
                        location = locationManager
                                .getLastKnownLocation(LocationManager.GPS_PROVIDER);

                    }

                }


            }

        } catch (Exception e) {
            e.printStackTrace();
        }

    } else {

//请求ACCESS FINE LOCATION ActivityCompat.requestPermissions(this, new String[]{android.Manifest.permission.ACCESS_FINE_LOCATION}, 1); //在权限授予回调中再次调用getLocation函数 } enter code here return location; }

标签: android

解决方案


推荐阅读