android 的 App phonegap cordova 插件在后台的位置

Location in Background With Plugin in App phonegap cordova for android

好社区,我目前使用https://www.npmjs.com/package/cordova-plugin-gpslocation插件在应用程序处于前台和后台时对设备进行地理定位,在后台时我使用OnPause方法并执行A setInterval来执行该方法插件的每X次获取坐标(GetCurrentPosition)。我的问题是,当屏幕打开时它工作正常并且位置图标出现在通知栏中但是当屏幕关闭时它似乎停止工作并且只在我打开屏幕时重新捕获坐标。

我在 Android 平台的 Android 清单中拥有以下权限,此外我还在 activity 标签中添加了 属性清单。

<Uses-permission android: name = "android.permission.ACCESS_FINE_LOCATION" />
<Uses-permission android: name = "android.permission.ACCESS_COARSE_LOCATION" />
<Uses-permission android: name = "android.permission.AUTHENTICATE_ACCOUNTS" />
<Uses-permission android: name = "android.permission.GET_ACCOUNTS" />
<Uses-permission android: name = "android.permission.READ_SYNC_SETTINGS" />
<Uses-permission android: name = "android.permission.WRITE_SYNC_SETTINGS" />
<Uses-permission android: name = "android.permission.RECEIVE_BOOT_COMPLETED" />
<Uses-permission android: name ="com.google.android.gms.permission.ACTIVITY_RECOGNITION" />
    <Uses-permission android: name = "android.permission.ACCESS_NETWORK_STATE" />
    <Uses-permission android: name = "android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" />
    <Uses-permission android: name = "android.permission.WAKE_LOCK" />
    <Uses-permission android: name = "android.hardware.location" />

 <Activity <span style = "text-decoration: underline;"> android: alwaysRetainTaskState = "true" android: configChanges = "orientation | keyboardHidden | keyboard | screenSize | locale" android: label = "@ string / activity_name "Android: launchMode =" singleTop "android: name =" MainActivity "android: theme =" @ android: style / Theme.DeviceDefault.NoActionBar "android: windowSoftInputMode =" adjustResize ">

如果有人能给我帮助,我将不胜感激,或者如果您需要在清单中添加其他 属性 或其他内容,非常感谢。

该插件似乎只适用于活动状态。只有具有后台跟踪功能的插件才能像您期望的那样工作.. 有很多这样的插件, 让我给你我正在使用的那个 https://www.npmjs.com/package/cordova-plugin-mauron85-background-geolocation

backgroundGeolocation.configure(callbackFn, failureFn, { desiredAccuracy: 10, // 准确度 固定半径:20, distanceFilter: 30, // 最小距离阈值<br> 间隔:60000 });

这可以节省大量电池,而且还可以在间隔和距离的基础上工作。 仅当设备在指定时间跨越一段距离 and/or 时才进行采样。 当应用程序在后台运行时,这将起作用.. 谢谢,编码愉快 :)