androID 检测手机摇晃的监听器,实现代码如下所示:
public class ShakeListener implements SensorEventListener { // 速度阈值,当摇晃速度达到这值后产生作用 private static final int SPEED_SHRESHolD = 3000; // 两次检测的时间间隔 private static final int UPTATE_INTERVAL_TIME = 70; // 传感器管理器 private SensorManager sensorManager; // 传感器 private Sensor sensor; // 重力感应监听器 private OnShakeListener onShakeListener; // 上下文 private Context mContext; // 手机上一个位置时重力感应坐标 private float lastX; private float lastY; private float lastZ; // 上次检测时间 private long lastUpdateTime; // 构造器 public ShakeListener(Context c) { // 获得监听对象 mContext = c; start(); } // 开始 public voID start() { // 获得传感器管理器 sensorManager = (SensorManager) mContext .getSystemService(Context.SENSOR_SERVICE); if (sensorManager != null) { // 获得重力传感器 sensor = sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER); } // 注册 if (sensor != null) { sensorManager.registerListener(this,sensor,SensorManager.SENSOR_DELAY_GAME); } } // 停止检测 public voID stop() { sensorManager.unregisterListener(this); } // 设置重力感应监听器 public voID setonShakeListener(OnShakeListener Listener) { onShakeListener = Listener; } // 重力感应器感应获得变化数据 public voID onSensorChanged(SensorEvent event) { // 现在检测时间 long currentUpdateTime = System.currentTimeMillis(); // 两次检测的时间间隔 long timeInterval = currentUpdateTime - lastUpdateTime; // 判断是否达到了检测时间间隔 if (timeInterval < UPTATE_INTERVAL_TIME) return; // 现在的时间变成last时间 lastUpdateTime = currentUpdateTime; // 获得x,y,z坐标 float x = event.values[0]; float y = event.values[1]; float z = event.values[2]; // 获得x,z的变化值 float deltaX = x - lastX; float deltaY = y - lastY; float deltaZ = z - lastZ; // 将现在的坐标变成last坐标 lastX = x; lastY = y; lastZ = z; //sqrt 返回最近的双近似的平方根 double speed = Math.sqrt(deltaX * deltaX + deltaY * deltaY + deltaZ * deltaZ)/ timeInterval * 10000;// MyLog.v("thelog","===========log==================="); // 达到速度阀值,发出提示 if (speed >= SPEED_SHRESHolD) { onShakeListener.onShake(); } } public voID onAccuracyChanged(Sensor sensor,int accuracy) {}// 摇晃监听接口public interface OnShakeListener { public voID onShake();}}
以上所述是小编给大家介绍的AndroID实现检测手机摇晃的监听器,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对编程小技巧网站的支持!
总结以上是内存溢出为你收集整理的Android实现检测手机摇晃的监听器全部内容,希望文章能够帮你解决Android实现检测手机摇晃的监听器所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)