package enent.jj;

import android.app.Activity;
import android.content.Context;
import android.hardware.Sensor;
import android.hardware.SensorEvent;
import android.hardware.SensorEventListener;
import android.hardware.SensorManager;
import android.os.Bundle;
import android.widget.Toast;

public class Evnet1Activity extends Activity {
//检测摇动相关变量


private static final int FORCE_THRESHOLD = 350;
private static final int TIME_THRESHOLD = 100;
private static final int SHAKE_TIMEOUT = 500;
private static final int SHAKE_DURATION = 1000;
private static final int SHAKE_COUNT = 3;
private int mShakeCount = 0;
private long mLastShake;
private long mLastForce;
private long mLastTime;
private float mLastX=-1.0f, mLastY=-1.0f, mLastZ=-1.0f;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);





// 获取传感器管理器
SensorManager sm = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
// 获取加速度传感器
Sensor acceleromererSensor = sm.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);

// 定义传感器事件监听器
SensorEventListener acceleromererListener = new SensorEventListener() {

@Override
public void onAccuracyChanged(Sensor sensor, int accuracy) {
//什么也不干
}

//传感器数据变动事件
@Override
public void onSensorChanged(SensorEvent event) {


//获取加速度传感器的三个参数
float x = event.values[SensorManager.DATA_X];
float y = event.values[SensorManager.DATA_Y];
float z = event.values[SensorManager.DATA_Z];

long now = System.currentTimeMillis();

if ((now - mLastForce) > SHAKE_TIMEOUT) {
mShakeCount = 0;
}

if ((now - mLastTime) > TIME_THRESHOLD) {
long diff = now - mLastTime;
float speed = Math.abs(event.values[SensorManager.DATA_X] + event.values[SensorManager.DATA_Y] + event.values[SensorManager.DATA_Z] - mLastX - mLastY - mLastZ) / diff * 10000;
if (speed > FORCE_THRESHOLD) {
if ((++mShakeCount >= SHAKE_COUNT) && (now - mLastShake > SHAKE_DURATION)) {
mLastShake = now;
mShakeCount = 0;
if (true) {
startRecord();
}
}
mLastForce = now;
}
mLastTime = now;
mLastX = event.values[SensorManager.DATA_X];
mLastY = event.values[SensorManager.DATA_Y];
mLastZ = event.values[SensorManager.DATA_Z];
}




}

};

//在传感器管理器中注册监听器
sm.registerListener(acceleromererListener, acceleromererSensor, SensorManager.SENSOR_DELAY_NORMAL);

}

// 开始
public void startRecord() {
Toast.makeText(getApplicationContext(), "yao",1).show();
}


}

更多相关文章

  1. Android(安卓)获取地理位置的经度和纬度(zz)
  2. 【Android】Sensor框架HAL层解读
  3. Android传感器(一):传感器列表
  4. android事件处理
  5. Android(安卓)传感器hal层分析
  6. android 传感器的使用
  7. Android(安卓)重力感应
  8. android 设置横屏竖屏
  9. Android之Dialog

随机推荐

  1. Android获取StatusBa有效高度
  2. Android开发遇到的问题----自定义Recycle
  3. Android积木之 点击空白区域隐藏小键盘
  4. Android 出错显示找不到id,但你发现id是存
  5. Android 下载服务器上的文件
  6. Android 调用系统的照相,浏览图片,转存并裁
  7. android上文件上传至tomcat服务器源码
  8. Android 的背光控制
  9. 开发安卓-android使用webview加载网页无法
  10. Android 存储文件数据与读出文件数据