J'ai écrit une application très simple qui demande à LocationProvider un emplacement et l'imprime à System.out. Cela fonctionne très bien dans le simulateur. Cependant, lorsque je l'exécute sur mon Blackberry, l'appel à getLocation semble suspendu indéfiniment. Je cours le code dans un fil séparé qui obtient simplement un fournisseur et demande l'endroit. Je l'ai essayé avec des critères Nuls (ce qui devrait me donner les défauts par défaut?) Ainsi qu'un critère qui devrait fournir une assistance puis autonome. J'ai inclus mon code ci-dessous. Quand je lance sur mon appareil, il se bloque sur l'appel à getLocation.Here est mon code below..plzz dire ce que je pourrais faire mal ...Blackberry - LocationProvider.getLocation() se bloque
public void getLocation() {
Thread t = new Thread(new Runnable() {
private double lat;
private double lon;
public void run() {
Criteria cr = new Criteria();
cr.setHorizontalAccuracy(Criteria.NO_REQUIREMENT);
cr.setVerticalAccuracy(Criteria.NO_REQUIREMENT);
cr.setCostAllowed(false);
cr.setPreferredPowerConsumption(Criteria.NO_REQUIREMENT);
cr.setPreferredResponseTime(1000);
LocationProvider lp = null;
try {
lp = LocationProvider.getInstance(cr);
} catch (LocationException e) {
// System.out.println("*****************Exception" + e);
}
Coordinates c = null;
if (lp == null) {
UiApplication.getUiApplication().invokeLater(
new Runnable() {
public void run() {
Dialog.alert("GPS not supported!");
return;
}
});
} else {
// System.out.println("OK");
switch (lp.getState()) {
case LocationProvider.AVAILABLE:
// System.out.println("Provider is AVAILABLE");
Location l = null;
try {
l = lp.getLocation(-1);
} catch (LocationException e) {
// System.out.println("***Location Exception caught "
// + e);
} catch (InterruptedException e) {
// System.out.println("***Interrupted Exception aught:"
// + e);
} catch (Exception e) {
// System.out.println("***Exception caught :"
// ;+ e);
}
if (l != null && l.isValid()) {
c = l.getQualifiedCoordinates();
}
if (c != null) {
lat = c.getLatitude();
lon = c.getLongitude();
System.out.println(lat + " - " + lon);
}
}
}
}
});
t.start();
}