summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/plugins/position/android/jar/src/org/qtproject/qt5/android/positioning/QtPositioning.java5
-rw-r--r--src/plugins/position/android/src/jnipositioning.cpp15
-rw-r--r--src/plugins/position/android/src/qgeopositioninfosource_android.cpp5
-rw-r--r--src/plugins/position/android/src/qgeopositioninfosource_android_p.h1
4 files changed, 23 insertions, 3 deletions
diff --git a/src/plugins/position/android/jar/src/org/qtproject/qt5/android/positioning/QtPositioning.java b/src/plugins/position/android/jar/src/org/qtproject/qt5/android/positioning/QtPositioning.java
index 1a53512d..d819e627 100644
--- a/src/plugins/position/android/jar/src/org/qtproject/qt5/android/positioning/QtPositioning.java
+++ b/src/plugins/position/android/jar/src/org/qtproject/qt5/android/positioning/QtPositioning.java
@@ -521,10 +521,9 @@ public class QtPositioning implements LocationListener
}
}
-
-
public static native void positionUpdated(Location update, int androidClassKey, boolean isSingleUpdate);
public static native void locationProvidersDisabled(int androidClassKey);
+ public static native void locationProvidersChanged(int androidClassKey);
public static native void satelliteUpdated(GpsSatellite[] update, int androidClassKey, boolean isSingleUpdate);
@Override
@@ -578,11 +577,13 @@ public class QtPositioning implements LocationListener
@Override
public void onProviderEnabled(String provider) {
Log.d(TAG, "Enabled provider: " + provider);
+ locationProvidersChanged(nativeClassReference);
}
@Override
public void onProviderDisabled(String provider) {
Log.d(TAG, "Disabled provider: " + provider);
+ locationProvidersChanged(nativeClassReference);
if (!expectedProvidersAvailable(expectedProviders))
locationProvidersDisabled(nativeClassReference);
}
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)
diff --git a/src/plugins/position/android/src/qgeopositioninfosource_android.cpp b/src/plugins/position/android/src/qgeopositioninfosource_android.cpp
index 59b8beab..38778ec4 100644
--- a/src/plugins/position/android/src/qgeopositioninfosource_android.cpp
+++ b/src/plugins/position/android/src/qgeopositioninfosource_android.cpp
@@ -206,6 +206,11 @@ void QGeoPositionInfoSourceAndroid::locationProviderDisabled()
setError(QGeoPositionInfoSource::ClosedError);
}
+void QGeoPositionInfoSourceAndroid::locationProvidersChanged()
+{
+ emit supportedPositioningMethodsChanged();
+}
+
void QGeoPositionInfoSourceAndroid::requestTimeout()
{
AndroidPositioning::stopUpdates(androidClassKeyForSingleRequest);
diff --git a/src/plugins/position/android/src/qgeopositioninfosource_android_p.h b/src/plugins/position/android/src/qgeopositioninfosource_android_p.h
index dbb27f83..61e107b1 100644
--- a/src/plugins/position/android/src/qgeopositioninfosource_android_p.h
+++ b/src/plugins/position/android/src/qgeopositioninfosource_android_p.h
@@ -79,6 +79,7 @@ public Q_SLOTS:
void processSinglePositionUpdate(const QGeoPositionInfo& pInfo);
void locationProviderDisabled();
+ void locationProvidersChanged();
private Q_SLOTS:
void requestTimeout();