2016-07-15 8 views
0

Activityが空のターゲットAPI 15(ICS)で新しいプロジェクトを作成しました。私はマニフェストする権限を追加しました:PARTIAL_WAKE_LOCKが機能しません

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

私はonCreate()にコードを追加:

@Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     PowerManager pm = (PowerManager) getSystemService(getApplicationContext().POWER_SERVICE); 
     PowerManager.WakeLock wl = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "Tag"); 
     wl.acquire(); 

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

をしかし、何がデバイスと起こりません。 PowerManager documentationによると、私は画面が(すぐに)外れることを期待していました。だから私は何か間違っているのですか、それともうまくいかないのですか?


EDIT:

私は手動でWakeLockを取得するが、これはあまりにも動作しません後screenBrightnessを設定するために、あるAshish Ranjanさんの提案を試してみました。

+0

あなたは、これは瞬時に、表示をオフにすることを期待していますか? –

+0

私はそれを達成しようとしています、はい。 –

+0

答えを確認してください –

答えて

0

私はあなたがこれを追加するのを忘れ思う:画面をオフにしませんPARTIAL_WAKE_LOCKを使ってAndroidのdocumentationあたりとして

wl.release(); 
+0

この行を 'onPause()'で実行するように追加しました。助けてくれなかった(私が期待した通り)。 –

+0

これはウェイクロックを解除するためのもので、ウェイクロックを解除するものではありません。ドキュメントから:*このメソッドは、CPUまたはスクリーンがオンになっているという主張を解除します。目覚ましロックを解除した直後に画面が消えるか、他の目覚ましロックがまだ残っていると画面が消えることがあります。* https://developer.android.com/reference/android/os/PowerManager.WakeLock.html#release () –

+0

しかし、私は 'acquire()'でスクリーンをオフにしようとしています(CPUをオンにしておく)。 –

1

、。しかし、このモードがWakeLockで有効になっているときに画面を消すことができます。

デバイスの画面が即座にオフにならない場合は、画面がタイムアウトするのを待つ必要があります(デバイスのディスプレイ設定で設定された時間に依存します)が、CPUは動作し続けます。

PARTIAL_WAKE_LOCK

ウェイクロックレベル:CPUが実行されていることを確認します。画面とキーボードのバックライトが消灯します。

ユーザーが電源ボタンを押した場合、画面はオフになりますが、CPUは、すべての部分的なウェイクロックが解除されるまで、オンになります。

あなたは、このようなウィンドウLayoutParamsを変更する必要があります、画面をオフにするには:

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

申し訳ありませんが、情報がありがとうございます。私は手動で属性を設定する方法について読んでいますが、問題は、GUIから利用できないServiceからこれをやりたいということです(つまり、 'getWindow'は動作しません)。さらに検索します。 –

+0

あなたはサービスからでもそれを行うことができますが(別の方法で)、なぜスクリーンをオフにしたいのですか?一般的にそうするのは良い考えではありません。 –

+0

私はできることは知っていますが、私はこのことを行うダミーのアクティビティを作成する必要があります[この回答を見る](http://stackoverflow.com/a/11306685/1181261)。私はクライアントのための特別なユースケースを持っており、私はこれを行う必要があります。 –

関連する問題