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

android– 如何在摇动设备时刷新应用程序?,第1张

概述我需要添加一个可以刷新我的Android应用程序摇动功能.我发现的所有文档都涉及实现SensorListener,但Eclipse告诉我它已被弃用并建议使用SensorEventListener.谁有一个很好的指导我如何创建这个摇动控制器?解决方法:这是一个示例代码.把它放到你的活动类中:/*putthisinto

我需要添加一个可以刷新我的Android应用程序的摇动功能.

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

谁有一个很好的指导我如何创建这个摇动控制器?

解决方法:

这是一个示例代码.
把它放到你的活动类中:

  /* 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();}

笔记:

应该在onPause上停用accelometer并在onResume上激活以节省资源(cpu,电池).
代码假定我们在地球上;-)并初始化加速到地球引力.否则,当应用程序启动时,您将获得强烈的“震动”,并从自由落体中“击中”地面.然而,由于低截止滤波器,代码习惯于引力,并且一旦初始化,它也可以在其他行星或自由空间中工作.
(你永远不知道你的应用程序将被使用多久…… 总结

以上是内存溢出为你收集整理的android – 如何在摇动设备时刷新应用程序?全部内容,希望文章能够帮你解决android – 如何在摇动设备时刷新应用程序?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1104407.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-28
下一篇 2022-05-28

发表评论

登录后才能评论

评论列表(0条)

保存