0

我编写了下面的代码以获得最好的提供者。

private static String provider;

    public static String setCriteria(LocationManager locationManager) {
        Criteria criteria = new Criteria();
        criteria.setAccuracy(Criteria.ACCURACY_FINE);
        criteria.setAltitudeRequired(false);
        criteria.setBearingRequired(false);
        criteria.setCostAllowed(true);
        criteria.setPowerRequirement(Criteria.POWER_MEDIUM);
        provider = locationManager.getBestProvider(criteria, true);
        LocationProvider locProvide = locationManager.getProvider(provider);        
        if (provider == null) {
            provider = LocationManager.GPS_PROVIDER;
        }
        return provider;
    }

我有这个代码来找到我将用来获取位置的提供者。现在我要检查的是提供者的状态。我从文档中读到 LocationProvider 有 3 个可用状态、停止服务和 TEMPORARILY_UNAVAILABLE。现在我在请求位置监听器之前我需要检查状态。

如果状态为例如 TEMPORARILY_UNAVAILABLE 或停止服务,则用户将相应地收到消息,否则它将找到该位置。所以我的问题是如何检查状态?

如果有人有任何想法,请帮助我...

4

2 回答 2

0

您可以尝试在您的 Locationmanager 对象上使用 requestlocationupdates 并实现您的 Locationlistener 对象......就像这样......

   LocationManager lm = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
LocationListener ll = new mylocationlistener();
lm.requestLocationUpdates(provider, 0, 0, ll);

    private class mylocationlistener implements LocationListener {
  ....

    @Override
public void onStatusChanged(String provider, int status, Bundle extras) {
  switch(status){
   case 0:
   //OutofService
     break;
   case 1:
    //Temporarily unavailable
   break;
   case 2:
  //Available
    break;

  }
}
于 2012-04-14T06:51:56.283 回答
0

AFAIK,这是上述问题的最终解决方案..没有什么能超越这个你可以告诉 isAvailable 或不使用布尔变量isGPSfix

尽管您可以像这样进行其他尝试,但这并不能保证在所有情况下都可以工作。

于 2012-04-14T07:10:12.840 回答