2011-12-09 9 views
12

デバイスをスリープ状態にするか、画面をオフにしたいのですか?私が調査し、このトピックを発見した:Turn off screen on Android画面をオフにする方法とデバイスをスリープ状態にする方法

は基本的には、インクルードはそれを行うには、3つの方法ですが、私は3のために問題を発見した:

A)選択肢1:

PowerManager manager = (PowerManager) getSystemService(Context.POWER_SERVICE); 
manager.goToSleep(int amountOfTime); 

問題: FCが発生します。私はDEVICE_POWERのパーミッションが必要だと読んだが、通常のアプリには付与できない。

b)の選択肢2:

PowerManager manager = (PowerManager) getSystemService(Context.POWER_SERVICE); 
PowerManager.WakeLock wl = manager.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "Your Tag"); 
wl.acquire(); 
wl.release(); 

問題:これは私のために動作しません。どうしてか分かりません。それは私にFCを与えませんが、それは無害です。

C)選択肢3:

WindowManager.LayoutParams params = getWindow().getAttributes(); 
params.flags |= LayoutParams.FLAG_KEEP_SCREEN_ON; 
params.screenBrightness = 0; 
getWindow().setAttributes(params); 

問題:試みは、デバイスをオンにするとき、私は返すのが好き、または私のアプリの場合はありませんようにそれは、奇妙なことを行い、それが仕事を得ることができますが、ボタンを押した直後に自動的にスリープ状態になります。これは、通常の解決策よりもヒントまたは回避策に似ています。

誰も私にデバイスをスリープ状態にするか、スクリーンをオフにして問題なく動かせる良い方法を教えてもらえますか?このようなシンプルな機能は、それを使う良い方法ではない(またはよく文書化されていない限り)ことはまれです。

答えて

7

私は自分自身に答えます。デバイスをオフにすることはできますが、アプリケーションはAPI経由でデバイス管理者機能を実装する必要があります。Device Administration

このAPIには、私が欲しいことを行うlocknow()機能があります。

とにかく、これはAndroidのハードウェアとセキュリティ機能を拡張するためのものであり、誰もがそのようにデバイスを制御したいとは考えにくいです。

私が望んだのは、単純なジェスチャーからデバイスをロックする機能でした。自分のデバイスマネージャクラスを作成したくないので、無料のアプリケーション "lockScreen"がインストールされているかどうかを確認して起動します。それは私が望むことを行うための簡単な方法です。このアプリはこのクラスを実装しているので、デバイスマネージャとして登録する必要があります。それを市場から解放することは可能です。

+0

でこれを見つけましたか? –

0

私のアプリケーションは既にこの罰金を行い、私は私がしたい場合は、それが外に私の画面ロックの時間まで、ロック画面をオフにしないためにどのような私のPowerManager.class

/** 
* Force the device to go to sleep. Overrides all the wake locks that are 
* held. 
* 
* @param time is used to order this correctly with the wake lock calls. 
*   The time should be in the {@link SystemClock#uptimeMillis 
*   SystemClock.uptimeMillis()} time base. 
*/ 
public void goToSleep(long time) 
{ 
    try { 
     mService.goToSleep(time); 
    } catch (RemoteException e) { 
    } 
} 
+0

PowerManagerクラスのAPI実装を捕まえたことはありませんか?私は、このメソッドを使用して失敗します。なぜなら、必要な権限を取得できないからです。 –

+1

'DEVICE_POWER'パーミッションはどうですか? –

関連する問題