2014-09-24 103 views
1

你好,我开发使用的TYPE_STEP_DETECTOR传感器类型为Android奇巧计步器应用软件Android TYPE_STEP_DETECTOR,一切似乎直到我关闭屏幕或锁定我的电话,我觉得这不火做工精细屏幕关闭时发生的事件。而屏幕关闭

我知道TYPE_STEP_COUNTER变异的,但我不是在日常的一天的开始保持在起始计标签过于激烈。当检测到某个步骤时,我宁愿让事件触发,然后在当天的步数中加上“1”。

有没有人成功地使用在即使屏幕关闭后台运行的服务的TYPE_STEP_DETECTOR?在sensorEventListener

代码是:

if (source.equals(countSensor)) { // data came from step detector 
    // stepcount from step counter event.values[0]; 
    curStepCount = (int) event.values[0]; 
    stepcount += curStepCount; 

转动屏幕的背面上我最终只有1加到计步骤之后。

+0

你找到解决办法吗? – francas 2014-12-27 11:32:39

回答

1

问题是功耗。如果手机在每次出现某个步骤时唤醒应用程序处理器,则会消耗更多电量,并可能导致电池寿命缩短。在您的手机中,制造商决定不支持在检测到某个步骤时启动手机的“唤醒”版传感器。

为了节省电能,计数在某种,通常是的ARM Cortex M4处理器,使用功率非常小的运动协处理器做得最好。这是在Nexus 5中引入的。如果你访问TYPE_STEP_COUNTER传感器,这应该提供你所需要的。

最后,Android的规范允许某人建立“唤醒”传感器,即一些应用处理器上的转向信号,您的应用程序,让你算吧。在这种特殊情况下,您不应该这样做,因为这会对电池寿命产生巨大影响。

看到这里从线449起,请注意,它允许“唤醒与非唤醒”版本: http://source.android.com/devices/halref/sensors_8h_source.html

/* 
* SENSOR_TYPE_STEP_DETECTOR 
* reporting-mode: special 
* 
* A sensor of this type triggers an event each time a step is taken 
* by the user. The only allowed value to return is 1.0 and an event 
* is generated for each step. 
* 
* Both wake-up and non wake-up versions are useful. 
*/ 

#define SENSOR_TYPE_STEP_DETECTOR     (18) 
#define SENSOR_STRING_TYPE_STEP_DETECTOR   "android.sensor.step_detector"