SLProject  4.3.020
A platform independent 3D computer graphics framework for desktop OS, Android, iOS and online in web browsers
SENSAndroidGps.cpp
Go to the documentation of this file.
1 #include "SENSAndroidGps.h"
2 #include <jni.h>
3 #include <assert.h>
4 #include <Utils.h>
5 
6 static SENSAndroidGps* gGpsPtr = nullptr;
8 {
9  if (gGpsPtr == nullptr)
10  Utils::log("SENSAndroidGps", "Global gps pointer has not been initialized");
11  return gGpsPtr;
12 }
13 
15 {
16  if (!_permissionGranted)
17  return false;
18  _running = true;
19  return true;
20 }
21 
23 {
24  if (!_running)
25  return;
26  _running = false;
27 }
28 
29 void SENSAndroidGps::updateLocation(double latitudeDEG,
30  double longitudeDEG,
31  double altitudeM,
32  float accuracyM)
33 {
34  Utils::log("SENSGps", "updateLocation");
35  setLocation({latitudeDEG, longitudeDEG, altitudeM, accuracyM});
36 }
37 
38 extern "C" JNIEXPORT void JNICALL
40  jclass obj,
41  jdouble latitudeDEG,
42  jdouble longitudeDEG,
43  jdouble altitudeM,
44  jfloat accuracyM)
45 {
46  Utils::log("SENSGps", "onLocationLLA");
47  GetGpsPtr()->updateLocation(latitudeDEG, longitudeDEG, altitudeM, accuracyM);
48 }
static SENSAndroidGps * gGpsPtr
SENSAndroidGps * GetGpsPtr()
JNIEXPORT void JNICALL Java_ch_cpvr_wai_SENSGps_onLocationLLA(JNIEnv *env, jclass obj, jdouble latitudeDEG, jdouble longitudeDEG, jdouble altitudeM, jfloat accuracyM)
void updateLocation(double latitudeDEG, double longitudeDEG, double altitudeM, float accuracyM)
void stop() override
bool start() override
bool _running
Definition: SENSGps.h:46
void setLocation(SENSGps::Location location)
Definition: SENSGps.cpp:11
std::atomic_bool _permissionGranted
Definition: SENSGps.h:47
void log(const char *tag, const char *format,...)
logs a formatted string platform independently
Definition: Utils.cpp:1100