CMMotionActivityManager 无法检测汽车模式
Posted
技术标签:
【中文标题】CMMotionActivityManager 无法检测汽车模式【英文标题】:CMMotionActivityManager is unable to detect Automotive mode 【发布时间】:2016-05-31 06:12:01 【问题描述】:我正在使用 Core Motion Framework 来检测设备活动。
即步行、跑步、汽车、静止
主要问题是我能够非常准确地检测步行和跑步,但我的设备无法检测到汽车模式。
这是我的代码
var motionActivityManager: CMMotionActivityManager?
if CMMotionActivityManager.isActivityAvailable()
motionActivityManager?.startActivityUpdatesToQueue(NSOperationQueue.currentQueue()!, withHandler:
activityData
in
if activityData!.walking == true
self.lblActivityStatus?.text = "Walking"
else if activityData!.running == true
self.lblActivityStatus?.text = "Running"
else if activityData!.automotive == true
self.lblActivityStatus?.text = "Automotive"
else if activityData!.stationary == true
self.lblActivityStatus?.text = "Stationary"
print("Activity Data: ", activityData)
)
【问题讨论】:
您确定您的手机处于汽车模式吗? (可能它只是没有检测到它) 是的,我在开车的时候试过了。它显示静止或行走。 仅仅因为你在开车,并不意味着手机能正确检测到这一点。如果手机正确检测到它,您是否与另一个应用程序进行了交叉检查? 是的,我已经尝试了很多来自 git 的库,例如 github.com/AmbientStatus/AmbientStatus 我的主要目标是仅使用硬件检测驾驶模式,而不是使用定位服务来解决电池消耗问题。 【参考方案1】:我终于通过在多台设备上测试同一个应用得到了答案。 第一代设备上的 m7 芯片在“汽车”模式下无法正常工作。 当我在 5s 和 ipad air 上进行测试时,它没有检测到应该检测到的汽车模式。但是用 iphone 6 Plus 测试相同的应用程序,它运行良好。 所以问题出在设备而不是框架上。
【讨论】:
如何检测代码中的iphone版本(即iPhone 5s或ipad air)?以上是关于CMMotionActivityManager 无法检测汽车模式的主要内容,如果未能解决你的问题,请参考以下文章
CMMotionActivityManager 无法检测汽车模式
启动 CMMotionActivityManager 给 SIGABRT
用户不允许权限时的CMMotionActivityManager回调
CMMotionActivityManager queryActivityStarting 数据在关闭之外不可用