- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在 Swift Playground 上工作,我正在尝试使用此代码来获取设备运动。
@objc func update()
{
if let deviceMotion = motionManager.deviceMotion {
print("Device Motion Yaw: \(deviceMotion.attitude.yaw)")
}
}
但是,设备运动似乎在 Swift Playground 上不起作用,尽管它在 iOS 中有效。我如何更改 Playground 以支持设备运动?我使用运行 iOS 12 和最新版本 Swift Playgrounds 的 iPad 和 Mac 来编写代码。我知道该方法会被完美调用,并且当我将其作为 iPad 和 iPhone 上的 iOS 应用程序的一部分时,代码会完美运行。我将如何修改 Playground 来支持这一点,因为据我所知,默认情况下它不支持这一点?
最佳答案
这是完全有可能的。我已经做过好几次了。您需要一个 CMMotionManager 类。有很多方法可以做到这一点,但我建议使用计时器。这是一些示例代码,取自Apple’s developer documentation并进行修改以适应问题。
let motion = CMMotionManager()
func startDeviceMotion() {
if motion.isDeviceMotionAvailable {
//How often to push updates
self.motion.deviceMotionUpdateInterval = 1.0/60.0
self.motion.showsDeviceMovementDisplay = true
self.motion.startDeviceMotionUpdates(using: .xMagneticNorthZVertical)
// Configure a timer to fetch the motion data.
self.timer = Timer(fire: Date(), interval: (1.0 / 60.0), repeats: true,
block: { (timer) in
if let data = self.motion.deviceMotion {
let x = data.attitude.pitch
let y = data.attitude.roll
let z = data.attitude.yaw
//Use the data
}
})
RunLoop.current.add(self.timer!, forMode: RunLoop.Mode.default)
}
}
startDeviceMotionUpdates()
要么这样做,要么尝试类似的事情,也来自文档
func startQueuedUpdates() {
if motion.isDeviceMotionAvailable { self.motion.deviceMotionUpdateInterval = 1.0 / 60.0
self.motion.showsDeviceMovementDisplay = true
self.motion.startDeviceMotionUpdates(using: .xMagneticNorthZVertical,
to: self.queue, withHandler: { (data, error) in
// Make sure the data is valid before accessing it.
if let validData = data {
// Get the attitude relative to the magnetic north reference frame.
let roll = validData.attitude.roll
let pitch = validData.attitude.pitch
let yaw = validData.attitude.yaw
// Use the motion data in your app.
}
})
}
}
关于ios - 如何将 DeviceMotion 功能添加到 Swift Playground?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55294421/
我正在 Android 上测试 DeviceMotion 事件,并将值绘制在图表上。由于它们是加速度值(无重力),因此如果设备处于静止状态,那么这些值在技术上应该为零。然而,当我将它们绘制在图表上时,
我有以下代码,当(移动)设备被轻微轻推时,它会发出蜂鸣声: let audio = new Audio('ack.mp3'); function handleMotionEvent(event) {
我不确定这是不是该问的地方,但我的 devicemotion 脚本有问题。 我有一些代码在加载页面时运行,以检查是否有可用的陀螺仪。我通过以下方式执行此操作: function check_user_
我正在为我的公司开发一个 AR 应用程序,它运行顺利,除了大约十分之一的设备。 (所有 iphone 4 和 4s,5.1.1+) 当我们运行这段代码时: CMDeviceMotion *d = mo
CMAttitude:multiplyByInverseOfAttitude 的正确使用方法是什么? 假设 iOS5 设备平放在 table 上,在启动 CMMotionManager 之后: CMM
我想在我的网页上实现适用于 Android 和 iOS 平台的移动设备“摇动”事件。 所以,我立即找到了一个也是唯一的 script由亚历克斯·吉布森撰写。 经过一些测试,我发现它在 Android
我正在制作一个应用程序,通过获取 iPhone 的任何移动来跟踪您的 sleep 。我到处搜索,有很多方法可以从中获取数据,但没有用。这是我的代码。 func startManager() {
在我的网站上,我有一些 Javascript 已经运行了一年多了(据我所知,我为它能在所有浏览器中运行而感到自豪)。但是最近它突然坏了,经过一些调试我发现了这一点。 我有一些代码可以创建一个 even
我正在尝试从 HTML5 规范的 devicemotion 事件获取旋转率 我能够在 Chrome 和 iOS 上检索该值。然而,该值在边缘浏览器上似乎为空。我做错了什么吗 - 我的代码如下 wind
我正在记录从 CMMotionManager deviceMotion 获得的“态度”值在 CADisplayLink 回调中(我需要根据设备旋转执行动画)。 这些值似乎每隔几毫秒就会有很大程度的“抽
我一直在浏览整个网络,试图找出如何使用 javascript 中的 devicemotion 事件来捕获 iPad 或 iPhone 移动版 safari 上的加速度计。我只是想知道如何将它实现到一个
我正在 Swift Playground 上工作,我正在尝试使用此代码来获取设备运动。 @objc func update() { if let deviceMotion = motionMa
我有一个 DOM 元素(在某些情况下是几个),我想在设备移动时移动(通过更改 css)。 现在,我想知道为什么这不起作用: var aDOMElement = document.getElementB
我在我的应用程序中使用 coreMotion 来检测 iOS 设备的运动。我知道如何从 coreMotion 获取不同传感器的数据。我从 deviceMotion 中获取滚动、俯仰和偏航数据,如下所示
是否可以使用 devicemotion/deviceorientation HTML5 API 以某种方式计算以 km/h 为单位的设备速度? 我想知道用户是在走路/运行还是不动,我不能使用地理定位
我想在 iOS 13+ 的 WKWebView 中使用 DeviceMotion 和 DeviceOrientation 事件。我正在使用下面的代码 #container{
我有一个奇怪的问题。在我的应用程序中,我询问设备 DeviceMotion 是否可用: if (coreMotionManager.isDeviceMotionAvailable) { cor
有没有办法只请求一次 DeviceMotion 和 DeviceOrientation 权限,而不是每次应用启动时。我正在使用 请求权限 webView.evaluateJavaScript("Dev
我正在尝试使用 ARKit 运行一个简单的应用程序,但每当我运行该应用程序时,我都会收到以下错误。 2017-10-02 15:16:17.717533-0700 MyARKitProject [37
我为 Android WebView 编写了一个 JS SDK,用于收集设备方向和运动。 SDK 监听窗口上的 deviceorientation 和 devicemotion 事件,如下所示: wi
我是一名优秀的程序员,十分优秀!