#ifndef GYROSCOPESENSORANDROID_H #define GYROSCOPESENSORANDROID_H #ifdef ANDROID #include #include "../GyroscopeSensor.h" #include #include "../AccelerometerSensor.h" class GyroscopeSensorAndroid : public GyroscopeSensor { private: QGyroscope gyro; /** hidden ctor. use singleton */ GyroscopeSensorAndroid() { ; } bool started = false; public: /** singleton access */ static GyroscopeSensorAndroid& get() { static GyroscopeSensorAndroid gyro; return gyro; } float degToRad(const float deg) { return deg / 180.0f * M_PI; } void start() override { if (started) {return;} started = true; auto onSensorData = [&] () { GyroscopeData data(degToRad(gyro.reading()->x()), degToRad(gyro.reading()->y()), degToRad(gyro.reading()->z())); informListeners(data); // const Timestamp now = Timestamp::fromRunningTime(); // Log::add("123", "ts:" + std::to_string(now.ms())); }; // gyroscope is usually not as fast as the acceleromter -> limiting not needed //gyro.setDataRate(200); gyro.connect(&gyro, &QGyroscope::readingChanged, onSensorData); gyro.start(); } bool isRunning() const override { return started; } void stop() override { throw "TODO"; } }; #endif // ANDROID #endif // GYROSCOPESENSORANDROID_H