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 数据在关闭之外不可用

Swift CMMotionActivityManager 未显示正确的授权状态

是否可以获取 iOS 用户当前的 healthkit 状态?