2009-06-13 14 views
5

私は、ボタンを押しても常に動作する必要があるAndroid(バージョン1.5)アプリケーションを持っています。したがって、Buttonが押されたとき、私は電話機をオンのままにして、画面やCPUがタイムアウトしないようにしたいと思います。アプリケーション/画面タイムアウトの防止Android

別のButtonが押されたとき、私は電話機が通常の状態に戻ってタイムアウトになるようにしたいと思います。

+0

[Force Screen On]の複製が可能です(http://stackoverflow.com/questions/2131948/force-screen-on) –

答えて

3

更新:Steve Pomeroyさんが提案したように、thisの方が良い方法でしょう。ここで

<uses-permission android:name="android.permission.WAKE_LOCK" />

あなたはAQUIREどのようにして、WakeLockリリース:


次の許可が必要WakeLockを使用することができ、あなたの要件に応じて

PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE); 
PowerManager.WakeLock wl = pm.newWakeLock(PowerManager.FULL_WAKE_LOCK, "My Tag"); 
wl.acquire(); 
// wake locked... 
wl.release(); 

をあなたはあるかもしれません異なるタイプのWakeLockを使用することができます。

+0

私はその解決策を考えましたが、ローカルで作成されたウェイクロックを解除することしかできませんそれはリリースされる必要がある「オフ」ボタンではありません。アイデア? – Tom

+2

サービスを作成します。サービスのonCreate()では、プライベートデータメンバーで保持されているWakeLockを取得します。サービスのonDestroy()で、WakeLockを解放します。このアクティビティでは、画面/ CPUをオンにする必要があるときは、startService()を呼び出します。いつか後で、画面/ CPUを使い続ける必要がなくなったら、stopService()を呼び出します。今、WakeLockは、あなたの活動に何が起こったとしても、サービスが実行されている限り開催されます。さらに、バッテリーの寿命が短くなると、サービスはバッテリーイベントを監視し、おそらくWakeLockをリリースする可能性があります。 – CommonsWare

+0

私は.release法上の "WLは解決できない" 得続ける: パブリッククラスWakeLockServiceは、サービス{ \t @Override \t公共IBinder [OnBind]の(意図のarg0){ \t \t // TODO自動生成されたメソッドを拡張スタブ \t \t return null; \t} \t \t公共ボイドのonCreate(){ \t \t PowerManagerのPM =(PowerManager)getSystemService(Context.POWER_SERVICE)。 \t \t PowerManager.WakeLock wl = pm.newWakeLock(PowerManager.FULL_WAKE_LOCK、 "My Tag"); \t \t wl.acquire(); \t} \t \t公共ボイドonDestroy(){ \t \t wl.release()。 \t} } – Tom

2

代わりwakelockを使用して、あなたは解決策がここで提案を検討する必要があります。使用する方がはるかに簡単であると誤ってユーザーのバッテリーを無駄にする可能性を持っていないForce Screen On

+0

ああ、とてもクールです。私はそれを私の答えに加えました。ありがとう! –

関連する問題