1

RFID チップをスキャンする Phonegap Android アプリがあります。Android 設定で設定された間隔 (最大 10 分) の後にデバイスがスリープ状態になるため、RFID のスキャンはユーザー アクションとしてカウントされないようです。

そのため、常にスキャンしているにもかかわらず、デバイスがスリープ状態になります。そのため、RFID スキャンのたびにプログラムを使用して、自分がアクティブであることを OS に伝える方法が必要です。

現在、私はやりたくないことをしています。

getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);

アプリの実行中にスリープを防止するためですが、デバイスが実際に非アクティブな場合でもスリープ間隔を使用できるようにしたいと考えています。

期待して使っていたのpowerManager.userActivity(l, false)ですが、どうやらこれはシステムアプリでしか使えないらしく、権限の設定ができません。

タッチスクリーン操作を行わずにデバイスをアクティブに保つ方法はありますか?

4

3 に答える 3

0

A WakeLock が答えですが、鍵は を使用することON_AFTER_RELEASEです。このフラグを使用すると、WakeLock が解放されたときにユーザー アクティビティ タイマーがリセットされます。

したがって、NFC プラグインの場合、onPause メソッドの下に以下を追加しました。

MyMainActivity ma = (MyMainActivity) cordova.getActivity();
wl = ((PowerManager) ma.getSystemService(Context.POWER_SERVICE))
    .newWakeLock(PowerManager.SCREEN_BRIGHT_WAKE_LOCK | PowerManager.ON_AFTER_RELEASE, "wakeywakey");
wl.acquire();

そして onResume メソッドの下に追加しました:

wl.release();

この配置では、RFID チップがスキャンされると、NFC プラグインが WakeLock を作成してから解放し、アクティビティ タイマーをリセットします。また、SCREEN_BRIGHT_WAKE_LOCK画面が暗くなった場合に画面を明るくするので、非推奨ですが使用しました。

于 2013-01-02T20:07:48.437 に答える
0

JAVAで少し遊ぶ必要があります。

このコードをアクティビティ クラスに追加します。

 PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
 PowerManager.WakeLock wl = pm.newWakeLock(PowerManager.SCREEN_DIM_WAKE_LOCK, "My Tag");
 wl.acquire();

ここで詳細を確認できます。

また、最後に WakeLock を解放することを忘れないでください。

 wl.release();

また、マニフェストに WAKE_LOCK 権限が設定されていることを確認する必要があります。

于 2012-12-20T22:49:28.520 に答える