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实现检测手机摇晃的监听器,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对毛票票网站的支持!