【问题标题】:How to acquire PARTIAL_WAKE_LOCK in a Kivy app (Android)?如何在 Kivy 应用程序(Android)中获取 PARTIAL_WAKE_LOCK?
【发布时间】:2014-10-12 08:04:06
【问题描述】:

我正在尝试为我的 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

【问题讨论】:

    标签: android python kivy wakelock pyjnius


    【解决方案1】:

    我猜你在这里误解了WAKE_LOCK。默认情况下,如果您不触摸应用程序,系统会检测到手机处于空闲状态,并将其锁定。

    如果用户关闭屏幕,切换到另一个应用程序等,WAKE_LOCK 将不会做任何事情。因为此时,您的应用程序必须处于后台,并且处于“睡眠”模式。

    您需要的是服务。当应用程序处于后台、屏幕锁定与否时,服务可以继续运行。并且你需要在你的应用和服务之间建立通信链接(内部 OSC 可以,请随意在互联网上搜索示例)。

    或者,尝试查看 Android API 中的 AlarmManager / Alarm 是否适合您(从未测试过)。

    【讨论】:

      猜你喜欢
      • 2015-06-18
      • 2019-09-11
      • 2014-12-06
      • 1970-01-01
      • 1970-01-01
      • 2020-11-29
      • 1970-01-01
      • 2016-07-28
      • 1970-01-01
      相关资源
      最近更新 更多