react-native-nitro-background-geolocation 0.1.0

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 (306) hide show
  1. package/NitroBackgroundGeolocation.podspec +29 -0
  2. package/android/CMakeLists.txt +24 -0
  3. package/android/build.gradle +133 -0
  4. package/android/src/main/AndroidManifest.xml +65 -0
  5. package/android/src/main/cpp/cpp-adapter.cpp +11 -0
  6. package/android/src/main/java/com/margelo/nitro/nitrobackgroundgeolocation/ConfigMapper.kt +332 -0
  7. package/android/src/main/java/com/margelo/nitro/nitrobackgroundgeolocation/HeadlessTaskRegistry.kt +23 -0
  8. package/android/src/main/java/com/margelo/nitro/nitrobackgroundgeolocation/HeadlessTaskService.kt +66 -0
  9. package/android/src/main/java/com/margelo/nitro/nitrobackgroundgeolocation/NitroBackgroundGeolocation.kt +538 -0
  10. package/android/src/main/java/com/margelo/nitro/nitrobackgroundgeolocation/NitroBackgroundGeolocationPackage.kt +22 -0
  11. package/android/src/main/java/com/margelo/nitro/nitrobackgroundgeolocation/ReactNativeHeadlessTaskRunner.kt +62 -0
  12. package/android/src/main/java/com/marianhello/bgloc/BackgroundGeolocationFacade.java +542 -0
  13. package/android/src/main/java/com/marianhello/bgloc/BootCompletedReceiver.java +59 -0
  14. package/android/src/main/java/com/marianhello/bgloc/Config.java +652 -0
  15. package/android/src/main/java/com/marianhello/bgloc/ConnectivityListener.java +5 -0
  16. package/android/src/main/java/com/marianhello/bgloc/HttpPostService.java +168 -0
  17. package/android/src/main/java/com/marianhello/bgloc/LocationManager.java +138 -0
  18. package/android/src/main/java/com/marianhello/bgloc/PluginDelegate.java +19 -0
  19. package/android/src/main/java/com/marianhello/bgloc/PluginException.java +38 -0
  20. package/android/src/main/java/com/marianhello/bgloc/PostLocationTask.java +186 -0
  21. package/android/src/main/java/com/marianhello/bgloc/ResourceResolver.java +55 -0
  22. package/android/src/main/java/com/marianhello/bgloc/data/AbstractLocationTemplate.java +69 -0
  23. package/android/src/main/java/com/marianhello/bgloc/data/ArrayListLocationTemplate.java +88 -0
  24. package/android/src/main/java/com/marianhello/bgloc/data/BackgroundActivity.java +108 -0
  25. package/android/src/main/java/com/marianhello/bgloc/data/BackgroundLocation.java +994 -0
  26. package/android/src/main/java/com/marianhello/bgloc/data/ConfigurationDAO.java +13 -0
  27. package/android/src/main/java/com/marianhello/bgloc/data/DAOFactory.java +17 -0
  28. package/android/src/main/java/com/marianhello/bgloc/data/HashMapLocationTemplate.java +82 -0
  29. package/android/src/main/java/com/marianhello/bgloc/data/LocationDAO.java +22 -0
  30. package/android/src/main/java/com/marianhello/bgloc/data/LocationTemplate.java +12 -0
  31. package/android/src/main/java/com/marianhello/bgloc/data/LocationTemplateFactory.java +65 -0
  32. package/android/src/main/java/com/marianhello/bgloc/data/LocationTransform.java +19 -0
  33. package/android/src/main/java/com/marianhello/bgloc/data/provider/ContentProviderLocationDAO.java +395 -0
  34. package/android/src/main/java/com/marianhello/bgloc/data/provider/LocationContentProvider.java +321 -0
  35. package/android/src/main/java/com/marianhello/bgloc/data/sqlite/SQLiteConfigurationContract.java +76 -0
  36. package/android/src/main/java/com/marianhello/bgloc/data/sqlite/SQLiteConfigurationDAO.java +160 -0
  37. package/android/src/main/java/com/marianhello/bgloc/data/sqlite/SQLiteLocationContract.java +112 -0
  38. package/android/src/main/java/com/marianhello/bgloc/data/sqlite/SQLiteLocationDAO.java +506 -0
  39. package/android/src/main/java/com/marianhello/bgloc/data/sqlite/SQLiteOpenHelper.java +151 -0
  40. package/android/src/main/java/com/marianhello/bgloc/headless/AbstractTaskRunner.java +15 -0
  41. package/android/src/main/java/com/marianhello/bgloc/headless/ActivityTask.java +48 -0
  42. package/android/src/main/java/com/marianhello/bgloc/headless/JsCallback.java +10 -0
  43. package/android/src/main/java/com/marianhello/bgloc/headless/LocationTask.java +61 -0
  44. package/android/src/main/java/com/marianhello/bgloc/headless/StationaryTask.java +25 -0
  45. package/android/src/main/java/com/marianhello/bgloc/headless/Task.java +8 -0
  46. package/android/src/main/java/com/marianhello/bgloc/headless/TaskRunner.java +5 -0
  47. package/android/src/main/java/com/marianhello/bgloc/headless/TaskRunnerFactory.java +8 -0
  48. package/android/src/main/java/com/marianhello/bgloc/provider/AbstractLocationProvider.java +171 -0
  49. package/android/src/main/java/com/marianhello/bgloc/provider/ActivityRecognitionLocationProvider.java +280 -0
  50. package/android/src/main/java/com/marianhello/bgloc/provider/DistanceFilterLocationProvider.java +586 -0
  51. package/android/src/main/java/com/marianhello/bgloc/provider/LocationProvider.java +32 -0
  52. package/android/src/main/java/com/marianhello/bgloc/provider/LocationProviderFactory.java +47 -0
  53. package/android/src/main/java/com/marianhello/bgloc/provider/ProviderDelegate.java +12 -0
  54. package/android/src/main/java/com/marianhello/bgloc/provider/RawLocationProvider.java +142 -0
  55. package/android/src/main/java/com/marianhello/bgloc/service/LocationService.java +17 -0
  56. package/android/src/main/java/com/marianhello/bgloc/service/LocationServiceImpl.java +760 -0
  57. package/android/src/main/java/com/marianhello/bgloc/service/LocationServiceInfo.java +6 -0
  58. package/android/src/main/java/com/marianhello/bgloc/service/LocationServiceInfoImpl.java +41 -0
  59. package/android/src/main/java/com/marianhello/bgloc/service/LocationServiceIntentBuilder.java +203 -0
  60. package/android/src/main/java/com/marianhello/bgloc/service/LocationServiceProxy.java +140 -0
  61. package/android/src/main/java/com/marianhello/bgloc/sync/AccountHelper.java +39 -0
  62. package/android/src/main/java/com/marianhello/bgloc/sync/Authenticator.java +68 -0
  63. package/android/src/main/java/com/marianhello/bgloc/sync/AuthenticatorService.java +28 -0
  64. package/android/src/main/java/com/marianhello/bgloc/sync/BatchManager.java +246 -0
  65. package/android/src/main/java/com/marianhello/bgloc/sync/NotificationHelper.java +148 -0
  66. package/android/src/main/java/com/marianhello/bgloc/sync/SyncAdapter.java +233 -0
  67. package/android/src/main/java/com/marianhello/bgloc/sync/SyncService.java +68 -0
  68. package/android/src/main/java/com/marianhello/logging/DBLogReader.java +203 -0
  69. package/android/src/main/java/com/marianhello/logging/LogEntry.java +99 -0
  70. package/android/src/main/java/com/marianhello/logging/LoggerManager.java +70 -0
  71. package/android/src/main/java/com/marianhello/logging/UncaughtExceptionLogger.java +36 -0
  72. package/android/src/main/java/com/marianhello/utils/CloneHelper.java +22 -0
  73. package/android/src/main/java/com/marianhello/utils/Convert.java +56 -0
  74. package/android/src/main/java/com/marianhello/utils/TextUtils.java +72 -0
  75. package/android/src/main/java/com/marianhello/utils/ToneGenerator.java +68 -0
  76. package/android/src/main/java/org/apache/commons/io/Charsets.java +153 -0
  77. package/android/src/main/java/org/apache/commons/io/input/ReversedLinesFileReader.java +344 -0
  78. package/android/src/main/java/org/chromium/content/browser/ThreadUtils.java +134 -0
  79. package/android/src/main/java/ru/andremoniy/sqlbuilder/SqlExpression.java +398 -0
  80. package/android/src/main/java/ru/andremoniy/sqlbuilder/SqlSelectStatement.java +671 -0
  81. package/android/src/main/java/ru/andremoniy/sqlbuilder/SqlStatement.java +29 -0
  82. package/android/src/main/java/ru/andremoniy/utils/TextUtils.java +61 -0
  83. package/android/src/main/res/values/strings.xml +6 -0
  84. package/android/src/main/res/xml/authenticator.xml +7 -0
  85. package/android/src/main/res/xml/syncadapter.xml +9 -0
  86. package/app.plugin.js +64 -0
  87. package/ios/NitroBackgroundGeolocation.swift +719 -0
  88. package/ios/NitroBackgroundGeolocationBootstrap.m +98 -0
  89. package/ios/common/BackgroundGeolocation/CocoaLumberjack.h +1945 -0
  90. package/ios/common/BackgroundGeolocation/CocoaLumberjack.m +5255 -0
  91. package/ios/common/BackgroundGeolocation/FMDB.h +2357 -0
  92. package/ios/common/BackgroundGeolocation/FMDB.m +2672 -0
  93. package/ios/common/BackgroundGeolocation/FMDBLogger.h +42 -0
  94. package/ios/common/BackgroundGeolocation/FMDBLogger.m +264 -0
  95. package/ios/common/BackgroundGeolocation/INTULocationManager/INTUHeadingRequest.h +41 -0
  96. package/ios/common/BackgroundGeolocation/INTULocationManager/INTUHeadingRequest.m +68 -0
  97. package/ios/common/BackgroundGeolocation/INTULocationManager/INTULocationManager+Internal.h +33 -0
  98. package/ios/common/BackgroundGeolocation/INTULocationManager/INTULocationManager.h +178 -0
  99. package/ios/common/BackgroundGeolocation/INTULocationManager/INTULocationManager.m +1025 -0
  100. package/ios/common/BackgroundGeolocation/INTULocationManager/INTULocationRequest.h +103 -0
  101. package/ios/common/BackgroundGeolocation/INTULocationManager/INTULocationRequest.m +238 -0
  102. package/ios/common/BackgroundGeolocation/INTULocationManager/INTULocationRequestDefines.h +163 -0
  103. package/ios/common/BackgroundGeolocation/INTULocationManager/INTURequestIDGenerator.h +39 -0
  104. package/ios/common/BackgroundGeolocation/INTULocationManager/INTURequestIDGenerator.m +37 -0
  105. package/ios/common/BackgroundGeolocation/MAURAbstractLocationProvider.h +51 -0
  106. package/ios/common/BackgroundGeolocation/MAURAbstractLocationProvider.m +53 -0
  107. package/ios/common/BackgroundGeolocation/MAURActivity.h +23 -0
  108. package/ios/common/BackgroundGeolocation/MAURActivity.m +52 -0
  109. package/ios/common/BackgroundGeolocation/MAURActivityLocationProvider.h +18 -0
  110. package/ios/common/BackgroundGeolocation/MAURActivityLocationProvider.m +202 -0
  111. package/ios/common/BackgroundGeolocation/MAURBackgroundGeolocationFacade.h +62 -0
  112. package/ios/common/BackgroundGeolocation/MAURBackgroundGeolocationFacade.m +650 -0
  113. package/ios/common/BackgroundGeolocation/MAURBackgroundSync.h +34 -0
  114. package/ios/common/BackgroundGeolocation/MAURBackgroundSync.m +184 -0
  115. package/ios/common/BackgroundGeolocation/MAURBackgroundTaskManager.h +25 -0
  116. package/ios/common/BackgroundGeolocation/MAURBackgroundTaskManager.m +105 -0
  117. package/ios/common/BackgroundGeolocation/MAURConfig.h +74 -0
  118. package/ios/common/BackgroundGeolocation/MAURConfig.m +485 -0
  119. package/ios/common/BackgroundGeolocation/MAURConfigurationContract.h +49 -0
  120. package/ios/common/BackgroundGeolocation/MAURConfigurationContract.m +51 -0
  121. package/ios/common/BackgroundGeolocation/MAURDistanceFilterLocationProvider.h +20 -0
  122. package/ios/common/BackgroundGeolocation/MAURDistanceFilterLocationProvider.m +523 -0
  123. package/ios/common/BackgroundGeolocation/MAURGeolocationOpenHelper.h +17 -0
  124. package/ios/common/BackgroundGeolocation/MAURGeolocationOpenHelper.m +97 -0
  125. package/ios/common/BackgroundGeolocation/MAURLocation.h +59 -0
  126. package/ios/common/BackgroundGeolocation/MAURLocation.m +349 -0
  127. package/ios/common/BackgroundGeolocation/MAURLocationContract.h +34 -0
  128. package/ios/common/BackgroundGeolocation/MAURLocationContract.m +35 -0
  129. package/ios/common/BackgroundGeolocation/MAURLocationManager.h +53 -0
  130. package/ios/common/BackgroundGeolocation/MAURLocationManager.m +308 -0
  131. package/ios/common/BackgroundGeolocation/MAURLogReader.h +26 -0
  132. package/ios/common/BackgroundGeolocation/MAURLogReader.m +122 -0
  133. package/ios/common/BackgroundGeolocation/MAURLogging.h +19 -0
  134. package/ios/common/BackgroundGeolocation/MAURPostLocationTask.h +40 -0
  135. package/ios/common/BackgroundGeolocation/MAURPostLocationTask.m +218 -0
  136. package/ios/common/BackgroundGeolocation/MAURProviderDelegate.h +52 -0
  137. package/ios/common/BackgroundGeolocation/MAURRawLocationProvider.h +18 -0
  138. package/ios/common/BackgroundGeolocation/MAURRawLocationProvider.m +129 -0
  139. package/ios/common/BackgroundGeolocation/MAURSQLiteConfigurationDAO.h +26 -0
  140. package/ios/common/BackgroundGeolocation/MAURSQLiteConfigurationDAO.m +278 -0
  141. package/ios/common/BackgroundGeolocation/MAURSQLiteHelper.h +57 -0
  142. package/ios/common/BackgroundGeolocation/MAURSQLiteHelper.m +93 -0
  143. package/ios/common/BackgroundGeolocation/MAURSQLiteLocationDAO.h +38 -0
  144. package/ios/common/BackgroundGeolocation/MAURSQLiteLocationDAO.m +380 -0
  145. package/ios/common/BackgroundGeolocation/MAURSQLiteOpenHelper.h +32 -0
  146. package/ios/common/BackgroundGeolocation/MAURSQLiteOpenHelper.m +276 -0
  147. package/ios/common/BackgroundGeolocation/MAURUncaughtExceptionLogger.h +20 -0
  148. package/ios/common/BackgroundGeolocation/MAURUncaughtExceptionLogger.m +62 -0
  149. package/ios/common/BackgroundGeolocation/Reachability.h +102 -0
  150. package/ios/common/BackgroundGeolocation/Reachability.m +474 -0
  151. package/ios/common/BackgroundGeolocation/SOMotionDetector/SOLocationManager.h +80 -0
  152. package/ios/common/BackgroundGeolocation/SOMotionDetector/SOLocationManager.m +147 -0
  153. package/ios/common/BackgroundGeolocation/SOMotionDetector/SOMotionActivity.h +30 -0
  154. package/ios/common/BackgroundGeolocation/SOMotionDetector/SOMotionActivity.m +42 -0
  155. package/ios/common/BackgroundGeolocation/SOMotionDetector/SOMotionDetector.h +99 -0
  156. package/ios/common/BackgroundGeolocation/SOMotionDetector/SOMotionDetector.m +327 -0
  157. package/ios/common/BackgroundGeolocation/SOMotionDetector/SOStepDetector.h +44 -0
  158. package/ios/common/BackgroundGeolocation/SOMotionDetector/SOStepDetector.m +94 -0
  159. package/ios/common/BackgroundGeolocation/SQLQueryBuilder/ext/NSString+ZIMString.h +55 -0
  160. package/ios/common/BackgroundGeolocation/SQLQueryBuilder/ext/NSString+ZIMString.m +47 -0
  161. package/ios/common/BackgroundGeolocation/SQLQueryBuilder/sql/ZIMSqlDataManipulationCommand.h +27 -0
  162. package/ios/common/BackgroundGeolocation/SQLQueryBuilder/sql/ZIMSqlExpression.h +250 -0
  163. package/ios/common/BackgroundGeolocation/SQLQueryBuilder/sql/ZIMSqlExpression.m +259 -0
  164. package/ios/common/BackgroundGeolocation/SQLQueryBuilder/sql/ZIMSqlSelectStatement.h +360 -0
  165. package/ios/common/BackgroundGeolocation/SQLQueryBuilder/sql/ZIMSqlSelectStatement.m +427 -0
  166. package/ios/common/BackgroundGeolocation/SQLQueryBuilder/sql/ZIMSqlStatement.h +37 -0
  167. package/lib/module/NitroBackgroundGeolocation.nitro.js +172 -0
  168. package/lib/module/NitroBackgroundGeolocation.nitro.js.map +1 -0
  169. package/lib/module/headless.js +72 -0
  170. package/lib/module/headless.js.map +1 -0
  171. package/lib/module/index.js +60 -0
  172. package/lib/module/index.js.map +1 -0
  173. package/lib/module/package.json +1 -0
  174. package/lib/typescript/package.json +1 -0
  175. package/lib/typescript/src/NitroBackgroundGeolocation.nitro.d.ts +616 -0
  176. package/lib/typescript/src/NitroBackgroundGeolocation.nitro.d.ts.map +1 -0
  177. package/lib/typescript/src/headless.d.ts +40 -0
  178. package/lib/typescript/src/headless.d.ts.map +1 -0
  179. package/lib/typescript/src/index.d.ts +8 -0
  180. package/lib/typescript/src/index.d.ts.map +1 -0
  181. package/nitro.json +23 -0
  182. package/nitrogen/generated/android/c++/JActivity.hpp +61 -0
  183. package/nitrogen/generated/android/c++/JAuthorizationStatus.hpp +61 -0
  184. package/nitrogen/generated/android/c++/JBackgroundGeolocationError.hpp +61 -0
  185. package/nitrogen/generated/android/c++/JConfigureOptions.hpp +179 -0
  186. package/nitrogen/generated/android/c++/JFunc_void.hpp +75 -0
  187. package/nitrogen/generated/android/c++/JFunc_void_Activity.hpp +78 -0
  188. package/nitrogen/generated/android/c++/JFunc_void_AuthorizationStatus.hpp +77 -0
  189. package/nitrogen/generated/android/c++/JFunc_void_BackgroundGeolocationError.hpp +78 -0
  190. package/nitrogen/generated/android/c++/JFunc_void_Location.hpp +78 -0
  191. package/nitrogen/generated/android/c++/JFunc_void_StationaryLocation.hpp +78 -0
  192. package/nitrogen/generated/android/c++/JHybridNitroBackgroundGeolocationSpec.cpp +530 -0
  193. package/nitrogen/generated/android/c++/JHybridNitroBackgroundGeolocationSpec.hpp +90 -0
  194. package/nitrogen/generated/android/c++/JLocation.hpp +105 -0
  195. package/nitrogen/generated/android/c++/JLocationAccuracy.hpp +64 -0
  196. package/nitrogen/generated/android/c++/JLocationOptions.hpp +65 -0
  197. package/nitrogen/generated/android/c++/JLocationProvider.hpp +61 -0
  198. package/nitrogen/generated/android/c++/JLogEntry.hpp +73 -0
  199. package/nitrogen/generated/android/c++/JNativeLogLevel.hpp +67 -0
  200. package/nitrogen/generated/android/c++/JServiceStatus.hpp +66 -0
  201. package/nitrogen/generated/android/c++/JStationaryLocation.hpp +109 -0
  202. package/nitrogen/generated/android/c++/JVariant_NullType_AnyMap.cpp +26 -0
  203. package/nitrogen/generated/android/c++/JVariant_NullType_AnyMap.hpp +71 -0
  204. package/nitrogen/generated/android/c++/JVariant_NullType_Boolean.cpp +26 -0
  205. package/nitrogen/generated/android/c++/JVariant_NullType_Boolean.hpp +69 -0
  206. package/nitrogen/generated/android/c++/JVariant_NullType_Double.cpp +26 -0
  207. package/nitrogen/generated/android/c++/JVariant_NullType_Double.hpp +69 -0
  208. package/nitrogen/generated/android/c++/JVariant_NullType_LocationAccuracy.cpp +26 -0
  209. package/nitrogen/generated/android/c++/JVariant_NullType_LocationAccuracy.hpp +71 -0
  210. package/nitrogen/generated/android/c++/JVariant_NullType_LocationProvider.cpp +26 -0
  211. package/nitrogen/generated/android/c++/JVariant_NullType_LocationProvider.hpp +71 -0
  212. package/nitrogen/generated/android/c++/JVariant_NullType_Map_String__String_.cpp +33 -0
  213. package/nitrogen/generated/android/c++/JVariant_NullType_Map_String__String_.hpp +77 -0
  214. package/nitrogen/generated/android/c++/JVariant_NullType_String.cpp +26 -0
  215. package/nitrogen/generated/android/c++/JVariant_NullType_String.hpp +70 -0
  216. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrobackgroundgeolocation/Activity.kt +56 -0
  217. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrobackgroundgeolocation/AuthorizationStatus.kt +24 -0
  218. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrobackgroundgeolocation/BackgroundGeolocationError.kt +56 -0
  219. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrobackgroundgeolocation/ConfigureOptions.kt +182 -0
  220. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrobackgroundgeolocation/Func_void.kt +80 -0
  221. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrobackgroundgeolocation/Func_void_Activity.kt +80 -0
  222. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrobackgroundgeolocation/Func_void_AuthorizationStatus.kt +80 -0
  223. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrobackgroundgeolocation/Func_void_BackgroundGeolocationError.kt +80 -0
  224. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrobackgroundgeolocation/Func_void_Location.kt +80 -0
  225. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrobackgroundgeolocation/Func_void_StationaryLocation.kt +80 -0
  226. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrobackgroundgeolocation/HybridNitroBackgroundGeolocationSpec.kt +218 -0
  227. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrobackgroundgeolocation/Location.kt +111 -0
  228. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrobackgroundgeolocation/LocationAccuracy.kt +25 -0
  229. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrobackgroundgeolocation/LocationOptions.kt +61 -0
  230. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrobackgroundgeolocation/LocationProvider.kt +24 -0
  231. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrobackgroundgeolocation/LogEntry.kt +71 -0
  232. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrobackgroundgeolocation/NativeLogLevel.kt +26 -0
  233. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrobackgroundgeolocation/ServiceStatus.kt +61 -0
  234. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrobackgroundgeolocation/StationaryLocation.kt +116 -0
  235. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrobackgroundgeolocation/Variant_NullType_AnyMap.kt +63 -0
  236. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrobackgroundgeolocation/Variant_NullType_Boolean.kt +62 -0
  237. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrobackgroundgeolocation/Variant_NullType_Double.kt +62 -0
  238. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrobackgroundgeolocation/Variant_NullType_LocationAccuracy.kt +62 -0
  239. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrobackgroundgeolocation/Variant_NullType_LocationProvider.kt +62 -0
  240. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrobackgroundgeolocation/Variant_NullType_Map_String__String_.kt +62 -0
  241. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrobackgroundgeolocation/Variant_NullType_String.kt +62 -0
  242. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrobackgroundgeolocation/nitrobackgroundgeolocationOnLoad.kt +35 -0
  243. package/nitrogen/generated/android/nitrobackgroundgeolocation+autolinking.cmake +88 -0
  244. package/nitrogen/generated/android/nitrobackgroundgeolocation+autolinking.gradle +27 -0
  245. package/nitrogen/generated/android/nitrobackgroundgeolocationOnLoad.cpp +66 -0
  246. package/nitrogen/generated/android/nitrobackgroundgeolocationOnLoad.hpp +34 -0
  247. package/nitrogen/generated/ios/NitroBackgroundGeolocation+autolinking.rb +62 -0
  248. package/nitrogen/generated/ios/NitroBackgroundGeolocation-Swift-Cxx-Bridge.cpp +129 -0
  249. package/nitrogen/generated/ios/NitroBackgroundGeolocation-Swift-Cxx-Bridge.hpp +911 -0
  250. package/nitrogen/generated/ios/NitroBackgroundGeolocation-Swift-Cxx-Umbrella.hpp +88 -0
  251. package/nitrogen/generated/ios/NitroBackgroundGeolocationAutolinking.mm +33 -0
  252. package/nitrogen/generated/ios/NitroBackgroundGeolocationAutolinking.swift +26 -0
  253. package/nitrogen/generated/ios/c++/HybridNitroBackgroundGeolocationSpecSwift.cpp +11 -0
  254. package/nitrogen/generated/ios/c++/HybridNitroBackgroundGeolocationSpecSwift.hpp +335 -0
  255. package/nitrogen/generated/ios/swift/Activity.swift +34 -0
  256. package/nitrogen/generated/ios/swift/AuthorizationStatus.swift +44 -0
  257. package/nitrogen/generated/ios/swift/BackgroundGeolocationError.swift +34 -0
  258. package/nitrogen/generated/ios/swift/ConfigureOptions.swift +1037 -0
  259. package/nitrogen/generated/ios/swift/Func_void.swift +46 -0
  260. package/nitrogen/generated/ios/swift/Func_void_Activity.swift +46 -0
  261. package/nitrogen/generated/ios/swift/Func_void_AuthorizationStatus.swift +46 -0
  262. package/nitrogen/generated/ios/swift/Func_void_BackgroundGeolocationError.swift +46 -0
  263. package/nitrogen/generated/ios/swift/Func_void_ConfigureOptions.swift +46 -0
  264. package/nitrogen/generated/ios/swift/Func_void_Location.swift +46 -0
  265. package/nitrogen/generated/ios/swift/Func_void_ServiceStatus.swift +46 -0
  266. package/nitrogen/generated/ios/swift/Func_void_StationaryLocation.swift +46 -0
  267. package/nitrogen/generated/ios/swift/Func_void_std__exception_ptr.swift +46 -0
  268. package/nitrogen/generated/ios/swift/Func_void_std__optional_StationaryLocation_.swift +46 -0
  269. package/nitrogen/generated/ios/swift/Func_void_std__vector_Location_.swift +46 -0
  270. package/nitrogen/generated/ios/swift/Func_void_std__vector_LogEntry_.swift +46 -0
  271. package/nitrogen/generated/ios/swift/HybridNitroBackgroundGeolocationSpec.swift +82 -0
  272. package/nitrogen/generated/ios/swift/HybridNitroBackgroundGeolocationSpec_cxx.swift +675 -0
  273. package/nitrogen/generated/ios/swift/Location.swift +89 -0
  274. package/nitrogen/generated/ios/swift/LocationAccuracy.swift +48 -0
  275. package/nitrogen/generated/ios/swift/LocationOptions.swift +78 -0
  276. package/nitrogen/generated/ios/swift/LocationProvider.swift +44 -0
  277. package/nitrogen/generated/ios/swift/LogEntry.swift +49 -0
  278. package/nitrogen/generated/ios/swift/NativeLogLevel.swift +52 -0
  279. package/nitrogen/generated/ios/swift/ServiceStatus.swift +39 -0
  280. package/nitrogen/generated/ios/swift/StationaryLocation.swift +94 -0
  281. package/nitrogen/generated/ios/swift/Variant_NullType_AnyMap.swift +30 -0
  282. package/nitrogen/generated/ios/swift/Variant_NullType_Bool.swift +30 -0
  283. package/nitrogen/generated/ios/swift/Variant_NullType_Dictionary_String__String_.swift +30 -0
  284. package/nitrogen/generated/ios/swift/Variant_NullType_Double.swift +30 -0
  285. package/nitrogen/generated/ios/swift/Variant_NullType_LocationAccuracy.swift +30 -0
  286. package/nitrogen/generated/ios/swift/Variant_NullType_LocationProvider.swift +30 -0
  287. package/nitrogen/generated/ios/swift/Variant_NullType_String.swift +30 -0
  288. package/nitrogen/generated/shared/c++/Activity.hpp +87 -0
  289. package/nitrogen/generated/shared/c++/AuthorizationStatus.hpp +63 -0
  290. package/nitrogen/generated/shared/c++/BackgroundGeolocationError.hpp +87 -0
  291. package/nitrogen/generated/shared/c++/ConfigureOptions.hpp +197 -0
  292. package/nitrogen/generated/shared/c++/HybridNitroBackgroundGeolocationSpec.cpp +48 -0
  293. package/nitrogen/generated/shared/c++/HybridNitroBackgroundGeolocationSpec.hpp +121 -0
  294. package/nitrogen/generated/shared/c++/Location.hpp +131 -0
  295. package/nitrogen/generated/shared/c++/LocationAccuracy.hpp +69 -0
  296. package/nitrogen/generated/shared/c++/LocationOptions.hpp +91 -0
  297. package/nitrogen/generated/shared/c++/LocationProvider.hpp +63 -0
  298. package/nitrogen/generated/shared/c++/LogEntry.hpp +99 -0
  299. package/nitrogen/generated/shared/c++/NativeLogLevel.hpp +65 -0
  300. package/nitrogen/generated/shared/c++/ServiceStatus.hpp +92 -0
  301. package/nitrogen/generated/shared/c++/StationaryLocation.hpp +135 -0
  302. package/package.json +112 -0
  303. package/react-native.config.js +10 -0
  304. package/src/NitroBackgroundGeolocation.nitro.ts +656 -0
  305. package/src/headless.ts +91 -0
  306. package/src/index.tsx +100 -0
@@ -0,0 +1,542 @@
1
+ package com.marianhello.bgloc;
2
+
3
+ import android.Manifest;
4
+ import android.accounts.Account;
5
+ import android.annotation.TargetApi;
6
+ import android.content.BroadcastReceiver;
7
+ import android.content.Context;
8
+ import android.content.Intent;
9
+ import android.content.IntentFilter;
10
+ import android.content.pm.PackageManager;
11
+ import android.location.Location;
12
+ import android.net.Uri;
13
+ import android.os.Build;
14
+ import android.os.Bundle;
15
+ import android.provider.Settings;
16
+ import android.provider.Settings.SettingNotFoundException;
17
+ import androidx.core.content.ContextCompat;
18
+ import androidx.localbroadcastmanager.content.LocalBroadcastManager;
19
+ import android.text.TextUtils;
20
+
21
+ import com.github.jparkie.promise.Promise;
22
+ import com.intentfilter.androidpermissions.PermissionManager;
23
+ import com.intentfilter.androidpermissions.models.DeniedPermissions;
24
+ import com.marianhello.bgloc.data.BackgroundActivity;
25
+ import com.marianhello.bgloc.data.BackgroundLocation;
26
+ import com.marianhello.bgloc.data.ConfigurationDAO;
27
+ import com.marianhello.bgloc.data.DAOFactory;
28
+ import com.marianhello.bgloc.data.LocationDAO;
29
+ import com.marianhello.bgloc.provider.LocationProvider;
30
+ import com.marianhello.bgloc.service.LocationService;
31
+ import com.marianhello.bgloc.service.LocationServiceImpl;
32
+ import com.marianhello.bgloc.service.LocationServiceProxy;
33
+ import com.marianhello.bgloc.data.LocationTransform;
34
+ import com.marianhello.bgloc.sync.AccountHelper;
35
+ import com.marianhello.bgloc.sync.NotificationHelper;
36
+ import com.marianhello.bgloc.sync.SyncService;
37
+ import com.marianhello.logging.DBLogReader;
38
+ import com.marianhello.logging.LogEntry;
39
+ import com.marianhello.logging.LoggerManager;
40
+ import com.marianhello.logging.UncaughtExceptionLogger;
41
+
42
+ import org.json.JSONException;
43
+ import org.slf4j.event.Level;
44
+
45
+ import java.util.Arrays;
46
+ import java.util.Collection;
47
+ import java.util.concurrent.TimeoutException;
48
+
49
+ public class BackgroundGeolocationFacade {
50
+
51
+ public static final int SERVICE_STARTED = 1;
52
+ public static final int SERVICE_STOPPED = 0;
53
+ public static final int AUTHORIZATION_AUTHORIZED = 1;
54
+ public static final int AUTHORIZATION_DENIED = 0;
55
+
56
+ public static final String[] PERMISSIONS = {
57
+ Manifest.permission.ACCESS_COARSE_LOCATION,
58
+ Manifest.permission.ACCESS_FINE_LOCATION,
59
+ };
60
+
61
+ private boolean mServiceBroadcastReceiverRegistered = false;
62
+ private boolean mLocationModeChangeReceiverRegistered = false;
63
+ private boolean mIsPaused = false;
64
+
65
+ private Config mConfig;
66
+ private final Context mContext;
67
+ private final PluginDelegate mDelegate;
68
+ private final LocationService mService;
69
+
70
+ private BackgroundLocation mStationaryLocation;
71
+
72
+ private org.slf4j.Logger logger;
73
+
74
+ public BackgroundGeolocationFacade(Context context, PluginDelegate delegate) {
75
+ mContext = context;
76
+ mDelegate = delegate;
77
+ mService = new LocationServiceProxy(context);
78
+
79
+ UncaughtExceptionLogger.register(context.getApplicationContext());
80
+
81
+ logger = LoggerManager.getLogger(BackgroundGeolocationFacade.class);
82
+ LoggerManager.enableDBLogging();
83
+
84
+ logger.info("Initializing plugin");
85
+
86
+ NotificationHelper.registerAllChannels(getApplicationContext());
87
+ }
88
+
89
+ private BroadcastReceiver locationModeChangeReceiver = new BroadcastReceiver() {
90
+ @Override
91
+ public void onReceive(Context context, Intent intent) {
92
+ logger.debug("Authorization has changed");
93
+ mDelegate.onAuthorizationChanged(getAuthorizationStatus());
94
+ }
95
+ };
96
+
97
+ private BroadcastReceiver serviceBroadcastReceiver = new BroadcastReceiver() {
98
+ @Override
99
+ public void onReceive(Context context, Intent intent) {
100
+ Bundle bundle = intent.getExtras();
101
+ int action = bundle.getInt("action");
102
+
103
+ switch (action) {
104
+ case LocationServiceImpl.MSG_ON_LOCATION: {
105
+ logger.debug("Received MSG_ON_LOCATION");
106
+ bundle.setClassLoader(LocationServiceImpl.class.getClassLoader());
107
+ BackgroundLocation location = (BackgroundLocation) bundle.getParcelable("payload");
108
+ mDelegate.onLocationChanged(location);
109
+ return;
110
+ }
111
+
112
+ case LocationServiceImpl.MSG_ON_STATIONARY: {
113
+ logger.debug("Received MSG_ON_STATIONARY");
114
+ bundle.setClassLoader(LocationServiceImpl.class.getClassLoader());
115
+ BackgroundLocation location = (BackgroundLocation) bundle.getParcelable("payload");
116
+ mStationaryLocation = location;
117
+ mDelegate.onStationaryChanged(location);
118
+ return;
119
+ }
120
+
121
+ case LocationServiceImpl.MSG_ON_ACTIVITY: {
122
+ logger.debug("Received MSG_ON_ACTIVITY");
123
+ bundle.setClassLoader(LocationServiceImpl.class.getClassLoader());
124
+ BackgroundActivity activity = (BackgroundActivity) bundle.getParcelable("payload");
125
+ mDelegate.onActivityChanged(activity);
126
+ return;
127
+ }
128
+
129
+ case LocationServiceImpl.MSG_ON_ERROR: {
130
+ logger.debug("Received MSG_ON_ERROR");
131
+ Bundle errorBundle = bundle.getBundle("payload");
132
+ Integer errorCode = errorBundle.getInt("code");
133
+ String errorMessage = errorBundle.getString("message");
134
+ mDelegate.onError(new PluginException(errorMessage, errorCode));
135
+ return;
136
+ }
137
+
138
+ case LocationServiceImpl.MSG_ON_SERVICE_STARTED: {
139
+ logger.debug("Received MSG_ON_SERVICE_STARTED");
140
+ mDelegate.onServiceStatusChanged(SERVICE_STARTED);
141
+ return;
142
+ }
143
+
144
+ case LocationServiceImpl.MSG_ON_SERVICE_STOPPED: {
145
+ logger.debug("Received MSG_ON_SERVICE_STOPPED");
146
+ mDelegate.onServiceStatusChanged(SERVICE_STOPPED);
147
+ return;
148
+ }
149
+
150
+ case LocationServiceImpl.MSG_ON_ABORT_REQUESTED: {
151
+ logger.debug("Received MSG_ON_ABORT_REQUESTED");
152
+
153
+ if (mDelegate != null) {
154
+ // We have a delegate, tell it that there's a request.
155
+ // It will decide whether to stop or not.
156
+ mDelegate.onAbortRequested();
157
+ } else {
158
+ // No delegate, we may be running in the background.
159
+ // Let's just stop.
160
+ stop();
161
+ }
162
+
163
+ return;
164
+ }
165
+
166
+ case LocationServiceImpl.MSG_ON_HTTP_AUTHORIZATION: {
167
+ logger.debug("Received MSG_ON_HTTP_AUTHORIZATION");
168
+
169
+ if (mDelegate != null) {
170
+ mDelegate.onHttpAuthorization();
171
+ }
172
+
173
+ return;
174
+ }
175
+ }
176
+ }
177
+ };
178
+
179
+ @TargetApi(Build.VERSION_CODES.KITKAT)
180
+ private synchronized void registerLocationModeChangeReceiver() {
181
+ if (mLocationModeChangeReceiverRegistered) return;
182
+
183
+ getContext().registerReceiver(locationModeChangeReceiver, new IntentFilter(android.location.LocationManager.MODE_CHANGED_ACTION));
184
+ mLocationModeChangeReceiverRegistered = true;
185
+ }
186
+
187
+ private synchronized void unregisterLocationModeChangeReceiver() {
188
+ if (!mLocationModeChangeReceiverRegistered) return;
189
+
190
+ Context context = getContext();
191
+ if (context != null) {
192
+ context.unregisterReceiver(locationModeChangeReceiver);
193
+ }
194
+ mLocationModeChangeReceiverRegistered = false;
195
+ }
196
+
197
+ private synchronized void registerServiceBroadcast() {
198
+ if (mServiceBroadcastReceiverRegistered) return;
199
+
200
+ LocalBroadcastManager.getInstance(getContext()).registerReceiver(serviceBroadcastReceiver, new IntentFilter(LocationServiceImpl.ACTION_BROADCAST));
201
+ mServiceBroadcastReceiverRegistered = true;
202
+ }
203
+
204
+ private synchronized void unregisterServiceBroadcast() {
205
+ if (!mServiceBroadcastReceiverRegistered) return;
206
+
207
+ Context context = getContext();
208
+ if (context != null) {
209
+ LocalBroadcastManager.getInstance(context).unregisterReceiver(serviceBroadcastReceiver);
210
+ }
211
+
212
+ mServiceBroadcastReceiverRegistered = false;
213
+ }
214
+
215
+ public void start() {
216
+ logger.debug("Starting service");
217
+
218
+ PermissionManager permissionManager = PermissionManager.getInstance(getContext());
219
+ permissionManager.checkPermissions(Arrays.asList(PERMISSIONS), new PermissionManager.PermissionRequestListener() {
220
+ @Override
221
+ public void onPermissionGranted() {
222
+ logger.info("User granted requested permissions");
223
+ permissionManager.checkPermissions(Arrays.asList(Manifest.permission.POST_NOTIFICATIONS), new PermissionManager.PermissionRequestListener() {
224
+ @Override
225
+ public void onPermissionGranted() {} // noop
226
+
227
+ @Override
228
+ public void onPermissionDenied(DeniedPermissions deniedPermissions) {} // noop
229
+ });
230
+
231
+ // watch location mode changes
232
+ registerLocationModeChangeReceiver();
233
+ registerServiceBroadcast();
234
+ startBackgroundService();
235
+ }
236
+
237
+ @Override
238
+ public void onPermissionDenied(DeniedPermissions deniedPermissions) {
239
+ logger.info("User denied requested permissions");
240
+ if (mDelegate != null) {
241
+ mDelegate.onAuthorizationChanged(BackgroundGeolocationFacade.AUTHORIZATION_DENIED);
242
+ }
243
+ }
244
+ });
245
+ }
246
+
247
+ public void stop() {
248
+ logger.debug("Stopping service");
249
+ unregisterLocationModeChangeReceiver();
250
+ // Note: we cannot unregistered service broadcast here
251
+ // because no stop notification from service will arrive
252
+ // unregisterServiceBroadcast();
253
+
254
+ stopBackgroundService();
255
+ }
256
+
257
+ public void pause() {
258
+ mIsPaused = true;
259
+ mService.startForeground();
260
+ }
261
+
262
+ public void resume() {
263
+ mIsPaused = false;
264
+ mService.stopHeadlessTask();
265
+ if (!getConfig().getStartForeground()) {
266
+ mService.stopForeground();
267
+ }
268
+ }
269
+
270
+ public void destroy() {
271
+ logger.info("Destroying plugin");
272
+
273
+ unregisterLocationModeChangeReceiver();
274
+ unregisterServiceBroadcast();
275
+
276
+ if (getConfig().getStopOnTerminate()) {
277
+ stopBackgroundService();
278
+ } else {
279
+ mService.startHeadlessTask();
280
+ }
281
+ }
282
+
283
+ public Collection<BackgroundLocation> getLocations() {
284
+ LocationDAO dao = DAOFactory.createLocationDAO(getContext());
285
+ return dao.getAllLocations();
286
+ }
287
+
288
+ public Collection<BackgroundLocation> getValidLocations() {
289
+ LocationDAO dao = DAOFactory.createLocationDAO(getContext());
290
+ return dao.getValidLocations();
291
+ }
292
+
293
+ public Collection<BackgroundLocation> getValidLocationsAndDelete() {
294
+ LocationDAO dao = DAOFactory.createLocationDAO(getContext());
295
+ return dao.getValidLocationsAndDelete();
296
+ }
297
+
298
+ public BackgroundLocation getStationaryLocation() {
299
+ return mStationaryLocation;
300
+ }
301
+
302
+ public void deleteLocation(Long locationId) {
303
+ logger.info("Deleting location locationId={}", locationId);
304
+ LocationDAO dao = DAOFactory.createLocationDAO(getContext());
305
+ dao.deleteLocationById(locationId.longValue());
306
+ }
307
+
308
+ public void deleteAllLocations() {
309
+ logger.info("Deleting all locations");
310
+ LocationDAO dao = DAOFactory.createLocationDAO(getContext());
311
+ dao.deleteAllLocations();
312
+ }
313
+
314
+ public BackgroundLocation getCurrentLocation(int timeout, long maximumAge, boolean enableHighAccuracy) throws PluginException {
315
+ logger.info("Getting current location with timeout:{} maximumAge:{} enableHighAccuracy:{}", timeout, maximumAge, enableHighAccuracy);
316
+
317
+ LocationManager locationManager = LocationManager.getInstance(getContext());
318
+ Promise<Location> promise = locationManager.getCurrentLocation(timeout, maximumAge, enableHighAccuracy);
319
+ try {
320
+ promise.await();
321
+ Location location = promise.get();
322
+ if (location != null) {
323
+ return BackgroundLocation.fromLocation(location);
324
+ }
325
+
326
+ Throwable error = promise.getError();
327
+ if (error == null) {
328
+ throw new PluginException("Location not available", 2); // LOCATION_UNAVAILABLE
329
+ }
330
+ if (error instanceof LocationManager.PermissionDeniedException) {
331
+ logger.warn("Getting current location failed due missing permissions");
332
+ throw new PluginException("Permission denied", 1); // PERMISSION_DENIED
333
+ }
334
+ if (error instanceof TimeoutException) {
335
+ throw new PluginException("Location request timed out", 3); // TIME_OUT
336
+ }
337
+
338
+ throw new PluginException(error.getMessage(), 2); // LOCATION_UNAVAILABLE
339
+ } catch (InterruptedException e) {
340
+ logger.error("Interrupted while waiting location", e);
341
+ Thread.currentThread().interrupt();
342
+ throw new RuntimeException("Interrupted while waiting location", e);
343
+ }
344
+ }
345
+
346
+ public void switchMode(final int mode) {
347
+ mService.executeProviderCommand(LocationProvider.CMD_SWITCH_MODE, mode);
348
+ }
349
+
350
+ public void sendCommand(final int commandId) {
351
+ mService.executeProviderCommand(commandId, 0);
352
+ }
353
+
354
+ public synchronized void configure(Config config) throws PluginException {
355
+ try
356
+ {
357
+ Config newConfig = Config.merge(getStoredConfig(), config);
358
+ persistConfiguration(newConfig);
359
+ logger.debug("Service configured with: {}", newConfig.toString());
360
+ mConfig = newConfig;
361
+ mService.configure(newConfig);
362
+ } catch (Exception e) {
363
+ logger.error("Configuration error: {}", e.getMessage());
364
+ throw new PluginException("Configuration error", e, PluginException.CONFIGURE_ERROR);
365
+ }
366
+ }
367
+
368
+ public synchronized void reconfigure(Config config) throws PluginException {
369
+ try
370
+ {
371
+ persistConfiguration(config);
372
+ logger.debug("Service reconfigured with: {}", config.toString());
373
+ mConfig = config;
374
+ mService.configure(config);
375
+ } catch (Exception e) {
376
+ logger.error("Configuration error: {}", e.getMessage());
377
+ throw new PluginException("Configuration error", e, PluginException.CONFIGURE_ERROR);
378
+ }
379
+ }
380
+
381
+ public synchronized Config getConfig() {
382
+ if (mConfig != null) {
383
+ return mConfig;
384
+ }
385
+
386
+ try {
387
+ mConfig = getStoredConfig();
388
+ } catch (PluginException e) {
389
+ logger.error("Error getting stored config will use default", e.getMessage());
390
+ mConfig = Config.getDefault();
391
+ }
392
+
393
+ return mConfig;
394
+ }
395
+
396
+ public synchronized Config getStoredConfig() throws PluginException {
397
+ try {
398
+ ConfigurationDAO dao = DAOFactory.createConfigurationDAO(getContext());
399
+ Config config = dao.retrieveConfiguration();
400
+ if (config == null) {
401
+ config = Config.getDefault();
402
+ }
403
+ return config;
404
+ } catch (JSONException e) {
405
+ logger.error("Error getting stored config: {}", e.getMessage());
406
+ throw new PluginException("Error getting stored config", e, PluginException.JSON_ERROR);
407
+ }
408
+ }
409
+
410
+ public Collection<LogEntry> getLogEntries(int limit) {
411
+ DBLogReader logReader = new DBLogReader();
412
+ return logReader.getEntries(limit, 0, Level.DEBUG);
413
+ }
414
+
415
+ public Collection<LogEntry> getLogEntries(int limit, int offset, String minLevel) {
416
+ DBLogReader logReader = new DBLogReader();
417
+ return logReader.getEntries(limit, offset, Level.valueOf(minLevel));
418
+ }
419
+
420
+ /**
421
+ * Force location sync
422
+ *
423
+ * Method is ignoring syncThreshold and also user sync settings preference
424
+ * and sync locations to defined syncUrl
425
+ */
426
+ public void forceSync() {
427
+ logger.debug("Sync locations forced");
428
+ ResourceResolver resolver = ResourceResolver.newInstance(getContext());
429
+ Account syncAccount = AccountHelper.CreateSyncAccount(getContext(), resolver.getAccountName(),
430
+ resolver.getAccountType());
431
+ SyncService.sync(syncAccount, resolver.getAuthority(), true);
432
+ }
433
+
434
+ public int getAuthorizationStatus() {
435
+ return hasPermissions() ? AUTHORIZATION_AUTHORIZED : AUTHORIZATION_DENIED;
436
+ }
437
+
438
+ public boolean hasPermissions() {
439
+ return hasPermissions(getContext(), PERMISSIONS);
440
+ }
441
+
442
+ public boolean locationServicesEnabled() throws PluginException {
443
+ Context context = getContext();
444
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
445
+ int locationMode = 0;
446
+ try {
447
+ locationMode = Settings.Secure.getInt(context.getContentResolver(), Settings.Secure.LOCATION_MODE);
448
+ return locationMode != Settings.Secure.LOCATION_MODE_OFF;
449
+ } catch (SettingNotFoundException e) {
450
+ logger.error("Location services check failed", e);
451
+ throw new PluginException("Location services check failed", e, PluginException.SETTINGS_ERROR);
452
+ }
453
+ } else {
454
+ String locationProviders = Settings.Secure.getString(context.getContentResolver(), Settings.Secure.LOCATION_PROVIDERS_ALLOWED);
455
+ return !TextUtils.isEmpty(locationProviders);
456
+ }
457
+ }
458
+
459
+ public void registerHeadlessTask(final String taskRunnerClass) {
460
+ logger.info("Registering headless task: {}", taskRunnerClass);
461
+ mService.registerHeadlessTask(taskRunnerClass);
462
+ }
463
+
464
+ public void clearHeadlessTask() {
465
+ logger.info("Clearing headless task");
466
+ mService.clearHeadlessTask();
467
+ }
468
+
469
+ private void startBackgroundService() {
470
+ logger.info("Attempt to start bg service");
471
+ if (mIsPaused) {
472
+ mService.startForegroundService();
473
+ } else {
474
+ mService.start();
475
+ }
476
+ }
477
+
478
+ private void stopBackgroundService() {
479
+ logger.info("Attempt to stop bg service");
480
+ mService.stop();
481
+ }
482
+
483
+ public boolean isRunning() {
484
+ return ((LocationServiceProxy) mService).isRunning();
485
+ }
486
+
487
+ private void persistConfiguration(Config config) throws NullPointerException {
488
+ ConfigurationDAO dao = DAOFactory.createConfigurationDAO(getContext());
489
+ dao.persistConfiguration(config);
490
+ }
491
+
492
+ private Context getContext() {
493
+ return mContext;
494
+ }
495
+
496
+ private Context getApplicationContext() {
497
+ return mContext.getApplicationContext();
498
+ }
499
+
500
+ public static void showAppSettings(Context context) {
501
+ Intent intent = new Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS);
502
+ intent.addCategory(Intent.CATEGORY_DEFAULT);
503
+ intent.setData(Uri.parse("package:" + context.getPackageName()));
504
+ intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
505
+ intent.addFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);
506
+ intent.addFlags(Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS);
507
+ context.startActivity(intent);
508
+ }
509
+
510
+ public static void showLocationSettings(Context context) {
511
+ Intent intent = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS);
512
+ intent.addCategory(Intent.CATEGORY_DEFAULT);
513
+ intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
514
+ intent.addFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);
515
+ intent.addFlags(Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS);
516
+ context.startActivity(intent);
517
+ }
518
+
519
+ public static boolean hasPermissions(Context context, String[] permissions) {
520
+ for (String perm: permissions) {
521
+ if (ContextCompat.checkSelfPermission(context, perm) != PackageManager.PERMISSION_GRANTED) {
522
+ return false;
523
+ }
524
+ }
525
+ return true;
526
+ }
527
+
528
+ /**
529
+ * Sets a transform for each coordinate about to be committed (sent or saved for later sync).
530
+ * You can use this for modifying the coordinates in any way.
531
+ *
532
+ * If the transform returns <code>null</code>, it will prevent the location from being committed.
533
+ * @param transform - the transform listener
534
+ */
535
+ public static void setLocationTransform(LocationTransform transform) {
536
+ LocationServiceImpl.setLocationTransform(transform);
537
+ }
538
+
539
+ public static LocationTransform getLocationTransform() {
540
+ return LocationServiceImpl.getLocationTransform();
541
+ }
542
+ }
@@ -0,0 +1,59 @@
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;
11
+
12
+ import android.content.BroadcastReceiver;
13
+ import android.content.Context;
14
+ import android.content.Intent;
15
+ import android.os.Build;
16
+ import android.util.Log;
17
+
18
+ import com.marianhello.bgloc.data.ConfigurationDAO;
19
+ import com.marianhello.bgloc.data.DAOFactory;
20
+ import com.marianhello.bgloc.service.LocationServiceImpl;
21
+
22
+ import org.json.JSONException;
23
+
24
+ /**
25
+ * BootCompletedReceiver class
26
+ */
27
+ public class BootCompletedReceiver extends BroadcastReceiver {
28
+ private static final String TAG = BootCompletedReceiver.class.getName();
29
+
30
+ @Override
31
+ public void onReceive(Context context, Intent intent) {
32
+ Log.d(TAG, "Received boot completed");
33
+ ConfigurationDAO dao = DAOFactory.createConfigurationDAO(context);
34
+ Config config = null;
35
+
36
+ try {
37
+ config = dao.retrieveConfiguration();
38
+ } catch (JSONException e) {
39
+ //noop
40
+ }
41
+
42
+ if (config == null) { return; }
43
+
44
+ Log.d(TAG, "Boot completed " + config.toString());
45
+
46
+ if (config.getStartOnBoot()) {
47
+ Log.i(TAG, "Starting service after boot");
48
+ Intent locationServiceIntent = new Intent(context, LocationServiceImpl.class);
49
+ locationServiceIntent.addFlags(Intent.FLAG_FROM_BACKGROUND);
50
+ locationServiceIntent.putExtra("config", config);
51
+
52
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
53
+ context.startForegroundService(locationServiceIntent);
54
+ } else {
55
+ context.startService(locationServiceIntent);
56
+ }
57
+ }
58
+ }
59
+ }