Android实现检测手机摇晃的监听器
程序员文章站
2024-02-22 21:04:34
android 检测手机摇晃的监听器,实现代码如下所示:
public class shakelistener implements sensoreventlis...
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实现检测手机摇晃的监听器
-
Android监听手机电话状态与发送邮件通知来电号码的方法(基于PhoneStateListene实现)
-
Android检测手机中存储卡及剩余空间大小的方法(基于Environment,StatFs及DecimalFormat)
-
[原创] 如何在android中实现shake的动作检测 - part 1 博客分类: Android AndroidHTML5咨询浏览器Flash
-
[原创] 如何在android中实现shake的动作检测 - part 1 博客分类: Android AndroidHTML5咨询浏览器Flash
-
Android检测手机中存储卡及剩余空间大小的方法(基于Environment,StatFs及DecimalFormat)
-
Android监听手机电话状态与发送邮件通知来电号码的方法(基于PhoneStateListene实现)
-
Android 手机防止休眠的两种实现方法
-
Android屏幕手势检测的实现代码
-
Android编程检测手机录音权限是否打开的方法