Android - 加速下降(粉碎)

2023-11-28


视频为不懂的人讲解


此答案未正确回答,请尝试使用其他解决方案来回答(100 赏金已过时)

同样的问题,但更好的解释

这个问题被认为是正确的,但根本不是,我用我的旧设备 ZTE 尝试过,大部分时间都有效,但现在我有一台三星 Galazy A5 2016,它不起作用,在 LG G3 上也不起作用。

事情正在尝试使用Accelerometer还有一些Sensors我必须能够检测到我在视频中所做的这两个动作中的任何一个。

有两个动作:

  • 粉碎它(以一点速度)
  • 自由落体

我让你决定并说服我什么是更好的选择EASIER要做的事情,更好,我的意思是它适用于大多数设备。


固定设备的重力值为 +9.81,该值对应于设备的加速度(0 m/s2 减去重力,即 -9.81 m/s2)。因此,如果设备从静止状态向下移动,则重力将小于 9.81。自由落体装置的重力等于 0。

以下是如何确定设备是否开始向下移动。如果设备已经以恒定速度向下移动,则无法确定设备是否正在向下移动,因为在这种情况下没有向下加速度,重力范数应在 9.81 左右。

你需要使用TYPE_GRAVITY。如果设备没有TYPE_GRAVITY,然后是低通滤波器TYPE_ACCELEROMETER得到重力矢量。

如上所述,固定设备的重力矢量范数等于 9.81。但是,该值会因设备而略有不同。因此,您首先需要确定这个静止重力范数。您可以通过注册 TYPE_GRAVITY 或 TYPE_ACCELEROMETER 并要求用户将设备平放,然后按下按钮来完成此操作。按下按钮后,应用程序将在 onSensorChanged 中计算重力范数。

private float mStationaryGravityNorm;
private float mDeviation = 0.01;
private float mCount;
private boolean mIsCalculatingStationGravityNorm = true;

Button button = findViewById(R.id.button);
button.setOnClickListener(new View.OnClickListener( {
    @Override
    public void onClick(View v) {
        // register sensor
    }
    });

@Override
public void onSensorChanged(SensorEvent event) {
// Will average out 100 gravity values.
if (mIsCalculatingStationGravityNorm) {
    if (mCount++ < 100) {
        mStationaryGravityNorm += Math.sqrt(event.values[0] * event.values[0] + event.values[1] * event.values[1] + event.values[2] * event.values[2]);
    } else {
        mStationaryGravityNorm /= 100;
        mIsCalculatingStationGravityNorm = false;
} else {
    float gravityNorm = Math.sqrt(event.values[0] * event.values[0] + event.values[1] * event.values[1] + event.values[2] * event.values[2]);
    if (gravityNorm < mStationaryGravityNorm - mDeviation) {
    // moving down
    }
}

PS为了向上或向下移动,您确实需要计算重力。当设备静止时,重力范数约为 9.81(取决于设备)。现在,如果设备向下移动,则会有向下的加速度,因此重力范数将小于 9.81,如果设备向上移动,重力范数将大于 9.81。因此,通过将重力范数与固定重力范数进行比较,您将知道设备是向上还是向下移动。这与设备方向无关。 TYPE_GRAVITY 会提供更好的精度,但如果设备没有这种类型,那么低通滤波器 TYPE_ACCELERATOR 将为您提供重力矢量。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Android - 加速下降(粉碎) 的相关文章

随机推荐

  • OpenGL - 如何绘制到多重采样帧缓冲区,然后将结果用作普通纹理?

    我正在开发一个小游戏开发库 该库的元素之一是 Canvas 屏幕外绘图区域 它是通过 OpenGL 帧缓冲区实现的 到目前为止 一切都很好 我生成一个纹理 将其附加到帧缓冲区 渲染它 然后使用帧缓冲区的纹理作为Texture2D 现在 我想
  • 在 Javascript 中将 Base64 数据转换并插入到 Canvas

    我得到一个代表 Base64 图像的数据缓冲区 我得到的数据 代表base64中的图像 部分数据 193 109 51 74 182 71 212 38 78 62 211 48 81 145 244 39 244 250 215 192
  • 如何允许本地主机外部访问

    如何允许 Angular2 本地主机之外的访问 我可以导航到localhost 3030 panel很容易 但当我写下我的IP时我无法导航 例如10 123 14 12 3030 panel 你能告诉我如何修复它吗 我没有使用npm 节点项
  • Objective-C 中无延迟播放音效

    我想在人们按下我的应用程序中的某些按钮时播放一些简单的声音效果 并且我尝试了几种方法 但我总是遇到延迟 使声音看起来不同步 我已按照教程进行操作here 所以我尝试了音频服务中的构建 但是有延迟 并且我尝试了 AVAudioPlayer 但
  • 如何注册Windows Phone 8?什么是 Windows Phone IP Over USB 传输 (IpOverUsbSvc)?

    我有一台 Windows Phone 8 正在尝试使用开发者帐户注册它 我使用的是Visual studio 2012附带的工具 Windows Phone开发者注册 但是当我尝试注册时 我收到一条消息 对于 Windows Phone8
  • Java - 正斜杠转义字符

    谁能告诉我如何在 Java 中使用正斜杠转义字符 我知道反斜杠是 但我尝试过 和 但没有成功 这是我的代码 public boolean checkDate String dateToCheck if dateToCheck matches
  • sizeof(int[1]) 是什么意思?

    我是 Linux 内核的新手 我正在阅读文件ioctl h 在那里我遇到了一个宏 IOC TYPECHECK t 看起来像这样 define IOC TYPECHECK t sizeof t sizeof t 1 sizeof t lt 1
  • 关于 C# 中常量小数字段的令人困惑的警告

    我正在尝试const修改器 同时探索大量的 C 教程 并放置了一堆const像这样的类中的修饰符而不在任何地方实际使用它们 class ConstTesting const decimal somedecimal 1 const int s
  • 无法初始化集群。请检查您的配置中的mapreduce.framework.name和相应的服务器地址-提交job2remoteClustr

    我最近将集群从 Apache Hadoop1 0 升级到 CDH4 4 0 我在另一台机器上有一个 weblogic 服务器 我通过 mapreduce 客户端将作业提交到这个远程集群 我仍然想使用 MR1 而不是 Yarn 我已经根据 C
  • 使用 advapi32.dll:LogonUserA() 模拟远程计算机的本地用户

    我需要能够在远程计算机上运行 RegLoadKey 并且可能我的计算机和远程计算机不在同一域中 如果是的话 下面的代码可以正常工作 我可以模拟在计算机上具有管理员权限的用户 否则 如果我们谈论本地用户 我发现我的计算机上必须有一个具有相同用
  • sliderInput 最大/最小文本标签

    我目前正在开发具有多个滑块输入的仪表板 是否可以用文本替换最大和最小标签 例如 我的 min 1 和 max 10 我想将比例保持在 1 到 10 之间 同时让滑块标签分别显示为 较早 和 较晚 Thanks 遗憾的是 简短的回答是否定的
  • 在 D3.js 中缩放或平移时限制域

    我实现了一个简单的 D3 js 折线图 可以缩放和平移 它基于 Stephen Bannasch 的优秀示例here 我的数据域是 x 维度中的 0 n 如何使用内置缩放行为 即使用鼠标滚轮事件 将缩放和平移限制到此域 我想防止用户在下端平
  • 在 Webview 中打开输入类型文件的相机未打开 Android

    我是安卓新手 我正在创建一个小应用程序来拍照并将其上传到服务器 我正在使用 Webview 和 html 表单来做到这一点 在浏览器 chrome 中相机正在打开 但在 webview 中 单击 选择文件 时不会打开相机 有人知道解决办法吗
  • 分割字符串并返回mssql中最大的

    我需要找到一种方法来获取具有最高versionNumber的数据 这是我的数据库设计 VERSIONNUMBER varchar 15 DOWNLOADPATH varchar 100 假设我有这样的记录 VERSIONNUMBER DOW
  • 如何禁用浏览器上的 F5 刷新?

    最好使用 JavaScript 但也想听听其他方法 这将禁用 F5 但不会禁用实际的刷新功能 document onkeydown function e if e keyCode 116 return false 至少在 Chrome XP
  • opengl创建一个用于读取的深度模板纹理

    我在应用程序中使用延迟渲染 并尝试创建一个包含深度和模板的纹理 glTexImage2D GL TEXTURE 2D 0 GL DEPTH24 STENCIL8 width height 0 GL FLOAT 0 现在 opengl 对于这
  • 带有空格、双引号、管道的批处理文件参数

    我有一个批处理文件 需要传递一个包含管道和空格的参数 由于存在空格 因此在传入参数时需要将双引号附加到参数上 我需要去掉这些双引号并回显参数 通常 使用 可以让我做到这一点 但我认为我传入的特定参数会导致问题 如果我这样做 测试1 bat
  • Pandas 通过行号(不是行索引)和列名称获取单元格值

    data tom 10 nick 15 juli 14 df pd DataFrame data columns Name Age index 7 3 9 display df df iat 0 0 我想返回第一行中的年龄 基本上类似于 d
  • 用 C 写入 CSV 文件 [关闭]

    很难说出这里问的是什么 这个问题模棱两可 含糊不清 不完整 过于宽泛或言辞激烈 无法以目前的形式合理回答 如需帮助澄清此问题以便重新打开 访问帮助中心 我的 C 程序生成此数据 我需要将其放入 CSV 文件中 以便其他程序可以使用它 我怎样
  • Android - 加速下降(粉碎)

    视频为不懂的人讲解 此答案未正确回答 请尝试使用其他解决方案来回答 100 赏金已过时 同样的问题 但更好的解释 这个问题被认为是正确的 但根本不是 我用我的旧设备 ZTE 尝试过 大部分时间都有效 但现在我有一台三星 Galazy A5