我正在尝试为我的kivy应用获取PARTIAL_WAKE_LOCK
。
基本上它是一个计时器应用程序,当屏幕关闭时,计时器应继续在后台运行。
一切都工作正常,除了唤醒锁。
这是我在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
。
答案 0 :(得分:2)
我猜你在这里误解了WAKE_LOCK
。默认情况下,如果您不接触应用程序,系统会将手机检测为空闲,然后将其锁定。
如果用户关闭屏幕,切换到另一个应用程序等,WAKE_LOCK
将无法执行任何操作。因为在那时,你的应用程序必须在后台,并且在睡眠中#34;模式。
您需要的是服务。当应用程序处于后台,屏幕锁定或未锁定时,服务可以继续运行。而且您需要在您的应用和服务之间建立通信链接(内部OSC可以正常,可以在互联网上搜索示例)。
或者,试着看看Android API中的AlarmManager / Alarm是否适合您(从未测试过)。