【问题标题】:Location provider check doesn't work on Android位置提供程序检查在 Android 上不起作用
【发布时间】:2014-04-03 11:53:16
【问题描述】:

我是 Android 新手。现在我正在学习定位服务的工作原理。我的问题是,将 GPS 和网络这两个侦听器连接到一个对象时,我无法获取位置源。这是我的代码:

public void onLocationChanged(Location location) {
    if (location.getProvider() == LocationManager.GPS_PROVIDER) {
        textView1.setText("Lat: " + location.getLatitude() + ", Long: " + location.getLongitude() + " by GPS");
    } else if (location.getProvider() == LocationManager.NETWORK_PROVIDER) {
        textView1.setText("Lat: " + location.getLatitude() + ", Long: " + location.getLongitude() + " by network");
    }
}

并且此代码永远不会更新 TextView。我在不同的情况下尝试过,室内/室外,打开/关闭 GPS,什么都没有……我很困惑,因为下面的代码我没有检查提供者:

public void onLocationChanged(Location location) {
    textView1.setText("Lat: " + location.getLatitude() + ", Long: " + location.getLongitude());
}

效果很好。

我做错了什么?

【问题讨论】:

  • 您是否在 manifest.xml 中授予了适当的权限?
  • 你能检查单个监听器的工作吗?
  • 检查您的 logcat 是否有任何错误消息
  • 是的...清单和单个侦听器正常工作。当我不检查提供者时,一切正常......

标签: android location


【解决方案1】:

这并不明显,但出于某种原因,Android 的 LocationManager 使用字符串来定义提供程序常量。所以你需要使用.equals()而不是==来检查字符串:

if (location.getProvider().equals(LocationManager.GPS_PROVIDER)) {
   // ...
}

【讨论】:

    【解决方案2】:
     if (location.getProvider == LocationManager.GPS_PROVIDER)
    

    永远不要将字符串与 == 进行比较,使用它

     if (location.getProvider().equals(LocationManager.GPS_PROVIDER)
    

    【讨论】:

      【解决方案3】:

      LocationManager.GPS_PROVIDER & LocationManager.NETWORK_PROVIDER 是字符串常量,因此您需要使用 String 类的 equals() 方法进行比较,如下所示,

      public void onLocationChanged(Location location) 
      {
          if (location.getProvider.equals(LocationManager.GPS_PROVIDER)) {
              textView1.setText("Lat: " + location.getLatitude() + ", Long: " + location.getLongitude() + " by GPS");
          } else if (location.getProvider.equals(LocationManager.NETWORK_PROVIDER)) {
              textView1.setText("Lat: " + location.getLatitude() + ", Long: " + location.getLongitude() + " by network");
          }
      }
      

      【讨论】:

        猜你喜欢
        • 2015-03-02
        • 1970-01-01
        • 2015-12-22
        • 2012-03-24
        • 2016-05-13
        • 1970-01-01
        • 1970-01-01
        • 2013-08-02
        • 1970-01-01
        相关资源
        最近更新 更多