簡體   English   中英

如何在Kivy應用程序(Android)中獲取PARTIAL_WAKE_LOCK?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM