传感器StepCounter有时在SamSung设备上运行不正常

时间:2017-07-06 08:53:07

标签: android sensor samsung-mobile pedometer

我正在从重启这样的接收步骤中创建一个演示。

public class MainActivity extends AppCompatActivity implements SensorEventListener {
    private SensorManager sensorManager;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        ...
        sensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
    }

    @Override
    protected void onResume() {
        super.onResume();
        countSensor = sensorManager.getDefaultSensor(Sensor.TYPE_STEP_COUNTER);    
        sensorManager.registerListener(this, countSensor, SensorManager.SENSOR_DELAY_UI);
    }

    @Override
    public void onSensorChanged(SensorEvent event) {
        if (event.sensor.getType() == Sensor.TYPE_STEP_COUNTER) {
            Log.i("TAG","step from reboot" + String.valueOf(event.values[0]));
        }
    }
}

但是当我在我的设备(SamSung Galaxy S4)上进行测试时,STEP_COUNTER有时效果不佳:(。我通过与SHealth进行比较来判断它

经过多次测试后我找到了

几乎所有时间,STEP_COUNTER都会返回等于SHealth 的步骤。因此我认为SHealth可能会使用另一个传感器来计算步数,但我不知道哪个传感器?我认为它不是STEP_DETECTOR因为STEP_DETECTOR在关闭屏幕时返回的步骤非常少。

有时,STEP_COUNTERSHealth仍然返回该步骤时停止工作,例如,我走了大约100步=> SHEalth显示器110和演示应用程序显示器100,然后我继续步行约200步=> SHEalth显示305和演示应用程序显示121(似乎停止工作)

我还收到许多用户使用不同设备的报告(评分很低:()但我只能在我的设备上重现。

我不知道如何解决这个问题。我认为STEP_COUNTER是接收步骤的最佳传感器(与STEP_DETECTOR比较)

非常感谢任何帮助或建议。

2 个答案:

答案 0 :(得分:3)

在使用手机的默认步骤传感器时,我们也遇到过这个问题。但是,我们正在使用TYPE_STEP_DETECTOR - 我们没有您遇到的问题(超过100000个用户),所以可能出现了问题? 这个问题非常类似于你不能依赖这种机制的方式。对于我们的情况,我们在很短的时间内收到了很多步骤。即使你是老虎,也不能做那么多步骤。

就是这样,三星操纵操作系统,有很多东西可以说是nexus设备,但不是三星设备。 在尝试修复步进传感器的行为后,我们发现我们需要替代三星手机,或者对于不支持它的手机。

仅供参考,我们遇到过一些手机(主要是摩托罗拉)在设备中没有步骤传感器,所以试图找到传感器,返回null。

  SensorManager sensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);
  Sensor stepDetector = sensorManager.getDefaultSensor(Sensor.TYPE_STEP_DETECTOR);
  if (stepsDetector != null) {
     //Do something
  }

您可以使用wakelock and accelerometer耗电量大,小心)实施自己的机制。

答案 1 :(得分:0)

离开应用程序时是否取消注册传感器?根据SDK文档:

“如果您想长时间持续跟踪步数请勿取消注册此传感器,以便继续计算即使AP处于挂起模式,也会在AP处于唤醒状态时报告聚合计数。“

希望这会有所帮助......