summaryrefslogtreecommitdiff
path: root/src/plugins/position/android/src/jnipositioning.cpp
diff options
context:
space:
mode:
authorAlex Blasche <alexander.blasche@qt.io>2018-12-19 15:59:46 +0100
committerAlex Blasche <alexander.blasche@qt.io>2019-01-04 12:32:43 +0000
commit3c3be256cc1658b0d02047b158228fd55d04e2a0 (patch)
treeca0256b18b7ccb42f465dc8f6c230d1afdf724a2 /src/plugins/position/android/src/jnipositioning.cpp
parent00db28fe2905c6f9b10da65cc777962c373333a6 (diff)
downloadqtlocation-3c3be256cc1658b0d02047b158228fd55d04e2a0.tar.gz
Ensure QGeoPositionInfoSource::supportedPositioningMethodsChanged() on Android
This signal was added in Qt 5.12 but never emitted on Android. Due to implementation issues this signal is emitted for each provider change (e.g. twice if network and gps provider were disabled when the entire location service is disabled) Task-number: QTBUG-66427 Change-Id: I820b3187bfd8b8ab4facb053e2019e4f5c9736d0 Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
Diffstat (limited to 'src/plugins/position/android/src/jnipositioning.cpp')
-rw-r--r--src/plugins/position/android/src/jnipositioning.cpp15
1 files changed, 14 insertions, 1 deletions
diff --git a/src/plugins/position/android/src/jnipositioning.cpp b/src/plugins/position/android/src/jnipositioning.cpp
index 7d138ce4..0f358b42 100644
--- a/src/plugins/position/android/src/jnipositioning.cpp
+++ b/src/plugins/position/android/src/jnipositioning.cpp
@@ -528,6 +528,18 @@ static void locationProvidersDisabled(JNIEnv *env, jobject /*thiz*/, jint androi
QMetaObject::invokeMethod(source, "locationProviderDisabled", Qt::AutoConnection);
}
+static void locationProvidersChanged(JNIEnv *env, jobject /*thiz*/, jint androidClassKey)
+{
+ Q_UNUSED(env);
+ QObject *source = AndroidPositioning::idToPosSource()->value(androidClassKey);
+ if (!source) {
+ qWarning("locationProvidersChanged: source == 0");
+ return;
+ }
+
+ QMetaObject::invokeMethod(source, "locationProvidersChanged", Qt::AutoConnection);
+}
+
static void satelliteUpdated(JNIEnv *env, jobject /*thiz*/, jobjectArray satellites, jint androidClassKey, jboolean isSingleUpdate)
{
QList<QGeoSatelliteInfo> inUse;
@@ -564,7 +576,8 @@ if (!VAR) { \
static JNINativeMethod methods[] = {
{"positionUpdated", "(Landroid/location/Location;IZ)V", (void *)positionUpdated},
{"locationProvidersDisabled", "(I)V", (void *) locationProvidersDisabled},
- {"satelliteUpdated", "([Landroid/location/GpsSatellite;IZ)V", (void *)satelliteUpdated}
+ {"satelliteUpdated", "([Landroid/location/GpsSatellite;IZ)V", (void *)satelliteUpdated},
+ {"locationProvidersChanged", "(I)V", (void *) locationProvidersChanged}
};
static bool registerNatives(JNIEnv *env)