2011-10-01 46 views
1

幾天前,我在Android上發佈了我的第一個應用程序。基本的概念是監測接近傳感器,如果傳感器有障礙物,我會增加一個計數器。如果櫃檯超過門檻,我會觸發一個動作。Android 2.3.6更新後傳感器管理器無法正常工作

我已經在一個服務中實現了傳感器監控軟件,這個服務從一個活動中每10分鐘調用一次,以喚醒cpu並在服務停止時啓動服務。

一切都很完美,在市場上有好幾千的下載量和良好的評價。在Android 2.3.3之前這很好。最近我的手機升級到Android 2.3.6,不幸的是該應用程序沒有按預期工作。

當屏幕關閉時,傳感器監聽器不會觸發。有些時候,它工作的很好,大部分時間都不起作用。在傳感器給出幾個輸入後,如果我打開屏幕一段時間後,傳感器上的所有觸發器都會自動立即被調用,並且計數器遞增並觸發該動作。

總之,當屏幕關閉(在Android 2.3.6)時,傳感器偵聽器不工作,直到Android 2.3.3才能正常工作。如果我連接調試器,手機不會進入睡眠狀態,並且一切正常,所以我無法找到問題。請幫幫我 。

這是我的代碼。在服務

每10分鐘調用服務..

Thread trd = new Thread(){ 
     public void run(){ 
     int sec = 1000; 
     int min = 60 * sec; 
     Calendar cal = Calendar.getInstance(); 
     alarmMngr.setRepeating(AlarmManager.RTC_WAKEUP, 
           cal.getTimeInMillis(), 
         10 * min, 
         PendInt); 
     } 
    }; 
    trd.start(); 

在服務..

// On sensor change 
public void onSensorChanged(SensorEvent event){ 
    if(event.sensor == SnsrProx){ 
     if(event.values[0] <= 5){ 
      IncProxCntr(1); 
     }else{ 
     IncProxCntr(0); 
     } 

    } 
} 


private void IncProxCntr(int x){ 
if(x == 1){ 
    FakeCall_SnsrCnt++; 
    vibrate(VIBRATE_SHORT); 
} 
if(FakeCall_SnsrCnt >= Settings.getMaxSnsrCnts(this)){ 
Trig_IncominCall(); 
} 
} 
+0

請幫我解決這個問題.. – Raghavendra

+0

最後我解決了這個問題。在服務中獲取喚醒鎖也... – Raghavendra

+0

如果您有答案,發佈並接受它爲了他人的利益,所以這個問題不會浮現爲「未答覆」。 – EboMike

回答