处理 Android 手机的震动事件
拿着手机使用晃,程序就能收到震动事件
- 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;
- }
- }
- }
复制代码
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论