Android 加速度计设置 : can I get it to run only when button it pressed.

标签 android timer accelerometer

我在我的应用程序中使用加速度计,我想知道是否可以让加速度计仅在用户按下开始按钮后激活一定时间。当用户按下停止按钮时它应该停止。它本质上将作为一个更大应用程序的一部分的计步器工作。这是用于实现加速度计的代码:-

SensorManager sensorManager = (SensorManager)getSystemService(Context.SENSOR_SERVICE);
    int sensorType = Sensor.TYPE_ACCELEROMETER;
    sensorManager.registerListener(sensorListener, sensorManager.getDefaultSensor(sensorType),SensorManager.SENSOR_DELAY_NORMAL);

我有计算步数的代码:-

final SensorEventListener sensorListener = new SensorEventListener()
{

    public void onSensorChanged(SensorEvent event)
    {
            if(event.values[2]<3)
            {
                counter ++;
            }
            else if(event.values[2]>5)
            {
                counter --;
                counter ++;

            }
            sensorData.setText("Steps = "+ counter);

      }

      public void onAccuracyChanged(Sensor sensor, int accuracy){}
      };

我只是想知道,既然我正在计算 onSensorChanged 方法中的步骤,我该如何将其限制为仅按钮按下状态?是否可以添加一个计时器来计算我之前提到的两次按下按钮之间经过了多长时间?

最佳答案

当然可以。

准备经理:

mSensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);
mAccelerometer = mSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);

启动加速度计:

mSensorManager.registerListener(this, mAccelerometer, 
     SensorManager.SENSOR_DELAY_NORMAL);

停止:

mSensorManager.unregisterListener(this);

不要忘记在 onPause() 方法中注销监听器。

关于Android 加速度计设置 : can I get it to run only when button it pressed.,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10050035/

相关文章:

android - 我们应该使用准确的 DPI 数字来实现多个屏幕尺寸吗?

java - Android MediaPlayer 无法使用 Uri.parse(path) 播放文件名中包含 '#' 字符的文件

java - Java 超时哈希表

c# - 计时器 Tick 事件突然不起作用

mobile - 是否有任何众所周知的算法来计算基于加速度计的步数?

Android webview 允许使用当前的 Android Studio 访问相机

java - 如何在 Android 中的操作栏下方添加阴影?

java - Java 中的 AsyncTask 等价物

iOS:检测用户向左/向右移动手机(不是旋转,而是移动)

position - 使用加速度计和陀螺仪计算位移 (MPU6050)