summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--dist/changes-5.3.067
-rw-r--r--examples/sensors/accelbubble/Info.plist35
-rw-r--r--examples/sensors/accelbubble/accelbubble.pro7
-rw-r--r--examples/sensors/accelbubble/accelbubble.qml3
-rw-r--r--examples/sensors/grue/import/import.pro2
-rw-r--r--examples/sensors/sensor_explorer/import/import.pro2
-rw-r--r--src/plugins/sensors/android/jar/src/org/qtproject/qt5/android/sensors/QtSensors.java3
-rw-r--r--src/plugins/sensors/android/src/androidaccelerometer.cpp3
-rw-r--r--src/plugins/sensors/android/src/androidjnisensors.cpp2
-rw-r--r--src/plugins/sensors/ios/iosaccelerometer.mm3
-rw-r--r--src/plugins/sensors/ios/iosgyroscope.mm3
-rw-r--r--src/plugins/sensors/ios/iosmagnetometer.mm6
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);
}