A bit of backstory.
I work at a company doing SaaS project management for utility companies. We have an app, which is used for QA form submission and much more. I am a full stack developer, including the Android app.
In the fall of 2023 we decided to start a project to integrate RTK hardware into our app.
We bought a Reach RX and integrated it into our software.
We weren’t completely happy with the result. The biggest pain-points were the missing tilt compensation, the unreliability of Emlid Flow (more about this below) and having users (many which are not tech savy) using two apps at the same time.
We ended up returning the RX and getting a RS3 instead, which have resulted in a much better user experience.
Fastforward to now. One of our bigger customers have bought a few Reach RX for a different project and therefore we would like to support it again.
I have tried the following solutions:
“Emlid Flow” for NTRIP only. Our app consumes the NMEA stream over bluetooth.
Our original solution and it works, but Emlid Flow looses connection to the RX at random intervals.
Not sure if the app is killed by OS or BT connection is interrupted and not autoreconnected.
No noticeable improvements by setting the Emlid Flow battery config to “unrestricted”.
I know the connection isn’t properly implemented as an Android “Foreground Service”, as theres no status bar notification associated.
This should be the correct implemention to avoid a lot of OS battery optimizations.
We contacted Emlid through their distributor and they told us it was a known problem and they were working on a solution.
Here, more than half a year later, not much have improved.
“Lefebure NTRIP Client” for NTRIP only. Our app consumes the NMEA stream over bluetooth.
This doesn’t work as Lefebure will comsume the NMEA stream as well, blocking our app.
Is there any way to hook into a secondary connection? Like the service connection Emlid Flow uses.
“Lefebure NTRIP Client” for NTRIP and mock locations
This semi-works. The refresh interval is quite slow, but most importantly the horizontal accuracy is stuck at 3.9 meters.
I found other forum threads with the same “3.9” problem, but no solutions.
This seems to be a Lefebure problem, as I tried the same with “GNSS Master” app, which correctly provided horizontal accuracy.
The problem with “GNSS Master” was that I couldn’t get the NTRIP to work.
Given the staleness (very rare updates and ancient website) of the Lefebure app I don’t have much confidence in it being fixed.
I have tested all above on both a Pixel 7 (Android 14) and Samsung Active Tab 3 (Android 13).
I am a bit stuck. The best working solution was with Emlid Flow, but the unreliability was a big annoyance.
We are also planning to soon implement RTK capabilities in our iOS app.
Therefore a shared solution, NOT using mock locations, is preferred, as those are not supported by iOS.
Anyone got any suggestions?