Kenwood NMEA: do not crash app on API<r5

usb
Georg Lukas 2015-02-16 13:40:03 +01:00
rodzic d80055188f
commit c102c924aa
1 zmienionych plików z 10 dodań i 5 usunięć

Wyświetl plik

@ -6,20 +6,24 @@ import _root_.android.util.Log
import _root_.java.io.{InputStream, OutputStream, OutputStreamWriter, PrintWriter}
class KenwoodTnc(service : AprsService, prefs : PrefsWrapper) extends BluetoothTnc(service, prefs)
with GpsStatus.NmeaListener {
class KenwoodTnc(service : AprsService, prefs : PrefsWrapper) extends BluetoothTnc(service, prefs) {
override val TAG = "APRSdroid.KenwoodTnc"
val locMan = service.getSystemService(Context.LOCATION_SERVICE).asInstanceOf[LocationManager]
var output : OutputStreamWriter = null
locMan.addNmeaListener(this)
var listener : NmeaListener = null
if (android.os.Build.VERSION.SDK_INT >= 5) {
listener = new NmeaListener()
locMan.addNmeaListener(listener)
}
override def createTncProto(is : InputStream, os : OutputStream) = {
output = new OutputStreamWriter(os)
new KenwoodProto(is)
}
class NmeaListener extends GpsStatus.NmeaListener() {
def onNmeaReceived(timestamp : Long, nmea : String) {
if (output != null && (nmea.startsWith("$GPGGA") || nmea.startsWith("$GPRMC"))) {
Log.d(TAG, "NMEA >>> " + nmea)
@ -32,10 +36,11 @@ class KenwoodTnc(service : AprsService, prefs : PrefsWrapper) extends BluetoothT
}
} else
Log.d(TAG, "NMEA --- " + nmea)
}
}}
override def stop() {
locMan.removeNmeaListener(this)
if (android.os.Build.VERSION.SDK_INT >= 5)
locMan.removeNmeaListener(listener)
super.stop()
}
}