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.
- package/NitroBackgroundGeolocation.podspec +29 -0
- package/android/CMakeLists.txt +24 -0
- package/android/build.gradle +133 -0
- package/android/src/main/AndroidManifest.xml +65 -0
- package/android/src/main/cpp/cpp-adapter.cpp +11 -0
- package/android/src/main/java/com/margelo/nitro/nitrobackgroundgeolocation/ConfigMapper.kt +332 -0
- package/android/src/main/java/com/margelo/nitro/nitrobackgroundgeolocation/HeadlessTaskRegistry.kt +23 -0
- package/android/src/main/java/com/margelo/nitro/nitrobackgroundgeolocation/HeadlessTaskService.kt +66 -0
- package/android/src/main/java/com/margelo/nitro/nitrobackgroundgeolocation/NitroBackgroundGeolocation.kt +538 -0
- package/android/src/main/java/com/margelo/nitro/nitrobackgroundgeolocation/NitroBackgroundGeolocationPackage.kt +22 -0
- package/android/src/main/java/com/margelo/nitro/nitrobackgroundgeolocation/ReactNativeHeadlessTaskRunner.kt +62 -0
- package/android/src/main/java/com/marianhello/bgloc/BackgroundGeolocationFacade.java +542 -0
- package/android/src/main/java/com/marianhello/bgloc/BootCompletedReceiver.java +59 -0
- package/android/src/main/java/com/marianhello/bgloc/Config.java +652 -0
- package/android/src/main/java/com/marianhello/bgloc/ConnectivityListener.java +5 -0
- package/android/src/main/java/com/marianhello/bgloc/HttpPostService.java +168 -0
- package/android/src/main/java/com/marianhello/bgloc/LocationManager.java +138 -0
- package/android/src/main/java/com/marianhello/bgloc/PluginDelegate.java +19 -0
- package/android/src/main/java/com/marianhello/bgloc/PluginException.java +38 -0
- package/android/src/main/java/com/marianhello/bgloc/PostLocationTask.java +186 -0
- package/android/src/main/java/com/marianhello/bgloc/ResourceResolver.java +55 -0
- package/android/src/main/java/com/marianhello/bgloc/data/AbstractLocationTemplate.java +69 -0
- package/android/src/main/java/com/marianhello/bgloc/data/ArrayListLocationTemplate.java +88 -0
- package/android/src/main/java/com/marianhello/bgloc/data/BackgroundActivity.java +108 -0
- package/android/src/main/java/com/marianhello/bgloc/data/BackgroundLocation.java +994 -0
- package/android/src/main/java/com/marianhello/bgloc/data/ConfigurationDAO.java +13 -0
- package/android/src/main/java/com/marianhello/bgloc/data/DAOFactory.java +17 -0
- package/android/src/main/java/com/marianhello/bgloc/data/HashMapLocationTemplate.java +82 -0
- package/android/src/main/java/com/marianhello/bgloc/data/LocationDAO.java +22 -0
- package/android/src/main/java/com/marianhello/bgloc/data/LocationTemplate.java +12 -0
- package/android/src/main/java/com/marianhello/bgloc/data/LocationTemplateFactory.java +65 -0
- package/android/src/main/java/com/marianhello/bgloc/data/LocationTransform.java +19 -0
- package/android/src/main/java/com/marianhello/bgloc/data/provider/ContentProviderLocationDAO.java +395 -0
- package/android/src/main/java/com/marianhello/bgloc/data/provider/LocationContentProvider.java +321 -0
- package/android/src/main/java/com/marianhello/bgloc/data/sqlite/SQLiteConfigurationContract.java +76 -0
- package/android/src/main/java/com/marianhello/bgloc/data/sqlite/SQLiteConfigurationDAO.java +160 -0
- package/android/src/main/java/com/marianhello/bgloc/data/sqlite/SQLiteLocationContract.java +112 -0
- package/android/src/main/java/com/marianhello/bgloc/data/sqlite/SQLiteLocationDAO.java +506 -0
- package/android/src/main/java/com/marianhello/bgloc/data/sqlite/SQLiteOpenHelper.java +151 -0
- package/android/src/main/java/com/marianhello/bgloc/headless/AbstractTaskRunner.java +15 -0
- package/android/src/main/java/com/marianhello/bgloc/headless/ActivityTask.java +48 -0
- package/android/src/main/java/com/marianhello/bgloc/headless/JsCallback.java +10 -0
- package/android/src/main/java/com/marianhello/bgloc/headless/LocationTask.java +61 -0
- package/android/src/main/java/com/marianhello/bgloc/headless/StationaryTask.java +25 -0
- package/android/src/main/java/com/marianhello/bgloc/headless/Task.java +8 -0
- package/android/src/main/java/com/marianhello/bgloc/headless/TaskRunner.java +5 -0
- package/android/src/main/java/com/marianhello/bgloc/headless/TaskRunnerFactory.java +8 -0
- package/android/src/main/java/com/marianhello/bgloc/provider/AbstractLocationProvider.java +171 -0
- package/android/src/main/java/com/marianhello/bgloc/provider/ActivityRecognitionLocationProvider.java +280 -0
- package/android/src/main/java/com/marianhello/bgloc/provider/DistanceFilterLocationProvider.java +586 -0
- package/android/src/main/java/com/marianhello/bgloc/provider/LocationProvider.java +32 -0
- package/android/src/main/java/com/marianhello/bgloc/provider/LocationProviderFactory.java +47 -0
- package/android/src/main/java/com/marianhello/bgloc/provider/ProviderDelegate.java +12 -0
- package/android/src/main/java/com/marianhello/bgloc/provider/RawLocationProvider.java +142 -0
- package/android/src/main/java/com/marianhello/bgloc/service/LocationService.java +17 -0
- package/android/src/main/java/com/marianhello/bgloc/service/LocationServiceImpl.java +760 -0
- package/android/src/main/java/com/marianhello/bgloc/service/LocationServiceInfo.java +6 -0
- package/android/src/main/java/com/marianhello/bgloc/service/LocationServiceInfoImpl.java +41 -0
- package/android/src/main/java/com/marianhello/bgloc/service/LocationServiceIntentBuilder.java +203 -0
- package/android/src/main/java/com/marianhello/bgloc/service/LocationServiceProxy.java +140 -0
- package/android/src/main/java/com/marianhello/bgloc/sync/AccountHelper.java +39 -0
- package/android/src/main/java/com/marianhello/bgloc/sync/Authenticator.java +68 -0
- package/android/src/main/java/com/marianhello/bgloc/sync/AuthenticatorService.java +28 -0
- package/android/src/main/java/com/marianhello/bgloc/sync/BatchManager.java +246 -0
- package/android/src/main/java/com/marianhello/bgloc/sync/NotificationHelper.java +148 -0
- package/android/src/main/java/com/marianhello/bgloc/sync/SyncAdapter.java +233 -0
- package/android/src/main/java/com/marianhello/bgloc/sync/SyncService.java +68 -0
- package/android/src/main/java/com/marianhello/logging/DBLogReader.java +203 -0
- package/android/src/main/java/com/marianhello/logging/LogEntry.java +99 -0
- package/android/src/main/java/com/marianhello/logging/LoggerManager.java +70 -0
- package/android/src/main/java/com/marianhello/logging/UncaughtExceptionLogger.java +36 -0
- package/android/src/main/java/com/marianhello/utils/CloneHelper.java +22 -0
- package/android/src/main/java/com/marianhello/utils/Convert.java +56 -0
- package/android/src/main/java/com/marianhello/utils/TextUtils.java +72 -0
- package/android/src/main/java/com/marianhello/utils/ToneGenerator.java +68 -0
- package/android/src/main/java/org/apache/commons/io/Charsets.java +153 -0
- package/android/src/main/java/org/apache/commons/io/input/ReversedLinesFileReader.java +344 -0
- package/android/src/main/java/org/chromium/content/browser/ThreadUtils.java +134 -0
- package/android/src/main/java/ru/andremoniy/sqlbuilder/SqlExpression.java +398 -0
- package/android/src/main/java/ru/andremoniy/sqlbuilder/SqlSelectStatement.java +671 -0
- package/android/src/main/java/ru/andremoniy/sqlbuilder/SqlStatement.java +29 -0
- package/android/src/main/java/ru/andremoniy/utils/TextUtils.java +61 -0
- package/android/src/main/res/values/strings.xml +6 -0
- package/android/src/main/res/xml/authenticator.xml +7 -0
- package/android/src/main/res/xml/syncadapter.xml +9 -0
- package/app.plugin.js +64 -0
- package/ios/NitroBackgroundGeolocation.swift +719 -0
- package/ios/NitroBackgroundGeolocationBootstrap.m +98 -0
- package/ios/common/BackgroundGeolocation/CocoaLumberjack.h +1945 -0
- package/ios/common/BackgroundGeolocation/CocoaLumberjack.m +5255 -0
- package/ios/common/BackgroundGeolocation/FMDB.h +2357 -0
- package/ios/common/BackgroundGeolocation/FMDB.m +2672 -0
- package/ios/common/BackgroundGeolocation/FMDBLogger.h +42 -0
- package/ios/common/BackgroundGeolocation/FMDBLogger.m +264 -0
- package/ios/common/BackgroundGeolocation/INTULocationManager/INTUHeadingRequest.h +41 -0
- package/ios/common/BackgroundGeolocation/INTULocationManager/INTUHeadingRequest.m +68 -0
- package/ios/common/BackgroundGeolocation/INTULocationManager/INTULocationManager+Internal.h +33 -0
- package/ios/common/BackgroundGeolocation/INTULocationManager/INTULocationManager.h +178 -0
- package/ios/common/BackgroundGeolocation/INTULocationManager/INTULocationManager.m +1025 -0
- package/ios/common/BackgroundGeolocation/INTULocationManager/INTULocationRequest.h +103 -0
- package/ios/common/BackgroundGeolocation/INTULocationManager/INTULocationRequest.m +238 -0
- package/ios/common/BackgroundGeolocation/INTULocationManager/INTULocationRequestDefines.h +163 -0
- package/ios/common/BackgroundGeolocation/INTULocationManager/INTURequestIDGenerator.h +39 -0
- package/ios/common/BackgroundGeolocation/INTULocationManager/INTURequestIDGenerator.m +37 -0
- package/ios/common/BackgroundGeolocation/MAURAbstractLocationProvider.h +51 -0
- package/ios/common/BackgroundGeolocation/MAURAbstractLocationProvider.m +53 -0
- package/ios/common/BackgroundGeolocation/MAURActivity.h +23 -0
- package/ios/common/BackgroundGeolocation/MAURActivity.m +52 -0
- package/ios/common/BackgroundGeolocation/MAURActivityLocationProvider.h +18 -0
- package/ios/common/BackgroundGeolocation/MAURActivityLocationProvider.m +202 -0
- package/ios/common/BackgroundGeolocation/MAURBackgroundGeolocationFacade.h +62 -0
- package/ios/common/BackgroundGeolocation/MAURBackgroundGeolocationFacade.m +650 -0
- package/ios/common/BackgroundGeolocation/MAURBackgroundSync.h +34 -0
- package/ios/common/BackgroundGeolocation/MAURBackgroundSync.m +184 -0
- package/ios/common/BackgroundGeolocation/MAURBackgroundTaskManager.h +25 -0
- package/ios/common/BackgroundGeolocation/MAURBackgroundTaskManager.m +105 -0
- package/ios/common/BackgroundGeolocation/MAURConfig.h +74 -0
- package/ios/common/BackgroundGeolocation/MAURConfig.m +485 -0
- package/ios/common/BackgroundGeolocation/MAURConfigurationContract.h +49 -0
- package/ios/common/BackgroundGeolocation/MAURConfigurationContract.m +51 -0
- package/ios/common/BackgroundGeolocation/MAURDistanceFilterLocationProvider.h +20 -0
- package/ios/common/BackgroundGeolocation/MAURDistanceFilterLocationProvider.m +523 -0
- package/ios/common/BackgroundGeolocation/MAURGeolocationOpenHelper.h +17 -0
- package/ios/common/BackgroundGeolocation/MAURGeolocationOpenHelper.m +97 -0
- package/ios/common/BackgroundGeolocation/MAURLocation.h +59 -0
- package/ios/common/BackgroundGeolocation/MAURLocation.m +349 -0
- package/ios/common/BackgroundGeolocation/MAURLocationContract.h +34 -0
- package/ios/common/BackgroundGeolocation/MAURLocationContract.m +35 -0
- package/ios/common/BackgroundGeolocation/MAURLocationManager.h +53 -0
- package/ios/common/BackgroundGeolocation/MAURLocationManager.m +308 -0
- package/ios/common/BackgroundGeolocation/MAURLogReader.h +26 -0
- package/ios/common/BackgroundGeolocation/MAURLogReader.m +122 -0
- package/ios/common/BackgroundGeolocation/MAURLogging.h +19 -0
- package/ios/common/BackgroundGeolocation/MAURPostLocationTask.h +40 -0
- package/ios/common/BackgroundGeolocation/MAURPostLocationTask.m +218 -0
- package/ios/common/BackgroundGeolocation/MAURProviderDelegate.h +52 -0
- package/ios/common/BackgroundGeolocation/MAURRawLocationProvider.h +18 -0
- package/ios/common/BackgroundGeolocation/MAURRawLocationProvider.m +129 -0
- package/ios/common/BackgroundGeolocation/MAURSQLiteConfigurationDAO.h +26 -0
- package/ios/common/BackgroundGeolocation/MAURSQLiteConfigurationDAO.m +278 -0
- package/ios/common/BackgroundGeolocation/MAURSQLiteHelper.h +57 -0
- package/ios/common/BackgroundGeolocation/MAURSQLiteHelper.m +93 -0
- package/ios/common/BackgroundGeolocation/MAURSQLiteLocationDAO.h +38 -0
- package/ios/common/BackgroundGeolocation/MAURSQLiteLocationDAO.m +380 -0
- package/ios/common/BackgroundGeolocation/MAURSQLiteOpenHelper.h +32 -0
- package/ios/common/BackgroundGeolocation/MAURSQLiteOpenHelper.m +276 -0
- package/ios/common/BackgroundGeolocation/MAURUncaughtExceptionLogger.h +20 -0
- package/ios/common/BackgroundGeolocation/MAURUncaughtExceptionLogger.m +62 -0
- package/ios/common/BackgroundGeolocation/Reachability.h +102 -0
- package/ios/common/BackgroundGeolocation/Reachability.m +474 -0
- package/ios/common/BackgroundGeolocation/SOMotionDetector/SOLocationManager.h +80 -0
- package/ios/common/BackgroundGeolocation/SOMotionDetector/SOLocationManager.m +147 -0
- package/ios/common/BackgroundGeolocation/SOMotionDetector/SOMotionActivity.h +30 -0
- package/ios/common/BackgroundGeolocation/SOMotionDetector/SOMotionActivity.m +42 -0
- package/ios/common/BackgroundGeolocation/SOMotionDetector/SOMotionDetector.h +99 -0
- package/ios/common/BackgroundGeolocation/SOMotionDetector/SOMotionDetector.m +327 -0
- package/ios/common/BackgroundGeolocation/SOMotionDetector/SOStepDetector.h +44 -0
- package/ios/common/BackgroundGeolocation/SOMotionDetector/SOStepDetector.m +94 -0
- package/ios/common/BackgroundGeolocation/SQLQueryBuilder/ext/NSString+ZIMString.h +55 -0
- package/ios/common/BackgroundGeolocation/SQLQueryBuilder/ext/NSString+ZIMString.m +47 -0
- package/ios/common/BackgroundGeolocation/SQLQueryBuilder/sql/ZIMSqlDataManipulationCommand.h +27 -0
- package/ios/common/BackgroundGeolocation/SQLQueryBuilder/sql/ZIMSqlExpression.h +250 -0
- package/ios/common/BackgroundGeolocation/SQLQueryBuilder/sql/ZIMSqlExpression.m +259 -0
- package/ios/common/BackgroundGeolocation/SQLQueryBuilder/sql/ZIMSqlSelectStatement.h +360 -0
- package/ios/common/BackgroundGeolocation/SQLQueryBuilder/sql/ZIMSqlSelectStatement.m +427 -0
- package/ios/common/BackgroundGeolocation/SQLQueryBuilder/sql/ZIMSqlStatement.h +37 -0
- package/lib/module/NitroBackgroundGeolocation.nitro.js +172 -0
- package/lib/module/NitroBackgroundGeolocation.nitro.js.map +1 -0
- package/lib/module/headless.js +72 -0
- package/lib/module/headless.js.map +1 -0
- package/lib/module/index.js +60 -0
- package/lib/module/index.js.map +1 -0
- package/lib/module/package.json +1 -0
- package/lib/typescript/package.json +1 -0
- package/lib/typescript/src/NitroBackgroundGeolocation.nitro.d.ts +616 -0
- package/lib/typescript/src/NitroBackgroundGeolocation.nitro.d.ts.map +1 -0
- package/lib/typescript/src/headless.d.ts +40 -0
- package/lib/typescript/src/headless.d.ts.map +1 -0
- package/lib/typescript/src/index.d.ts +8 -0
- package/lib/typescript/src/index.d.ts.map +1 -0
- package/nitro.json +23 -0
- package/nitrogen/generated/android/c++/JActivity.hpp +61 -0
- package/nitrogen/generated/android/c++/JAuthorizationStatus.hpp +61 -0
- package/nitrogen/generated/android/c++/JBackgroundGeolocationError.hpp +61 -0
- package/nitrogen/generated/android/c++/JConfigureOptions.hpp +179 -0
- package/nitrogen/generated/android/c++/JFunc_void.hpp +75 -0
- package/nitrogen/generated/android/c++/JFunc_void_Activity.hpp +78 -0
- package/nitrogen/generated/android/c++/JFunc_void_AuthorizationStatus.hpp +77 -0
- package/nitrogen/generated/android/c++/JFunc_void_BackgroundGeolocationError.hpp +78 -0
- package/nitrogen/generated/android/c++/JFunc_void_Location.hpp +78 -0
- package/nitrogen/generated/android/c++/JFunc_void_StationaryLocation.hpp +78 -0
- package/nitrogen/generated/android/c++/JHybridNitroBackgroundGeolocationSpec.cpp +530 -0
- package/nitrogen/generated/android/c++/JHybridNitroBackgroundGeolocationSpec.hpp +90 -0
- package/nitrogen/generated/android/c++/JLocation.hpp +105 -0
- package/nitrogen/generated/android/c++/JLocationAccuracy.hpp +64 -0
- package/nitrogen/generated/android/c++/JLocationOptions.hpp +65 -0
- package/nitrogen/generated/android/c++/JLocationProvider.hpp +61 -0
- package/nitrogen/generated/android/c++/JLogEntry.hpp +73 -0
- package/nitrogen/generated/android/c++/JNativeLogLevel.hpp +67 -0
- package/nitrogen/generated/android/c++/JServiceStatus.hpp +66 -0
- package/nitrogen/generated/android/c++/JStationaryLocation.hpp +109 -0
- package/nitrogen/generated/android/c++/JVariant_NullType_AnyMap.cpp +26 -0
- package/nitrogen/generated/android/c++/JVariant_NullType_AnyMap.hpp +71 -0
- package/nitrogen/generated/android/c++/JVariant_NullType_Boolean.cpp +26 -0
- package/nitrogen/generated/android/c++/JVariant_NullType_Boolean.hpp +69 -0
- package/nitrogen/generated/android/c++/JVariant_NullType_Double.cpp +26 -0
- package/nitrogen/generated/android/c++/JVariant_NullType_Double.hpp +69 -0
- package/nitrogen/generated/android/c++/JVariant_NullType_LocationAccuracy.cpp +26 -0
- package/nitrogen/generated/android/c++/JVariant_NullType_LocationAccuracy.hpp +71 -0
- package/nitrogen/generated/android/c++/JVariant_NullType_LocationProvider.cpp +26 -0
- package/nitrogen/generated/android/c++/JVariant_NullType_LocationProvider.hpp +71 -0
- package/nitrogen/generated/android/c++/JVariant_NullType_Map_String__String_.cpp +33 -0
- package/nitrogen/generated/android/c++/JVariant_NullType_Map_String__String_.hpp +77 -0
- package/nitrogen/generated/android/c++/JVariant_NullType_String.cpp +26 -0
- package/nitrogen/generated/android/c++/JVariant_NullType_String.hpp +70 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrobackgroundgeolocation/Activity.kt +56 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrobackgroundgeolocation/AuthorizationStatus.kt +24 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrobackgroundgeolocation/BackgroundGeolocationError.kt +56 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrobackgroundgeolocation/ConfigureOptions.kt +182 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrobackgroundgeolocation/Func_void.kt +80 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrobackgroundgeolocation/Func_void_Activity.kt +80 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrobackgroundgeolocation/Func_void_AuthorizationStatus.kt +80 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrobackgroundgeolocation/Func_void_BackgroundGeolocationError.kt +80 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrobackgroundgeolocation/Func_void_Location.kt +80 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrobackgroundgeolocation/Func_void_StationaryLocation.kt +80 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrobackgroundgeolocation/HybridNitroBackgroundGeolocationSpec.kt +218 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrobackgroundgeolocation/Location.kt +111 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrobackgroundgeolocation/LocationAccuracy.kt +25 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrobackgroundgeolocation/LocationOptions.kt +61 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrobackgroundgeolocation/LocationProvider.kt +24 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrobackgroundgeolocation/LogEntry.kt +71 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrobackgroundgeolocation/NativeLogLevel.kt +26 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrobackgroundgeolocation/ServiceStatus.kt +61 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrobackgroundgeolocation/StationaryLocation.kt +116 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrobackgroundgeolocation/Variant_NullType_AnyMap.kt +63 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrobackgroundgeolocation/Variant_NullType_Boolean.kt +62 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrobackgroundgeolocation/Variant_NullType_Double.kt +62 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrobackgroundgeolocation/Variant_NullType_LocationAccuracy.kt +62 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrobackgroundgeolocation/Variant_NullType_LocationProvider.kt +62 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrobackgroundgeolocation/Variant_NullType_Map_String__String_.kt +62 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrobackgroundgeolocation/Variant_NullType_String.kt +62 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitrobackgroundgeolocation/nitrobackgroundgeolocationOnLoad.kt +35 -0
- package/nitrogen/generated/android/nitrobackgroundgeolocation+autolinking.cmake +88 -0
- package/nitrogen/generated/android/nitrobackgroundgeolocation+autolinking.gradle +27 -0
- package/nitrogen/generated/android/nitrobackgroundgeolocationOnLoad.cpp +66 -0
- package/nitrogen/generated/android/nitrobackgroundgeolocationOnLoad.hpp +34 -0
- package/nitrogen/generated/ios/NitroBackgroundGeolocation+autolinking.rb +62 -0
- package/nitrogen/generated/ios/NitroBackgroundGeolocation-Swift-Cxx-Bridge.cpp +129 -0
- package/nitrogen/generated/ios/NitroBackgroundGeolocation-Swift-Cxx-Bridge.hpp +911 -0
- package/nitrogen/generated/ios/NitroBackgroundGeolocation-Swift-Cxx-Umbrella.hpp +88 -0
- package/nitrogen/generated/ios/NitroBackgroundGeolocationAutolinking.mm +33 -0
- package/nitrogen/generated/ios/NitroBackgroundGeolocationAutolinking.swift +26 -0
- package/nitrogen/generated/ios/c++/HybridNitroBackgroundGeolocationSpecSwift.cpp +11 -0
- package/nitrogen/generated/ios/c++/HybridNitroBackgroundGeolocationSpecSwift.hpp +335 -0
- package/nitrogen/generated/ios/swift/Activity.swift +34 -0
- package/nitrogen/generated/ios/swift/AuthorizationStatus.swift +44 -0
- package/nitrogen/generated/ios/swift/BackgroundGeolocationError.swift +34 -0
- package/nitrogen/generated/ios/swift/ConfigureOptions.swift +1037 -0
- package/nitrogen/generated/ios/swift/Func_void.swift +46 -0
- package/nitrogen/generated/ios/swift/Func_void_Activity.swift +46 -0
- package/nitrogen/generated/ios/swift/Func_void_AuthorizationStatus.swift +46 -0
- package/nitrogen/generated/ios/swift/Func_void_BackgroundGeolocationError.swift +46 -0
- package/nitrogen/generated/ios/swift/Func_void_ConfigureOptions.swift +46 -0
- package/nitrogen/generated/ios/swift/Func_void_Location.swift +46 -0
- package/nitrogen/generated/ios/swift/Func_void_ServiceStatus.swift +46 -0
- package/nitrogen/generated/ios/swift/Func_void_StationaryLocation.swift +46 -0
- package/nitrogen/generated/ios/swift/Func_void_std__exception_ptr.swift +46 -0
- package/nitrogen/generated/ios/swift/Func_void_std__optional_StationaryLocation_.swift +46 -0
- package/nitrogen/generated/ios/swift/Func_void_std__vector_Location_.swift +46 -0
- package/nitrogen/generated/ios/swift/Func_void_std__vector_LogEntry_.swift +46 -0
- package/nitrogen/generated/ios/swift/HybridNitroBackgroundGeolocationSpec.swift +82 -0
- package/nitrogen/generated/ios/swift/HybridNitroBackgroundGeolocationSpec_cxx.swift +675 -0
- package/nitrogen/generated/ios/swift/Location.swift +89 -0
- package/nitrogen/generated/ios/swift/LocationAccuracy.swift +48 -0
- package/nitrogen/generated/ios/swift/LocationOptions.swift +78 -0
- package/nitrogen/generated/ios/swift/LocationProvider.swift +44 -0
- package/nitrogen/generated/ios/swift/LogEntry.swift +49 -0
- package/nitrogen/generated/ios/swift/NativeLogLevel.swift +52 -0
- package/nitrogen/generated/ios/swift/ServiceStatus.swift +39 -0
- package/nitrogen/generated/ios/swift/StationaryLocation.swift +94 -0
- package/nitrogen/generated/ios/swift/Variant_NullType_AnyMap.swift +30 -0
- package/nitrogen/generated/ios/swift/Variant_NullType_Bool.swift +30 -0
- package/nitrogen/generated/ios/swift/Variant_NullType_Dictionary_String__String_.swift +30 -0
- package/nitrogen/generated/ios/swift/Variant_NullType_Double.swift +30 -0
- package/nitrogen/generated/ios/swift/Variant_NullType_LocationAccuracy.swift +30 -0
- package/nitrogen/generated/ios/swift/Variant_NullType_LocationProvider.swift +30 -0
- package/nitrogen/generated/ios/swift/Variant_NullType_String.swift +30 -0
- package/nitrogen/generated/shared/c++/Activity.hpp +87 -0
- package/nitrogen/generated/shared/c++/AuthorizationStatus.hpp +63 -0
- package/nitrogen/generated/shared/c++/BackgroundGeolocationError.hpp +87 -0
- package/nitrogen/generated/shared/c++/ConfigureOptions.hpp +197 -0
- package/nitrogen/generated/shared/c++/HybridNitroBackgroundGeolocationSpec.cpp +48 -0
- package/nitrogen/generated/shared/c++/HybridNitroBackgroundGeolocationSpec.hpp +121 -0
- package/nitrogen/generated/shared/c++/Location.hpp +131 -0
- package/nitrogen/generated/shared/c++/LocationAccuracy.hpp +69 -0
- package/nitrogen/generated/shared/c++/LocationOptions.hpp +91 -0
- package/nitrogen/generated/shared/c++/LocationProvider.hpp +63 -0
- package/nitrogen/generated/shared/c++/LogEntry.hpp +99 -0
- package/nitrogen/generated/shared/c++/NativeLogLevel.hpp +65 -0
- package/nitrogen/generated/shared/c++/ServiceStatus.hpp +92 -0
- package/nitrogen/generated/shared/c++/StationaryLocation.hpp +135 -0
- package/package.json +112 -0
- package/react-native.config.js +10 -0
- package/src/NitroBackgroundGeolocation.nitro.ts +656 -0
- package/src/headless.ts +91 -0
- package/src/index.tsx +100 -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,61 @@
|
|
|
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
|
+
if (mLocation.getLocationId() != null) params.putLong("id", mLocation.getLocationId());
|
|
27
|
+
params.putString("provider", mLocation.getProvider());
|
|
28
|
+
params.putInt("locationProvider", mLocation.getLocationProvider());
|
|
29
|
+
params.putLong("time", mLocation.getTime());
|
|
30
|
+
params.putDouble("latitude", mLocation.getLatitude());
|
|
31
|
+
params.putDouble("longitude", mLocation.getLongitude());
|
|
32
|
+
if (mLocation.hasAccuracy()) params.putFloat("accuracy", mLocation.getAccuracy());
|
|
33
|
+
if (mLocation.hasVerticalAccuracy()) params.putFloat("altitudeAccuracy", mLocation.getVerticalAccuracy());
|
|
34
|
+
if (mLocation.hasSpeed()) params.putFloat("speed", mLocation.getSpeed());
|
|
35
|
+
if (mLocation.hasAltitude()) params.putDouble("altitude", mLocation.getAltitude());
|
|
36
|
+
if (mLocation.hasBearing()) params.putFloat("bearing", mLocation.getBearing());
|
|
37
|
+
if (mLocation.hasRadius()) params.putFloat("radius", mLocation.getRadius());
|
|
38
|
+
if (mLocation.hasIsFromMockProvider()) params.putBoolean("isFromMockProvider", mLocation.isFromMockProvider());
|
|
39
|
+
if (mLocation.hasMockLocationsEnabled()) params.putBoolean("mockLocationsEnabled", mLocation.areMockLocationsEnabled());
|
|
40
|
+
|
|
41
|
+
bundle.putString("name", getName());
|
|
42
|
+
bundle.putBundle("params", params);
|
|
43
|
+
|
|
44
|
+
return bundle;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
@Override
|
|
48
|
+
public String toString() {
|
|
49
|
+
if (mLocation == null) {
|
|
50
|
+
return null;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
try {
|
|
54
|
+
return mLocation.toJSONObject().toString();
|
|
55
|
+
} catch (JSONException e) {
|
|
56
|
+
onError("Error processing params: " + e.getMessage());
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
return null;
|
|
60
|
+
}
|
|
61
|
+
}
|
|
@@ -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
|
+
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,280 @@
|
|
|
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.Bundle;
|
|
13
|
+
import android.os.PowerManager;
|
|
14
|
+
import androidx.core.app.ActivityCompat;
|
|
15
|
+
import android.util.Log;
|
|
16
|
+
|
|
17
|
+
import com.google.android.gms.common.ConnectionResult;
|
|
18
|
+
import com.google.android.gms.common.api.GoogleApiClient;
|
|
19
|
+
import com.google.android.gms.location.ActivityRecognition;
|
|
20
|
+
import com.google.android.gms.location.ActivityRecognitionResult;
|
|
21
|
+
import com.google.android.gms.location.DetectedActivity;
|
|
22
|
+
import com.google.android.gms.location.LocationListener;
|
|
23
|
+
import com.google.android.gms.location.LocationRequest;
|
|
24
|
+
import com.google.android.gms.location.LocationServices;
|
|
25
|
+
import com.marianhello.bgloc.Config;
|
|
26
|
+
import com.marianhello.bgloc.data.BackgroundActivity;
|
|
27
|
+
|
|
28
|
+
import java.util.ArrayList;
|
|
29
|
+
|
|
30
|
+
public class ActivityRecognitionLocationProvider extends AbstractLocationProvider implements GoogleApiClient.ConnectionCallbacks,
|
|
31
|
+
GoogleApiClient.OnConnectionFailedListener, LocationListener {
|
|
32
|
+
|
|
33
|
+
private static final String TAG = ActivityRecognitionLocationProvider.class.getSimpleName();
|
|
34
|
+
private static final String P_NAME = " com.marianhello.bgloc";
|
|
35
|
+
private static final String DETECTED_ACTIVITY_UPDATE = P_NAME + ".DETECTED_ACTIVITY_UPDATE";
|
|
36
|
+
|
|
37
|
+
private GoogleApiClient googleApiClient;
|
|
38
|
+
private PendingIntent detectedActivitiesPI;
|
|
39
|
+
|
|
40
|
+
private boolean isStarted = true;
|
|
41
|
+
private boolean isTracking = false;
|
|
42
|
+
private boolean isWatchingActivity = false;
|
|
43
|
+
private Location lastLocation;
|
|
44
|
+
private DetectedActivity lastActivity = new DetectedActivity(DetectedActivity.UNKNOWN, 100);
|
|
45
|
+
|
|
46
|
+
public ActivityRecognitionLocationProvider(Context context) {
|
|
47
|
+
super(context);
|
|
48
|
+
PROVIDER_ID = Config.ACTIVITY_PROVIDER;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
@Override
|
|
52
|
+
public void onCreate() {
|
|
53
|
+
super.onCreate();
|
|
54
|
+
|
|
55
|
+
Intent detectedActivitiesIntent = new Intent(mContext, DetectedActivitiesReceiver.class);
|
|
56
|
+
detectedActivitiesIntent.setAction(DETECTED_ACTIVITY_UPDATE);
|
|
57
|
+
|
|
58
|
+
int updateCurrentFlag = android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.S
|
|
59
|
+
? PendingIntent.FLAG_UPDATE_CURRENT | PendingIntent.FLAG_MUTABLE
|
|
60
|
+
: PendingIntent.FLAG_UPDATE_CURRENT;
|
|
61
|
+
detectedActivitiesPI = PendingIntent.getBroadcast(mContext, 9002, detectedActivitiesIntent, updateCurrentFlag);
|
|
62
|
+
registerReceiver(detectedActivitiesReceiver, new IntentFilter(DETECTED_ACTIVITY_UPDATE));
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
@Override
|
|
66
|
+
public void onStart() {
|
|
67
|
+
logger.info("Start recording");
|
|
68
|
+
this.isStarted = true;
|
|
69
|
+
attachRecorder();
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
@Override
|
|
73
|
+
public void onStop() {
|
|
74
|
+
logger.info("Stop recording");
|
|
75
|
+
this.isStarted = false;
|
|
76
|
+
detachRecorder();
|
|
77
|
+
stopTracking();
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
@Override
|
|
81
|
+
public void onConfigure(Config config) {
|
|
82
|
+
super.onConfigure(config);
|
|
83
|
+
if (isStarted) {
|
|
84
|
+
onStop();
|
|
85
|
+
onStart();
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
@Override
|
|
90
|
+
public boolean isStarted() {
|
|
91
|
+
return isStarted;
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
@Override
|
|
95
|
+
public void onLocationChanged(Location location) {
|
|
96
|
+
logger.debug("Location change: {}", location.toString());
|
|
97
|
+
|
|
98
|
+
if (lastActivity.getType() == DetectedActivity.STILL) {
|
|
99
|
+
handleStationary(location);
|
|
100
|
+
stopTracking();
|
|
101
|
+
return;
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
showDebugToast("acy:" + location.getAccuracy() + ",v:" + location.getSpeed());
|
|
105
|
+
|
|
106
|
+
lastLocation = location;
|
|
107
|
+
handleLocation(location);
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
public void startTracking() {
|
|
111
|
+
if (isTracking) { return; }
|
|
112
|
+
|
|
113
|
+
Integer priority = translateDesiredAccuracy(mConfig.getDesiredAccuracy());
|
|
114
|
+
LocationRequest locationRequest = LocationRequest.create()
|
|
115
|
+
.setPriority(priority) // this.accuracy
|
|
116
|
+
.setFastestInterval(mConfig.getFastestInterval())
|
|
117
|
+
.setInterval(mConfig.getInterval());
|
|
118
|
+
// .setSmallestDisplacement(mConfig.getStationaryRadius());
|
|
119
|
+
try {
|
|
120
|
+
LocationServices.FusedLocationApi.requestLocationUpdates(googleApiClient, locationRequest, this);
|
|
121
|
+
isTracking = true;
|
|
122
|
+
logger.debug("Start tracking with priority={} fastestInterval={} interval={} activitiesInterval={} stopOnStillActivity={}", priority, mConfig.getFastestInterval(), mConfig.getInterval(), mConfig.getActivitiesInterval(), mConfig.getStopOnStillActivity());
|
|
123
|
+
} catch (SecurityException e) {
|
|
124
|
+
logger.error("Security exception: {}", e.getMessage());
|
|
125
|
+
this.handleSecurityException(e);
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
public void stopTracking() {
|
|
130
|
+
if (!isTracking) { return; }
|
|
131
|
+
|
|
132
|
+
LocationServices.FusedLocationApi.removeLocationUpdates(googleApiClient, this);
|
|
133
|
+
isTracking = false;
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
private void connectToPlayAPI() {
|
|
137
|
+
logger.debug("Connecting to Google Play Services");
|
|
138
|
+
googleApiClient = new GoogleApiClient.Builder(mContext)
|
|
139
|
+
.addApi(LocationServices.API)
|
|
140
|
+
.addApi(ActivityRecognition.API)
|
|
141
|
+
.addConnectionCallbacks(this)
|
|
142
|
+
//.addOnConnectionFailedListener(this)
|
|
143
|
+
.build();
|
|
144
|
+
googleApiClient.connect();
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
private void disconnectFromPlayAPI() {
|
|
148
|
+
if (googleApiClient != null && googleApiClient.isConnected()) {
|
|
149
|
+
googleApiClient.disconnect();
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
private boolean activityRecognitionPermitted() {
|
|
154
|
+
return Build.VERSION.SDK_INT < Build.VERSION_CODES.Q || ActivityCompat.checkSelfPermission(mContext, Manifest.permission.ACTIVITY_RECOGNITION) == PackageManager.PERMISSION_GRANTED;
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
private void attachRecorder() {
|
|
158
|
+
if (googleApiClient == null) {
|
|
159
|
+
connectToPlayAPI();
|
|
160
|
+
} else if (googleApiClient.isConnected()) {
|
|
161
|
+
if (isWatchingActivity) { return; }
|
|
162
|
+
startTracking();
|
|
163
|
+
if (mConfig.getStopOnStillActivity() && activityRecognitionPermitted()) {
|
|
164
|
+
ActivityRecognition.ActivityRecognitionApi.requestActivityUpdates(
|
|
165
|
+
googleApiClient,
|
|
166
|
+
mConfig.getActivitiesInterval(),
|
|
167
|
+
detectedActivitiesPI
|
|
168
|
+
);
|
|
169
|
+
isWatchingActivity = true;
|
|
170
|
+
}
|
|
171
|
+
} else {
|
|
172
|
+
googleApiClient.connect();
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
private void detachRecorder() {
|
|
177
|
+
if (isWatchingActivity) {
|
|
178
|
+
logger.debug("Detaching recorder");
|
|
179
|
+
ActivityRecognition.ActivityRecognitionApi.removeActivityUpdates(googleApiClient, detectedActivitiesPI);
|
|
180
|
+
isWatchingActivity = false;
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
@Override
|
|
185
|
+
public void onConnected(Bundle connectionHint) {
|
|
186
|
+
logger.debug("Connected to Google Play Services");
|
|
187
|
+
if (this.isStarted) {
|
|
188
|
+
attachRecorder();
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
@Override
|
|
193
|
+
public void onConnectionSuspended(int cause) {
|
|
194
|
+
// googleApiClient.connect();
|
|
195
|
+
logger.info("Connection to Google Play Services suspended");
|
|
196
|
+
}
|
|
197
|
+
|
|
198
|
+
@Override
|
|
199
|
+
public void onConnectionFailed(ConnectionResult connectionResult) {
|
|
200
|
+
logger.error("Connection to Google Play Services failed");
|
|
201
|
+
}
|
|
202
|
+
|
|
203
|
+
/**
|
|
204
|
+
* Translates a number representing desired accuracy of Geolocation system from set [0, 10, 100, 1000].
|
|
205
|
+
* 0: most aggressive, most accurate, worst battery drain
|
|
206
|
+
* 1000: least aggressive, least accurate, best for battery.
|
|
207
|
+
*/
|
|
208
|
+
private Integer translateDesiredAccuracy(Integer accuracy) {
|
|
209
|
+
if (accuracy >= 10000) {
|
|
210
|
+
return LocationRequest.PRIORITY_NO_POWER;
|
|
211
|
+
}
|
|
212
|
+
if (accuracy >= 1000) {
|
|
213
|
+
return LocationRequest.PRIORITY_LOW_POWER;
|
|
214
|
+
}
|
|
215
|
+
if (accuracy >= 100) {
|
|
216
|
+
return LocationRequest.PRIORITY_BALANCED_POWER_ACCURACY;
|
|
217
|
+
}
|
|
218
|
+
if (accuracy >= 10) {
|
|
219
|
+
return LocationRequest.PRIORITY_HIGH_ACCURACY;
|
|
220
|
+
}
|
|
221
|
+
if (accuracy >= 0) {
|
|
222
|
+
return LocationRequest.PRIORITY_HIGH_ACCURACY;
|
|
223
|
+
}
|
|
224
|
+
|
|
225
|
+
return LocationRequest.PRIORITY_BALANCED_POWER_ACCURACY;
|
|
226
|
+
}
|
|
227
|
+
|
|
228
|
+
|
|
229
|
+
public static DetectedActivity getProbableActivity(ArrayList<DetectedActivity> detectedActivities) {
|
|
230
|
+
int highestConfidence = 0;
|
|
231
|
+
DetectedActivity mostLikelyActivity = new DetectedActivity(0, DetectedActivity.UNKNOWN);
|
|
232
|
+
|
|
233
|
+
for(DetectedActivity da: detectedActivities) {
|
|
234
|
+
if(da.getType() != DetectedActivity.TILTING || da.getType() != DetectedActivity.UNKNOWN) {
|
|
235
|
+
Log.w(TAG, "Received a Detected Activity that was not tilting / unknown");
|
|
236
|
+
if (highestConfidence < da.getConfidence()) {
|
|
237
|
+
highestConfidence = da.getConfidence();
|
|
238
|
+
mostLikelyActivity = da;
|
|
239
|
+
}
|
|
240
|
+
}
|
|
241
|
+
}
|
|
242
|
+
return mostLikelyActivity;
|
|
243
|
+
}
|
|
244
|
+
|
|
245
|
+
private class DetectedActivitiesReceiver extends BroadcastReceiver {
|
|
246
|
+
@Override
|
|
247
|
+
public void onReceive(Context context, Intent intent) {
|
|
248
|
+
ActivityRecognitionResult result = ActivityRecognitionResult.extractResult(intent);
|
|
249
|
+
ArrayList<DetectedActivity> detectedActivities = (ArrayList) result.getProbableActivities();
|
|
250
|
+
|
|
251
|
+
//Find the activity with the highest percentage
|
|
252
|
+
lastActivity = getProbableActivity(detectedActivities);
|
|
253
|
+
|
|
254
|
+
logger.debug("Detected activity={} confidence={}", BackgroundActivity.getActivityString(lastActivity.getType()), lastActivity.getConfidence());
|
|
255
|
+
|
|
256
|
+
handleActivity(lastActivity);
|
|
257
|
+
|
|
258
|
+
if (lastActivity.getType() == DetectedActivity.STILL) {
|
|
259
|
+
showDebugToast("Detected STILL Activity");
|
|
260
|
+
// stopTracking();
|
|
261
|
+
// we will delay stop tracking after position is found
|
|
262
|
+
} else {
|
|
263
|
+
showDebugToast("Detected ACTIVE Activity");
|
|
264
|
+
startTracking();
|
|
265
|
+
}
|
|
266
|
+
//else do nothing
|
|
267
|
+
}
|
|
268
|
+
}
|
|
269
|
+
|
|
270
|
+
private BroadcastReceiver detectedActivitiesReceiver = new DetectedActivitiesReceiver();
|
|
271
|
+
|
|
272
|
+
@Override
|
|
273
|
+
public void onDestroy() {
|
|
274
|
+
logger.info("Destroying ActivityRecognitionLocationProvider");
|
|
275
|
+
onStop();
|
|
276
|
+
disconnectFromPlayAPI();
|
|
277
|
+
unregisterReceiver(detectedActivitiesReceiver);
|
|
278
|
+
super.onDestroy();
|
|
279
|
+
}
|
|
280
|
+
}
|