ionic-team / capacitor-plugins

Official plugins for Capacitor โšก๏ธ
532 stars 597 forks source link

[Geolocation / Android] The GPS position is only updated every 5 seconds when using "watchPosition" function on Android #2062

Open carelliguillaume opened 8 months ago

carelliguillaume commented 8 months ago

Bug Report

Plugin(s)

Geolocation

Capacitor Version

๐Ÿ’Š Capacitor Doctor ๐Ÿ’Š

Latest Dependencies:

@capacitor/cli: 5.7.3 @capacitor/core: 5.7.3 @capacitor/android: 5.7.3 @capacitor/ios: 5.7.3

Installed Dependencies:

@capacitor/cli: 5.5.1 @capacitor/core: 5.5.1 @capacitor/android: 5.5.1 @capacitor/ios: 5.5.1

[success] iOS looking great! ๐Ÿ‘Œ [success] Android looking great! ๐Ÿ‘Œ

Platform(s)

Android

Current Behavior

When you use "watchPosition" function of the Geolocation Plugin on Android, the GPS position is only updated every 5 seconds which is not sufficient for position tracking. The refresh on Android is jerky compared to iOS which is much smoother. Moreover, its hardcoded in the following class when calling method setMinUpdateIntervalMillis : https://github.com/ionic-team/capacitor-plugins/blob/main/geolocation/android/src/main/java/com/capacitorjs/plugins/geolocation/Geolocation.java

  LocationRequest locationRequest = new LocationRequest.Builder(10000)
      .setMaxUpdateDelayMillis(timeout)
      .setMinUpdateIntervalMillis(5000)
      .setPriority(priority)
      .build();

Expected Behavior

We should be able to configure the setMinUpdateIntervalMillis to have more accurate position tracking on Android. We should have a parameter like the "timeout" parameter used in the setMaxUpdateDelayMillis call. At least we should be able to remove the setMinUpdateIntervalMillis call to let Android manage the refreshing automatically like iOS Geolocation Plugin.

Code Reproduction

Just call the "watchPosition" of the Geolocation Plugin on Android

ionitron-bot[bot] commented 7 months ago

This issue has been labeled as type: bug. This label is added to issues that that have been reproduced and are being tracked in our internal issue tracker.