2012-12-20 73 views
1

我有一個可掃描RFID芯片的Phonegap Android應用程序。顯然掃描RFID不會被視爲用戶操作,因爲設備將在Android設置中設置的時間間隔(最長10分鐘)後進入休眠狀態。Phonegap Android:通過Programatic用戶活動預防睡眠

因此,儘管經常掃描,我的設備將進入睡眠狀態。所以我需要一種方式告訴操作系統,我在每次RFID掃描之後都會進行編程。

目前,我正在做的東西,我不想要的,這是使用

getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); 

防止應用程序運行時的睡眠,但我想還是能夠使用的睡眠間隔如果設備實際上不活動。

我對使用powerManager.userActivity(l, false)寄予厚望,但顯然這隻適用於系統應用程序,所以我無法爲其設置權限。

任何想法如何保持設備活動,而不做任何觸摸屏交互?

+0

HAV e您嘗試使用'PowerManager.newWakeLock()?' –

回答

0

WakeLock是答案,但關鍵是要使用ON_AFTER_RELEASE。有了這個標誌,當WakeLock被釋放時,用戶活動計時器將被重置。

所以對於NFC插件,所述的onPause方法下我加入:

而的onResume方法我加下:

wl.release(); 

利用這種佈置,當RFID芯片被掃描時, NFC插件將創建WakeLock並釋放它,這將重置活動計時器。另外,即使不推薦使用SCREEN_BRIGHT_WAKE_LOCK,因爲如果屏幕變暗,這會使屏幕變亮。

0

你需要用JAVA玩一下。

將此代碼添加到您的活動類:

PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE); 
PowerManager.WakeLock wl = pm.newWakeLock(PowerManager.SCREEN_DIM_WAKE_LOCK, "My Tag"); 
wl.acquire(); 

Here你會發現更多的信息。

而且不要忘記在年底relese激活鎖定:

wl.release(); 

您還需要確保你有你的清單中設置的WAKE_LOCK權限。