#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