- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
我最近发现一些网站似乎可以访问我笔记本电脑上的加速度计或陀螺仪,检测方向或运动的变化。
这是怎么做到的?我必须订阅 window
对象上的某种事件吗?
已知这可以在哪些设备(笔记本电脑、手机、平板电脑)上运行?
注意:其实我已经知道(部分)这个问题的答案了,我马上就贴出来。我在这里发布问题的原因是让其他所有人都知道加速度计数据在 Javascript 中可用(在某些设备上),并挑战社区发布关于该主题的新发现。目前,似乎几乎没有这些功能的文档。
最佳答案
当前存在三个不同的事件,当客户端设备移动时可能触发也可能不触发。其中两个关注方向,最后一个关注运动:
ondeviceorientation
已知可以在桌面版 Chrome 上运行,而且大多数 Apple 笔记本电脑似乎都具备运行此功能所需的硬件。它还适用于装有 iOS 4.2 的 iPhone 4 上的 Mobile Safari。在事件处理函数中,您可以访问作为函数唯一参数提供的事件数据的 alpha
、beta
、gamma
值。
onmozorientation
Firefox 3.6 及更新版本支持。同样,众所周知,这适用于大多数 Apple 笔记本电脑,但也可能适用于带有加速度计的 Windows 或 Linux 机器。在事件处理函数中,在作为第一个参数提供的事件数据上查找 x
、y
、z
字段。
ondevicemotion
已知可在 iPhone 3GS + 4 和 iPad(均装有 iOS 4.2)上运行,并提供与客户端设备当前加速相关的数据。传递给处理函数的事件数据有acceleration
和accelerationIncludingGravity
,它们每个轴都有三个字段:x
,y
, z
“地震检测”示例网站使用一系列 if
语句来确定要附加到哪个事件(以某种优先顺序)并将接收到的数据传递给一个通用的 tilt
功能:
if (window.DeviceOrientationEvent) {
window.addEventListener("deviceorientation", function () {
tilt([event.beta, event.gamma]);
}, true);
} else if (window.DeviceMotionEvent) {
window.addEventListener('devicemotion', function () {
tilt([event.acceleration.x * 2, event.acceleration.y * 2]);
}, true);
} else {
window.addEventListener("MozOrientation", function () {
tilt([orientation.x * 50, orientation.y * 50]);
}, true);
}
常数因子 2 和 50 用于将后两个事件的读数与第一个事件的读数“对齐”,但这些决不是精确表示。对于这个简单的“玩具”项目,它工作得很好,但如果您需要将数据用于稍微严肃的事情,您将必须熟悉不同事件中提供的值的单位并尊重它们:)
关于javascript - 如何从 Javascript 访问加速度计/陀螺仪数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4378435/
我需要一种方法来从局部获取全局引用系中旋转的欧拉角。我正在使用 c#、wpf 3d 和陀螺仪。我在屏幕上有一个地球仪,它应该以与陀螺仪相同的方式移动。由于陀螺仪发送相对于自身的运动,我需要使用四元数来
我试图理解不同的运动/位置陀螺仪、运动和加速度所代表的含义。 (startGyroUpdates、startDeviceMotionUpdates 等)。 但是,经过一些研究后,我很难看出陀螺仪和运动
我想使用陀螺仪、加速度计和磁力计来获得 3 轴完全平滑的旋转。 第一个问题是我的输出有很大的噪音,我想知道如何消除它。 第二个问题是陀螺仪漂移,我认为应该用卡尔曼滤波器来解决。 第三个问题是加速度计。
我正在开发一个游戏,需要检测设备是否向上或向下移动以向上或向下移动角色,因为我正在使用陀螺仪(如果有更好的方法请纠正我) 但是陀螺仪对我来说非常复杂(因为我不太了解 phisyc),所以我不知道如何根
关闭。这个问题需要debugging details .它目前不接受答案。 编辑问题以包含 desired behavior, a specific problem or error, and t
我一直在尝试确定如何将 iPhone 陀螺仪用于驾驶员安全应用程序,但我对此感到非常困惑。我知道手机中的陀螺仪可以测量手机本身的变化和旋转,但是它可以用来测量手机在行驶的汽车中发生的变化吗? 例如,如
我正在尝试创建一个应用程序来跟踪设备在 2D 空间中的移动。在网上查了下,我能找到的一种方法是积分两次线性加速,但是错误很可怕。 这个问题有什么解决办法吗?我希望能够向上移动手机,这会导致在屏幕上绘制
我正在使用 Unity 制作一款使用陀螺仪的游戏。我正在尝试检测设备围绕穿过屏幕的轴的旋转,我假设它是 Unity Space 中的 Z 轴。我尝试使用 Input.gyro.attitude.eul
我正在学习使用 iOS 中的陀螺仪传感器编写应用。是否有处理陀螺仪的类,类似于加速度计的 UIAcceleration/UIAccelerometer/UIAccelerometerDelegate?
我想通过陀螺仪传感器的能力得到我想“看”的X、Y、Z位置的精确位置 我能够从陀螺仪传感器获得 9 的值,但我无法计算出从该陀螺仪传感器获得准确位置的公式。 我想要公式或例子来得到正确的答案 这是我想要
最近我做了一些研究,使用加速度计 + 陀螺仪来使用这些传感器在没有 GPS 帮助的情况下跟踪智能手机(见这篇文章) Indoor Positioning System based on Gyrosco
我正在测试 Core Motion 并使用陀螺仪。现在我得到了我不理解的值(value)观。我的假设是对于每个 x、y 和 z,我会得到一个 0-360 之间的值,这将是一个完整的旋转,但事实并非如此
我正在尝试使用陀螺仪制作一个简单的应用程序,其中角色会根据 iPad 1 的旋转进行移动。 我的代码无法正常工作,因此我测试了原始、俯仰、偏航的值,无论我如何移动设备,它们实际上都保持为零。我确定 i
我有一个非常简单的应用程序,我试图通过核心运动使用陀螺仪。 此时,出于测试目的,我只是获取滚动、俯仰和偏航的值并在屏幕上打印。根据下图,据我所知,roll、pitch、yaw分别对应红、绿、蓝轴,对吗
我正在使用 Core Motion,并且收到“展开可选值时意外发现 nil”,但只有大约一半的时间加载应用程序。如何更正下面的代码,使其稳定? import UIKit import CoreMoti
我有一些代码旨在测量移动设备上的设备运动,它曾经可以在移动浏览器中运行,但现在不再可以了。以下是直接取自 Mozilla 网络文档的示例: function handleMotionEvent(eve
Original Question 我正尝试在我的 iPhone 6s 上使用 A-Frame 运行一个 webVR 程序,而我测试过的这三个浏览器无法访问我的陀螺仪。 Safari Chrome F
我想知道 Apple 开发人员是否可以澄清 API 是否可用。 互联网上有一些猜测,似乎没有人回答这个问题。 或多或少,Apple Watch OS 2.0 并不是最容易使用的测试版,甚至发行版似乎也
我想制作一个应用程序来获取 Android 手机的所有读数,例如加速度计、GPS、陀螺仪、摄像头等。记录所有这些数据并将其发送到云端以供使用。 我是一名初学者 android 开发人员,想基本了解如何
我是一名优秀的程序员,十分优秀!