私の日食には2つのアプリがあり、どちらもメソッドと呼ばれています
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
ただし、1つは正常に機能し、もう1つはまったく機能しませんでした(しばらくすると画面が完全に暗くなり、ロック画面が表示されます)。私が使用しているコードはまったく同じであり、2番目のアプリで機能しなかった理由に不満を感じています。誰かがこれがどのように起こっているのか手がかりを持っていますか?
これが私の2番目のアプリのコードです:
private void DimScreen() //isDim is false initially
{
Log.i(TAG, "isDim"+String.valueOf(isDim));
SharedPreferences pref = getSharedPreferences(null, 0);
String enableDim = pref.getString("enableDimScreen", "true"); //default preference is true(to dim screen)
Log.i(TAG, "inside Dimscreen(), enableDim="+enableDim);
if(enableDim.equals("true")&&!isDim) //if the user want to dim the screen
{
Toast.makeText(StartActivity.this, "Dimming screen in 5 seconds, press Stop button to turn on the screen", Toast.LENGTH_SHORT).show();
handler.postDelayed(r, 5000);
}
else {
if(!isDim) //if the user doesn't want to dim the screen
{
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
isDim =true;
Log.i(TAG, "inside Dimscreen() else");
}
}
}
private Handler handler= new Handler();
Runnable r = new Runnable()
{
public void run()
{
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
WindowManager.LayoutParams lp = getWindow().getAttributes();
lp.screenBrightness=0.01f;
getWindow().setAttributes(lp);
isDim =true;
Log.i(TAG, "isDim "+String.valueOf(isDim));
}
};
編集:2番目のアプリで暗くしたいアクティビティでクロームメーターとプログレスバーを実行しています。