正如前面提到的問題所述,我很難攔截所有android.intent.action.SCREEN_ON
事件而沒有長時間的Service
(不鼓勵)。如何檢測屏幕何時開啓?
如果我可以在任何給定的時間在屏幕上打開,我可以解決這個問題。
任何人都可以建議一個方法調用,將返回此信息? 1.5以上。
正如前面提到的問題所述,我很難攔截所有android.intent.action.SCREEN_ON
事件而沒有長時間的Service
(不鼓勵)。如何檢測屏幕何時開啓?
如果我可以在任何給定的時間在屏幕上打開,我可以解決這個問題。
任何人都可以建議一個方法調用,將返回此信息? 1.5以上。
系統故意不允許應用程序在其清單中接收ACTION_SCREEN_ON
和ACTION_SCREEN_OFF
廣播,因爲我們非常不希望啓動一堆應用程序來打開或關閉屏幕。這是發生在所有的時間,並且必須儘可能快。
不幸的是,正如指出的那樣,沒有辦法立即檢查屏幕是否打開。
ACTION_USER_PRESENT意圖的系統廣播可以有任何幫助嗎?
如果您的代碼正在運行,屏幕很有可能處於啓動狀態。主要的例外是如果您的代碼通過AlarmManager
被喚醒。
如果ACTION_SCREEN_ON
是一個粘滯的廣播,這將是很好的,但似乎並非如此。
如果您可以使用Android 2.1及更新版本,PowerManager
現在有一個isScreenOn()
方法。好消息是,這是可用的。壞消息是,因爲它被添加到那裏,所以不太可能有任何其他方式來確定它。而且,對源代碼的快速檢查並沒有給你太多的希望,可能會破解前面SDK中的信息。
PowerManager.isScreenOn()
自:API級別7
這對於我在注8中的工作,但在選項卡4上沒有... – 2014-12-19 23:14:14
實際上可以接收廣播,作爲一個長期服務BroadcastReceivers。我的應用程序相當高興,但我試圖nix長壽命的服務。如果您將其作爲接收器上的意圖過濾器提供,它只會失敗。 – 2010-04-05 05:59:24