【在Android 1.5上处理震动事件】知是行的主意,行是知的功夫。这篇文章主要讲述在Android 1.5上处理震动事件相关的知识,希望能为你提供帮助。
- package com.gedankentank.android.sensor;
- import java.util.List;
- import android.hardware.Sensor;
- import android.hardware.SensorEvent;
- import android.hardware.SensorEventListener;
- import android.hardware.SensorManager;
- import android.util.Log;
- public class AccelerometerListener implements SensorEventListener {
- private SensorManager sensorManager;
- private List< Sensor> sensors;
- private Sensor sensor;
- private long lastUpdate = -1;
- private long currentTime = -1;
- private float last_x, last_y, last_z;
- private float current_x, current_y, current_z, currenForce;
- private static final int FORCE_THRESHOLD = 900;
- private final int DATA_X = SensorManager.DATA_X;
- private final int DATA_Y = SensorManager.DATA_Y;
- private final int DATA_Z = SensorManager.DATA_Z;
- public AccelerometerListener( Activity parent) {
- SensorManager sensorService = ( SensorManager) parent.getSystemService( Context.SENSOR_SERVICE) ;
- this.sensorManager = sensorManager;
- this.subscriber = subscriber;
- this.sensors = sensorManager.getSensorList( Sensor.TYPE_ACCELEROMETER) ;
- if ( sensors.size( ) > 0) {
- sensor = sensors.get( 0) ;
- }
- }
- public void start ( ) {
- if ( sensor!=null) {
- sensorManager.registerListener( this, sensor, SensorManager.SENSOR_DELAY_GAME) ;
- }
- }
- public void stop ( ) {
- sensorManager.unregisterListener( this) ;
- }
- public void onAccuracyChanged( Sensor s, int valu) {
- }
- public void onSensorChanged( SensorEvent event) {
- if ( event.sensor.getType( ) != Sensor.TYPE_ACCELEROMETER || event.values.length < 3)
- return;
- currentTime = System.currentTimeMillis( ) ;
- if ( ( currentTime - lastUpdate) > 100) {
- long diffTime = ( currentTime - lastUpdate) ;
- lastUpdate = currentTime;
- current_x = event.values[ DATA_X] ;
- current_y = event.values[ DATA_Y] ;
- current_z = event.values[ DATA_Z] ;
- currenForce = Math.abs( current_x+current_y+current_z - last_x - last_y - last_z) / diffTime * 10000;
- if ( currenForce > FORCE_THRESHOLD) {
- // Device has been shaken now go on and do something
- // you could now inform the parent activity ...
- }
- last_x = current_x;
- last_y = current_y;
- last_z = current_z;
- }
- }
- }
推荐阅读
- 更改KickApps导航中的链接
- 在中打开手册页预览.app
- 确定Android中是否存在Intent Receiver
- 使用AppleScript构建和运行XCode
- Kickapps(使用jQuery&CSS在成员配置文件编辑页面中隐藏MYRSS&MYLINKS按钮)
- 终端.app符号链接命令
- 终端.app打开Apache的命令?s码httpd.conf文件文本编辑中的文件
- 通过SMTP(Gmail)在Android上发送电子邮件
- 开发Android应用程序的提示(我的经验教训)