summaryrefslogtreecommitdiff
path: root/platform/android/src
diff options
context:
space:
mode:
authorIvo van Dongen <info@ivovandongen.nl>2016-09-08 17:53:00 +0200
committerIvo van Dongen <info@ivovandongen.nl>2016-09-23 10:47:54 +0200
commit742d6d827567608f94b0743b7bac5dbef94724e3 (patch)
treeb42d617cf2e8ac60f7a91b339ef3fccccca02043 /platform/android/src
parent3ddb8dfc86753120d2ea2c3befdf2430c1c56562 (diff)
downloadqtlocation-mapboxgl-742d6d827567608f94b0743b7bac5dbef94724e3.tar.gz
[android] set connectivity state pro-actively
Diffstat (limited to 'platform/android/src')
-rw-r--r--platform/android/src/connectivity_listener.cpp43
-rw-r--r--platform/android/src/connectivity_listener.hpp35
-rwxr-xr-xplatform/android/src/jni.cpp2
3 files changed, 80 insertions, 0 deletions
diff --git a/platform/android/src/connectivity_listener.cpp b/platform/android/src/connectivity_listener.cpp
new file mode 100644
index 0000000000..df5c60a485
--- /dev/null
+++ b/platform/android/src/connectivity_listener.cpp
@@ -0,0 +1,43 @@
+#include "connectivity_listener.hpp"
+
+#include <mbgl/storage/network_status.hpp>
+#include <mbgl/platform/log.hpp>
+
+#include <jni/jni.hpp>
+
+namespace mbgl {
+namespace android {
+
+ /**
+ * Invoked when the construction is initiated from the jvm
+ */
+ ConnectivityListener::ConnectivityListener(jni::JNIEnv&) {}
+
+ ConnectivityListener::~ConnectivityListener() {}
+
+ void ConnectivityListener::onConnectivityStateChanged(jni::JNIEnv&, jni::jboolean connected) {
+ NetworkStatus::Set(connected ? NetworkStatus::Status::Online : NetworkStatus::Status::Offline);
+ }
+
+ jni::Class<ConnectivityListener> ConnectivityListener::javaClass;
+
+ void ConnectivityListener::registerNative(jni::JNIEnv& env) {
+ //Lookup the class
+ ConnectivityListener::javaClass = *jni::Class<ConnectivityListener>::Find(env).NewGlobalRef(env).release();
+
+ #define METHOD(MethodPtr, name) jni::MakeNativePeerMethod<decltype(MethodPtr), (MethodPtr)>(name)
+
+ //Register the peer
+ jni::RegisterNativePeer<ConnectivityListener>(
+ env,
+ ConnectivityListener::javaClass,
+ "nativePtr",
+ std::make_unique<ConnectivityListener, JNIEnv&>,
+ "initialize",
+ "finalize",
+ METHOD(&ConnectivityListener::onConnectivityStateChanged, "nativeOnConnectivityStateChanged")
+ );
+ }
+
+} //android
+} //mbgl \ No newline at end of file
diff --git a/platform/android/src/connectivity_listener.hpp b/platform/android/src/connectivity_listener.hpp
new file mode 100644
index 0000000000..d457dcfd5a
--- /dev/null
+++ b/platform/android/src/connectivity_listener.hpp
@@ -0,0 +1,35 @@
+#pragma once
+
+#include <mbgl/util/noncopyable.hpp>
+
+#include <jni/jni.hpp>
+
+namespace mbgl {
+namespace android {
+
+class ConnectivityListener : private mbgl::util::noncopyable {
+public:
+
+ static constexpr auto Name() { return "com/mapbox/mapboxsdk/net/NativeConnectivityListener"; };
+
+ static jni::Class<ConnectivityListener> javaClass;
+
+ static void registerNative(jni::JNIEnv&);
+
+ /*
+ * Called when a Java object was created from the jvm side
+ */
+ ConnectivityListener(jni::JNIEnv&);
+
+ ~ConnectivityListener();
+
+ void onConnectivityStateChanged(jni::JNIEnv&, jni::jboolean);
+
+};
+
+} //android
+} //mbgl
+
+
+
+
diff --git a/platform/android/src/jni.cpp b/platform/android/src/jni.cpp
index 1a5efce726..d59ee1b617 100755
--- a/platform/android/src/jni.cpp
+++ b/platform/android/src/jni.cpp
@@ -11,6 +11,7 @@
#include "jni.hpp"
#include "java_types.hpp"
#include "native_map_view.hpp"
+#include "connectivity_listener.hpp"
#include "style/layers/layers.hpp"
#include "style/sources/sources.hpp"
@@ -1701,6 +1702,7 @@ extern "C" JNIEXPORT jint JNI_OnLoad(JavaVM *vm, void *reserved) {
java::registerNatives(env);
registerNativeLayers(env);
registerNativeSources(env);
+ ConnectivityListener::registerNative(env);
latLngClass = &jni::FindClass(env, "com/mapbox/mapboxsdk/geometry/LatLng");
latLngClass = jni::NewGlobalRef(env, latLngClass).release();