3

私は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です。

4

1 に答える 1

2

あなたはここを誤解していると思いますWAKE_LOCK。デフォルトでは、アプリケーションに触れない場合、システムは電話機をアイドルとして検出し、ロックします。

ユーザーが画面を閉じたり、別のアプリに切り替えたりしても、WAKE_LOCK何も起こりません。その時点で、アプリケーションはバックグラウンドで「スリープ」モードになっている必要があるためです。

必要なのはサービスです。アプリケーションがバックグラウンドにあるとき、画面がロックされているかどうかに関係なく、サービスは引き続き実行できます。また、アプリとサービスの間の通信リンクが必要です (内部 OSC は問題ありません。インターネットで例を自由に検索してください)。

または、Android API からの AlarmManager / Alarm が問題ないかどうかを確認してください (テストされていません)。

于 2014-11-27T13:36:54.013 に答える