maddevsio / mad-location-manager

Mad Location Manager is a library for GPS and Accelerometer data "fusion" with Kalman filter
MIT License
533 stars 154 forks source link

Fix NoSuchMethodError on API < 30 #112

Closed Svechnikov closed 2 years ago

Svechnikov commented 2 years ago

LocationManager.registerGnssStatusCallback method is only available on API 30 and later.

If not fixed, there will be a crash on service start:

 Caused by: java.lang.NoSuchMethodError: No virtual method registerGnssStatusCallback(Ljava/util/concurrent/Executor;Landroid/location/GnssStatus$Callback;)Z in class Landroid/location/LocationManager; or its super classes (declaration of 'android.location.LocationManager' appears in /system/framework/framework.jar)
    at mad.location.manager.lib.locationProviders.GPSLocationProvider.startLocationUpdates(GPSLocationProvider.java:104)
    at mad.location.manager.lib.Services.KalmanLocationService.start(KalmanLocationService.java:423)
    at com.example.lezh1k.sensordatacollector.MainActivity.lambda$set_isLogging$0$MainActivity(MainActivity.java:229)
    at com.example.lezh1k.sensordatacollector.-$$Lambda$MainActivity$xUfrdjyKquT9zz-rkrO7mpaulHY.onCall(Unknown Source:6)
    at mad.location.manager.lib.Services.ServicesHelper.getLocationService(ServicesHelper.java:95)
    at com.example.lezh1k.sensordatacollector.MainActivity.set_isLogging(MainActivity.java:205)
    at com.example.lezh1k.sensordatacollector.MainActivity.btnStartStop_click(MainActivity.java:278)
pavelrukin commented 2 years ago

Hello. I have the same problem. GpsStatus APIs not supported, please use GnssStatus APIs instead I'm update implementation to **implementation 'com.github.maddevsio:mad-location-manager:37bfc7ca8f'** Did you find how to fix it?