Hi I was wondering if it's possible to receive NMEA data from a Garmin GDL 39 on an Android device (preferred over Bluetooth) as I can't find any information out there on it.
Well, I think there's a way. Fair warning, it also looks like a fair bit of work, and I haven't tried any of this. Plus, you run the risk that the GDL 39 is going to refuse to connect or do something really weird or otherwise break/invalidate user agreements/warranty.
The user manual for the GDL 39 shows that the GDL 39 has Bluetooth, and this website purports to know the communication protocol and handshake sequence, with code for getting it to work written in Perl. Getting that to work in an Android application shouldn't be impossible, but I haven't looked at it thoroughly and I'm not enough of an Android expert to tell you if it would work off-hand.
You could also go over serial as an option to get NMEA data, which I investigated before I found the website above. I think the Bluetooth option is better, but here's the physical method since I already wrote it up.
You will need a cable like the one here to connect to the GDL over serial. From there, you'll also need a device to take the serial data and get it into the android app over Bluetooth. Here are a few options:
An Arduino or other micro-controller to handle the serial connection to the GDL 39, and then re-broadcast the NMEA data over a Bluetooth connection.
A ioio (pronounced "yo-yo"). Allows you to control a micro-controller with an android application over Bluetooth or via USB. I've used one before, and it's pretty easy to get running, but is a little old. Support still exists for it though.
Your next problem is to actually communicate with the GDL 39 over serial, which will be more complicated. The GDL 39 appears to have a proprietary handshake protocol over serial, which in theory, should prevent you from using a non-Garmin device to get any data over serial. However, in practice, it may not be hopeless.
This website describes the handshake protocol to negotiate a connection over serial, and data from the GDL 39. I haven't tried to do this, but it looks like it might work. If you can get that to you work, it seems like you'll get a stream of NMEA data, and then you could send it over Bluetooth to an Android application.