摇一摇
public class MainActivity extends Activity {
// *********摇一摇简化版
private SensorManager sensorManager;
int second_start = 0;
int second_end;
Builder builder;
private SensorEventListener eventListener;
// ******************************************以上均为成员变量
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 初始化
}
@Override
protected void onResume() {
super.onResume();
builder = new AlertDialog.Builder(MainActivity.this);
builder.setTitle("摇一摇");
builder.setMessage("实验?");
builder.setPositiveButton("恩恩", null);
eventListener = new SensorEventListener() {
@Override
public void onSensorChanged(SensorEvent event) {
float[] values = event.values;
// 三个方向上的加速度
int x = (int) values[0];
int y = (int) values[1];
int z = (int) values[2];
int min_a = 13;// 加速的的最小阀值,可适当调整
Calendar c = Calendar.getInstance();// 获取的是当前时间,位置不可变
second_end = c.get(Calendar.SECOND);// 初始化second_end
// 判断是否属于一次震荡(注意时间)
if ((Math.abs(x) > min_a || Math.abs(y) > min_a || Math.abs(z) > min_a)
&& (Math.abs(second_end - second_start) > 2)) {
second_start = second_end;
// 自己的处理
function();
}
}
private void function() {
builder.show();
}
@Override
public void onAccuracyChanged(Sensor arg0, int arg1) {
// TODO Auto-generated method stub
}
};
//获取并设置传感器
sensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);
if (sensorManager != null) {
// 第一个参数是Listener,第二个参数是所得传感器类型,第三个参数值获取传感器信息的频率
sensorManager.registerListener(
// SensorEventListener
eventListener,
// 第二个参数是要监听的传感器对象
sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER),
// 第三个参数值获取传感器信息的频率
SensorManager.SENSOR_DELAY_NORMAL);
}
}
@Override
protected void onStop() {
super.onStop();
sensorManager.unregisterListener(eventListener);
}
}