diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/plugins/position/android/src/jnipositioning.cpp | 16 |
1 files changed, 15 insertions, 1 deletions
diff --git a/src/plugins/position/android/src/jnipositioning.cpp b/src/plugins/position/android/src/jnipositioning.cpp index c333a9c6..7d138ce4 100644 --- a/src/plugins/position/android/src/jnipositioning.cpp +++ b/src/plugins/position/android/src/jnipositioning.cpp @@ -234,7 +234,7 @@ namespace AndroidPositioning { jlong timestamp = jniEnv->CallLongMethod(location, mid); info.setTimestamp(QDateTime::fromMSecsSinceEpoch(timestamp, Qt::UTC)); - //accuracy + //horizontal accuracy mid = getCachedMethodID(jniEnv, thisClass, "hasAccuracy", "()Z"); attributeExists = jniEnv->CallBooleanMethod(location, mid); if (attributeExists) { @@ -243,7 +243,21 @@ namespace AndroidPositioning { info.setAttribute(QGeoPositionInfo::HorizontalAccuracy, qreal(accuracy)); } + //vertical accuracy + mid = getCachedMethodID(jniEnv, thisClass, "hasVerticalAccuracy", "()Z"); + if (mid) { + attributeExists = jniEnv->CallBooleanMethod(location, mid); + if (attributeExists) { + mid = getCachedMethodID(jniEnv, thisClass, "getVerticalAccuracyMeters", "()F"); + if (mid) { + jfloat accuracy = jniEnv->CallFloatMethod(location, mid); + info.setAttribute(QGeoPositionInfo::VerticalAccuracy, qreal(accuracy)); + } + } + } + if (!mid) + jniEnv->ExceptionClear(); //ground speed mid = getCachedMethodID(jniEnv, thisClass, "hasSpeed", "()Z"); |