#ifndef GPSSENSORANDROID_H #define GPSSENSORANDROID_H #ifdef ANDROID #include #include "../GPSSensor.h" #include class GPSSensorAndroid : public GPSSensor { private: QGeoPositionInfoSource* source; /** hidden ctor. use singleton */ GPSSensorAndroid() { source = QGeoPositionInfoSource::createDefaultSource(nullptr); return; } bool started = false; public: /** singleton access */ static GPSSensorAndroid& get() { static GPSSensorAndroid gps; return gps; } void start() override { if (started) {return;} started = true; auto onPositionData = [&] (const QGeoPositionInfo& update) { GPSData data( //Timestamp::ms(update.timestamp().toMSecsSinceEpoch()), Timestamp::fromRunningTime(), update.coordinate().latitude(), update.coordinate().longitude(), update.coordinate().altitude() ); informListeners(data); }; if (source) { source->connect(source, &QGeoPositionInfoSource::positionUpdated, onPositionData); source->startUpdates(); } } bool isRunning() const override { return started; } void stop() override { throw "TODO"; } }; #endif // ANDROID #endif // GPSSENSORANDROID_H