- Added an experimental "deep sleep" mode to LocomotionManager (not turned on by default)
- Added some missing database indexes to persistent stores
- Forwarded more LocationManager delegate events
- Explicit edit() blocks do an immediate save to the store instead of delayed save
- Made the Reachability dependency optional
- Reduced the updates frequency for desiredAccuracy, to potentially reduce energy use
- Now treating all item segments inside path items as "recording" state
- Avoid edge sample stealing over a sensible time threshold
- Misc cleanups to timeline item classifier results storage
- Improved handling of "data gap" timeline items
- Misc timeline item processing (merging heuristics) improvements
- Got rid of the remaining Swift 4.1 warnings
- Swift 4.1 support
- Added a high level
TimelineManager
, for post processing LocomotionSamples into Visits and Paths, See theTimelineManager
API docs for details, and the LocoKit Demo App for code examples. - Added
PersistentTimelineManager
, an optional persistent SQL store for timeline items. To make use of the persistent store, addpod "LocoKit/LocalStore"
to your Podfile and usePersistentTimelineManager
instead ofTimelineManager
. - Added
TimelineClassifier
to make it easier to classify collections of LocomotionSamples. - Added convenience methods to arrays of LocomotionSamples, for example
arrayOfSamples.weightedCenter
,arrayOfSamples.duration
.
- Renamed ArcKit to LocoKit, to avoid confusion with Arc App. Note that you now need to set
your API key on
LocoKitService.apiKey
instead ofArcKitService.apiKey
. All other methods and classes remain unaffected by the project name change. - Made various
LocomotionSample
properties (stepHz
,courseVariance
,xyAcceleration
,zAcceleration
) optional, to avoid requiring magic numbers when their source data is unavailable.
- Stopped doing unnecessary ArcKitService API requests, and tidied up some console logging
- Fixed overly aggressive reentry to sleep mode after calling
stopRecording()
thenstartRecording()
.
- Added a low power Sleep Mode. Read the
LocomotionManager.useLowPowerSleepModeWhileStationary
API docs for more details. - Added ability to disable dynamic desiredAccuracy adjustments. Read the
LocomotionManager.dynamicallyAdjustDesiredAccuracy
API docs for more details. - Added LocomotionManager settings for configuring which (if any) Core Motion features to make use of whilst recording.
startCoreLocation()
has been renamed tostartRecording()
and now starts both Core Location and Core Motion recording (depending on your LocomotionManager settings). Additionally,stopCoreLocation()
has been renamed tostopRecording()
, andstartCoreMotion()
andstopCoreMotion()
have been removed.recordingCoreLocation
andrecordingCoreMotion
have been removed, and replaced byrecordingState
.- The
locomotionSampleUpdated
notification no longer includes a userInfo dict.
- Open sourced
LocomotionManager
andLocomotionSample
.
- Moved
apiKey
fromLocomotionManager
toArcKitService
. Note that this is a breaking change - you will need up update your code to set the API key in the new location. - Split the SDK into two separate frameworks. The
ArcKit
framework now contains only the open source portions, while the newArcKitCore
contains the binary framework. (Over time I will be open sourcing more code by migrating it from the binary framework to the source framework.)
- Supports / requires Xcode 9.1 (pin to
~> 2.0.1
if you require Xcode 9.0 support) - Added a
locomotionManager.locationManagerDelegate
to allow forwarding of CLLocationManagerDelegate events from the internal CLLocationManager - Made public the
classifier.accuracyScore
property - Added an
isEmpty
property toClassifierResults
- Properly reports ArcKit API request failures to console
- Added
isStale
property to classifiers, to know whether it's worth fetching a replacement classifier yet - Added
coverageScore
property to classifiers, to give an indication of the usability of the model data in the classifier's geographic region. (The score is the result ofcompletenessScore * accuracyScore
)
- New machine learning engine for activity type detection. Includes the same base types supported by Core Motion, plus also car, train, bus, motorcycle, boat, airplane, where data is available.
- Misc minor tweaks and improvements to the location data filtering, smoothing, and dynamic accuracy adjustments
- Initial release