J'ai testé l'exemple de Geofence par cn1 où il définit la notification locale. Lorsque l'application est fermée (détruite), elle donne toujours une notification. Mais je veux obtenir l'emplacement par GPS et exécuter connectionRequest pour les enregistrer dans le serveur. J'ai remplacé le code connectionRequest au lieu de LocalNotification dans le code suivant mais cela ne fonctionne pas. Que dois-je faire pour exécuter la connectionRequest lorsque l'application est fermée (pas quand elle est réduite mais détruite) de sorte qu'une fois que l'utilisateur installe et ferme (détruit), l'application envoie ses données de localisation dans le serveur pour toujours est désinstallé.ConnectionRequest lorsque l'application est en arrière-plan
Geofence gf = nouveau Geofence ("test", loc, 100, 100000); LocationManager.getLocationManager(). AddGeoFencing (GeofenceListenerImpl.class, gf);
Geofence avec localNotification:
public class GeofenceListenerImpl implements GeofenceListener {
@Override
public void onExit(String id) {
}
@Override
public void onEntered(String id) {
if(Display.getInstance().isMinimized()) {
Display.getInstance().callSerially(() -> {
Dialog.show("Welcome", "Thanks for arriving", "OK", null);
});
} else {
LocalNotification ln = new LocalNotification();
ln.setId("LnMessage");
ln.setAlertTitle("Welcome");
ln.setAlertBody("Thanks for arriving!");
Display.getInstance().scheduleLocalNotification(ln, 10, LocalNotification.REPEAT_NONE);
}
}
}
Pourquoi les éléments suivants doesnot travail? (Il fonctionne uniquement lorsque l'application est en cours d'exécution ou est réduite au minimum, mais pas quand il est détruit.)
public class GeofenceListenerImpl implements GeofenceListener {
@Override
public void onExit(String id) {
System.out.println("geofence onExit");
}
@Override
public void onEntered(String id) {
if(Display.getInstance().isMinimized()) {
Display.getInstance().callSerially(() -> {
System.out.println("geofence isMinimized");
});
} else {
System.out.println("geofence when app is closed");
//I want to run connectionRequest here but is not working
}
}
}
PS. J'ai utilisé l'extraction d'arrière-plan, mais cela ne fonctionne que lorsque l'application est réduite.
Update1: Demo de la façon dont je connectionRequest en dehors de la méthode réduit() ...
public class GeofenceListenerImpl implements GeofenceListener {
@Override
public void onExit(String id) {
System.out.println("geofence onExit");
}
@Override
public void onEntered(String id) {
if(Display.getInstance().isMinimized()) {
Display.getInstance().callSerially(() -> {
});
} else {
System.out.println("geofence when app is closed");
Connection c = new Connection();
c.liveTrackConnectionMethod("22" , "23");
}
}
}
classe Connection
public class Connection {
ArrayList<Map<String, Object>> response;
public void liveTrackConnectionMethod(String lat, String lon) {
ConnectionRequest cr = new ConnectionRequest() {
@Override
protected void readResponse(InputStream input) throws IOException {
JSONParser jSONParser = new JSONParser();
Map parser = jSONParser.parseJSON(new InputStreamReader(input));
response = null;
}
};
cr.setPost(true);
cr.setUrl("http://url.com");
cr.addArgument("userid", Preferences.get(AllUrls.userIdPreference, null));
cr.addArgument("lat", lat + "");
cr.addArgument("long", lon + "");
cr.addRequestHeader("Accept", "application/json");
NetworkManager.getInstance().addToQueueAndWait(cr);
}
}
Est-ce que 'c.liveTrackConnectionMethod (" 22 "," 23 ")' fonctionne en dehors de ifelse? – Diamond
ça marche à l'intérieur si ... – beck