传感器代码
老师,怎么突然就跳到这里了,之前的代码逻辑是怎么写的?
老师,怎么突然就跳到这里了,之前的代码逻辑是怎么写的?
2016-06-02
package com.love.lxx.yyy;
import android.content.Context;
import android.hardware.Sensor;
import android.hardware.SensorEvent;
import android.hardware.SensorEventListener;
import android.hardware.SensorManager;
import android.util.Log;
/**
* Created by Administrator on 2016/6/4.
*/
public class ShakeSensor implements SensorEventListener {
private static final String TAG = "lxx";
private Context mContext;
private SensorManager mSensorManager;
private Sensor mSensor; //加速度
private Long lastTime=1l; //最后一次摇动的时间
private float last_x; //最后一次x的值
private float last_y;
private float last_z;
private OnShakeSensorListener onShakeSensorListener;
public ShakeSensor(Context context) {
mContext = context;
init();
}
private void init() {
mSensorManager = (SensorManager) mContext.getSystemService(Context.SENSOR_SERVICE);
mSensor = mSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
mSensorManager.registerListener(this, mSensor, SensorManager.SENSOR_DELAY_GAME);
}
public void unRegisterListener() {
mSensorManager.unregisterListener(this, mSensor);
}
@Override
public void onSensorChanged(SensorEvent event) {
long currentTime = System.currentTimeMillis();
if (currentTime - lastTime > 10) {
//两次摇动手机的时间间隔
long timeDis = currentTime - lastTime;
lastTime = currentTime;
float x = event.values[0];
float y = event.values[1];
float z = event.values[2];
double speed; //速度
double absValue = Math.abs(x + y + z - last_x - last_y - last_z);
speed = absValue / timeDis * 10000;
if (speed > 20000) {
if (onShakeSensorListener != null) {
onShakeSensorListener.onShake();
}
}
Log.e(TAG, "x=" + x + "y=" + y + "z=" + z);
Log.e(TAG, "speed------" + speed);
}
}
@Override
public void onAccuracyChanged(Sensor sensor, int accuracy) {
}
public void setOnShakeSensorListener(OnShakeSensorListener listener) {
onShakeSensorListener = listener;
}
public interface OnShakeSensorListener {
void onShake();
}
}
举报