watchOS2 - CMSensorRecorder
Я хочу использовать исторические данные акселерометра от Apple Watch, и мой accDataList всегда равен нулю. Я создал CMSensorRecorder в функции инициализации класса. У кого-то была эта проблема раньше?
func startMovementDetection(){
self.cmSensorRecorder?.recordAccelerometerFor(self.recorderDuration)
self.startDate = NSDate()
}
func extractHistoricalAccelerometerData(){
var accDataList = self.cmSensorRecorder!.accelerometerDataFrom(self.startDate, to: NSDate())
NSLog("AccDataList : \(accDataList)")
if accDataList != nil {
accDataList = accDataList as CMSensorDataList
for accData in accDataList {
self.addHistoricalAccDataToMovementArray((accData as? CMRecordedAccelerometerData)?.acceleration)
}
self.sendDataToIphone()
}
}
Лог выглядит так:
2015-07-11 22:02:55.279 emmoveDataWatchOS Extension [2158:2428612] Начать запись
2015-07-11 22:02:55.279 Расширение emmoveDataWatchOS [2158:2428612] AW: Обновления запуска движения
2015-07-11 22:02:55.279 Расширение emmoveDataWatchOS [2158:2428612] AW EMWatchManager: startMovementDetection
2015-07-11 22:02:55.279 Расширение emmoveDataWatchOS [2158:2428612] Необязательно (CMSensorRecorder: 0x797733d0)
2015-07-11 22: 10: 51.483 Расширение emmoveDataWatchOS [2158:2428612] AW: Обновления Stop Motion
2015-07-11 22:10:51.484 Расширение emmoveDataWatchOS [2158:2428612] Извлечение данных из необязательного (2015-07-11 20:02:55 +0000) в 2015-07-11 20:10:51 +0000
2015-07-11 22:10:51.484 Расширение emmoveDataWatchOS [2158:2428612] Необязательно (CMSensorRecorder: 0x797733d0)
2015-07-11 22: 10: 51.486 Расширение emmoveDataWatchOS [2158:2428612] AccDataList: nil
3 ответа
Может быть, вы можете попытаться
func startMovementDetection(){
self.startDate = NSDate()
self.cmSensorRecorder?.recordAccelerometerFor(self.recorderDuration)
}
И взгляните на Swift watchOS 2 - CMSensorDataList
В CMSensorRecorder также есть ошибка: вам нужно подождать от 3 до 5 минут, чтобы перезапустить ваш рекордер, иначе список всегда будет возвращать ноль (вы можете посмотреть видео Apple для более подробной информации).
Убедитесь, что включены Настройки> Конфиденциальность> Движение и фитнес> Отслеживание фитнеса.
Если он отключен, CMSensorRecorder.accelerometerData()
всегда кажется, что возвращает ноль, хотя
CMSensorRecorder.isAccelerometerRecordingAvailable() == true
а также
CMSensorRecorder.authorizationStatus() == .authorized
У меня была такая же проблема, нашел решение в этом посте:
https://forums.developer.apple.com/thread/15470
"Видимо, не нравится, чтобы зарядное устройство было подключено к часам при начале повторного запуска"
Просто нужно отключить устройство от его зарядного устройства. Имеет смысл, но, конечно, официально нигде не зарегистрировано...