[英]How to acquire PARTIAL_WAKE_LOCK in a Kivy app (Android)?
我試圖獲取PARTIAL_WAKE_LOCK
我kivy應用程序。 基本上它是一個計時器應用程序,當屏幕關閉時,計時器應繼續在后台運行。 一切都工作正常,除了喚醒鎖。 這是我將如何在python中實現它:
from jnius import autoclass
PythonActivity = autoclass('org.renpy.android.PythonActivity')
activity = PythonActivity.mActivity
Context = autoclass('android.content.Context')
PowerManager = autoclass('android.os.PowerManager')
pm = activity.getSystemService(Context.POWER_SERVICE)
wl = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, 'TAG')
wl.acquire()
該應用程序運行正常,但當屏幕關閉它崩潰。 應用
def on_pause(self):
return True
def on_resume(self):
pass
方法對我沒用,因為它會在屏幕關閉的位置停止計時器。
在我的buildozer.spec
文件中,我有:
android.permissions = WAKE_LOCK
當我設置:
android.wakelock = True
我只得到screen_bright_wakelock
,但我需要partial_wakelock
。
我想你在這里誤解了WAKE_LOCK
。 默認情況下,如果您未觸摸應用程序,系統會將手機檢測為空閑,然后將其鎖定。
如果用戶關閉屏幕,切換到另一個應用程序等, WAKE_LOCK
將不會執行任何操作。 因為此時,您的應用程序必須處於后台,並處於“睡眠”模式。
你需要的是一項服務。 當應用程序處於后台,屏幕鎖定或未鎖定時,服務可以繼續運行。 並且您需要在您的應用和服務之間建立通信鏈接(內部OSC可以正常,隨時可以在互聯網上搜索示例)。
或者,嘗試查看Android API中的AlarmManager / Alarm是否適合您(從未測試過)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.