diff options
-rw-r--r-- | dist/changes-5.3.0 | 67 | ||||
-rw-r--r-- | examples/sensors/accelbubble/Info.plist | 35 | ||||
-rw-r--r-- | examples/sensors/accelbubble/accelbubble.pro | 7 | ||||
-rw-r--r-- | examples/sensors/accelbubble/accelbubble.qml | 3 | ||||
-rw-r--r-- | examples/sensors/grue/import/import.pro | 2 | ||||
-rw-r--r-- | examples/sensors/sensor_explorer/import/import.pro | 2 | ||||
-rw-r--r-- | src/plugins/sensors/android/jar/src/org/qtproject/qt5/android/sensors/QtSensors.java | 3 | ||||
-rw-r--r-- | src/plugins/sensors/android/src/androidaccelerometer.cpp | 3 | ||||
-rw-r--r-- | src/plugins/sensors/android/src/androidjnisensors.cpp | 2 | ||||
-rw-r--r-- | src/plugins/sensors/ios/iosaccelerometer.mm | 3 | ||||
-rw-r--r-- | src/plugins/sensors/ios/iosgyroscope.mm | 3 | ||||
-rw-r--r-- | src/plugins/sensors/ios/iosmagnetometer.mm | 6 |
12 files changed, 134 insertions, 2 deletions
diff --git a/dist/changes-5.3.0 b/dist/changes-5.3.0 new file mode 100644 index 0000000..4c6f025 --- /dev/null +++ b/dist/changes-5.3.0 @@ -0,0 +1,67 @@ +Qt 5.3 introduces many new features and improvements as well as bugfixes +over the 5.2.x series. For more details, refer to the online documentation +included in this distribution. The documentation is also available online: + + http://qt-project.org/doc/qt-5.3 + +The Qt version 5.3 series is binary compatible with the 5.2.x series. +Applications compiled for 5.2 will continue to run with 5.3. + +Some of the changes listed in this file include issue tracking numbers +corresponding to tasks in the Qt Bug Tracker: + + http://bugreports.qt-project.org/ + +Each of these identifiers can be entered in the bug tracker to obtain more +information about a particular change. + +**************************************************************************** +* General * +**************************************************************************** + +General Improvements +-------------------- + + - The general documentation has been improved. + - The Accelbubble example was adjusted to suppress dynamic user interface + rotation which avoids the rotation of the UI itself when running the + example. + + +**************************************************************************** +* Library * +**************************************************************************** + +QtSensors +------------- + + - Various fixes to plug-ins and examples to simplify usage when using + static linking. + +**************************************************************************** +* Platform Specific Changes * +**************************************************************************** + +Android +------- + + - QAccelerometer's accellerationMode implemented. + - Fixed deployment of examples to Android targets. + + +BlackBerry +---------- + + - QProximitySensor + * The close detection algorithm fixed on sensors whose output is not binary. + +iOS +--- + + - Improved handling of NaN across all sensor implementations. + +WinRT +----- + + - QtSensors has been ported to WinRT/Windows Phone + diff --git a/examples/sensors/accelbubble/Info.plist b/examples/sensors/accelbubble/Info.plist new file mode 100644 index 0000000..82e9bff --- /dev/null +++ b/examples/sensors/accelbubble/Info.plist @@ -0,0 +1,35 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> +<plist version="1.0"> +<dict> + <key>CFBundleDisplayName</key> + <string>accelbubble</string> + <key>CFBundleExecutable</key> + <string>accelbubble</string> + <key>CFBundleGetInfoString</key> + <string>Created by Qt/QMake</string> + <key>CFBundleIdentifier</key> + <string>com.digia.accelbubble</string> + <key>CFBundleName</key> + <string>accelbubble</string> + <key>CFBundlePackageType</key> + <string>APPL</string> + <key>CFBundleResourceSpecification</key> + <string>ResourceRules.plist</string> + <key>CFBundleShortVersionString</key> + <string>1.0</string> + <key>CFBundleSignature</key> + <string>????</string> + <key>CFBundleVersion</key> + <string>1.0</string> + <key>UIDeviceFamily</key> + <array> + <integer>1</integer> + <integer>2</integer> + </array> + <key>UISupportedInterfaceOrientations</key> + <array> + <string>UIInterfaceOrientationPortrait</string> + </array> +</dict> +</plist> diff --git a/examples/sensors/accelbubble/accelbubble.pro b/examples/sensors/accelbubble/accelbubble.pro index cdb6ab7..4204f15 100644 --- a/examples/sensors/accelbubble/accelbubble.pro +++ b/examples/sensors/accelbubble/accelbubble.pro @@ -15,4 +15,11 @@ OTHER_FILES = \ target.path = $$[QT_INSTALL_EXAMPLES]/sensors/accelbubble INSTALLS += target +ios { +QMAKE_INFO_PLIST = Info.plist + +# manual plugin loading needed with older Qt +# QTPLUGIN += qsvg qtsensors_ios qtsensors_generic +} + ANDROID_PACKAGE_SOURCE_DIR = $$PWD/android diff --git a/examples/sensors/accelbubble/accelbubble.qml b/examples/sensors/accelbubble/accelbubble.qml index 8f676dc..033e66a 100644 --- a/examples/sensors/accelbubble/accelbubble.qml +++ b/examples/sensors/accelbubble/accelbubble.qml @@ -69,6 +69,9 @@ ApplicationWindow { var newX = (bubble.x + calcRoll(accel.reading.x, accel.reading.y, accel.reading.z) * .1) var newY = (bubble.y - calcPitch(accel.reading.x, accel.reading.y, accel.reading.z) * .1) + if (isNaN(newX) || isNaN(newY)) + return; + if (newX < 0) newX = 0 diff --git a/examples/sensors/grue/import/import.pro b/examples/sensors/grue/import/import.pro index 87e3c91..08b312d 100644 --- a/examples/sensors/grue/import/import.pro +++ b/examples/sensors/grue/import/import.pro @@ -31,7 +31,7 @@ copyfile = $$PWD/qmldir copydest = $$DESTDIR # On Windows, use backslashes as directory separators -win32: { +equals(QMAKE_HOST.os, Windows) { copyfile ~= s,/,\\,g copydest ~= s,/,\\,g } diff --git a/examples/sensors/sensor_explorer/import/import.pro b/examples/sensors/sensor_explorer/import/import.pro index 196c373..a5fe441 100644 --- a/examples/sensors/sensor_explorer/import/import.pro +++ b/examples/sensors/sensor_explorer/import/import.pro @@ -31,7 +31,7 @@ copyfile = $$PWD/qmldir copydest = $$DESTDIR # On Windows, use backslashes as directory separators -win32: { +equals(QMAKE_HOST.os, Windows) { copyfile ~= s,/,\\,g copydest ~= s,/,\\,g } 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 5507b07..efd1ff6 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 76aa027..74b3d6d 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 af39e0b..87889a8 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<jstring>(aenv.jniEnv->CallStaticObjectMethod(sensorsClass, getSensorDescriptionMethodId, jint(sensor))); + if (!jstr) + return QString(); const jchar *pstr = aenv.jniEnv->GetStringChars(jstr, 0); QString ret(reinterpret_cast<const QChar *>(pstr), aenv.jniEnv->GetStringLength(jstr)); aenv.jniEnv->ReleaseStringChars(jstr, pstr); diff --git a/src/plugins/sensors/ios/iosaccelerometer.mm b/src/plugins/sensors/ios/iosaccelerometer.mm index 5f9c0f1..ef21546 100644 --- a/src/plugins/sensors/ios/iosaccelerometer.mm +++ b/src/plugins/sensors/ios/iosaccelerometer.mm @@ -77,6 +77,9 @@ void IOSAccelerometer::timerEvent(QTimerEvent *) // Convert from NSTimeInterval to microseconds and G to m/s2, and flip axes: CMAccelerometerData *data = m_motionManager.accelerometerData; CMAcceleration acc = data.acceleration; + // skip update if NaN + if (acc.x != acc.x || acc.y != acc.y || acc.z != acc.z) + return; static const qreal G = 9.8066; m_reading.setTimestamp(quint64(data.timestamp * 1e6)); m_reading.setX(qreal(acc.x) * G * -1); diff --git a/src/plugins/sensors/ios/iosgyroscope.mm b/src/plugins/sensors/ios/iosgyroscope.mm index 8dfa3a4..751786e 100644 --- a/src/plugins/sensors/ios/iosgyroscope.mm +++ b/src/plugins/sensors/ios/iosgyroscope.mm @@ -75,6 +75,9 @@ void IOSGyroscope::timerEvent(QTimerEvent *) // Convert NSTimeInterval to microseconds and radians to degrees: CMGyroData *data = m_motionManager.gyroData; CMRotationRate rate = data.rotationRate; + // skip update if NaN + if (rate.x != rate.x || rate.y != rate.y || rate.z != rate.z) + return; m_reading.setTimestamp(quint64(data.timestamp * 1e6)); m_reading.setX((qreal(rate.x) / M_PI) * 180); m_reading.setY((qreal(rate.y) / M_PI) * 180); diff --git a/src/plugins/sensors/ios/iosmagnetometer.mm b/src/plugins/sensors/ios/iosmagnetometer.mm index 95f85ae..3cd8b10 100644 --- a/src/plugins/sensors/ios/iosmagnetometer.mm +++ b/src/plugins/sensors/ios/iosmagnetometer.mm @@ -91,6 +91,9 @@ void IOSMagnetometer::timerEvent(QTimerEvent *) CMDeviceMotion *deviceMotion = m_motionManager.deviceMotion; CMCalibratedMagneticField calibratedField = deviceMotion.magneticField; field = calibratedField.field; + // skip update if NaN + if (field.x != field.x || field.y != field.y || field.z != field.z) + return; m_reading.setTimestamp(quint64(deviceMotion.timestamp * 1e6)); switch (calibratedField.accuracy) { @@ -110,6 +113,9 @@ void IOSMagnetometer::timerEvent(QTimerEvent *) } else { CMMagnetometerData *data = m_motionManager.magnetometerData; field = data.magneticField; + // skip update if NaN + if (field.x != field.x || field.y != field.y || field.z != field.z) + return; m_reading.setTimestamp(quint64(data.timestamp * 1e6)); m_reading.setCalibrationLevel(1.0); } |