即使從Java Robot定期發出編程式鼠標「擺動」,OS X Lion仍然會進入睡眠狀態(這是使機器不會進入睡眠狀態的標準方法並在其他地方記錄在stackoverflow中,並且它在OS X Lion之前爲我工作)。以編程方式(以Java)保持OS X不會入睡
任何人都可以建議一種替代方法,它不需要權限升級,讓機器從Java應用程序中喚醒嗎? ((回退解決方案顯然是改變節能偏好,以便機器不會睡覺,但我們希望比這更聰明,因爲要求機器保持清醒是例外而不是規則)) 。
即使從Java Robot定期發出編程式鼠標「擺動」,OS X Lion仍然會進入睡眠狀態(這是使機器不會進入睡眠狀態的標準方法並在其他地方記錄在stackoverflow中,並且它在OS X Lion之前爲我工作)。以編程方式(以Java)保持OS X不會入睡
任何人都可以建議一種替代方法,它不需要權限升級,讓機器從Java應用程序中喚醒嗎? ((回退解決方案顯然是改變節能偏好,以便機器不會睡覺,但我們希望比這更聰明,因爲要求機器保持清醒是例外而不是規則)) 。
事實證明,它是不再可能用純Java黑客要做到這一點,人們必須採取實現JNI I/O監聽器,該代碼會包含這樣的內容
http://developer.apple.com/library/mac/#qa/qa1340/_index.html
如果您可以容忍調用命令行工具,另一種方法是在守護程序線程中調用pmset noidle
。
您是否需要防止顯示屏睡眠或系統睡眠?如果是後者,您可以通過磁盤活動阻止系統睡眠 - 例如讀取或寫入文件。
硬盤活動不會阻止顯示屏的睡眠,但它確實會阻止系統進入睡眠狀態。在 系統進入睡眠狀態前,如果兩種類型的睡眠都設置爲在相同長度的非活動狀態之後發生,則顯示器進入睡眠狀態並不罕見。 http://support.apple.com/kb/ht1776
This answer指向Objective-C代碼,可用於防止睡眠,使用UpdateSystemActivity
呼叫。你可以在這個上創建一個簡單的JNI包裝器,你可以從你的Java代碼中調用本地方法?
似乎也可以使用applescript禁用並重新啓用睡眠。你能用Java代碼中的Runtime.exec()來調用這樣一個腳本嗎?
顯示睡眠與我無關,我只對停止機器進入系統睡眠感興趣。從經驗中,我可以告訴你,閱讀和寫入文件*絕對*不會讓iMac無法入睡! – fommil