From ebe4208502f7246b58bddef6ae5a4f4430478842 Mon Sep 17 00:00:00 2001 From: chteufleur Date: Fri, 5 Oct 2018 18:14:50 +0200 Subject: [PATCH] Simulate back button on receiving presence of other device. --- .../mytrackingdog/QRCodeGeneratorActivity.java | 10 ++++++++++ .../mytrackingdog/services/ServiceTrackingDog.java | 3 +++ .../chteufleur/mytrackingdog/services/ServiceXmpp.java | 4 ++++ 3 files changed, 17 insertions(+) diff --git a/app/src/main/java/fr/chteufleur/mytrackingdog/QRCodeGeneratorActivity.java b/app/src/main/java/fr/chteufleur/mytrackingdog/QRCodeGeneratorActivity.java index dc040dc..1e70f28 100644 --- a/app/src/main/java/fr/chteufleur/mytrackingdog/QRCodeGeneratorActivity.java +++ b/app/src/main/java/fr/chteufleur/mytrackingdog/QRCodeGeneratorActivity.java @@ -4,6 +4,8 @@ import android.app.Activity; import android.content.res.Resources; import android.graphics.Bitmap; import android.os.Bundle; +import android.os.Handler; +import android.os.Looper; import android.util.Log; import android.view.View; import android.view.WindowManager; @@ -22,11 +24,13 @@ public class QRCodeGeneratorActivity extends Activity { private ImageView imageView; private static Bitmap image = null; private static boolean generating = false; + public static QRCodeGeneratorActivity thsi = null; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.qr_code_generator); + thsi = this; // Keep screen ON getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); @@ -77,4 +81,10 @@ public class QRCodeGeneratorActivity extends Activity { Log.i(TAG, "FIN GENERATION QR CODE"); generating = false; } + + public static void pressBackButton() { + if (thsi != null) { + thsi.finish(); + } + } } diff --git a/app/src/main/java/fr/chteufleur/mytrackingdog/services/ServiceTrackingDog.java b/app/src/main/java/fr/chteufleur/mytrackingdog/services/ServiceTrackingDog.java index c0b9b02..60e9152 100644 --- a/app/src/main/java/fr/chteufleur/mytrackingdog/services/ServiceTrackingDog.java +++ b/app/src/main/java/fr/chteufleur/mytrackingdog/services/ServiceTrackingDog.java @@ -24,6 +24,7 @@ import java.util.List; import java.util.Observable; import java.util.Observer; +import fr.chteufleur.mytrackingdog.QRCodeGeneratorActivity; import fr.chteufleur.mytrackingdog.models.ExportGpx; import fr.chteufleur.mytrackingdog.models.Gpx; import fr.chteufleur.mytrackingdog.models.ImportGpx; @@ -268,6 +269,8 @@ public class ServiceTrackingDog implements Observer { currentLocationProvider = LocationProvider.XMPP; } else if (notification.isAction(ServiceXmpp.NOTIF_STOP_TRAIL)) { currentLocationProvider = LocationProvider.GPS; + } else if (notification.isAction(ServiceXmpp.NOTIF_NEW_PRESENCE_RECEIVED)) { + QRCodeGeneratorActivity.pressBackButton(); } } diff --git a/app/src/main/java/fr/chteufleur/mytrackingdog/services/ServiceXmpp.java b/app/src/main/java/fr/chteufleur/mytrackingdog/services/ServiceXmpp.java index 331615b..01fdb31 100644 --- a/app/src/main/java/fr/chteufleur/mytrackingdog/services/ServiceXmpp.java +++ b/app/src/main/java/fr/chteufleur/mytrackingdog/services/ServiceXmpp.java @@ -47,8 +47,10 @@ public class ServiceXmpp extends Observable implements PresenceEventListener { public static final String NOTIF_NEW_OBJECT = ServiceXmpp.class.getName()+".newobject"; public static final String NOTIF_START_TRAIL = ServiceXmpp.class.getName()+".starttrail"; public static final String NOTIF_STOP_TRAIL = ServiceXmpp.class.getName()+".stoptrail"; + public static final String NOTIF_NEW_PRESENCE_RECEIVED = ServiceXmpp.class.getName()+".newpresencereceived"; public static final String NOTIF_NEW_OBJECT_VALUE_LOCATION = NOTIF_NEW_OBJECT+".value.location"; public static final String NOTIF_NEW_LOCATION_VALUE_LOCATION = NOTIF_NEW_LOCATION+".value.location"; + public static final String NOTIF_NEW_PRESENCE_RECEIVED_VALUE_JID = NOTIF_NEW_PRESENCE_RECEIVED+".value.jid"; private static final String XMPP_NODE_TRAIL_GEOLOC = "trail_geoloc"; private static final String XMPP_NODE_OBJECT_GEOLOC = "object_geoloc"; @@ -184,6 +186,8 @@ public class ServiceXmpp extends Observable implements PresenceEventListener { } catch (XmppStringprepException e) { e.printStackTrace(); } + setChanged(); + notifyObservers(new Notification(NOTIF_NEW_PRESENCE_RECEIVED).addExtra(NOTIF_NEW_PRESENCE_RECEIVED_VALUE_JID, otherJid)); } }