处理 Android 手机的震动事件,android震动,拿着手机使用晃,程序就能
分享于 点击 4029 次 点评:282
处理 Android 手机的震动事件,android震动,拿着手机使用晃,程序就能
拿着手机使用晃,程序就能收到震动事件
AccelerometerListener.java
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; } }}
用户点评