android - Sensor.TYPE_STEP_DETECTOR 在 android Lollipop 上找不到

标签 android android-sensors

我正在开发一个计步器 android 应用程序,为此我使用了 Sensor.TYPE_STEP_DETECTOR,它可以从 android KitKat 获得。 在 Nexus 5 和 Samsung Alpha 上一切正常,但后来我在 Moto G(Lollipop) 和 Nexus 4(Lollipop) 上测试了我的应用程序, 当我尝试获取 Sensor.TYPE_STEP_DETECTOR 类型的传感器时,两个设备都返回 null。

这是我的代码:

 private boolean checkSensorAvailability() {
    SensorManager sensorManager = (SensorManager) getActivity().getSystemService(Context.SENSOR_SERVICE);
    Sensor sensor = sensorManager.getDefaultSensor(Sensor.TYPE_STEP_DETECTOR);
    if(sensor==null){return false;}

    return true;
}

据我所知,此传感器需要设备中的加速度计。 这两种设备都可用。

请帮我解决这个问题。

谢谢

最佳答案

有些设备只是拒绝该(完全唤醒)功能。

The problem is power consumption. If the phone wakes up the application processor every time a step occurred, it will draw more power and could lead to poor battery life. With your phone, the manufacturer has made a decision NOT to support a "wake-up" version of the sensor that would turn the phone on when a step is detected.

https://stackoverflow.com/a/28071354/603270

作为解决方法,我建议查看 https://github.com/j4velin/Pedometer/blob/master/src/main/java/de/j4velin/pedometer/SensorListener.java

public void onSensorChanged(final SensorEvent event) {
    steps = (int) event.values[0];
    // ...
}

关于android - Sensor.TYPE_STEP_DETECTOR 在 android Lollipop 上找不到,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30891730/

相关文章:

android - Google Fit 应用程序如何在不耗尽电池电量的情况下一直测量步数?

android - 如何在 Android 中将溢出菜单项显示到操作栏

android - android中列表的动态标题

java - 总是在 fragmentManager 获取空指针

android - 检测向下加速度,特别是电梯

java - 数字第二次小于 100

android - 如何使用 volley 库访问 android 中受密码保护的 URL

Android SQLiteDatabase 通过 HashMap 访问

android - 在 fragment 中调用 getSystemServices 时未定义?

android - 在没有 GPS 的情况下获取设备移动方向