2014-09-24 257 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"