【问题标题】:Unable to get Lat Long from LocationManager无法从 LocationManager 获取 Lat Long
【发布时间】:2016-08-22 18:50:11
【问题描述】:

我正在尝试使用 LocationManager 获取登录用户的经纬度。我能够获得权限屏幕,并且在允许后我想在文本视图上查看纬度和经度。 但是,我在文本视图中看不到任何内容。

protected void getLocation() {
        Log.v(TAG, "GetLocation");
        int LOCATION_REFRESH_TIME = 1000;
        int LOCATION_REFRESH_DISTANCE = 5;

        if (!(checkSelfPermission(Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && checkSelfPermission(Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED)) {
            Log.v("WEAVER_", "Has permission");
            mLocationManager = (LocationManager) getSystemService(LOCATION_SERVICE);
            mLocationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, LOCATION_REFRESH_TIME,
                    LOCATION_REFRESH_DISTANCE, mLocationListener);

        } else {
            Log.v("WEAVER_", "Does not have permission");
        }

    }

现在,我正在调用 mLocationListener,但没有得到任何结果,也没有任何错误。 OnLocationChanged() 方法没有被调用。

 private final LocationListener mLocationListener = new LocationListener() {
        @Override
        public void onLocationChanged(Location location) {
            Log.v("WEAVER_", "Location Change");
            double latitude = location.getLatitude();
            textView.setText(String.valueOf(latitude) + "latitude");
            textView.setText(String.valueOf(updates) + " updates");
        }

在这里,textView 没有显示任何内容,日志也没有使用 Location Changed Event 更新。

日志结果是:

    08-21 14:35:29.336 3390-3390/daveytree.geo2 V/WEAVER_: GetLocation
08-21 14:35:29.337 3390-3390/daveytree.geo2 V/WEAVER_: Has permission
08-21 14:35:29.362 3390-3526/daveytree.geo2 D/OpenGLRenderer: Use EGL_SWAP_BEHAVIOR_PRESERVED: true

是否有任何其他事件可以捕捉到这一点。请帮忙

【问题讨论】:

  • 检查您的设备是否处于飞行模式和/或设备中的位置检测器是否被禁用。
  • LocationManager 是旧的 Android 位置框架的一部分,Google 强烈建议迁移到 Google Play 位置服务(我在我的应用程序中使用它们,一切正常)。你可以在这里阅读更多信息:developer.android.com/training/location/index.html

标签: android google-maps locationmanager


【解决方案1】:

从此SO question,您可以尝试将GPS_PROVIDER 更改为NETWORK_PROVIDER。由于GPS_PROVIDER 使用卫星确定位置,因此根据条件,此提供程序可能需要一段时间才能返回位置修复。

有关更多信息,您还可以查看相关的 SO 问题:

【讨论】:

    猜你喜欢
    • 2012-03-20
    • 2011-11-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-20
    • 1970-01-01
    相关资源
    最近更新 更多