传感器代码

来源:4-2 Android摇一摇处理

liliang

2016-06-02 22:32

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

写回答 关注

3回答

  • 慕圣4542483
    2018-01-23 15:42:08

    init()函数使用public,

  • Loveyou丶丨Forever丨
    2017-05-12 15:15:58

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

  • 李鑫鑫lxx
    2016-06-04 10:08:38

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


    }

Android动感系列-摇一摇

Android开发中,快速实现摇一摇+动画特效,已经都玩嗨了

14875 学习 · 15 问题

查看课程

相似问题