Проблема Blackberry с отслеживанием GPS на сотовом узле

#blackberry #gps

#ежевика #gps

Вопрос:

В моем приложении BB я пытаюсь получить местоположение с помощью сайта cell.

Но он всегда выдает исключение местоположения:

 Timed out while waiting for Geolocation.m=0
  

Вот мой код

 Criteria criteria = new Criteria();
criteria.setHorizontalAccuracy(Criteria.NO_REQUIREMENT);
criteria.setVerticalAccuracy(Criteria.NO_REQUIREMENT);
criteria.setCostAllowed(true);
criteria.setPreferredPowerConsumption(Criteria.POWER_USAGE_LOW);
LocationProvider provider = LocationProvider.getInstance(criteria);
Location location = provider.getLocation(-1);
QualifiedCoordinates qualifiedCoordinates = location.getQualifiedCoordinates();
double latitude = qualifiedCoordinates.getLatitude();
double longitude = qualifiedCoordinates.getLongitude();
  

Но если я изменю параметры на

 criteria.setHorizontalAccuracy(50);
criteria.setVerticalAccuracy(50);
criteria.setCostAllowed(true);
criteria.setPreferredPowerConsumption(Criteria.POWER_USAGE_HIGH);
  

вспомогательный GPS работает нормально, и я получу правильное местоположение устройства.

Комментарии:

1. Я нашел критерии. POWER_USAGE_LOW отлично работал в приложении, которое я разрабатывал пару недель назад, но с тех пор не работает (на Sim-карте или на устройстве) «большой сбой». Может ли быть так, что часть службы BB работает некорректно или отключена?

Ответ №1:

 class LocationTracker{
private LocationProvider provider;
Criteria cr;
public LocationTracker() {
    cr= new Criteria();
    resetGPS();
}

public void resetGPS(){       
        try {
            provider = LocationProvider.getInstance(cr);
            if(provider != null) {
                    provider.setLocationListener(new MyLocationListener(),60, -1, -1);
            }
        }
        catch (LocationException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }     
    }
}

class MyLocationListener implements LocationListener {
public void locationUpdated(LocationProvider provider, Location location){
    if(location != null amp;amp; location.isValid()){               
        QualifiedCoordinates qc = location.getQualifiedCoordinates();
        try {
            LAT = location.getQualifiedCoordinates().getLatitude();
            System.out.println("=============================lattitude :: " LAT);
            LONG= location.getQualifiedCoordinates().getLongitude();
            System.out.println("==================================longitude ::" LONG);

        } 
        catch(Exception e){ 
           }
    }
}

public void providerStateChanged(LocationProvider provider, int newState){
     if(newState == LocationProvider.TEMPORARILY_UNAVAILABLE){
            provider.reset();
            provider.setLocationListener(null, 0, 0, -1);
        }
    }
}
  

Комментарии:

1. я попробовал тот же код, который пробовал ранее, и теперь он работает отлично ..!!! В любом случае спасибо за вашу помощь…

Ответ №2:

Как и vijay, вы можете зарегистрироваться для обновления местоположения.

Если вы все еще хотите использовать свое решение, вы должны быть уверены, что — оно потоковое (и не только для того, чтобы не получать ANR, это обязательное требование) — У вас есть SIM-карта с опцией Blackberry — Вы работаете как минимум на OS 5.0.0