位于背景中的插件应用程序phonegap cordova for android

时间:2017-06-21 19:47:30

标签: android cordova background geolocation phonegap

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

我在Android平台中拥有以下权限,除了我在清单中的活动代码中添加了属性之外,还有Android平台。

<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 ">

如果有人可以给我一个帮助,我会很感激,或者如果你需要在清单或其他东西中添加一些其他财产,非常感谢。

1 个答案:

答案 0 :(得分:0)

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

backgroundGeolocation.configure(callbackFn, failureFn, { desiredAccuracy: 10, // for accuracy stationaryRadius: 20, distanceFilter: 30, // minimum distance threshold
interval: 60000 });

这节省了大量电池,并且还可以在间隔和距离的基础上工作。 仅在设备穿过某个距离和/或在指定时间内采样。 当应用程序进入后台时,这将有效。 谢谢,快乐的编码:)