fix example 'wear-os'

This commit is contained in:
pls.153 2022-05-10 11:55:59 +02:00
parent 2ca4a306a9
commit 5f8e81dfb6
4 changed files with 77 additions and 0 deletions

View file

@ -6,6 +6,8 @@
#include <QtAndroid> #include <QtAndroid>
#include <QAndroidJniEnvironment> #include <QAndroidJniEnvironment>
QT_BEGIN_NAMESPACE
static int getIntField(const char* name) { static int getIntField(const char* name) {
QAndroidJniObject activity = QtAndroid::androidActivity(); QAndroidJniObject activity = QtAndroid::androidActivity();
return static_cast<int>(activity.getField<jint>(name)); return static_cast<int>(activity.getField<jint>(name));
@ -44,3 +46,5 @@ QVariant QT::heartRate() {
QVariant QT::heartRateAccuracy() { QVariant QT::heartRateAccuracy() {
return getIntField("_heart_rate_accuracy_"); return getIntField("_heart_rate_accuracy_");
} }
QT_END_NAMESPACE

View file

@ -0,0 +1,62 @@
diff --git a/QtActivity.java b/examples/wear-os/qt-sensor-hack/QtActivity.java
index 9d8c46f..c068042 100644
--- a/QtActivity.java
+++ b/examples/wear-os/qt-sensor-hack/QtActivity.java
@@ -62,8 +62,56 @@ import android.view.accessibility.AccessibilityEvent;
import org.qtproject.qt5.android.QtNative;
-public class QtActivity extends Activity
+// for hack
+import android.hardware.Sensor;
+import android.hardware.SensorEvent;
+import android.hardware.SensorEventListener;
+import android.hardware.SensorManager;
+import android.util.Log;
+
+//public class QtActivity extends Activity
+public class QtActivity extends Activity implements SensorEventListener
{
+ // hack
+ public int _heart_rate_ = 0;
+ public int _heart_rate_accuracy_ = 0;
+ private static final String LQML = "[LQML]";
+
+ // hack
+ public void iniSensors()
+ {
+ try {
+ //Log.d(LQML, "ini heart rate sensor...");
+ SensorManager mSensorManager = (SensorManager)getSystemService(SENSOR_SERVICE);
+ Sensor mHeartRateSensor = mSensorManager.getDefaultSensor(Sensor.TYPE_HEART_RATE);
+ mSensorManager.registerListener(this, mHeartRateSensor, SensorManager.SENSOR_DELAY_NORMAL);
+ //Log.d(LQML, "ini heart rate sensor OK");
+ }
+ catch (Exception e) {
+ //Log.e(LQML, Log.getStackTraceString(e));
+ }
+ }
+
+ // hack
+ @Override
+ public void onAccuracyChanged(Sensor sensor, int accuracy)
+ {
+ if (sensor.getType() == Sensor.TYPE_HEART_RATE) {
+ _heart_rate_accuracy_ = accuracy;
+ //Log.d(LQML, "BPM accuracy: " + _heart_rate_accuracy_);
+ }
+ }
+
+ // hack
+ @Override
+ public void onSensorChanged(SensorEvent event)
+ {
+ if (event.sensor.getType() == Sensor.TYPE_HEART_RATE) {
+ _heart_rate_ = Math.round(event.values[0]);
+ //Log.d(LQML, "BPM: " + _heart_rate_);
+ }
+ }
+
public String APPLICATION_PARAMETERS = null; // use this variable to pass any parameters to your application,
// the parameters must not contain any white spaces
// and must be separated with "\t"

View file

@ -0,0 +1 @@
~/Qt/5.15.2/android/src/android/java/src/org/qtproject/qt5/android/bindings/

View file

@ -0,0 +1,10 @@
HowTo
-----
Hack to add not yet officially supported sensors to Qt:
Just copy `QtActivity.java` to path in `path.txt` (for Qt 5.15);
alternatively apply patch `git.diff`.
See also [cpp/qt.cpp](../cpp/qt.cpp).