2015-02-11 50 views
3

我試圖讓設備進入睡眠狀態,並且我發現references使用PowerManager類的goToSleep(long)方法但我沒有看到它在文檔中,當我嘗試它不工作在我的代碼中使用試圖讓Android設備進入睡眠狀態,但PowerManager不包含「goToSleep(long)方法

Android's documentation不包含goToSleep方法,我可以看到

我的代碼:。

private void sleepDevice() { 
    try { 
     PowerManager powerMgr = (PowerManager) getSystemService(Context.POWER_SERVICE); 
     long time = 1000; 
     powerMgr.goToSleep(time); 
    } catch (Exception ex) { 
     updateStatus("Error attempting to reboot device."); 
     updateStatus(ex.getLocalizedMessage()); 
    } 
} 

Andro id Studio不會讓代碼與消息「無法解析方法」goToSleep(long)一起編譯。

我甚至不認爲這種方法已被棄用。另外,我不需要擔心安全權限,該調用旨在在根設備上運行,或者在非根設備上優雅地失敗。

+0

我的問題是,是否有另一種方法/技術可以用來讓Android設備進入睡眠狀態?這種方法是另一類嗎? goToSleep方法去了哪裏? – Pich 2015-02-11 16:25:26

+4

'goToSleep()'從API級21(Lollipop)中的'PowerManager'中移除,爲什麼我不知道。 https://developer.android.com/sdk/api_diff/preview-21/changes/android.os.PowerManager.html – 2015-02-11 16:27:56

+2

[舊版Android文檔(感謝網絡存檔)](https://web.archive.org/ web/20140721142329/https://developer.android.com/reference/android/os/PowerManager.html#goToSleep(long))也聲明您將需要DEVICE_POWER權限,該權限不適用於無根設備上的第三方應用。 – 2015-02-11 16:33:00

回答

0

您可以使用DeviceAdministrator,但您需要用戶授予您這些權限。

+0

設備管理API只允許您鎖定設備AFAIK。無論是否符合OP的需求,我都不知道。 – CommonsWare 2015-02-11 16:47:37

+0

@CommonsWare - 是的你說得對:D,這一切都取決於OP – 2015-02-11 21:18:23

+0

@DanieIM的需求。謝謝您的幫助。我其實只需要屏幕關閉電源,但我不想鎖定設備。現在決定我們可以忽略這個要求。最近我得到這個工作是將睡眠計時器設置爲零,並讓設備關閉屏幕。然後,當用戶重新啓動設備時,我會重新發送計時器。 – Pich 2015-03-20 20:01:13

-2
PowerManager manager = (PowerManager) getSystemService(Context.POWER_SERVICE); 
PowerManager.WakeLock wl = manager 
    .newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "YOUR_OWN_TAG"); 
wl.acquire(); 
wl.release(); 

試試這種方式並給出一些反饋。

+0

這個答案與問題無關 – 2016-01-19 06:42:38

相關問題