From 87b569ccc4df161e33d41f7a5f1f25eced6f65c3 Mon Sep 17 00:00:00 2001 From: Paul Olav Tvete Date: Mon, 2 Jun 2014 12:46:45 +0200 Subject: Android: don't crash if Gravity is not supported The QtSensors documentation says that if Gravity mode is not available, we should silently fall back to the default Combined mode. In addition, add null pointer checks in case we try to ask for non-existent sensors in the future. Task-number: QTBUG-39335 Change-Id: I6c18622d081db4e3a7d07c744bb0b746e3f5c6ff Reviewed-by: Eskil Abrahamsen Blomfeldt --- .../android/jar/src/org/qtproject/qt5/android/sensors/QtSensors.java | 3 +++ src/plugins/sensors/android/src/androidaccelerometer.cpp | 3 +++ src/plugins/sensors/android/src/androidjnisensors.cpp | 2 ++ 3 files changed, 8 insertions(+) diff --git a/src/plugins/sensors/android/jar/src/org/qtproject/qt5/android/sensors/QtSensors.java b/src/plugins/sensors/android/jar/src/org/qtproject/qt5/android/sensors/QtSensors.java index 5507b07b..efd1ff6d 100644 --- a/src/plugins/sensors/android/jar/src/org/qtproject/qt5/android/sensors/QtSensors.java +++ b/src/plugins/sensors/android/jar/src/org/qtproject/qt5/android/sensors/QtSensors.java @@ -73,6 +73,9 @@ public class QtSensors implements SensorEventListener { try { Sensor s = m_sensorManager.getDefaultSensor(sensorType); + if (s == null) { + return null; + } return s.getName() + " " + s.getVendor() + " v" + s.getVersion(); } catch(Exception e) { e.printStackTrace(); diff --git a/src/plugins/sensors/android/src/androidaccelerometer.cpp b/src/plugins/sensors/android/src/androidaccelerometer.cpp index 76aa0278..74b3d6db 100644 --- a/src/plugins/sensors/android/src/androidaccelerometer.cpp +++ b/src/plugins/sensors/android/src/androidaccelerometer.cpp @@ -95,5 +95,8 @@ AndroidSensors::AndroidSensorType AndroidAccelerometer::modeToSensor(QAccelerome break; } + if (type != AndroidSensors::TYPE_ACCELEROMETER && !AndroidSensors::availableSensors().contains(type)) + type = AndroidSensors::TYPE_ACCELEROMETER; + return type; } diff --git a/src/plugins/sensors/android/src/androidjnisensors.cpp b/src/plugins/sensors/android/src/androidjnisensors.cpp index af39e0b6..87889a89 100644 --- a/src/plugins/sensors/android/src/androidjnisensors.cpp +++ b/src/plugins/sensors/android/src/androidjnisensors.cpp @@ -113,6 +113,8 @@ namespace AndroidSensors jstring jstr = static_cast(aenv.jniEnv->CallStaticObjectMethod(sensorsClass, getSensorDescriptionMethodId, jint(sensor))); + if (!jstr) + return QString(); const jchar *pstr = aenv.jniEnv->GetStringChars(jstr, 0); QString ret(reinterpret_cast(pstr), aenv.jniEnv->GetStringLength(jstr)); aenv.jniEnv->ReleaseStringChars(jstr, pstr); -- cgit v1.2.3