NMEA extension. Get location. Beta. Testing

Hello friends,

I am building an extension (now Beta) to obtain the longitude and latitude of a location, using the data obtained from NMEA.

I have built two applications, one using the Kodular LocationSensor component
and another using my extension to get the NMEA data ($GNGGA and $GPGGA)

Applications are for drawing a route on Google maps.

Can you use the two applications and check which of the two you get two more exact location data?

1.- App with Kodular LocationSensor and Google Map.
p185D_nmea_Map_GoogleLS.aia (13.6 KB)
p185D_nmea_Map_GoogleLS.apk (5.4 MB)

2.- App with NMEA Extension and Google Map.
(Works: Android 5.1, Android 9)
(Doesn’t work: Android 7)
p185D_nmea_Map_Google.aia (15.5 KB)
p185D_nmea_Map_Google.apk (5.4 MB)

known errors: StopLocation does not work properly.



The App with NMEA Extension crashes when I press start. This happens in companion and also in installed test. It first shows the satellite view and then it crashes. The standard Kodular version works well on my phone, companion and installed test.
Samsung A3 2016 Android 7.01


Thanks Django for trying the extension.
I have built a new version, can you try it?

p185D_nmea_Map_GoogleV2.aia (17.5 KB)
p185D_nmea_Map_GoogleV2.apk (5.4 MB)

1 Like

This one is perfectly working. But why three dot.i didn’t understand what is the purpose of this button

The GPS of the mobiles have an accuracy of about 3 m, each time they pick up a signal can come with different data.

The information captured by this extension is in NMEA format, within that information we can obtain data sent by different groups of satellites.


If the information begins with GP they are American satellites, GL (Glonass Russian satellites), GA (Galileo, European satellites), GN set of several satellites, for example GP + GL.


I have put GPGGA to check if it can receive only that group of satellites.

This extension is based on the Class:
Used for receiving NMEA sentences from the GNSS.

Where is this option

My extension does not draw the route, it gets longitude and latitude. The route is drawn by the application code using Google Maps.

1 Like

We can get longitude and latitude by your previous extention so why you creating this extention

Please take you a little time and read this whole thread again. Maybe you will get the idea why your last 2 questions are completly useless.
You may also use the translation button .

I wanted to check if you can get more accuracy in the location of the device by GPS than using the SensorLocation component of MIT App Inventor and Kodular.
I built the extension KIO4_LocationSensor.aix, which I could get:
Latitude, Longitude, Altitude, Speed ​​(m / s), bearing, bearingTo, distanceTo, getTime and convert.
bearingTo and distanceTo refers to the Properties: LatitudeTo and LongitudeTo
adminArea, countryCode, countryName, feature, locality, phone, postalCode, premises, subAdmin, subLocality, subThoroughfare, thoroughfare, url
declination, fieldStrength, horizontalStrength, inclination, x, y, z
all in the same extension, as we can see in:

Create Build Crear App Inventor Extensiones Extensions. Sensor de localización. Geo localización. Campo magnético. (here in Spanish)

I noticed that the accuracy is similar to that of the SensorLocation component, so I tried to obtain the location data through NMEA, for that I used the class:
GpsStatus.NmeaListener  |  Android Developers, was deprecated in API level 24.
Then I used the new class:
OnNmeaMessageListener  |  Android Developers

With this class we can obtain the Nmea data, the longitude and latitude data are similar to that of the LocationSensor component, but we can obtain other data such as number of satellites, hdop, geoidal, magnetic var., Course mg, therefore they are two different extensions .

1 Like