Introduce the concept of primary and secondary weathers:
* Primary weather keeps the same behavior as previously across all weather providers, so it's non-breaking. This location is not necessarily the current location, just the primary weather location set by the user.
* The GenericWeatherReceiver now has a new extra WeatherSecondaryJson, that receives a json list with secondary weather locations.
It's guaranteed that the primary weather always exists, so the list of WeatherSpecs provided to devices is never empty. Update all support classes accordingly.
NotificationListener now stores the handle ID in wearableAction.handle rather than hard-coding the calculation
Should fix ZeppOS too which was copy&paste from Bangle.js
Bangle.js:file handling LOG.warn -> info
Bangle.js: sync file can't escape device directory
Naïve solution. I wanted to use `Path.normalize()` but Android Studio
said it could not be used from the static context. This does not attempt
to normalize the path, but just remove the special names `..\` and `.\`.
Bangle.js:simpler hindering of escaping device dir
... might not be necessary. Since I got the fetching to work with
intervals on the the Bangle.js side it's been stable.
Didn't manage to make packet counting work yet.
Bangle.js: WIP add supportsActivityTracks
Bangle.js: testing flow of info
Bangle.js:WIP receive and store csv from Bangle.js
Bangle.js:store and transmit ID of last synced log
bangle.js:activity tracks, act on completed fetch
... of the recorder csv file.
Bangle.js: Activity tracks, now in database
... but not all data is persisted correctly I think. It's presented as
'Unknown activity'.
Bangle.js:Activity tracks, try to add gps info
I haven't tested with recordings where I have gps values, so far only
empty values. With empty values I currently get "This activity does not
contain GPX tracks" when trying to use the GPXExporter.
Bangle.js: Activity tracks, now adds GPS points
... to the activity to be shown when on the "Sport Activity Detail"
screen.