@josuelmm/cordova-background-geolocation 2.3.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (239) hide show
  1. package/.npmignore +23 -0
  2. package/CHANGELOG.md +787 -0
  3. package/CONTRIBUTORS.md +15 -0
  4. package/HISTORY.md +734 -0
  5. package/LICENSE +191 -0
  6. package/README.md +125 -0
  7. package/RELEASE.MD +5 -0
  8. package/android/CDVBackgroundGeolocation/src/main/AndroidManifest.xml +23 -0
  9. package/android/CDVBackgroundGeolocation/src/main/java/com/evgenii/jsevaluator/HandlerWrapper.java +18 -0
  10. package/android/CDVBackgroundGeolocation/src/main/java/com/evgenii/jsevaluator/JavaScriptInterface.java +22 -0
  11. package/android/CDVBackgroundGeolocation/src/main/java/com/evgenii/jsevaluator/JsEvaluator.java +133 -0
  12. package/android/CDVBackgroundGeolocation/src/main/java/com/evgenii/jsevaluator/JsFunctionCallFormatter.java +37 -0
  13. package/android/CDVBackgroundGeolocation/src/main/java/com/evgenii/jsevaluator/WebViewWrapper.java +71 -0
  14. package/android/CDVBackgroundGeolocation/src/main/java/com/evgenii/jsevaluator/interfaces/CallJavaResultInterface.java +8 -0
  15. package/android/CDVBackgroundGeolocation/src/main/java/com/evgenii/jsevaluator/interfaces/HandlerWrapperInterface.java +5 -0
  16. package/android/CDVBackgroundGeolocation/src/main/java/com/evgenii/jsevaluator/interfaces/JsCallback.java +10 -0
  17. package/android/CDVBackgroundGeolocation/src/main/java/com/evgenii/jsevaluator/interfaces/JsEvaluatorInterface.java +18 -0
  18. package/android/CDVBackgroundGeolocation/src/main/java/com/evgenii/jsevaluator/interfaces/WebViewWrapperInterface.java +14 -0
  19. package/android/CDVBackgroundGeolocation/src/main/java/com/marianhello/bgloc/cordova/ConfigMapper.java +148 -0
  20. package/android/CDVBackgroundGeolocation/src/main/java/com/marianhello/bgloc/cordova/PluginRegistry.java +25 -0
  21. package/android/CDVBackgroundGeolocation/src/main/java/com/marianhello/bgloc/cordova/headless/JsEvaluatorTaskRunner.java +53 -0
  22. package/android/CDVBackgroundGeolocation/src/main/java/com/tenforwardconsulting/bgloc/cordova/BackgroundGeolocationPlugin.java +603 -0
  23. package/android/CDVBackgroundGeolocation/src/main/res/values/strings.xml +4 -0
  24. package/android/CDVBackgroundGeolocation/src/test/java/com/marianhello/ConfigMapperTest.java +208 -0
  25. package/android/common/src/androidTest/java/com/marianhello/bgloc/BackgroundGeolocationFacadeTest.java +45 -0
  26. package/android/common/src/androidTest/java/com/marianhello/bgloc/BatchManagerTest.java +570 -0
  27. package/android/common/src/androidTest/java/com/marianhello/bgloc/ConfigTest.java +76 -0
  28. package/android/common/src/androidTest/java/com/marianhello/bgloc/ContentProviderLocationDAOTest.java +437 -0
  29. package/android/common/src/androidTest/java/com/marianhello/bgloc/DBLogReaderTest.java +95 -0
  30. package/android/common/src/androidTest/java/com/marianhello/bgloc/LocationContentProviderTest.java +159 -0
  31. package/android/common/src/androidTest/java/com/marianhello/bgloc/LocationServiceProxyTest.java +161 -0
  32. package/android/common/src/androidTest/java/com/marianhello/bgloc/LocationServiceTest.java +247 -0
  33. package/android/common/src/androidTest/java/com/marianhello/bgloc/SQLiteConfigurationDAOTest.java +200 -0
  34. package/android/common/src/androidTest/java/com/marianhello/bgloc/SQLiteLocationDAOTest.java +457 -0
  35. package/android/common/src/androidTest/java/com/marianhello/bgloc/SQLiteLocationDAOThreadTest.java +96 -0
  36. package/android/common/src/androidTest/java/com/marianhello/bgloc/SQLiteOpenHelperTest.java +225 -0
  37. package/android/common/src/androidTest/java/com/marianhello/bgloc/TestPluginDelegate.java +46 -0
  38. package/android/common/src/androidTest/java/com/marianhello/bgloc/TestResourceResolver.java +14 -0
  39. package/android/common/src/androidTest/java/com/marianhello/bgloc/provider/MockLocationProvider.java +50 -0
  40. package/android/common/src/androidTest/java/com/marianhello/bgloc/provider/TestLocationProviderFactory.java +17 -0
  41. package/android/common/src/androidTest/java/com/marianhello/bgloc/sqlite/SQLiteOpenHelper10.java +92 -0
  42. package/android/common/src/androidTest/java/com/marianhello/bgloc/test/LocationProviderTestCase.java +107 -0
  43. package/android/common/src/androidTest/java/com/marianhello/bgloc/test/TestConstants.java +5 -0
  44. package/android/common/src/main/AndroidManifest.xml +72 -0
  45. package/android/common/src/main/java/com/marianhello/bgloc/BackgroundGeolocationFacade.java +523 -0
  46. package/android/common/src/main/java/com/marianhello/bgloc/BootCompletedReceiver.java +59 -0
  47. package/android/common/src/main/java/com/marianhello/bgloc/Config.java +652 -0
  48. package/android/common/src/main/java/com/marianhello/bgloc/ConnectivityListener.java +5 -0
  49. package/android/common/src/main/java/com/marianhello/bgloc/HttpPostService.java +224 -0
  50. package/android/common/src/main/java/com/marianhello/bgloc/LocationManager.java +138 -0
  51. package/android/common/src/main/java/com/marianhello/bgloc/PluginDelegate.java +19 -0
  52. package/android/common/src/main/java/com/marianhello/bgloc/PluginException.java +38 -0
  53. package/android/common/src/main/java/com/marianhello/bgloc/PostLocationTask.java +188 -0
  54. package/android/common/src/main/java/com/marianhello/bgloc/ResourceResolver.java +55 -0
  55. package/android/common/src/main/java/com/marianhello/bgloc/data/AbstractLocationTemplate.java +69 -0
  56. package/android/common/src/main/java/com/marianhello/bgloc/data/ArrayListLocationTemplate.java +88 -0
  57. package/android/common/src/main/java/com/marianhello/bgloc/data/BackgroundActivity.java +108 -0
  58. package/android/common/src/main/java/com/marianhello/bgloc/data/BackgroundLocation.java +994 -0
  59. package/android/common/src/main/java/com/marianhello/bgloc/data/ConfigurationDAO.java +13 -0
  60. package/android/common/src/main/java/com/marianhello/bgloc/data/DAOFactory.java +17 -0
  61. package/android/common/src/main/java/com/marianhello/bgloc/data/HashMapLocationTemplate.java +82 -0
  62. package/android/common/src/main/java/com/marianhello/bgloc/data/LocationDAO.java +22 -0
  63. package/android/common/src/main/java/com/marianhello/bgloc/data/LocationTemplate.java +12 -0
  64. package/android/common/src/main/java/com/marianhello/bgloc/data/LocationTemplateFactory.java +65 -0
  65. package/android/common/src/main/java/com/marianhello/bgloc/data/LocationTransform.java +19 -0
  66. package/android/common/src/main/java/com/marianhello/bgloc/data/provider/ContentProviderLocationDAO.java +395 -0
  67. package/android/common/src/main/java/com/marianhello/bgloc/data/provider/LocationContentProvider.java +321 -0
  68. package/android/common/src/main/java/com/marianhello/bgloc/data/sqlite/SQLiteConfigurationContract.java +76 -0
  69. package/android/common/src/main/java/com/marianhello/bgloc/data/sqlite/SQLiteConfigurationDAO.java +160 -0
  70. package/android/common/src/main/java/com/marianhello/bgloc/data/sqlite/SQLiteLocationContract.java +112 -0
  71. package/android/common/src/main/java/com/marianhello/bgloc/data/sqlite/SQLiteLocationDAO.java +506 -0
  72. package/android/common/src/main/java/com/marianhello/bgloc/data/sqlite/SQLiteOpenHelper.java +151 -0
  73. package/android/common/src/main/java/com/marianhello/bgloc/headless/AbstractTaskRunner.java +15 -0
  74. package/android/common/src/main/java/com/marianhello/bgloc/headless/ActivityTask.java +48 -0
  75. package/android/common/src/main/java/com/marianhello/bgloc/headless/JsCallback.java +10 -0
  76. package/android/common/src/main/java/com/marianhello/bgloc/headless/LocationTask.java +60 -0
  77. package/android/common/src/main/java/com/marianhello/bgloc/headless/StationaryTask.java +25 -0
  78. package/android/common/src/main/java/com/marianhello/bgloc/headless/Task.java +8 -0
  79. package/android/common/src/main/java/com/marianhello/bgloc/headless/TaskRunner.java +5 -0
  80. package/android/common/src/main/java/com/marianhello/bgloc/headless/TaskRunnerFactory.java +8 -0
  81. package/android/common/src/main/java/com/marianhello/bgloc/provider/AbstractLocationProvider.java +171 -0
  82. package/android/common/src/main/java/com/marianhello/bgloc/provider/ActivityRecognitionLocationProvider.java +282 -0
  83. package/android/common/src/main/java/com/marianhello/bgloc/provider/DistanceFilterLocationProvider.java +610 -0
  84. package/android/common/src/main/java/com/marianhello/bgloc/provider/LocationProvider.java +32 -0
  85. package/android/common/src/main/java/com/marianhello/bgloc/provider/LocationProviderFactory.java +47 -0
  86. package/android/common/src/main/java/com/marianhello/bgloc/provider/ProviderDelegate.java +12 -0
  87. package/android/common/src/main/java/com/marianhello/bgloc/provider/RawLocationProvider.java +145 -0
  88. package/android/common/src/main/java/com/marianhello/bgloc/service/LocationService.java +16 -0
  89. package/android/common/src/main/java/com/marianhello/bgloc/service/LocationServiceImpl.java +749 -0
  90. package/android/common/src/main/java/com/marianhello/bgloc/service/LocationServiceInfo.java +6 -0
  91. package/android/common/src/main/java/com/marianhello/bgloc/service/LocationServiceInfoImpl.java +41 -0
  92. package/android/common/src/main/java/com/marianhello/bgloc/service/LocationServiceIntentBuilder.java +203 -0
  93. package/android/common/src/main/java/com/marianhello/bgloc/service/LocationServiceProxy.java +130 -0
  94. package/android/common/src/main/java/com/marianhello/bgloc/sync/AccountHelper.java +39 -0
  95. package/android/common/src/main/java/com/marianhello/bgloc/sync/Authenticator.java +68 -0
  96. package/android/common/src/main/java/com/marianhello/bgloc/sync/AuthenticatorService.java +28 -0
  97. package/android/common/src/main/java/com/marianhello/bgloc/sync/BatchManager.java +278 -0
  98. package/android/common/src/main/java/com/marianhello/bgloc/sync/NotificationHelper.java +148 -0
  99. package/android/common/src/main/java/com/marianhello/bgloc/sync/SyncAdapter.java +249 -0
  100. package/android/common/src/main/java/com/marianhello/bgloc/sync/SyncService.java +68 -0
  101. package/android/common/src/main/java/com/marianhello/logging/DBLogReader.java +203 -0
  102. package/android/common/src/main/java/com/marianhello/logging/LogEntry.java +99 -0
  103. package/android/common/src/main/java/com/marianhello/logging/LoggerManager.java +70 -0
  104. package/android/common/src/main/java/com/marianhello/logging/UncaughtExceptionLogger.java +36 -0
  105. package/android/common/src/main/java/com/marianhello/utils/CloneHelper.java +22 -0
  106. package/android/common/src/main/java/com/marianhello/utils/Convert.java +56 -0
  107. package/android/common/src/main/java/com/marianhello/utils/TextUtils.java +72 -0
  108. package/android/common/src/main/java/com/marianhello/utils/ToneGenerator.java +68 -0
  109. package/android/common/src/main/java/org/apache/commons/io/Charsets.java +153 -0
  110. package/android/common/src/main/java/org/apache/commons/io/input/ReversedLinesFileReader.java +344 -0
  111. package/android/common/src/main/java/org/chromium/content/browser/ThreadUtils.java +134 -0
  112. package/android/common/src/main/java/ru/andremoniy/sqlbuilder/SqlExpression.java +398 -0
  113. package/android/common/src/main/java/ru/andremoniy/sqlbuilder/SqlSelectStatement.java +671 -0
  114. package/android/common/src/main/java/ru/andremoniy/sqlbuilder/SqlStatement.java +29 -0
  115. package/android/common/src/main/java/ru/andremoniy/utils/TextUtils.java +61 -0
  116. package/android/common/src/main/res/mipmap-hdpi/ic_launcher.png +0 -0
  117. package/android/common/src/main/res/mipmap-mdpi/ic_launcher.png +0 -0
  118. package/android/common/src/main/res/mipmap-xhdpi/ic_launcher.png +0 -0
  119. package/android/common/src/main/res/mipmap-xxhdpi/ic_launcher.png +0 -0
  120. package/android/common/src/main/res/mipmap-xxxhdpi/ic_launcher.png +0 -0
  121. package/android/common/src/main/res/values/strings.xml +4 -0
  122. package/android/common/src/main/res/xml/authenticator.xml +7 -0
  123. package/android/common/src/main/res/xml/syncadapter.xml +9 -0
  124. package/android/common/src/test/java/com/marianhello/backgroundgeolocation/ArrayListLocationTemplateTest.java +82 -0
  125. package/android/common/src/test/java/com/marianhello/backgroundgeolocation/BackgroundLocationTest.java +128 -0
  126. package/android/common/src/test/java/com/marianhello/backgroundgeolocation/ConfigTest.java +191 -0
  127. package/android/common/src/test/java/com/marianhello/backgroundgeolocation/DBLogReaderTest.java +37 -0
  128. package/android/common/src/test/java/com/marianhello/backgroundgeolocation/HashMapLocationTemplateTest.java +216 -0
  129. package/android/common/src/test/java/com/marianhello/backgroundgeolocation/HttpPostServiceTest.java +223 -0
  130. package/android/common/src/test/java/com/marianhello/backgroundgeolocation/LocationTemplateFactoryTest.java +50 -0
  131. package/android/common/src/test/java/com/marianhello/backgroundgeolocation/PostLocationTaskTest.java +180 -0
  132. package/android/common/src/test/java/com/marianhello/backgroundgeolocation/TestHelper.java +16 -0
  133. package/android/dependencies.gradle +13 -0
  134. package/ios/CDVBackgroundGeolocation/CDVBackgroundGeolocation.h +41 -0
  135. package/ios/CDVBackgroundGeolocation/CDVBackgroundGeolocation.m +526 -0
  136. package/ios/common/BackgroundGeolocation/CocoaLumberjack.h +1945 -0
  137. package/ios/common/BackgroundGeolocation/CocoaLumberjack.m +5255 -0
  138. package/ios/common/BackgroundGeolocation/FMDB.h +2357 -0
  139. package/ios/common/BackgroundGeolocation/FMDB.m +2672 -0
  140. package/ios/common/BackgroundGeolocation/FMDBLogger.h +42 -0
  141. package/ios/common/BackgroundGeolocation/FMDBLogger.m +264 -0
  142. package/ios/common/BackgroundGeolocation/INTULocationManager/INTUHeadingRequest.h +41 -0
  143. package/ios/common/BackgroundGeolocation/INTULocationManager/INTUHeadingRequest.m +68 -0
  144. package/ios/common/BackgroundGeolocation/INTULocationManager/INTULocationManager+Internal.h +33 -0
  145. package/ios/common/BackgroundGeolocation/INTULocationManager/INTULocationManager.h +178 -0
  146. package/ios/common/BackgroundGeolocation/INTULocationManager/INTULocationManager.m +1025 -0
  147. package/ios/common/BackgroundGeolocation/INTULocationManager/INTULocationRequest.h +103 -0
  148. package/ios/common/BackgroundGeolocation/INTULocationManager/INTULocationRequest.m +238 -0
  149. package/ios/common/BackgroundGeolocation/INTULocationManager/INTULocationRequestDefines.h +163 -0
  150. package/ios/common/BackgroundGeolocation/INTULocationManager/INTURequestIDGenerator.h +39 -0
  151. package/ios/common/BackgroundGeolocation/INTULocationManager/INTURequestIDGenerator.m +37 -0
  152. package/ios/common/BackgroundGeolocation/MAURAbstractLocationProvider.h +51 -0
  153. package/ios/common/BackgroundGeolocation/MAURAbstractLocationProvider.m +53 -0
  154. package/ios/common/BackgroundGeolocation/MAURActivity.h +23 -0
  155. package/ios/common/BackgroundGeolocation/MAURActivity.m +52 -0
  156. package/ios/common/BackgroundGeolocation/MAURActivityLocationProvider.h +18 -0
  157. package/ios/common/BackgroundGeolocation/MAURActivityLocationProvider.m +202 -0
  158. package/ios/common/BackgroundGeolocation/MAURBackgroundGeolocationFacade.h +60 -0
  159. package/ios/common/BackgroundGeolocation/MAURBackgroundGeolocationFacade.m +638 -0
  160. package/ios/common/BackgroundGeolocation/MAURBackgroundSync.h +34 -0
  161. package/ios/common/BackgroundGeolocation/MAURBackgroundSync.m +185 -0
  162. package/ios/common/BackgroundGeolocation/MAURBackgroundTaskManager.h +25 -0
  163. package/ios/common/BackgroundGeolocation/MAURBackgroundTaskManager.m +105 -0
  164. package/ios/common/BackgroundGeolocation/MAURConfig.h +74 -0
  165. package/ios/common/BackgroundGeolocation/MAURConfig.m +485 -0
  166. package/ios/common/BackgroundGeolocation/MAURConfigurationContract.h +49 -0
  167. package/ios/common/BackgroundGeolocation/MAURConfigurationContract.m +51 -0
  168. package/ios/common/BackgroundGeolocation/MAURDistanceFilterLocationProvider.h +20 -0
  169. package/ios/common/BackgroundGeolocation/MAURDistanceFilterLocationProvider.m +514 -0
  170. package/ios/common/BackgroundGeolocation/MAURGeolocationOpenHelper.h +17 -0
  171. package/ios/common/BackgroundGeolocation/MAURGeolocationOpenHelper.m +97 -0
  172. package/ios/common/BackgroundGeolocation/MAURLocation.h +59 -0
  173. package/ios/common/BackgroundGeolocation/MAURLocation.m +349 -0
  174. package/ios/common/BackgroundGeolocation/MAURLocationContract.h +34 -0
  175. package/ios/common/BackgroundGeolocation/MAURLocationContract.m +35 -0
  176. package/ios/common/BackgroundGeolocation/MAURLocationManager.h +53 -0
  177. package/ios/common/BackgroundGeolocation/MAURLocationManager.m +287 -0
  178. package/ios/common/BackgroundGeolocation/MAURLogReader.h +26 -0
  179. package/ios/common/BackgroundGeolocation/MAURLogReader.m +122 -0
  180. package/ios/common/BackgroundGeolocation/MAURLogging.h +19 -0
  181. package/ios/common/BackgroundGeolocation/MAURPostLocationTask.h +40 -0
  182. package/ios/common/BackgroundGeolocation/MAURPostLocationTask.m +250 -0
  183. package/ios/common/BackgroundGeolocation/MAURProviderDelegate.h +52 -0
  184. package/ios/common/BackgroundGeolocation/MAURRawLocationProvider.h +18 -0
  185. package/ios/common/BackgroundGeolocation/MAURRawLocationProvider.m +129 -0
  186. package/ios/common/BackgroundGeolocation/MAURSQLiteConfigurationDAO.h +26 -0
  187. package/ios/common/BackgroundGeolocation/MAURSQLiteConfigurationDAO.m +278 -0
  188. package/ios/common/BackgroundGeolocation/MAURSQLiteHelper.h +57 -0
  189. package/ios/common/BackgroundGeolocation/MAURSQLiteHelper.m +93 -0
  190. package/ios/common/BackgroundGeolocation/MAURSQLiteLocationDAO.h +38 -0
  191. package/ios/common/BackgroundGeolocation/MAURSQLiteLocationDAO.m +380 -0
  192. package/ios/common/BackgroundGeolocation/MAURSQLiteOpenHelper.h +32 -0
  193. package/ios/common/BackgroundGeolocation/MAURSQLiteOpenHelper.m +276 -0
  194. package/ios/common/BackgroundGeolocation/MAURUncaughtExceptionLogger.h +20 -0
  195. package/ios/common/BackgroundGeolocation/MAURUncaughtExceptionLogger.m +62 -0
  196. package/ios/common/BackgroundGeolocation/Reachability.h +102 -0
  197. package/ios/common/BackgroundGeolocation/Reachability.m +475 -0
  198. package/ios/common/BackgroundGeolocation/SOMotionDetector/CHANGELOG.md +2 -0
  199. package/ios/common/BackgroundGeolocation/SOMotionDetector/LICENSE +21 -0
  200. package/ios/common/BackgroundGeolocation/SOMotionDetector/README.md +135 -0
  201. package/ios/common/BackgroundGeolocation/SOMotionDetector/SOLocationManager.h +80 -0
  202. package/ios/common/BackgroundGeolocation/SOMotionDetector/SOLocationManager.m +147 -0
  203. package/ios/common/BackgroundGeolocation/SOMotionDetector/SOMotionActivity.h +30 -0
  204. package/ios/common/BackgroundGeolocation/SOMotionDetector/SOMotionActivity.m +42 -0
  205. package/ios/common/BackgroundGeolocation/SOMotionDetector/SOMotionDetector.h +99 -0
  206. package/ios/common/BackgroundGeolocation/SOMotionDetector/SOMotionDetector.m +327 -0
  207. package/ios/common/BackgroundGeolocation/SOMotionDetector/SOStepDetector.h +44 -0
  208. package/ios/common/BackgroundGeolocation/SOMotionDetector/SOStepDetector.m +94 -0
  209. package/ios/common/BackgroundGeolocation/SQLQueryBuilder/README.md +170 -0
  210. package/ios/common/BackgroundGeolocation/SQLQueryBuilder/ext/NSString+ZIMString.h +55 -0
  211. package/ios/common/BackgroundGeolocation/SQLQueryBuilder/ext/NSString+ZIMString.m +47 -0
  212. package/ios/common/BackgroundGeolocation/SQLQueryBuilder/sql/ZIMSqlDataManipulationCommand.h +27 -0
  213. package/ios/common/BackgroundGeolocation/SQLQueryBuilder/sql/ZIMSqlExpression.h +250 -0
  214. package/ios/common/BackgroundGeolocation/SQLQueryBuilder/sql/ZIMSqlExpression.m +259 -0
  215. package/ios/common/BackgroundGeolocation/SQLQueryBuilder/sql/ZIMSqlSelectStatement.h +360 -0
  216. package/ios/common/BackgroundGeolocation/SQLQueryBuilder/sql/ZIMSqlSelectStatement.m +427 -0
  217. package/ios/common/BackgroundGeolocation/SQLQueryBuilder/sql/ZIMSqlStatement.h +37 -0
  218. package/ios/common/BackgroundGeolocation.xcodeproj/project.pbxproj +760 -0
  219. package/ios/common/BackgroundGeolocationTests/Info.plist +24 -0
  220. package/ios/common/BackgroundGeolocationTests/MAURBackgroundLocationTest.m +185 -0
  221. package/ios/common/BackgroundGeolocationTests/MAURConfigTest.m +161 -0
  222. package/ios/common/BackgroundGeolocationTests/MAURGeolocationOpenHelperTest.m +102 -0
  223. package/ios/common/BackgroundGeolocationTests/MAURLocationTest.m +216 -0
  224. package/ios/common/BackgroundGeolocationTests/MAURLocationUploaderTest.m +55 -0
  225. package/ios/common/BackgroundGeolocationTests/MAURLogReaderTest.m +43 -0
  226. package/ios/common/BackgroundGeolocationTests/MAURSQLiteConfigurationDAOTest.m +102 -0
  227. package/ios/common/BackgroundGeolocationTests/MAURSQLiteHelperTest.m +41 -0
  228. package/ios/common/BackgroundGeolocationTests/MAURSQLiteLocationDAOTests.m +240 -0
  229. package/ios/common/BackgroundGeolocationTests/MAURSQLiteLocationDAOThreadTest.m +84 -0
  230. package/ios/common/BackgroundGeolocationTests/MAURSQLiteOpenHelperTest.m +144 -0
  231. package/ios/common/CONTRIBUTORS.md +10 -0
  232. package/ios/common/LICENSE +191 -0
  233. package/ios/common/README.md +7 -0
  234. package/ios/common/scripts/xcode-refactor.js +184 -0
  235. package/package.json +44 -0
  236. package/plugin.xml +355 -0
  237. package/www/BackgroundGeolocation.d.ts +910 -0
  238. package/www/BackgroundGeolocation.js +247 -0
  239. package/www/radio.js +177 -0
@@ -0,0 +1,48 @@
1
+ package com.marianhello.bgloc.headless;
2
+
3
+ import android.os.Bundle;
4
+
5
+ import com.marianhello.bgloc.data.BackgroundActivity;
6
+
7
+ import org.json.JSONException;
8
+
9
+ public abstract class ActivityTask extends Task {
10
+ private BackgroundActivity mActivity;
11
+
12
+ public ActivityTask(BackgroundActivity activity) {
13
+ mActivity = activity;
14
+ }
15
+
16
+ @Override
17
+ public String getName() {
18
+ return "activity";
19
+ }
20
+
21
+ @Override
22
+ public Bundle getBundle() {
23
+ Bundle bundle = new Bundle();
24
+ Bundle params = new Bundle();
25
+
26
+ params.putInt("confidence", mActivity.getConfidence());
27
+ params.putString("type", BackgroundActivity.getActivityString(mActivity.getType()));
28
+
29
+ bundle.putString("name", getName());
30
+ bundle.putBundle("params", params);
31
+ return bundle;
32
+ }
33
+
34
+ @Override
35
+ public String toString() {
36
+ if (mActivity == null) {
37
+ return null;
38
+ }
39
+
40
+ try {
41
+ return mActivity.toJSONObject().toString();
42
+ } catch (JSONException e) {
43
+ onError("Error processing params: " + e.getMessage());
44
+ }
45
+
46
+ return null;
47
+ }
48
+ }
@@ -0,0 +1,10 @@
1
+ package com.marianhello.bgloc.headless;
2
+
3
+ /**
4
+ * Interface for passing code that will be executed after the JS has finished
5
+ */
6
+
7
+ public interface JsCallback {
8
+ void onResult(String value);
9
+ void onError(String errorMessage);
10
+ }
@@ -0,0 +1,60 @@
1
+ package com.marianhello.bgloc.headless;
2
+
3
+ import android.os.Bundle;
4
+
5
+ import com.marianhello.bgloc.data.BackgroundLocation;
6
+
7
+ import org.json.JSONException;
8
+
9
+ public abstract class LocationTask extends Task {
10
+ protected BackgroundLocation mLocation;
11
+
12
+ public LocationTask(BackgroundLocation location) {
13
+ mLocation = location;
14
+ }
15
+
16
+ @Override
17
+ public String getName() {
18
+ return "location";
19
+ }
20
+
21
+ @Override
22
+ public Bundle getBundle() {
23
+ Bundle bundle = new Bundle();
24
+ Bundle params = new Bundle();
25
+
26
+ params.putString("provider", mLocation.getProvider());
27
+ params.putInt("locationProvider", mLocation.getLocationProvider());
28
+ params.putLong("time", mLocation.getTime());
29
+ params.putDouble("latitude", mLocation.getLatitude());
30
+ params.putDouble("longitude", mLocation.getLongitude());
31
+ if (mLocation.hasAccuracy()) params.putFloat("accuracy", mLocation.getAccuracy());
32
+ if (mLocation.hasVerticalAccuracy()) params.putFloat("accuracy", mLocation.getVerticalAccuracy());
33
+ if (mLocation.hasSpeed()) params.putFloat("speed", mLocation.getSpeed());
34
+ if (mLocation.hasAltitude()) params.putDouble("altitude", mLocation.getAltitude());
35
+ if (mLocation.hasBearing()) params.putFloat("bearing", mLocation.getBearing());
36
+ if (mLocation.hasRadius()) params.putFloat("radius", mLocation.getRadius());
37
+ if (mLocation.hasIsFromMockProvider()) params.putBoolean("isFromMockProvider", mLocation.isFromMockProvider());
38
+ if (mLocation.hasMockLocationsEnabled()) params.putBoolean("mockLocationsEnabled", mLocation.areMockLocationsEnabled());
39
+
40
+ bundle.putString("name", getName());
41
+ bundle.putBundle("params", params);
42
+
43
+ return bundle;
44
+ }
45
+
46
+ @Override
47
+ public String toString() {
48
+ if (mLocation == null) {
49
+ return null;
50
+ }
51
+
52
+ try {
53
+ return mLocation.toJSONObject().toString();
54
+ } catch (JSONException e) {
55
+ onError("Error processing params: " + e.getMessage());
56
+ }
57
+
58
+ return null;
59
+ }
60
+ }
@@ -0,0 +1,25 @@
1
+ package com.marianhello.bgloc.headless;
2
+
3
+ import android.os.Bundle;
4
+
5
+ import com.marianhello.bgloc.data.BackgroundLocation;
6
+
7
+ import org.json.JSONException;
8
+
9
+ public abstract class StationaryTask extends LocationTask {
10
+ public StationaryTask(BackgroundLocation location) {
11
+ super(location);
12
+ }
13
+
14
+ @Override
15
+ public String getName() {
16
+ return "stationary";
17
+ }
18
+
19
+ @Override
20
+ public Bundle getBundle() {
21
+ Bundle bundle = super.getBundle();
22
+
23
+ return bundle;
24
+ }
25
+ }
@@ -0,0 +1,8 @@
1
+ package com.marianhello.bgloc.headless;
2
+
3
+ import android.os.Bundle;
4
+
5
+ public abstract class Task implements JsCallback {
6
+ public abstract String getName();
7
+ public abstract Bundle getBundle();
8
+ }
@@ -0,0 +1,5 @@
1
+ package com.marianhello.bgloc.headless;
2
+
3
+ public interface TaskRunner {
4
+ void runTask(Task task);
5
+ }
@@ -0,0 +1,8 @@
1
+ package com.marianhello.bgloc.headless;
2
+
3
+ public class TaskRunnerFactory {
4
+
5
+ public TaskRunner getTaskRunner(String className) throws ClassNotFoundException, IllegalAccessException, InstantiationException {
6
+ return (TaskRunner) Class.forName(className).newInstance();
7
+ }
8
+ }
@@ -0,0 +1,171 @@
1
+ /*
2
+ According to apache license
3
+
4
+ This is fork of christocracy cordova-plugin-background-geolocation plugin
5
+ https://github.com/christocracy/cordova-plugin-background-geolocation
6
+
7
+ This is a new class
8
+ */
9
+
10
+ package com.marianhello.bgloc.provider;
11
+
12
+ import android.content.BroadcastReceiver;
13
+ import android.content.Context;
14
+ import android.content.Intent;
15
+ import android.content.IntentFilter;
16
+ import android.location.Location;
17
+ import android.media.AudioManager;
18
+ import android.provider.Settings;
19
+ import android.widget.Toast;
20
+
21
+ import com.google.android.gms.location.DetectedActivity;
22
+ import com.marianhello.bgloc.Config;
23
+ import com.marianhello.bgloc.PluginException;
24
+ import com.marianhello.bgloc.data.BackgroundActivity;
25
+ import com.marianhello.bgloc.data.BackgroundLocation;
26
+ import com.marianhello.logging.LoggerManager;
27
+ import com.marianhello.utils.ToneGenerator;
28
+ import com.marianhello.utils.ToneGenerator.Tone;
29
+
30
+ /**
31
+ * AbstractLocationProvider
32
+ */
33
+ public abstract class AbstractLocationProvider implements LocationProvider {
34
+
35
+ protected Integer PROVIDER_ID;
36
+ protected Config mConfig;
37
+ protected Context mContext;
38
+
39
+ protected ToneGenerator toneGenerator;
40
+ protected org.slf4j.Logger logger;
41
+
42
+ private ProviderDelegate mDelegate;
43
+
44
+ protected AbstractLocationProvider(Context context) {
45
+ mContext = context;
46
+ logger = LoggerManager.getLogger(getClass());
47
+ logger.info("Creating {}", getClass().getSimpleName());
48
+ }
49
+
50
+ @Override
51
+ public void onCreate() {
52
+ toneGenerator = new ToneGenerator(AudioManager.STREAM_NOTIFICATION, 100);
53
+ }
54
+
55
+ @Override
56
+ public void onDestroy() {
57
+ toneGenerator.release();
58
+ toneGenerator = null;
59
+ }
60
+
61
+ @Override
62
+ public void onConfigure(Config config) {
63
+ mConfig = config;
64
+ }
65
+
66
+ @Override
67
+ public void onCommand(int commandId, int arg1) {
68
+ // override in child class
69
+ }
70
+
71
+ public void setDelegate(ProviderDelegate delegate) {
72
+ mDelegate = delegate;
73
+ }
74
+
75
+ /**
76
+ * Register broadcast reciever
77
+ * @param receiver
78
+ */
79
+ protected Intent registerReceiver (BroadcastReceiver receiver, IntentFilter filter) {
80
+ return mContext.registerReceiver(receiver, filter);
81
+ }
82
+
83
+ /**
84
+ * Unregister broadcast reciever
85
+ * @param receiver
86
+ */
87
+ protected void unregisterReceiver (BroadcastReceiver receiver) {
88
+ mContext.unregisterReceiver(receiver);
89
+ }
90
+
91
+ /**
92
+ * Handle location as recorder by provider
93
+ * @param location
94
+ */
95
+ protected void handleLocation (Location location) {
96
+ playDebugTone(Tone.BEEP);
97
+ if (mDelegate != null) {
98
+ BackgroundLocation bgLocation = new BackgroundLocation(PROVIDER_ID, location);
99
+ bgLocation.setMockLocationsEnabled(hasMockLocationsEnabled());
100
+ mDelegate.onLocation(bgLocation);
101
+ }
102
+ }
103
+
104
+ /**
105
+ * Handle stationary location with radius
106
+ *
107
+ * @param location
108
+ * @param radius radius of stationary region
109
+ */
110
+ protected void handleStationary (Location location, float radius) {
111
+ playDebugTone(Tone.LONG_BEEP);
112
+ if (mDelegate != null) {
113
+ BackgroundLocation bgLocation = new BackgroundLocation(PROVIDER_ID, location);
114
+ bgLocation.setRadius(radius);
115
+ bgLocation.setMockLocationsEnabled(hasMockLocationsEnabled());
116
+ mDelegate.onStationary(bgLocation);
117
+ }
118
+ }
119
+
120
+ /**
121
+ * Handle stationary location without radius
122
+ *
123
+ * @param location
124
+ */
125
+ protected void handleStationary (Location location) {
126
+ playDebugTone(Tone.LONG_BEEP);
127
+ if (mDelegate != null) {
128
+ BackgroundLocation bgLocation = new BackgroundLocation(PROVIDER_ID, location);
129
+ bgLocation.setMockLocationsEnabled(hasMockLocationsEnabled());
130
+ mDelegate.onStationary(bgLocation);
131
+ }
132
+ }
133
+
134
+ protected void handleActivity(DetectedActivity activity) {
135
+ if (mDelegate != null) {
136
+ mDelegate.onActivity(new BackgroundActivity(PROVIDER_ID, activity));
137
+ }
138
+ }
139
+
140
+ /**
141
+ * Handle security exception
142
+ * @param exception
143
+ */
144
+ protected void handleSecurityException (SecurityException exception) {
145
+ PluginException error = new PluginException(exception.getMessage(), PluginException.PERMISSION_DENIED_ERROR);
146
+ if (mDelegate != null) {
147
+ mDelegate.onError(error);
148
+ }
149
+ }
150
+
151
+ protected void showDebugToast (String text) {
152
+ if (mConfig.isDebugging()) {
153
+ Toast.makeText(mContext, text, Toast.LENGTH_LONG).show();
154
+ }
155
+ }
156
+
157
+ public Boolean hasMockLocationsEnabled() {
158
+ return Settings.Secure.getString(mContext.getContentResolver(), android.provider.Settings.Secure.ALLOW_MOCK_LOCATION).equals("1");
159
+ }
160
+
161
+ /**
162
+ * Plays debug sound
163
+ * @param name toneGenerator
164
+ */
165
+ protected void playDebugTone (int name) {
166
+ if (toneGenerator == null || !mConfig.isDebugging()) return;
167
+
168
+ int duration = 1000;
169
+ toneGenerator.startTone(name, duration);
170
+ }
171
+ }
@@ -0,0 +1,282 @@
1
+ package com.marianhello.bgloc.provider;
2
+
3
+ import android.app.PendingIntent;
4
+ import android.content.BroadcastReceiver;
5
+ import android.content.Context;
6
+ import android.content.Intent;
7
+ import android.content.IntentFilter;
8
+ import android.content.pm.PackageManager;
9
+ import android.location.Location;
10
+ import android.Manifest;
11
+ import android.os.Build;
12
+ import android.os.Looper;
13
+ import androidx.core.app.ActivityCompat;
14
+
15
+ import com.google.android.gms.location.ActivityRecognition;
16
+ import com.google.android.gms.location.ActivityRecognitionClient;
17
+ import com.google.android.gms.location.ActivityRecognitionResult;
18
+ import com.google.android.gms.location.DetectedActivity;
19
+ import com.google.android.gms.location.FusedLocationProviderClient;
20
+ import com.google.android.gms.location.LocationCallback;
21
+ import com.google.android.gms.location.LocationRequest;
22
+ import com.google.android.gms.location.LocationResult;
23
+ import com.google.android.gms.location.LocationServices;
24
+ import com.marianhello.bgloc.Config;
25
+ import com.marianhello.bgloc.data.BackgroundActivity;
26
+
27
+ import java.util.List;
28
+
29
+
30
+ public class ActivityRecognitionLocationProvider extends AbstractLocationProvider {
31
+
32
+ private static final String P_NAME = "com.marianhello.bgloc";
33
+ private static final String DETECTED_ACTIVITY_UPDATE = P_NAME + ".DETECTED_ACTIVITY_UPDATE";
34
+
35
+ private FusedLocationProviderClient fusedLocationClient;
36
+ private ActivityRecognitionClient activityRecognitionClient;
37
+ private PendingIntent detectedActivitiesPI;
38
+
39
+ // Must default to false: onConfigure() is called before onStart() by LocationServiceImpl.
40
+ private boolean isStarted = false;
41
+ private boolean isTracking = false;
42
+ private boolean isWatchingActivity = false;
43
+ private DetectedActivity lastActivity = new DetectedActivity(DetectedActivity.UNKNOWN, 100);
44
+
45
+ private final LocationCallback locationCallback = new LocationCallback() {
46
+ @Override
47
+ public void onLocationResult(LocationResult result) {
48
+ if (result == null) return;
49
+ List<Location> locations = result.getLocations();
50
+ if (locations == null) return;
51
+ for (Location location : locations) {
52
+ onLocationReceived(location);
53
+ }
54
+ }
55
+ };
56
+
57
+ public ActivityRecognitionLocationProvider(Context context) {
58
+ super(context);
59
+ PROVIDER_ID = Config.ACTIVITY_PROVIDER;
60
+ }
61
+
62
+ @Override
63
+ public void onCreate() {
64
+ super.onCreate();
65
+ fusedLocationClient = LocationServices.getFusedLocationProviderClient(mContext);
66
+ activityRecognitionClient = ActivityRecognition.getClient(mContext);
67
+
68
+ Intent detectedActivitiesIntent = new Intent(mContext, DetectedActivitiesReceiver.class);
69
+ detectedActivitiesIntent.setAction(DETECTED_ACTIVITY_UPDATE);
70
+
71
+ int updateCurrentFlag = android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.S
72
+ ? PendingIntent.FLAG_UPDATE_CURRENT | PendingIntent.FLAG_IMMUTABLE
73
+ : PendingIntent.FLAG_UPDATE_CURRENT;
74
+ detectedActivitiesPI = PendingIntent.getBroadcast(mContext, 9002, detectedActivitiesIntent, updateCurrentFlag);
75
+ registerReceiver(detectedActivitiesReceiver, new IntentFilter(DETECTED_ACTIVITY_UPDATE));
76
+ }
77
+
78
+ @Override
79
+ public void onStart() {
80
+ logger.info("Start recording");
81
+ this.isStarted = true;
82
+ attachRecorder();
83
+ }
84
+
85
+ @Override
86
+ public void onStop() {
87
+ logger.info("Stop recording");
88
+ this.isStarted = false;
89
+ detachRecorder();
90
+ stopTracking();
91
+ }
92
+
93
+ @Override
94
+ public void onConfigure(Config config) {
95
+ super.onConfigure(config);
96
+ if (isStarted) {
97
+ onStop();
98
+ onStart();
99
+ }
100
+ }
101
+
102
+ @Override
103
+ public boolean isStarted() {
104
+ return isStarted;
105
+ }
106
+
107
+ @Override
108
+ public void onCommand(int commandId, int arg1) {
109
+ if (commandId == LocationProvider.CMD_SWITCH_MODE && isStarted) {
110
+ // Foreground: ensure tracking; background: keep current behavior (activity still drives start/stop).
111
+ if (arg1 == LocationProvider.FOREGROUND_MODE) {
112
+ startTracking();
113
+ }
114
+ }
115
+ }
116
+
117
+ /**
118
+ * Same logic as former onLocationChanged: STILL -> stationary + stopTracking, else handleLocation.
119
+ */
120
+ private void onLocationReceived(Location location) {
121
+ logger.debug("Location change: {}", location.toString());
122
+
123
+ if (lastActivity.getType() == DetectedActivity.STILL) {
124
+ handleStationary(location);
125
+ stopTracking();
126
+ return;
127
+ }
128
+
129
+ showDebugToast("acy:" + location.getAccuracy() + ",v:" + location.getSpeed());
130
+
131
+ handleLocation(location);
132
+ }
133
+
134
+ public void startTracking() {
135
+ if (isTracking) { return; }
136
+ if (fusedLocationClient == null || mConfig == null) { return; }
137
+
138
+ int priority = translateDesiredAccuracy(mConfig.getDesiredAccuracy());
139
+ LocationRequest locationRequest = LocationRequest.create()
140
+ .setPriority(priority)
141
+ .setFastestInterval(mConfig.getFastestInterval())
142
+ .setInterval(mConfig.getInterval());
143
+
144
+ try {
145
+ fusedLocationClient.requestLocationUpdates(
146
+ locationRequest,
147
+ locationCallback,
148
+ Looper.getMainLooper()
149
+ );
150
+ isTracking = true;
151
+ logger.debug("Start tracking with priority={} fastestInterval={} interval={} activitiesInterval={} stopOnStillActivity={}",
152
+ priority, mConfig.getFastestInterval(), mConfig.getInterval(), mConfig.getActivitiesInterval(), mConfig.getStopOnStillActivity());
153
+ } catch (SecurityException e) {
154
+ logger.error("Security exception: {}", e.getMessage());
155
+ this.handleSecurityException(e);
156
+ }
157
+ }
158
+
159
+ public void stopTracking() {
160
+ if (!isTracking) { return; }
161
+ if (fusedLocationClient == null) {
162
+ isTracking = false;
163
+ return;
164
+ }
165
+ try {
166
+ fusedLocationClient.removeLocationUpdates(locationCallback);
167
+ } catch (SecurityException e) {
168
+ logger.warn("Security exception removing location updates: {}", e.getMessage());
169
+ } finally {
170
+ isTracking = false;
171
+ }
172
+ }
173
+
174
+ private boolean activityRecognitionPermitted() {
175
+ return Build.VERSION.SDK_INT < Build.VERSION_CODES.Q
176
+ || ActivityCompat.checkSelfPermission(mContext, Manifest.permission.ACTIVITY_RECOGNITION) == PackageManager.PERMISSION_GRANTED;
177
+ }
178
+
179
+ private void attachRecorder() {
180
+ if (fusedLocationClient == null || activityRecognitionClient == null) { return; }
181
+ if (mConfig == null) { return; }
182
+
183
+ startTracking();
184
+
185
+ if (!isWatchingActivity && mConfig.getStopOnStillActivity() && activityRecognitionPermitted()) {
186
+ activityRecognitionClient.requestActivityUpdates(
187
+ mConfig.getActivitiesInterval(),
188
+ detectedActivitiesPI
189
+ ).addOnFailureListener(e -> logger.error("requestActivityUpdates failed: {}", e.getMessage()));
190
+ isWatchingActivity = true;
191
+ }
192
+ }
193
+
194
+ private void detachRecorder() {
195
+ if (!isWatchingActivity) { return; }
196
+ if (activityRecognitionClient == null) {
197
+ isWatchingActivity = false;
198
+ return;
199
+ }
200
+ try {
201
+ logger.debug("Detaching recorder");
202
+ activityRecognitionClient.removeActivityUpdates(detectedActivitiesPI)
203
+ .addOnSuccessListener(v -> logger.debug("removeActivityUpdates ok"))
204
+ .addOnFailureListener(e -> logger.warn("removeActivityUpdates failed: {}", e.getMessage()));
205
+ } finally {
206
+ isWatchingActivity = false;
207
+ }
208
+ }
209
+
210
+ /**
211
+ * Translates a number representing desired accuracy of Geolocation system from set [0, 10, 100, 1000].
212
+ * 0: most aggressive, most accurate, worst battery drain
213
+ * 1000: least aggressive, least accurate, best for battery.
214
+ */
215
+ private int translateDesiredAccuracy(Integer accuracy) {
216
+ if (accuracy == null) {
217
+ return LocationRequest.PRIORITY_BALANCED_POWER_ACCURACY;
218
+ }
219
+ if (accuracy >= 10000) {
220
+ return LocationRequest.PRIORITY_NO_POWER;
221
+ }
222
+ if (accuracy >= 1000) {
223
+ return LocationRequest.PRIORITY_LOW_POWER;
224
+ }
225
+ if (accuracy >= 100) {
226
+ return LocationRequest.PRIORITY_BALANCED_POWER_ACCURACY;
227
+ }
228
+ return LocationRequest.PRIORITY_HIGH_ACCURACY;
229
+ }
230
+
231
+ public static DetectedActivity getProbableActivity(List<DetectedActivity> detectedActivities) {
232
+ int highestConfidence = 0;
233
+ DetectedActivity mostLikelyActivity = new DetectedActivity(DetectedActivity.UNKNOWN, 0);
234
+
235
+ for (DetectedActivity da : detectedActivities) {
236
+ if (da.getType() != DetectedActivity.TILTING && da.getType() != DetectedActivity.UNKNOWN) {
237
+ if (highestConfidence < da.getConfidence()) {
238
+ highestConfidence = da.getConfidence();
239
+ mostLikelyActivity = da;
240
+ }
241
+ }
242
+ }
243
+ return mostLikelyActivity;
244
+ }
245
+
246
+ private class DetectedActivitiesReceiver extends BroadcastReceiver {
247
+ @Override
248
+ public void onReceive(Context context, Intent intent) {
249
+ ActivityRecognitionResult result = ActivityRecognitionResult.extractResult(intent);
250
+ if (result == null) return;
251
+ List<DetectedActivity> detectedActivities = result.getProbableActivities();
252
+ if (detectedActivities == null || detectedActivities.isEmpty()) return;
253
+
254
+ lastActivity = getProbableActivity(detectedActivities);
255
+
256
+ logger.debug("Detected activity={} confidence={}", BackgroundActivity.getActivityString(lastActivity.getType()), lastActivity.getConfidence());
257
+
258
+ handleActivity(lastActivity);
259
+
260
+ if (lastActivity.getType() == DetectedActivity.STILL) {
261
+ showDebugToast("Detected STILL Activity");
262
+ } else {
263
+ showDebugToast("Detected ACTIVE Activity");
264
+ startTracking();
265
+ }
266
+ }
267
+ }
268
+
269
+ private final BroadcastReceiver detectedActivitiesReceiver = new DetectedActivitiesReceiver();
270
+
271
+ @Override
272
+ public void onDestroy() {
273
+ logger.info("Destroying ActivityRecognitionLocationProvider");
274
+ onStop();
275
+ try {
276
+ unregisterReceiver(detectedActivitiesReceiver);
277
+ } catch (Exception ignored) {
278
+ // Receiver may not be registered if onCreate/onStart never completed
279
+ }
280
+ super.onDestroy();
281
+ }
282
+ }