Android实现检测手机摇晃的监听器

Ianthe ·
更新时间:2024-09-20
· 731 次阅读

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,y,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编程自定义View时添加自己的监听器示例Android中ScrollView实现滑动距离监听器的方法Android编程之监听器用法实例分析Android编程之监听器的实现方法Android实现静态广播监听器的方法android Animation监听器AnimationListener的使用方法)Android控件系列之Button以及Android监听器使用介绍android监听器实例代码



监听 监听器 手机 Android

需要 登录 后方可回复, 如果你还没有账号请 注册新账号