为了账号安全,请及时绑定邮箱和手机立即绑定

传感器代码

老师,怎么突然就跳到这里了,之前的代码逻辑是怎么写的?

正在回答

3 回答

init()函数使用public,

0 回复 有任何疑惑可以回复我~

谢谢,对于我们这些Android小白来说太重要了。。。

0 回复 有任何疑惑可以回复我~

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();
   }


}

2 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

传感器代码

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信