【问题标题】:LocationListener never calledLocationListener 从未调用过
【发布时间】:2013-05-16 21:15:01
【问题描述】:

我正在尝试调试我的应用程序,但由于某种原因,当我开始获取当前位置时,我的 LocationListener 从未得到更新……我已在清单中添加了正确的权限。这是我用来测试是否调用了至少一个回调的示例代码 sn-p:

我已在启用 GPS 和网络的三种不同设备(Galaxy S3、Galaxy Note 2、Google Nexus 4)上进行了测试。

LocationManager locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
        locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, new LocationListener() {
            @Override
            public void onStatusChanged(String provider, int status, Bundle extras) {
                MyLog.debug("FOO");
            }

            @Override
            public void onProviderEnabled(String provider) {
                MyLog.debug("FOO");
            }

            @Override
            public void onProviderDisabled(String provider) {
                MyLog.debug("FOO");
            }

            @Override
            public void onLocationChanged(Location location) {
                MyLog.debug("FOO");
            }
        });

【问题讨论】:

  • 确定你已经在“MyLog”类中启用了登录功能?
  • 阳性。它只是 Log 的一个包装器,用于自动设置 TAG。正在使用“MyLog”类打印其他日志
  • 您是否尝试过类似GPS Status & Toolbox 的测试gps 应用来查看gps 是否正常工作?
  • 是的,它似乎找不到 gps 信号……很奇怪。但它仍然应该适用于使用网络提供商并且它不......
  • 尝试一个大于 0 的值作为最短距离或最短时间...

标签: android android-location


【解决方案1】:

检查您是否在清单中添加了正确的权限(ACCESS_COARSE_LOCATIONACCESS_FINE_LOCATION)。

此外,您不应该指定像LocationManager.GPS_PROVIDER 这样的提供商名称,因为用户可能在他的设备上禁用了他的gps。 LocationManager 提供了一个方法getBestProvider(),你应该调用这个方法来获得最好的可用提供者。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-29
    • 2013-10-12
    • 2014-11-23
    • 2017-08-27
    相关资源
    最近更新 更多