Android实现检测手机摇晃的监听器
android检测手机摇晃的监听器,实现代码如下所示:
publicclassShakeListenerimplementsSensorEventListener{
//速度阈值,当摇晃速度达到这值后产生作用
privatestaticfinalintSPEED_SHRESHOLD=3000;
//两次检测的时间间隔
privatestaticfinalintUPTATE_INTERVAL_TIME=70;
//传感器管理器
privateSensorManagersensorManager;
//传感器
privateSensorsensor;
//重力感应监听器
privateOnShakeListeneronShakeListener;
//上下文
privateContextmContext;
//手机上一个位置时重力感应坐标
privatefloatlastX;
privatefloatlastY;
privatefloatlastZ;
//上次检测时间
privatelonglastUpdateTime;
//构造器
publicShakeListener(Contextc){
//获得监听对象
mContext=c;
start();
}
//开始
publicvoidstart(){
//获得传感器管理器
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);
}
}
//停止检测
publicvoidstop(){
sensorManager.unregisterListener(this);
}
//设置重力感应监听器
publicvoidsetOnShakeListener(OnShakeListenerlistener){
onShakeListener=listener;
}
//重力感应器感应获得变化数据
publicvoidonSensorChanged(SensorEventevent){
//现在检测时间
longcurrentUpdateTime=System.currentTimeMillis();
//两次检测的时间间隔
longtimeInterval=currentUpdateTime-lastUpdateTime;
//判断是否达到了检测时间间隔
if(timeInterval<UPTATE_INTERVAL_TIME)
return;
//现在的时间变成last时间
lastUpdateTime=currentUpdateTime;
//获得x,y,z坐标
floatx=event.values[0];
floaty=event.values[1];
floatz=event.values[2];
//获得x,y,z的变化值
floatdeltaX=x-lastX;
floatdeltaY=y-lastY;
floatdeltaZ=z-lastZ;
//将现在的坐标变成last坐标
lastX=x;
lastY=y;
lastZ=z;
//sqrt返回最近的双近似的平方根
doublespeed=Math.sqrt(deltaX*deltaX+deltaY*deltaY+deltaZ
*deltaZ)/timeInterval*10000;
//MyLog.v("thelog","===========log===================");
//达到速度阀值,发出提示
if(speed>=SPEED_SHRESHOLD){
onShakeListener.onShake();
}
}
publicvoidonAccuracyChanged(Sensorsensor,intaccuracy){
}
//摇晃监听接口
publicinterfaceOnShakeListener{
publicvoidonShake();
}
}
以上所述是小编给大家介绍的Android实现检测手机摇晃的监听器,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对毛票票网站的支持!