Android-需要在不打开GPS的情况下找到GPS信号强度

时间:2012-07-17 02:10:33

标签: android gps

我的应用应使用GPSCellular networkWiFi找到当前位置。我可以通过GPS

轻松找到当前位置
LocationManager locationmanager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
LocationListener locationlistener = new mylocationlistener();
locationmanager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, locationlistener);

其中mylocationlistener()函数如下所示

private class mylocationlistener implements LocationListener {
  @Override
  public void onLocationChanged(Location location) {
      if (location != null) {
      Toast.makeText(LocationActivity.this,"latitude: "+
          location.getLatitude() + "longitude: " + location.getLongitude(),
          Toast.LENGTH_LONG).show();
      }
  }

它工作正常。我可以使用celluler网络通过上面的代码查找当前位置,我需要更改locationmanager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 0, locationlistener);

它很好,但我的挑战是

  1. 我需要找到GPS信号强度以激活GPS。如果GPS信号强度很差,那么我无法激活GPS,因为它会耗尽电池。
  2. 如果GPS信号差,我必须通过蜂窝网络或WiFi找出当前位置。
  3. 所以,我的问题是,如果有办法确定GPS信号强度而不打开GPS? 感谢您提前寻求任何帮助。

1 个答案:

答案 0 :(得分:2)

不,您无法确定未打开的传感器的信号强度。

为了确定卫星和GPS等手机之间的信号强度,两者需要发送和接收GPS信号,这自然要求打开手机上的GPS。

同样的逻辑表明,如果不打开WiFi,就无法列出附近的WiFi网络。

您最好的选择是暂时将其打开,如果您决定不使用它,请将其关闭。

确定是否使用GPS的最简单方法是打开它,然后使用LocationManager的getBestProvider方法。如果最佳提供商不是GPS,请再次将其关闭。您还可以使用getGpsStatus方法获取GpsStatus对象,其中包含最大卫星数量和接收修复所花费的时间等指标。

有关如何启用/禁用GPS,请参阅Enable GPS programatically like Tasker。遗憾的是,您只能通过编程方式在2.3之前的手机上执行此操作,然后才能通过漏洞利用。 “正确”的方法是提示用户启用或禁用它。