如何在摇动设备时刷新应用程序?

2024-01-11

我需要添加一个摇动功能来刷新我的 Android 应用程序。

我找到的所有文档都涉及实施SensorListener,但 Eclipse 告诉我它已被弃用并建议SensorEventListener.

任何人都可以指导我如何创建这个shake controller?


这是一个示例代码。 将其放入您的活动类中:

  /* put this into your activity class */
  private SensorManager mSensorManager;
  private float mAccel; // acceleration apart from gravity
  private float mAccelCurrent; // current acceleration including gravity
  private float mAccelLast; // last acceleration including gravity

  private final SensorEventListener mSensorListener = new SensorEventListener() {

    public void onSensorChanged(SensorEvent se) {
      float x = se.values[0];
      float y = se.values[1];
      float z = se.values[2];
      mAccelLast = mAccelCurrent;
      mAccelCurrent = (float) Math.sqrt((double) (x*x + y*y + z*z));
      float delta = mAccelCurrent - mAccelLast;
      mAccel = mAccel * 0.9f + delta; // perform low-cut filter
    }

    public void onAccuracyChanged(Sensor sensor, int accuracy) {
    }
  };

  @Override
  protected void onResume() {
    super.onResume();
    mSensorManager.registerListener(mSensorListener, mSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER), SensorManager.SENSOR_DELAY_NORMAL);
  }

  @Override
  protected void onPause() {
    mSensorManager.unregisterListener(mSensorListener);
    super.onPause();
  }

并将其添加到您的 onCreate 方法中:

    /* do this in onCreate */
    mSensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
    mSensorManager.registerListener(mSensorListener, mSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER), SensorManager.SENSOR_DELAY_NORMAL);
    mAccel = 0.00f;
    mAccelCurrent = SensorManager.GRAVITY_EARTH;
    mAccelLast = SensorManager.GRAVITY_EARTH;

然后,您可以在应用程序中的任何位置询问“mAccel”当前加速度,该加速度与轴无关,并且不受重力等静态加速度的影响。 大约是。如果没有移动,则为 0;如果设备摇晃,则可以说 >2。

根据评论 - 测试一下:

if (mAccel > 12) {
    Toast toast = Toast.makeText(getApplicationContext(), "Device has shaken.", Toast.LENGTH_LONG);
    toast.show();
}

Notes:

应停用加速度计onPause并激活onResume以节省资源(CPU、电池)。 该代码假设我们位于地球上;-) 并初始化地球重力加速度。否则,当应用程序启动并从自由落体“撞击”地面时,您会感到强烈的“震动”。然而,由于低切滤波器,代码会适应引力,一旦初始化,它也可以在其他行星或自由空间中工作。 (你永远不知道你的应用程序将使用多长时间......;-)

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

如何在摇动设备时刷新应用程序? 的相关文章

随机推荐

  • 从 Django 视图启动 Scrapy

    我使用Scrapy的经验有限 每次使用它总是通过终端的命令 如何从 django 模板获取表单数据 要抓取的 url 以与 scrapy 通信以开始抓取 到目前为止 我只想到从django的视图中获取表单返回的数据 然后尝试进入scrapy
  • require.js +backbone.js:如何构建具有初始化功能的模块?

    我有一个包含三个页面的应用程序 它们是单页界面 这些页面具有相似但不相同的功能 所以我想要有提供通用功能的 javascript 模块 然后每个页面可以定制 覆盖部分通用功能 我使用的是backbone js 所以我要做的是 加载包含常见模
  • 使用Python登录Google帐户进入网站[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我正在制作一个网站 该网站制作分组中人数的图表 来自 www codecamy com 为了实现这一目标 我制定了一个计划 我将有一个服务
  • HTTP 状态代码 200,但页面未加载 Node.js Socket.io -- Node.js Socket.io 教程、Daniel Nill、fs.readFile()、socket.html

    了解 node js 和 socket io 并进行操作Daniel Nill 的本教程 http www danielnill com blog nodejs tutorial with socketio 服务器启动没有问题 但是 当我导
  • 如何从codeigniter中的视图调用控制器函数?

    使用 codeigniter 我有一个控制器 如下所示
  • Android AccessibilityNodeInfo刷新()和回收()

    我已经阅读了 android 文档https developer android com reference android view accessibility AccessibilityNodeInfo html https devel
  • 当我在 OnChange 事件中调用 Delete 时,为什么会出现 RichEdit 行插入错误?

    我已经用谷歌搜索并检查了很多地方来寻找解决方案 但我发现的所有情况都不同或涉及比简单地添加或删除行更高级的东西 基本上 我想进行一种滚动丰富的编辑 替代方法是将插入符号移动到底部 我已经找到了解决方案 我正在向其中添加行并检查Lines C
  • 如何将变量/参数写入标准输出?

    我正在尝试调试我的第一个Bicep https learn microsoft com en us azure azure resource manager bicep overview模板 如何将变量或参数值写入标准输出 就像是 var
  • Spark 将每个操作执行两次

    我创建了一个简单的 Java 应用程序 它使用 Apache Spark 从 Cassandra 检索数据 对其进行一些转换并将其保存在另一个 Cassandra 表中 我正在使用 Apache Spark 1 4 1 它配置为独立集群模式
  • 将 ATL 项目从 vs2010 升级到 vs2013 时出现编译错误 [重复]

    这个问题在这里已经有答案了 当在 Visual Studio 2013 构建中包含来自 Microsoft ATL 库的 atlwin h 时 可能会导致出现大量有关未定义元素的编译器错误 HMONITOR is not defined 使
  • Xcode Instruments 在设备上运行时无法拍摄泄漏快照

    最近 在设备上运行应用程序时 我无法使用 Instruments 测试泄漏 仪器将尝试拍摄快照 但状态将冻结在 正在分析过程 起初我以为只是需要时间 但我等了20多分钟却没有运气 但它在模拟器上仍然运行良好 到目前为止我已经尝试过 使用具有
  • 收到构建或发布失败的通知

    我已经将 Azure 管道与团队松弛通道集成在一起 这很好 它告诉我们构建何时完成并发布部署 但真正糟糕的是 它不会报告构建或发布失败的时间 这可以说是更重要的信息 我进入设置尝试查看是否有任何事件 但似乎答案是否定的 我还想看看是否可以用
  • cygwin下使用GCC生成的可执行文件

    我正在使用 Cygwin 并已将 GCC 版本 4 3 4 20090804 release 1 安装为 Cygwin 软件包 当我在 Cygwin shell 下使用 GCC 构建 C 代码时 生成的可执行输出文件是类型为可执行文件 PE
  • 在运行时更改 spring-cloud-stream 实例索引/计数

    在 spring cloud stream 中 有没有一种方法可以在不重新启动应用程序的情况下更改应用程序的实例计数和实例索引 另外 是否有任何推荐的方法来自动填充这些值 在微服务世界中 这似乎非常困难 因为服务一直在启动和停止 在 spr
  • 在 python 中调试 argparse

    我可以知道调试 argpars 函数的最佳实践是什么 假设我有一个 py 文件 test file py 其中包含以下几行 Script start import argparse import os parser argparse Arg
  • Vue.js 单击时切换类

    如何在 vue js 中切换类 我有以下内容 th class initial span class wkday M span th new Vue el my container data methods myFilter functio
  • Grails:获取控制器内资产的本地存储路径

    我需要提取资产文件夹物理路径 以便从控制器写入文件 有什么简单的方法可以从控制器实现文件持久性吗 完整示例 class ExampleService def assetResourceLocator def someMethod Resou
  • UISwitch,Mac 上有类似的东西吗?

    我相信你们大多数人都熟悉UISwitch on iOS 他们是否有任何现有项目试图实施类似的东西UISwitch适用于 macOS 和 AppKit 如果没有 从哪里开始制作呢 我经常看到它们并且能想到很多用途 我认为你应该使用NSChec
  • 如何在颤振中显示带有顶部和底部渐变阴影的图像?

    我正在研究颤振以显示具有顶部和底部渐变叠加的图像 图像顶部和底部的某些部分应显示阴影 就像被其他颜色 如灰色 覆盖一样 请找到我画的附图供参考 我已将 Container 与 CachedNetworkImage 一起使用 并尝试使用 Bo
  • 如何在摇动设备时刷新应用程序?

    我需要添加一个摇动功能来刷新我的 Android 应用程序 我找到的所有文档都涉及实施SensorListener 但 Eclipse 告诉我它已被弃用并建议SensorEventListener 任何人都可以指导我如何创建这个shake