我正在开发一个计步器 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;
}
据我所知,该传感器需要设备中的加速计。
这在两种设备中都可用。
请帮我解决这个问题。
Thanks
有些设备只是拒绝该(完全唤醒)功能。
问题是功耗。如果手机每次发生步骤时都会唤醒应用程序处理器,它将消耗更多电量并可能导致电池寿命缩短。对于您的手机,制造商已决定不支持“唤醒”版本的传感器,该传感器会在检测到脚步时打开手机。
https://stackoverflow.com/a/28071354/603270 https://stackoverflow.com/a/28071354/603270
作为解决方法,我建议查看https://github.com/j4velin/Pedometer/blob/master/src/main/java/de/j4velin/pedometer/SensorListener.java 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];
// ...
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)