Уровень уверенности в вождении в iOS 11 все время низок
У меня есть приложение, которое обнаруживает вождение пользователя и выполняет некоторые внутренние процессы. После обновления iOS с iOS-10 до iOS-11 приложение перестает работать. Тем не менее, приложение прекрасно работает в iOS 10, но не работает в iOS 11.
После отладки я обнаружил, что проблема была в CMMotionActivityManager. Доверие к автомобильной активности в большинстве случаев низкое (0), даже если пользователь фактически за рулем.
Поскольку я не могу определить полное поведение вождения пользователя.
Вот пример кода, который я использую.
if CMMotionActivityManager.isActivityAvailable() {
motion.startActivityUpdates(to: OperationQueue.current!, withHandler: {
activityData
in
self.handleActivityData(activityData!)
})
}
func handleActivityData(_ activityData: CMMotionActivity) {
let rawConfidence = activityData.confidence.rawValue
// Confidence = 2 -> high
// Confidence = 0 -> low
if rawConfidence > 0 {
if activityData.automotive {
drivingActivity = true
Log.info("Activity : Automotive")
} else {
drivingActivity = false
var text = "Empty"
if activityData.walking {
text = "Walking"
} else if activityData.running {
text = "Running"
} else if activityData.stationary {
text = "Stationary"
} else if activityData.cycling {
text = "Cycling"
} else if activityData.unknown {
text = "Unknown"
}
}
}
}
Кто-нибудь сталкивается с той же проблемой?
Любая помощь приветствуется.
0 ответов
Обработчик не является взаимоисключающим, в операции может быть несколько истинных объектов BOOL, если они не обработаны. Зарегистрируйте его и прислушайтесь к обновлениям, если активность.confidence меняет BOOL-переменные, которые нужно проверять индивидуально, чтобы определить, кто наиболее надежен.
Быстрый способ: добавьте немного логики и создайте переменную int для уверенности. При обновлении ActivityManager проверьте, есть ли что-то лучше, чем в прошлый раз, и обновите var с новой достоверностью прогнозируемой активности.
Если вы не можете заставить это работать, я могу опубликовать код для вас