Android NMEA(National Marine Electronics Association)

NMEA (National Marine Electronics Association)

Wikipedia defines NMEA like this:

NMEA 0183 is a combined electrical and data specification for communication between marine electronics such as echo sounder, sonars, anemometer, gyrocompass, autopilot, GPS receivers and many other types of instruments. It has been defined by, and is controlled by, the National Marine Electronics Association.”

Android Developer Point of view:-
NMEA is not difficult to parse. There are different NMEA sentences contain different segment of information. List of NMEA Sentences shown as below. For location information, the sentence you have to be about is the “recommended minimum” $GPRMC.

NMEA Sentences
$GPBOD – Bearing, origin to destination
$GPBWC – Bearing and distance to waypoint, great circle
$GPGGA – Global Positioning System Fix Data
$GPGLL – Geographic position, latitude / longitude
$GPGSA – GPS DOP and active satellites
$GPGSV – GPS Satellites in view
$GPHDT – Heading, True
$GPR00 – List of waypoints in currently active route
$GPRMA – Recommended minimum specific Loran-C data
$GPRMB – Recommended minimum navigation info
$GPRMC – Recommended minimum specific GPS/Transit data
$GPRTE – Routes
$GPTRF – Transit Fix Data
$GPSTN – Multiple Data ID
$GPVBW – Dual Ground / Water Speed
$GPVTG – Track made good and ground speed
$GPWPL – Waypoint location
$GPXTE – Cross-track error, Measured
$GPZDA – Date & Time

You can read more about NMEA sentences at:-
$GPRMC(Recommended minimum specific GPS data ):-

1 2 3 4 5 6 7 8 9 10 11

1 220516 Time Stamp
2 A / V validity – A-ok, V-invalid
3 5133.82 current Latitude
4 N/S North/South
5 00042.24 current Longitude
6 E/W East/West
7 173.8 Speed in knots
8 231.8 True course
9 130694 Date Stamp
10 004.2 Variation
11 *70 Checksum
Now something technical for android developers:-
How to use NMEA sentences in your application:-

1) Implement LocationListener, NmeaListener in your Activity
2) Add code in you project


LocationManager locationmanager;

locationManager = (LocationManager)getSystemService(LOCATION_SERVICE);
locationManager.addNmeaListener(new NmeaListener() {
public void onNmeaReceived(long timestamp, String nmea) {
Log.d(TAG,”Nmea Received :”);
Log.d(TAG,”Timestamp is :” +timestamp+” nmea is :”+nmea);

3) Add these permissions in your Manifest file:-


<uses-permission android:name=”android.permission.ACCESS_FINE_LOCATION”></uses permission>
<uses-permission android:name=”android.permission.ACCESS_COARSE_LOCATION”></uses-permission>

how can we help you?

Contact us at the Consulting office nearest to you or submit a business inquiry online.

see our gallery

Looking for a First-Class Business Plan Consultant?