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,327 @@
|
|
|
1
|
+
//
|
|
2
|
+
// MotionDetecter.m
|
|
3
|
+
// MotionDetection
|
|
4
|
+
//
|
|
5
|
+
// The MIT License (MIT)
|
|
6
|
+
//
|
|
7
|
+
// Created by : arturdev
|
|
8
|
+
// Copyright (c) 2014 SocialObjects Software. All rights reserved.
|
|
9
|
+
//
|
|
10
|
+
// Permission is hereby granted, free of charge, to any person obtaining a copy of
|
|
11
|
+
// this software and associated documentation files (the "Software"), to deal in
|
|
12
|
+
// the Software without restriction, including without limitation the rights to
|
|
13
|
+
// use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
|
|
14
|
+
// the Software, and to permit persons to whom the Software is furnished to do so,
|
|
15
|
+
// subject to the following conditions:
|
|
16
|
+
//
|
|
17
|
+
// The above copyright notice and this permission notice shall be included in all
|
|
18
|
+
// copies or substantial portions of the Software.
|
|
19
|
+
//
|
|
20
|
+
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
21
|
+
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
|
|
22
|
+
// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
|
|
23
|
+
// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
|
|
24
|
+
// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
|
25
|
+
// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE
|
|
26
|
+
|
|
27
|
+
#import "SOMotionDetector.h"
|
|
28
|
+
|
|
29
|
+
CGFloat kMinimumSpeed = 0.3f;
|
|
30
|
+
CGFloat kMaximumWalkingSpeed = 1.9f;
|
|
31
|
+
CGFloat kMaximumRunningSpeed = 7.5f;
|
|
32
|
+
CGFloat kMinimumRunningAcceleration = 3.5f;
|
|
33
|
+
|
|
34
|
+
@interface SOMotionDetector()
|
|
35
|
+
|
|
36
|
+
@property (strong, nonatomic) NSTimer *shakeDetectingTimer;
|
|
37
|
+
|
|
38
|
+
@property (strong, nonatomic) CLLocation *currentLocation;
|
|
39
|
+
@property (nonatomic) SOMotionType previousMotionType;
|
|
40
|
+
|
|
41
|
+
#pragma mark - Accelerometer manager
|
|
42
|
+
@property (strong, nonatomic) CMMotionManager *motionManager;
|
|
43
|
+
@property (strong, nonatomic) CMMotionActivityManager *motionActivityManager;
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
@end
|
|
47
|
+
|
|
48
|
+
@implementation SOMotionDetector
|
|
49
|
+
|
|
50
|
+
+ (SOMotionDetector *)sharedInstance
|
|
51
|
+
{
|
|
52
|
+
static SOMotionDetector *instance = nil;
|
|
53
|
+
static dispatch_once_t onceToken;
|
|
54
|
+
dispatch_once(&onceToken, ^{
|
|
55
|
+
instance = [[self alloc] init];
|
|
56
|
+
});
|
|
57
|
+
|
|
58
|
+
return instance;
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
- (id)init
|
|
62
|
+
{
|
|
63
|
+
self = [super init];
|
|
64
|
+
if (self) {
|
|
65
|
+
[[NSNotificationCenter defaultCenter] addObserver:self
|
|
66
|
+
selector:@selector(handleLocationChangedNotification:)
|
|
67
|
+
name:LOCATION_DID_CHANGED_NOTIFICATION
|
|
68
|
+
object:nil];
|
|
69
|
+
[[NSNotificationCenter defaultCenter] addObserver:self
|
|
70
|
+
selector:@selector(handleLocationWasPausedNotification:)
|
|
71
|
+
name:LOCATION_WAS_PAUSED_NOTIFICATION
|
|
72
|
+
object:nil];
|
|
73
|
+
self.activityDetectionInterval = 0.01f;
|
|
74
|
+
self.motionManager = [[CMMotionManager alloc] init];
|
|
75
|
+
_motionActivity = [[SOMotionActivity alloc] init];
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
return self;
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
+ (BOOL)motionHardwareAvailable
|
|
82
|
+
{
|
|
83
|
+
static BOOL isAvailable = NO;
|
|
84
|
+
static dispatch_once_t onceToken;
|
|
85
|
+
dispatch_once(&onceToken, ^{
|
|
86
|
+
isAvailable = [CMMotionActivityManager isActivityAvailable];
|
|
87
|
+
});
|
|
88
|
+
|
|
89
|
+
return isAvailable;
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
#pragma mark - Public Methods
|
|
93
|
+
- (void)startDetection
|
|
94
|
+
{
|
|
95
|
+
|
|
96
|
+
[self.motionManager startAccelerometerUpdatesToQueue:[[NSOperationQueue alloc] init]
|
|
97
|
+
withHandler:^(CMAccelerometerData *accelerometerData, NSError *error)
|
|
98
|
+
{
|
|
99
|
+
_acceleration = accelerometerData.acceleration;
|
|
100
|
+
[self calculateMotionType];
|
|
101
|
+
dispatch_async(dispatch_get_main_queue(), ^{
|
|
102
|
+
#pragma GCC diagnostic push
|
|
103
|
+
#pragma GCC diagnostic ignored "-Wdeprecated-declarations"
|
|
104
|
+
if (self.delegate && [self.delegate respondsToSelector:@selector(motionDetector:accelerationChanged:)]) {
|
|
105
|
+
[self.delegate motionDetector:self accelerationChanged:self.acceleration];
|
|
106
|
+
}
|
|
107
|
+
#pragma GCC diagnostic pop
|
|
108
|
+
|
|
109
|
+
|
|
110
|
+
if (self.accelerationChangedBlock) {
|
|
111
|
+
self.accelerationChangedBlock (self.acceleration);
|
|
112
|
+
}
|
|
113
|
+
});
|
|
114
|
+
}];
|
|
115
|
+
|
|
116
|
+
if (self.useM7IfAvailable && [SOMotionDetector motionHardwareAvailable]) {
|
|
117
|
+
if (!self.motionActivityManager) {
|
|
118
|
+
self.motionActivityManager = [[CMMotionActivityManager alloc] init];
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
[self.motionActivityManager startActivityUpdatesToQueue:[[NSOperationQueue alloc] init] withHandler:^(CMMotionActivity *activity) {
|
|
122
|
+
dispatch_async(dispatch_get_main_queue(), ^{
|
|
123
|
+
SOMotionType motionType;
|
|
124
|
+
if (activity.walking) {
|
|
125
|
+
motionType = MotionTypeWalking;
|
|
126
|
+
} else if (activity.running) {
|
|
127
|
+
motionType = MotionTypeRunning;
|
|
128
|
+
} else if (activity.automotive) {
|
|
129
|
+
motionType = MotionTypeAutomotive;
|
|
130
|
+
} else if (activity.stationary || activity.unknown) {
|
|
131
|
+
motionType = MotionTypeNotMoving;
|
|
132
|
+
} else {
|
|
133
|
+
motionType = MotionTypeUnknown;
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
int confidence;
|
|
137
|
+
switch (activity.confidence) {
|
|
138
|
+
case CMMotionActivityConfidenceLow:
|
|
139
|
+
confidence = 20;
|
|
140
|
+
break;
|
|
141
|
+
case CMMotionActivityConfidenceMedium:
|
|
142
|
+
confidence = 40;
|
|
143
|
+
break;
|
|
144
|
+
case CMMotionActivityConfidenceHigh:
|
|
145
|
+
confidence = 80;
|
|
146
|
+
break;
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
_motionActivity.motionType = motionType;
|
|
150
|
+
_motionActivity.confidence = activity.confidence;
|
|
151
|
+
|
|
152
|
+
// If type was changed, then call delegate method
|
|
153
|
+
if (motionType != self.previousMotionType) {
|
|
154
|
+
self.previousMotionType = motionType;
|
|
155
|
+
if (self.delegate && [self.delegate respondsToSelector:@selector(motionDetector:activityTypeChanged:)]) {
|
|
156
|
+
[self.delegate motionDetector:self activityTypeChanged:self.motionActivity];
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
if (self.activityTypeChangedBlock) {
|
|
160
|
+
self.activityTypeChangedBlock (self.motionActivity);
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
});
|
|
164
|
+
|
|
165
|
+
}];
|
|
166
|
+
} else {
|
|
167
|
+
[[SOLocationManager sharedInstance] start];
|
|
168
|
+
|
|
169
|
+
self.shakeDetectingTimer = [NSTimer scheduledTimerWithTimeInterval:self.activityDetectionInterval
|
|
170
|
+
target:self
|
|
171
|
+
selector:@selector(detectShaking)
|
|
172
|
+
userInfo:Nil
|
|
173
|
+
repeats:YES];
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
- (void)stopDetection
|
|
178
|
+
{
|
|
179
|
+
[self.shakeDetectingTimer invalidate];
|
|
180
|
+
self.shakeDetectingTimer = nil;
|
|
181
|
+
|
|
182
|
+
[[SOLocationManager sharedInstance] stop];
|
|
183
|
+
[self.motionManager stopAccelerometerUpdates];
|
|
184
|
+
[self.motionActivityManager stopActivityUpdates];
|
|
185
|
+
_previousMotionType = 0;
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
#pragma mark - Customization Methods
|
|
189
|
+
- (void)setMinimumSpeed:(CGFloat)speed
|
|
190
|
+
{
|
|
191
|
+
kMinimumSpeed = speed;
|
|
192
|
+
}
|
|
193
|
+
|
|
194
|
+
- (void)setMaximumWalkingSpeed:(CGFloat)speed
|
|
195
|
+
{
|
|
196
|
+
kMaximumWalkingSpeed = speed;
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
- (void)setMaximumRunningSpeed:(CGFloat)speed
|
|
200
|
+
{
|
|
201
|
+
kMaximumRunningSpeed = speed;
|
|
202
|
+
}
|
|
203
|
+
|
|
204
|
+
- (void)setMinimumRunningAcceleration:(CGFloat)acceleration
|
|
205
|
+
{
|
|
206
|
+
kMinimumRunningAcceleration = acceleration;
|
|
207
|
+
}
|
|
208
|
+
#pragma mark - Private Methods
|
|
209
|
+
- (void)calculateMotionType
|
|
210
|
+
{
|
|
211
|
+
SOMotionType motionType;
|
|
212
|
+
if (_currentSpeed < kMinimumSpeed) {
|
|
213
|
+
motionType = MotionTypeNotMoving;
|
|
214
|
+
} else if (_currentSpeed <= kMaximumWalkingSpeed) {
|
|
215
|
+
motionType = _isShaking ? MotionTypeRunning : MotionTypeWalking;
|
|
216
|
+
} else if (_currentSpeed <= kMaximumRunningSpeed) {
|
|
217
|
+
motionType = _isShaking ? MotionTypeRunning : MotionTypeAutomotive;
|
|
218
|
+
} else {
|
|
219
|
+
motionType = MotionTypeAutomotive;
|
|
220
|
+
}
|
|
221
|
+
|
|
222
|
+
_motionActivity.motionType = motionType;
|
|
223
|
+
_motionActivity.confidence = 0;
|
|
224
|
+
|
|
225
|
+
// If type was changed, then call delegate method
|
|
226
|
+
if (motionType != self.previousMotionType) {
|
|
227
|
+
self.previousMotionType = motionType;
|
|
228
|
+
|
|
229
|
+
dispatch_async(dispatch_get_main_queue(), ^{
|
|
230
|
+
if (self.delegate && [self.delegate respondsToSelector:@selector(motionDetector:activityTypeChanged:)]) {
|
|
231
|
+
[self.delegate motionDetector:self activityTypeChanged:self.motionActivity];
|
|
232
|
+
}
|
|
233
|
+
|
|
234
|
+
if (self.activityTypeChangedBlock) {
|
|
235
|
+
self.activityTypeChangedBlock (self.motionActivity);
|
|
236
|
+
}
|
|
237
|
+
});
|
|
238
|
+
}
|
|
239
|
+
}
|
|
240
|
+
|
|
241
|
+
- (void)detectShaking
|
|
242
|
+
{
|
|
243
|
+
//Array for collecting acceleration for last one seconds period.
|
|
244
|
+
static NSMutableArray *shakeDataForOneSec = nil;
|
|
245
|
+
//Counter for calculating completion of one second interval
|
|
246
|
+
static float currentFiringTimeInterval = 0.0f;
|
|
247
|
+
|
|
248
|
+
currentFiringTimeInterval += 0.01f;
|
|
249
|
+
if (currentFiringTimeInterval < 1.0f) {// if one second time intervall not completed yet
|
|
250
|
+
if (!shakeDataForOneSec)
|
|
251
|
+
shakeDataForOneSec = [NSMutableArray array];
|
|
252
|
+
|
|
253
|
+
// Add current acceleration to array
|
|
254
|
+
NSValue *boxedAcceleration = [NSValue value:&_acceleration withObjCType:@encode(CMAcceleration)];
|
|
255
|
+
[shakeDataForOneSec addObject:boxedAcceleration];
|
|
256
|
+
} else {
|
|
257
|
+
// Now, when one second was elapsed, calculate shake count in this interval. If there will be at least one shake then
|
|
258
|
+
// we'll determine it as shaked in all this one second interval.
|
|
259
|
+
|
|
260
|
+
int shakeCount = 0;
|
|
261
|
+
for (NSValue *boxedAcceleration in shakeDataForOneSec) {
|
|
262
|
+
CMAcceleration acceleration;
|
|
263
|
+
[boxedAcceleration getValue:&acceleration];
|
|
264
|
+
|
|
265
|
+
/*********************************
|
|
266
|
+
* Detecting shaking
|
|
267
|
+
*********************************/
|
|
268
|
+
double accX_2 = powf(acceleration.x,2);
|
|
269
|
+
double accY_2 = powf(acceleration.y,2);
|
|
270
|
+
double accZ_2 = powf(acceleration.z,2);
|
|
271
|
+
|
|
272
|
+
double vectorSum = sqrt(accX_2 + accY_2 + accZ_2);
|
|
273
|
+
|
|
274
|
+
if (vectorSum >= kMinimumRunningAcceleration) {
|
|
275
|
+
shakeCount++;
|
|
276
|
+
}
|
|
277
|
+
/*********************************/
|
|
278
|
+
}
|
|
279
|
+
_isShaking = shakeCount > 0;
|
|
280
|
+
|
|
281
|
+
shakeDataForOneSec = nil;
|
|
282
|
+
currentFiringTimeInterval = 0.0f;
|
|
283
|
+
}
|
|
284
|
+
}
|
|
285
|
+
|
|
286
|
+
#pragma mark - LocationManager notification handler
|
|
287
|
+
- (void)handleLocationChangedNotification:(NSNotification *)note
|
|
288
|
+
{
|
|
289
|
+
self.currentLocation = [SOLocationManager sharedInstance].lastLocation;
|
|
290
|
+
_currentSpeed = self.currentLocation.speed;
|
|
291
|
+
if (_currentSpeed < 0) {
|
|
292
|
+
_currentSpeed = 0;
|
|
293
|
+
}
|
|
294
|
+
|
|
295
|
+
dispatch_async(dispatch_get_main_queue(), ^{
|
|
296
|
+
#pragma GCC diagnostic push
|
|
297
|
+
#pragma GCC diagnostic ignored "-Wdeprecated-declarations"
|
|
298
|
+
if (self.delegate && [self.delegate respondsToSelector:@selector(motionDetector:locationChanged:)]) {
|
|
299
|
+
[self.delegate motionDetector:self locationChanged:self.currentLocation];
|
|
300
|
+
}
|
|
301
|
+
#pragma GCC diagnostic pop
|
|
302
|
+
|
|
303
|
+
if (self.locationChangedBlock) {
|
|
304
|
+
self.locationChangedBlock (self.currentLocation);
|
|
305
|
+
}
|
|
306
|
+
});
|
|
307
|
+
|
|
308
|
+
[self calculateMotionType];
|
|
309
|
+
}
|
|
310
|
+
|
|
311
|
+
#pragma mark - LocationManager notification handler
|
|
312
|
+
- (void)handleLocationWasPausedNotification:(NSNotification *)note
|
|
313
|
+
{
|
|
314
|
+
dispatch_async(dispatch_get_main_queue(), ^{
|
|
315
|
+
#pragma GCC diagnostic push
|
|
316
|
+
#pragma GCC diagnostic ignored "-Wdeprecated-declarations"
|
|
317
|
+
if (self.delegate && [self.delegate respondsToSelector:@selector(motionDetector:locationWasPaused:)]) {
|
|
318
|
+
[self.delegate motionDetector:self locationWasPaused:TRUE];
|
|
319
|
+
}
|
|
320
|
+
#pragma GCC diagnostic pop
|
|
321
|
+
|
|
322
|
+
if (self.locationWasPausedBlock) {
|
|
323
|
+
self.locationWasPausedBlock (TRUE);
|
|
324
|
+
}
|
|
325
|
+
});
|
|
326
|
+
}
|
|
327
|
+
@end
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
//
|
|
2
|
+
// SOMotionDetecter.h
|
|
3
|
+
// MotionDetection
|
|
4
|
+
//
|
|
5
|
+
// The MIT License (MIT)
|
|
6
|
+
//
|
|
7
|
+
// Created by : arturdev
|
|
8
|
+
// Copyright (c) 2014 SocialObjects Software. All rights reserved.
|
|
9
|
+
//
|
|
10
|
+
// Permission is hereby granted, free of charge, to any person obtaining a copy of
|
|
11
|
+
// this software and associated documentation files (the "Software"), to deal in
|
|
12
|
+
// the Software without restriction, including without limitation the rights to
|
|
13
|
+
// use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
|
|
14
|
+
// the Software, and to permit persons to whom the Software is furnished to do so,
|
|
15
|
+
// subject to the following conditions:
|
|
16
|
+
//
|
|
17
|
+
// The above copyright notice and this permission notice shall be included in all
|
|
18
|
+
// copies or substantial portions of the Software.
|
|
19
|
+
//
|
|
20
|
+
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
21
|
+
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
|
|
22
|
+
// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
|
|
23
|
+
// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
|
|
24
|
+
// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
|
25
|
+
// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE
|
|
26
|
+
|
|
27
|
+
#import <Foundation/Foundation.h>
|
|
28
|
+
|
|
29
|
+
@interface SOStepDetector : NSObject
|
|
30
|
+
|
|
31
|
+
+ (instancetype)sharedInstance;
|
|
32
|
+
|
|
33
|
+
/**
|
|
34
|
+
* Start accelerometer updates.
|
|
35
|
+
* @param callback Will be called every time when new step is detected
|
|
36
|
+
*/
|
|
37
|
+
- (void)startDetectionWithUpdateBlock:(void(^)(NSError *error))callback;
|
|
38
|
+
|
|
39
|
+
/**
|
|
40
|
+
* Stop motion manager accelerometer updates
|
|
41
|
+
*/
|
|
42
|
+
- (void)stopDetection;
|
|
43
|
+
|
|
44
|
+
@end
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
|
|
2
|
+
//
|
|
3
|
+
// SOStepDetector.m
|
|
4
|
+
// MotionDetection
|
|
5
|
+
//
|
|
6
|
+
// Created by Artur on 5/15/15.
|
|
7
|
+
// Copyright (c) 2015 Artur Mkrtchyan. All rights reserved.
|
|
8
|
+
//
|
|
9
|
+
|
|
10
|
+
#import <UIKit/UIKit.h>
|
|
11
|
+
#import "SOStepDetector.h"
|
|
12
|
+
#import <CoreMotion/CoreMotion.h>
|
|
13
|
+
|
|
14
|
+
#define kUpdateInterval 0.2f
|
|
15
|
+
@interface SOStepDetector()
|
|
16
|
+
|
|
17
|
+
@property (strong, nonatomic) CMMotionManager *motionManager;
|
|
18
|
+
@property (strong, nonatomic) NSOperationQueue* queue;
|
|
19
|
+
|
|
20
|
+
@end
|
|
21
|
+
|
|
22
|
+
@implementation SOStepDetector
|
|
23
|
+
|
|
24
|
+
+ (instancetype)sharedInstance
|
|
25
|
+
{
|
|
26
|
+
static id instance;
|
|
27
|
+
static dispatch_once_t onceToken;
|
|
28
|
+
dispatch_once(&onceToken, ^{
|
|
29
|
+
instance = [self new];
|
|
30
|
+
});
|
|
31
|
+
|
|
32
|
+
return instance;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
- (instancetype)init
|
|
36
|
+
{
|
|
37
|
+
self = [super init];
|
|
38
|
+
|
|
39
|
+
self.motionManager = [CMMotionManager new];
|
|
40
|
+
|
|
41
|
+
self.motionManager.accelerometerUpdateInterval = kUpdateInterval;
|
|
42
|
+
self.motionManager.deviceMotionUpdateInterval = kUpdateInterval;
|
|
43
|
+
self.motionManager.gyroUpdateInterval = kUpdateInterval;
|
|
44
|
+
self.motionManager.magnetometerUpdateInterval = kUpdateInterval;
|
|
45
|
+
self.motionManager.showsDeviceMovementDisplay = YES;
|
|
46
|
+
|
|
47
|
+
self.queue = [NSOperationQueue new];
|
|
48
|
+
self.queue.maxConcurrentOperationCount = 1;
|
|
49
|
+
|
|
50
|
+
return self;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
- (void)startDetectionWithUpdateBlock:(void (^)(NSError *))callback
|
|
54
|
+
{
|
|
55
|
+
if (self.motionManager.isAccelerometerActive) {
|
|
56
|
+
return;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
[self.motionManager startAccelerometerUpdatesToQueue:self.queue
|
|
60
|
+
withHandler:^(CMAccelerometerData *accelerometerData, NSError *error) {
|
|
61
|
+
if (error) {
|
|
62
|
+
if (callback) {
|
|
63
|
+
dispatch_async(dispatch_get_main_queue(), ^{
|
|
64
|
+
callback (error);
|
|
65
|
+
});
|
|
66
|
+
}
|
|
67
|
+
return ;
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
CMAcceleration acceleration = accelerometerData.acceleration;
|
|
71
|
+
|
|
72
|
+
CGFloat strength = 1.2f;
|
|
73
|
+
BOOL isStep = NO;
|
|
74
|
+
if (fabs(acceleration.x) > strength || fabs(acceleration.y) > strength || fabs(acceleration.z) > strength) {
|
|
75
|
+
isStep = YES;
|
|
76
|
+
}
|
|
77
|
+
if (isStep) {
|
|
78
|
+
if (callback) {
|
|
79
|
+
dispatch_async(dispatch_get_main_queue(), ^{
|
|
80
|
+
callback (nil);
|
|
81
|
+
});
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
}];
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
- (void)stopDetection
|
|
88
|
+
{
|
|
89
|
+
if (self.motionManager.isAccelerometerActive) {
|
|
90
|
+
[self.motionManager stopAccelerometerUpdates];
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
@end
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright 2011-2015 Ziminji
|
|
3
|
+
*
|
|
4
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
+
* you may not use this file except in compliance with the License.
|
|
6
|
+
* You may obtain a copy of the License at:
|
|
7
|
+
*
|
|
8
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
+
*
|
|
10
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
* See the License for the specific language governing permissions and
|
|
14
|
+
* limitations under the License.
|
|
15
|
+
*/
|
|
16
|
+
|
|
17
|
+
#import <Foundation/Foundation.h>
|
|
18
|
+
|
|
19
|
+
/*!
|
|
20
|
+
@category NSString (ZIMString)
|
|
21
|
+
@discussion This category extends the functionality of the NSString class.
|
|
22
|
+
@updated 2011-07-16
|
|
23
|
+
*/
|
|
24
|
+
@interface NSString (ZIMString)
|
|
25
|
+
/*!
|
|
26
|
+
@method matchesRegex:options:
|
|
27
|
+
@discussion This method determines whether the pattern is matched.
|
|
28
|
+
@param pattern The regular expression to be used.
|
|
29
|
+
@param options The options to be used.
|
|
30
|
+
@return A boolean value denoting whether the pattern was matched.
|
|
31
|
+
@updated 2012-03-20
|
|
32
|
+
@see http://developer.apple.com/library/ios/#documentation/Foundation/Reference/NSRegularExpression_Class/Reference/Reference.html
|
|
33
|
+
@see http://quickies.seriot.ch/index.php?id=279
|
|
34
|
+
*/
|
|
35
|
+
- (BOOL) matchesRegex: (NSString *)pattern options: (NSRegularExpressionOptions)options;
|
|
36
|
+
/*!
|
|
37
|
+
@method capitalizeFirstCharacterInString:
|
|
38
|
+
@discussion This method will capitalize the first letter in the specified string.
|
|
39
|
+
@param string The string to be modified.
|
|
40
|
+
@return The modified string.
|
|
41
|
+
@updated 2011-06-29
|
|
42
|
+
@see http://stackoverflow.com/questions/883897/easy-way-to-set-a-single-character-of-an-nsstring-to-uppercase
|
|
43
|
+
*/
|
|
44
|
+
+ (NSString *) capitalizeFirstCharacterInString: (NSString *)string;
|
|
45
|
+
/*!
|
|
46
|
+
@method firstTokenInString:scanUpToCharactersFromSet:
|
|
47
|
+
@discussion This method returns the first token found in the specified string.
|
|
48
|
+
@param string The string to be parsed.
|
|
49
|
+
@param stopSet The set of characters up to which to scan.
|
|
50
|
+
@return The first token found.
|
|
51
|
+
@updated 2011-06-29
|
|
52
|
+
*/
|
|
53
|
+
+ (NSString *) firstTokenInString: (NSString *)string scanUpToCharactersFromSet: (NSCharacterSet *)stopSet;
|
|
54
|
+
|
|
55
|
+
@end
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright 2011-2015 Ziminji
|
|
3
|
+
*
|
|
4
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
+
* you may not use this file except in compliance with the License.
|
|
6
|
+
* You may obtain a copy of the License at:
|
|
7
|
+
*
|
|
8
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
+
*
|
|
10
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
* See the License for the specific language governing permissions and
|
|
14
|
+
* limitations under the License.
|
|
15
|
+
*/
|
|
16
|
+
|
|
17
|
+
#import "NSString+ZIMString.h"
|
|
18
|
+
|
|
19
|
+
@implementation NSString (ZIMString)
|
|
20
|
+
|
|
21
|
+
#pragma mark -
|
|
22
|
+
#pragma mark Public Methods
|
|
23
|
+
|
|
24
|
+
- (BOOL) matchesRegex: (NSString *)pattern options: (NSRegularExpressionOptions)options {
|
|
25
|
+
NSError *error = nil;
|
|
26
|
+
NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern: pattern options: options error: &error];
|
|
27
|
+
if (regex == nil) {
|
|
28
|
+
return NO;
|
|
29
|
+
}
|
|
30
|
+
NSUInteger n = [regex numberOfMatchesInString: self options: 0 range: NSMakeRange(0, [self length])];
|
|
31
|
+
return (n == 1);
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
+ (NSString *) capitalizeFirstCharacterInString: (NSString *)string {
|
|
35
|
+
return [string stringByReplacingCharactersInRange: NSMakeRange(0, 1) withString: [[string substringToIndex: 1] uppercaseString]];
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
+ (NSString *) firstTokenInString: (NSString *)string scanUpToCharactersFromSet: (NSCharacterSet *)stopSet {
|
|
39
|
+
NSScanner *scanner = [NSScanner scannerWithString: string];
|
|
40
|
+
NSString *buffer;
|
|
41
|
+
if (![scanner scanUpToCharactersFromSet: stopSet intoString: &buffer]) {
|
|
42
|
+
return @"";
|
|
43
|
+
}
|
|
44
|
+
return buffer;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
@end
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright 2011-2015 Ziminji
|
|
3
|
+
*
|
|
4
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
+
* you may not use this file except in compliance with the License.
|
|
6
|
+
* You may obtain a copy of the License at:
|
|
7
|
+
*
|
|
8
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
+
*
|
|
10
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
* See the License for the specific language governing permissions and
|
|
14
|
+
* limitations under the License.
|
|
15
|
+
*/
|
|
16
|
+
|
|
17
|
+
#import <Foundation/Foundation.h>
|
|
18
|
+
|
|
19
|
+
/*!
|
|
20
|
+
@class ZIMSqlDataManipulationCommand
|
|
21
|
+
@discussion This protocol specifies the contract for a Data Manipulation Language (DML) command.
|
|
22
|
+
@updated 2011-07-15
|
|
23
|
+
@see http://www.orafaq.com/faq/what_are_the_difference_between_ddl_dml_and_dcl_commands
|
|
24
|
+
*/
|
|
25
|
+
@protocol ZIMSqlDataManipulationCommand <NSObject>
|
|
26
|
+
|
|
27
|
+
@end
|