问题标签 [cmmotionmanager]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
ios - ios cmmotionanager 内存使用情况
我按照本教程: http: //blogs.captechconsulting.com/blog/john-morrison/ios-getting-started-accelerometer-data让我的 iPhone 应用程序监听加速度计。在我的 AppDelegate 中添加了 CMMotionManager,并添加了一个属性来读取视图控制器中应用程序的 CMMotionManager。现在我在我的应用程序上收到内存使用警告。
我将应用程序连接到内存分析器仪器,并且可以看到当我不与应用程序交互并且它静止地坐在桌子上时,我的内存使用量呈线性增长。罪魁祸首似乎在这段代码中:
第一个示例内联定义了队列,作为最后的手段,我将队列移到了我的视图控制器的成员变量中——似乎都没有太大的效果。当我不打开更新间隔时,我看不到内存使用量增加。当我打开更新间隔时,内存会增长。
motionCount 被声明为 viewController 的私有 int,并用于跟踪最近的手机移动。随着时间的推移,另一个线程慢慢地将计数器重置为零......但是启用/禁用该线程似乎不会影响内存使用,所以我已经离开了那个代码......
我在网络上没有看到任何关于 CMMotionManager 可能导致内存使用过多的警告,但是在我让应用程序运行的每一分钟,都会消耗另外 5 兆内存......有什么技巧可以帮助了解我的问题?...
ios - CMMotionManager 与 UIAccelerometer 效率
我已经在AR 框架上工作了一段时间,并且正在尝试从 UIAccelerometer(已弃用)更新到 CMMotionManager,但遇到了一些效率问题?
基本上,CMMotionManager 似乎比 UIAccelerometer 大得多且慢得多。以前有没有人遇到过 CMMotionManager 的性能问题?
正如你在这里看到的,我有这个:
和
即使在像 iPhone 4 这样的“旧”设备上也能很好地工作(不是很旧,但是是的......)。
但是当尝试完全相同的代码但使用 CMMotionManager 时:
和
数学似乎减慢了它的废话..!我这样说是因为当我删除所有数学部分时,效果很好。
iPhone 5 可以正常工作,但 iPhone 4S 会出现滞后迹象,而 iPhone 4 将只是冻结...
(如果你愿意,我可以给你更多细节,但解释起来相对复杂)
ios - iOS - 解释 CLHeading 的 x、y、z 值
我试图从我从 CLLocationManager 对象的更新中获得的 CLHeading 类中读取的值中获取有意义的“设备方向”信息。这个类包含三个值,x,y,z,它们以微特斯拉为单位,正如我从文档中了解到的那样,这是指向地球磁北的矢量,设备的磁偏被过滤掉了。现在,我想确定的是,我们在哪个坐标系中获得这些读数?它们是否相对于设备自身的坐标系,如下图所示:
(来源:apple.com)
Core Motion 框架使用哪个?
此外,是否有一种可靠的、既定的方法可以让我获得上图中的帧轴向量?根据我的阅读,iOS 不提供此功能,但设备的“姿态”除外,它作为设备的(俯仰、偏航、滚动)角度提供,由 Core Motion 框架的startDeviceMotionUpdatesUsingReferenceFrame
方法更新。但我发现这些角度值非常不可靠,因为即使设备静止,它们也会波动。我需要尽可能精确的设备方向数据,因为我将使用这些数据来校准相机系统。
提前致谢。
iphone - 使用 CMMotionManager iPhone 的生涩动作
当设备向前、向后、向右、向左倾斜时,我正在使用 CMMotionManager 在我的视图上移动按钮、图像等。我得到姿态俯仰和滚动,然后使用它们将值分配给代表屏幕上像素位置的字符串。
这是我获取信息的方式
这就是我分配它们的方式。
等等
我已经制作了它们,因此 x 轴在屏幕上连续上下(来回)。即 -.01 与 -.40、.01 和 .40 相同。并且它们的接近方式与您从 -.01 和 .01 上升时一样,值会变大,而从 -.40 和 4.4 会变小。我也对y轴做了同样的事情。-.01 和 .01 是 284,-.20 和 .20 是 264。但是在这种情况下,数字从 -.01 上升到 0.01 下降。
这里有些例子
这样,从一个方向到下一个方向的连续流动。
但是我有一个小问题。当手机向前倾斜并从 0.2 面朝上方向转变为 0.2 面朝下方向时。我有一个生涩的动作。在 faceUp .2 按钮等中,突然向左移动,当它移动到 faceDown .20 时,它们向右移动。否则,按钮等以 0.19 和 -.19 为中心并返回那里正常运行(如预期的那样)。我曾尝试调用 DeviceOrientationFaceUp 和 FaceDown 但这似乎没有帮助。
有没有人对此行为有任何经验并且知道修复或有任何建议。
我还添加了这部分来上下左右移动按钮。使用这种方法将按钮上下左右移动到手机的任何位置。
这是一种视差运动的东西。
ios - Devicemotion 不更新值
我无法弄清楚为什么在记录时滚动、俯仰和偏航值给出 0.0000.. 我确定这是我想念的东西,但我无法弄清楚..
这是代码:
我已经解决了这个类似的问题:SO Question
请帮助我理解这一点..
谢谢..
更新代码:
这段代码也有很大一部分初始值为 0.000000 。之后它开始获得价值......所以我想startDeviceMotionUpdates
为提供价值有一些延迟deviceMotion
。所以看起来我需要弄清楚如何保存第一个非零值。
ios - CMMotionManager 未提供任何值
我目前正在尝试开发一个从 CMMotionManager 中提取磁力计数据的 iOS 应用程序。我创建了一个非常简单的测试应用程序,但即使是该应用程序也无法在我的 iPhone 5 上运行。代码如下:
问题是处理程序根本不会被调用。同样,调用[motionManager startMagnetometerUpdates]
然后轮询magnetometerData
也不起作用(它返回 nil)。执行[motionManager isMagnetometerActive]
结果总是false
.
我被困在这里,有什么想法吗?我不明白为什么代码不应该工作。我必须以任何方式首先请求访问指南针吗?CMMotionManager 的文档除了我所做的事情之外没有提及任何内容。
ios - CoreMotion - 确定iOS设置中是否禁用运动的方法?
在 iOS 7 上,用户可以在 Settings -> General -> Accessibility -> Reduce Motion 中选择禁用设备运动。
我正在创建基于 UITableView 滚动的 UI 效果,因此我没有使用CMMotionManager
或CoreMotion
框架来创建任何运动效果。
但是,如果用户在“设置”中打开,我想尊重用户的设置并且不创建动作效果Reduce Motion
。
CMMotionManager
包括一个实例方法 deviceMotionActive
来检查它是否处于活动状态(我假设这是正确的检查),但是,我宁愿不必为了进行此检查而初始化管理器,遗憾的是我找不到任何关于类方法的文档这将返回一个类似的布尔值,有点像存在类方法MFMessageComposeViewController
来检查 iMessage/SMS 可用性(+(BOOL)canSendText
)等等。
谢谢!
ios - 陀螺仪旋转数据和设备运动旋转数据有什么区别?
对你们大多数人来说,这可能是一个简单的问题。但是,我无法弄清楚gyroscope
旋转数据和device motion
旋转数据之间的区别。
我的问题 :
如果用户倾斜 IOS 设备在特定轴(例如:X 轴),那么,我必须 根据倾斜操作结果修改frame.origin.x
属性。UIImageView
与 Y 轴相同。
我的问题:
我是否应该使用陀螺仪旋转数据或设备运动旋转数据以获得更好的结果?
我碰巧阅读了 Apple 的文档,它说gyroscope
是有偏见的。这是什么意思?
我想以像素为单位计算两个旋转数据之间的差异?我该怎么做?
谢谢你的回答。
ios - 后台操作
我正在做一些关于在应用程序处于后台时读取加速度计数据的研究,我发现这个问题没有纯粹的解决方案。您可以使用来自其他 api 的一些回调,例如播放音频、录制音频、接收位置更新……等等。但是我发现了一件有趣的事情。
当我启动下面的功能并点击主页按钮时,应用程序会进入后台,但“正在运行”消息会不断将自身写入日志。
另一个有趣的事情是我关闭了背景模式。
我的问题是……我可以在应用程序处于后台时使用这种无限循环方法来读取 CMMotionManager 的加速度计数据吗?它看起来像一个解决方案。有人用过吗?有人知道在后台读取 CMMotionManager 数据的其他方法吗?
任何想法链接都可能会有所帮助。如果您有想法,请与我分享。谢谢你的时间。
ios - 在 ios 中以暂停状态工作的运动活动
我在我的一个应用程序中使用 M7 处理器运动活动。当应用程序处于挂起状态时,我也想获得运动活动更新。我不想调用 startUpdatingLocation 来防止应用程序进入挂起状态,因为它会消耗大量电池。当应用程序进入后台时,我已经设置了区域监控,但我仍然没有收到动态更新。
除了调用 startUpdatingLocation 以在暂停状态下获取运动活动更新之外,还有其他方法吗?