标签: core-motion

pARK在iPhone 3GS上工作

我一直在这里找到的iphone增强现实框架之上构建, 但遗憾的是,在没有陀螺仪的手机(即3GS)上,它不起作用(正如它所说的那样).

有没有人知道修复它使运动传感器和指南针标题相反?或者是否有人会如此富裕地为这样的框架提供代码?

我需要一种方法来使矢量工作,如果不可能,我将需要推进并只使用标题.

iphone objective-c augmented-reality core-motion

10
推荐指数
1
解决办法
397
查看次数

CMMotionActivityManager忽略循环

我一直在研究新的M7芯片CMMotionActivityManager,用于确定设备的用户是在走路,跑步,在汽车等等(参见Apple文档).这似乎是尝试LocationManager仅使用和加速计数据来确定此前一步的一大进步.

然而,我注意到CMMotionActivityManager没有自行车活动,这是令人失望的,并且几乎是一个完全用作新活动经理的交易破坏者.有没有其他人找到一个方便的方式CMMotionActivityManager与骑自行车一起使用,而不必重新加入CMLocationManager+加速度计只是为了尝试测试骑自行车?

请注意,这也不包括像火车这样的东西的一般运输选项.例如,我每天在火车上上班一小时.汽车可以至少更加通用,类似于Move使用Transport的方式.

CMMotionActivity 仅具有以下定义的运动类型:

  • 静止的
  • 步行
  • 赛跑
  • 汽车
  • 未知

来自Apple代码的有用说明,不一定能解决问题,但有用:

CMMotionActivity

基于设备的运动估计用户的活动.

活动作为一组属性公开,属性不是互斥的.

例如,如果您在停车标志处停车时状态可能如下:固定=是,行走=否,运行=否,汽车=是

或移动车辆,静止=否,行走=否,运行=否,汽车=是

或者设备可以运动但不能行走或在车辆中.静止=否,行走=否,运行=否,汽车=否.请注意,在这种情况下,所有属性都是NO.

[直接来源:Apple iOS Framework,CoreMotion/CMMotionActivity.h @interface CMMotionActivity,内联代码注释]

ios core-motion apple-m7

10
推荐指数
1
解决办法
3194
查看次数

无论设备方向如何,物体都会落向地面

我已经看到两种使用CoreMotion框架描述不同设备方向的下降对象行为的方法.我已经在代码中尝试了两个版本,它们似乎都表现得像我期望的那样,即无论设备方向如何都会向地球坠落.

我只是好奇为什么两个版本的行为相同,即使对于第一个版本,x和y方向的加速度,即dxdy,是横向切换?

1)

if var dx = data?.acceleration.x, var dy = data?.acceleration.y {
                            switch UIDevice.currentDevice().orientation {
                            case .Portrait:
                                dy = -dy
                            case .PortraitUpsideDown:
                                break
                            case .LandscapeRight:
                                swap(&dx, &dy)
                            case .LandscapeLeft:
                                swap(&dx, &dy)
                                dy = -dy 
                            default:
                                dx = 0
                                dy = 0
                            }
                            gravity.gravityDirection = CGVector(dx: dx, dy: dy)
                        }
Run Code Online (Sandbox Code Playgroud)

2)

if var dx = data?.acceleration.x, var dy = data?.acceleration.y {
                                switch UIDevice.currentDevice().orientation {
                                case .Portrait:
                                    dy = -dy
                                case .PortraitUpsideDown:
                                    break
                                case .LandscapeRight:
                                    break
                                case …
Run Code Online (Sandbox Code Playgroud)

iphone ios core-motion swift

10
推荐指数
1
解决办法
148
查看次数

iOS检测用户的移动

我想创建一个简单的应用程序,当我在Y轴上从起点到终点移动手机时,在屏幕上绘制一条简单的线,例如从点a(0,0)到点b(0,10)请帮忙

演示:

在此输入图像描述

objective-c uiaccelerometer ios core-motion

9
推荐指数
1
解决办法
7828
查看次数

CMErrorDomain错误103.是什么意思?(CMPedometer)

我正在努力让CMPedometer返回任何步骤数据.但是我得到了IconfigureError Domain=CMErrorDomain Code=103 "The operation couldn’t be completed. (CMErrorDomain error 103.)"

我正在使用swift并将queryPedometerDataFromDate查询分解为尽可能简单.

    let pedometer = CMPedometer()
    let fromDateString = "2015-01-22"
    let toDateString = "2015-01-23"
    let dateFormatter = NSDateFormatter()
    dateFormatter.dateFormat = "YYYY-MM-DD"
    let fromDate = dateFormatter.dateFromString(fromDateString)
    let toDate = dateFormatter.dateFromString(toDateString)

    pedometer.queryPedometerDataFromDate(fromDate, toDate: toDate) { (data:CMPedometerData!, error:NSError!) -> Void in

        if error == nil {
            println(data)
        } else {
            println(error)
        }
    }
Run Code Online (Sandbox Code Playgroud)

我为我的应用程序启用了动态检测,从HealthKit获取类似数据没有问题.

我必须遗漏一些简单的东西,但我看不出它是什么!

ios core-motion swift

9
推荐指数
1
解决办法
2407
查看次数

在IOS 11中,后台的DeviceMotion停止工作

我的应用程序在后台报告并记录位置,高度,旋转和加速度计数据(DeviceMotion).这适用于ios 10.3.3.在IOS 11上,当设备被锁定时,我不再拥有访问运动数据.不过,高度数据和位置数据仍然会流式传输到控制台.

IOS 11中的某些内容发生了变化,导致我无法访问动态数据,或者我正在尝试以Apple现在阻止的方式访问它,例如OperationQueue.main

这是我如何开始动态更新.如果手机解锁,一切正常.如果我锁定手机,没有更新更新:

let motionManager = self.motionManager

    if motionManager.isDeviceMotionAvailable {
        motionUpdateInterval = 0.15
        motionManager.deviceMotionUpdateInterval = motionUpdateInterval

        motionManager.startDeviceMotionUpdates(using: .xArbitraryZVertical, to: OperationQueue.main) {deviceMotion, error in
            guard let deviceMotion = deviceMotion else { return }
Run Code Online (Sandbox Code Playgroud)

我找不到关于运动背景模式改变的任何信息,但似乎必须有一种方法,否则RunKeeper,Strava将会破坏.在IOS11发布之前,有人可以帮助我重新开始工作吗?

谢谢!

core-motion devicemotion ios11

9
推荐指数
1
解决办法
2732
查看次数

使用CoreMotion错误的罗盘标题值

我正在使用CoreMotion获取ccompass标题,我注意到罗盘标题存在一些问题.

首先我初学CoreMotion.我有一个CMMotionManager对象,locationManager,它是CMMotionManager的一个实例.

// initialize CoreMotion
motionManager = [CMMotionManager new];
[motionManager setDeviceMotionUpdateInterval:1.0/30.0];
[motionManager setShowsDeviceMovementDisplay:YES];
[self.motionManager startDeviceMotionUpdatesUsingReferenceFrame:CMAttitudeReferenceFrameXTrueNorthZVertical];
Run Code Online (Sandbox Code Playgroud)

位置数据每1/30.0秒更新一次.

出于调试目的,我有一个UILabel,它显示每个更新间隔更新的当前罗盘标题.应用程序启动时,我总是要做神奇的8来校准指南针.

校准指南针后,北极和南极的航向几乎是2-5秒.

几秒钟后,指南针变得狂野,角度四处跳跃.大多数情况下,它从两个方向的起始位置漂浮在10-20度左右.应该有一个奇怪的结果.经过30-60秒后,南北两次互换或向东和向西交换.

在WWDC 2011上,一个会议讨论了他们如何计算每个传感器与另一个传感器以补偿这些问题.在CoreMotion的配置中是否有任何错过我有这个精确标题结果的大问题?

我现在用3个设备(2个iPhone 4s和iPhone 4)在建筑物内外测试指南针.我在田野,小城市和大城市.它一直在发生.来自Apple的示例指南针应用程序几乎准确,在我的测试中准确率为90%.不幸的是,它不是Apple开源的.

谢谢你的阅读.

iphone augmented-reality core-motion compass-geolocation

8
推荐指数
1
解决办法
2535
查看次数

从CMRotationMatrix得到俯仰,偏航,滚动

我有一个CMRotationMatrix*rot,我想得到矩阵中的俯仰,偏航,滚动.任何想法我怎么能这样做?

谢谢

opengl-es ios core-motion

8
推荐指数
1
解决办法
7484
查看次数

iOS旋转矩阵的解释

我正在尝试使用3D旋转,但我似乎不知道框架如何进行计算.

例如,我得到这些数据:

偏航-1.010544螺距0.508249 roll 1.128918

然后我打印相应的旋转矩阵

  • 0.599901 -0.128495 -0.789689
  • 0.740043 0.464230 0.486649
  • 0.304065 -0.876344 0.373584

在阅读了API和wiki之后,我非常确定必须有一种通用的方法来创建一个超出欧拉角度的旋转矩阵.我在这里尝试了所有这些,没有结果.

我错过了什么,或者这是怎么做到的?

iphone accelerometer gyroscope core-motion

8
推荐指数
1
解决办法
3889
查看次数

如何在用户拒绝健身数据时收到通知?

我可以检查用户是否授权的健身数据使用-[CMMotionActivityManager queryActivityStartingFromDate:toDate:toQueue:withHandler:],并检查错误(CMErrorNotAuthorizedCMErrorMotionActivityNotAuthorized在处理程序).

如果用户进入隐私设置并拒绝我的应用程序,该应用程序将被终止,当我重新启动它时,一切正常.

如果用户转到隐私设置并全局拒绝健身数据,则应用程序不会被杀死,使用上述方法检查不会报告任何错误!

我必须针对iOS 8,所以我无法使用+[CMSensorRecorder isAuthorizedForRecording].

你有解决这个问题的可靠方法吗?拥有一个很好的位置授权API 非常烦人,但不适合这个!

authorization ios core-motion

8
推荐指数
1
解决办法
201
查看次数