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

"Видимо, не нравится, чтобы зарядное устройство было подключено к часам при начале повторного запуска"

Просто нужно отключить устройство от его зарядного устройства. Имеет смысл, но, конечно, официально нигде не зарегистрировано...

Другие вопросы по тегам