2011-02-08 242 views
6

在我的應用程序中,我想測量加速度計處於靜止狀態的時間量。例如,如果我將閾值設置爲0.4 m/s,並且加速度計速度始終低於此值,則表示電話處於靜止狀態(閾值是爲了解釋數值中的抖動)。Android - 如何長時間計算時間

我希望能夠計算手機處於靜止狀態的時間長短,並在達到一定的休息時間後再對該事件作出反應。

我已經有加速度計正常工作,我只需要計算這個時間,我不熟悉如何做到這一點,任何人都可以幫助我在這裏?在此先感謝

解決方案:

start = System.currentTimeMillis(); 

    if (vectorTotal > 10.1 || vectorTotal < 9.5){ 
     timelimit = (System.currentTimeMillis()+ 10000); 
    } 
    else if (start >= timelimit){ 
     checkUser(); 
     timelimit = (System.currentTimeMillis()+ 10000); 
    } 

回答

6

是您的應用程序在前臺?

啓動時:

long start = System.currentTimeMillis(); 

保存在數據庫或者如果需要的喜好這個值。

在結束:

long end = System.currentTimeMillis(); 

然後:

long passedTime = end - start; 
+0

在與alarmmanager類有一些棘手的問題後,我嘗試了這種方式,沒有問題就簡單多了,乾杯隊友! – bobby123 2011-02-15 16:16:43

0

我想你可能看這裏的服務在後臺運行計數任何你想數和雙服務/活動的解決方案當它要求時向活動提供這些信息。

就計算時間而言,這只不過是操縱DKIT Android指出的System.currentTimeMillis()的回報。

1

您可以在每次超過閾值時設置鬧鐘,當鬧鐘最終觸發時,您可以隨心所欲地做任何事情。

做這樣的事情,當你開始你的活動:

am = (AlarmManager) getSystemService(ALARM_SERVICE); 
timeoutInMillis = 60000; 
Intent timeoutIntent = <create the intent you want to run here>; 
timeoutPendingIntent = PendingIntent.getService(this, 0, timeoutIntent, PendingIntent.FLAG_UPDATE_CURRENT); 

,然後每次加速度計是你的門限以上:

am.set(AlarmManager.RTC_WAKEUP, System.currentTimeMillis() + timeoutInMillis, timeoutPendingIntent); 

不要忘了,當你退出清除報警你活動:

am.cancel(timeoutPendingIntent); 
+0

感謝您的答案getekha,非常有幫助,我只是有一些問題與警報管理器,當我不再需要它,並正在註銷我的聽衆,1報警始終保持設置,即使在同一個pendingIntent上使用am.cancel所以使用DKITandroid的方法。 Upvote代碼示例! – bobby123 2011-02-15 16:18:55