我需要添加一个可以刷新我的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 – 如何在摇动设备时刷新应用程序?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)