Regarding your magnetic sensor app:
Your documentation lists the unit-of-measure as “nanoteslas”, which would be 10^-9 teslas. Shouldn’t it be in “microteslas”, which would be 10^-6 teslas? Wikipedia says that the earth’s magnetic field is about 25 to 65 microteslas, your app is reading approximately that value, if it were in microteslas, instead of nanoteslas. Also, @Sander0542’s “Phone Sense” app has uT (microteslas) as the unit-of-measure.